|
# @gf3’s Sexy Bash Prompt, inspired by “Extravagant Zsh Prompt” |
|
# Shamelessly copied from https://github.com/gf3/dotfiles |
|
# Screenshot: http://i.imgur.com/s0Blh.png |
|
|
|
if [[ $COLORTERM = gnome-* && $TERM = xterm ]] && infocmp gnome-256color >/dev/null 2>&1; then |
|
export TERM=gnome-256color |
|
elif infocmp xterm-256color >/dev/null 2>&1; then |
|
export TERM=xterm-256color |
|
fi |
|
|
|
if tput setaf 1 &> /dev/null; then |
|
tput sgr0 |
|
if [[ $(tput colors) -ge 256 ]] 2>/dev/null; then |
|
MAGENTA=$(tput setaf 9) |
|
ORANGE=$(tput setaf 172) |
|
GREEN=$(tput setaf 190) |
|
PURPLE=$(tput setaf 141) |
|
WHITE=$(tput setaf 256) |
|
else |
|
MAGENTA=$(tput setaf 5) |
|
ORANGE=$(tput setaf 4) |
|
GREEN=$(tput setaf 2) |
|
PURPLE=$(tput setaf 1) |
|
WHITE=$(tput setaf 7) |
|
fi |
|
BOLD=$(tput bold) |
|
RESET=$(tput sgr0) |
|
fi |
|
|
|
# detects if branch has anything to commit |
|
function parse_git_dirty() { |
|
[[ $(git status 2> /dev/null | tail -n1) != "nothing to commit, working directory clean" ]] && echo "+" |
|
} |
|
|
|
# display git branch name |
|
function parse_git_branch() { |
|
git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/\1$(parse_git_dirty)/" |
|
} |
|
|
|
# enable ls command colors |
|
export CLICOLOR=1 |
|
|
|
# actually define the colors |
|
export LSCOLORS=ExFxCxDxBxegedabagacad # original |
|
#export LSCOLORS=ExFxCxDxBxegedabagcxdx # option #2 |
|
#export LSCOLORS=GxFxCxDxBxegedabagaced # option #3 |
|
|
|
# |
|
# color definitions for the prompt |
|
# |
|
|
|
# normal colors |
|
txtblk='\e[0;30m' # Black - Regular |
|
txtred='\e[0;31m' # Red |
|
txtgrn='\e[0;32m' # Green |
|
txtylw='\e[0;33m' # Yellow |
|
txtblu='\e[0;34m' # Blue |
|
txtpur='\e[0;35m' # Purple |
|
txtcyn='\e[0;36m' # Cyan |
|
txtwht='\e[0;37m' # White |
|
|
|
# bold colors |
|
bldblk='\e[1;30m' # Black - Bold |
|
bldred='\e[1;31m' # Red |
|
bldgrn='\e[1;32m' # Green |
|
bldylw='\e[1;33m' # Yellow |
|
bldblu='\e[1;34m' # Blue |
|
bldpur='\e[1;35m' # Purple |
|
bldcyn='\e[1;36m' # Cyan |
|
bldwht='\e[1;37m' # White |
|
|
|
# underliend colors |
|
unkblk='\e[4;30m' # Black - Underline |
|
undred='\e[4;31m' # Red |
|
undgrn='\e[4;32m' # Green |
|
undylw='\e[4;33m' # Yellow |
|
undblu='\e[4;34m' # Blue |
|
undpur='\e[4;35m' # Purple |
|
undcyn='\e[4;36m' # Cyan |
|
undwht='\e[4;37m' # White |
|
|
|
# backgroudn colors |
|
bakblk='\e[40m' # Black - Background |
|
bakred='\e[41m' # Red |
|
badgrn='\e[42m' # Green |
|
bakylw='\e[43m' # Yellow |
|
bakblu='\e[44m' # Blue |
|
bakpur='\e[45m' # Purple |
|
bakcyn='\e[46m' # Cyan |
|
bakwht='\e[47m' # White |
|
|
|
# reset colors |
|
txtrst='\e[0m' # Text Reset |
|
|
|
# |
|
# command line |
|
# |
|
|
|
# set up the text display in the prompt. You can edit the colors and the format |
|
# of the text according to your taste. |
|
print_before_the_prompt() { |
|
printf "\n${txtred}%s${txtblk} at ${txtgrn}%s${txtblk} in ${txtblu}%s${txtblk}$([[ -n $(git branch 2> /dev/null) ]] && echo " on ")${txtylw}$(parse_git_branch)${txtrst}\n" "$USER" "jedi" "${PWD/$HOME/~}" |
|
} |
|
PROMPT_COMMAND=print_before_the_prompt |
|
|
|
# string shown in the beggining of the line |
|
PS1="$ " |