#!/bin/bash
# bash_prompt; adapted from
-# https://github.com/necolas/dotfiles/blob/master/shell/bash_prompt
-
-# Example:
-# nicolas@host: ~/.dotfiles on master [+!?$]
-# $
-
-# Screenshot: http://i.imgur.com/DSJ1G.png
-# iTerm2 prefs: import Solarized theme (disable bright colors for bold text)
-# Color ref: http://vim.wikia.com/wiki/Xterm256_color_names_for_console_Vim
-# More tips: http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
+# https://github.com/necolas/dotfiles/blob/master/shell/bash_prompt and
+# http://vitus-wagner.livejournal.com/1176589.html?thread=40146189#t40146189
prompt_git() {
local s=""
local blue=""
local bold=""
local cyan=""
+ local dim=""
local green=""
local orange=""
- local purple=""
+ local magenta=""
local red=""
local reset=""
local white=""
local yellow=""
+ local dim_black=""
+ local dim_blue=""
+ local dim_bold=""
+ local dim_cyan=""
+ local dim_green=""
+ local dim_orange=""
+ local dim_magenta=""
+ local dim_red=""
+ local dim_white=""
+ local dim_yellow=""
+
+ local charStyle=""
+ local gitStyle=""
local hostStyle=""
local userStyle=""
+ local wdirStyle=""
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
tput sgr0 # reset colors
bold=$(tput bold)
+ dim=$(tput dim)
reset=$(tput sgr0)
- # Solarized colors
- # (https://github.com/altercation/solarized/tree/master/iterm2-colors-solarized#the-values)
black=$(tput setaf 0)
- blue=$(tput setaf 33)
- cyan=$(tput setaf 37)
- green=$(tput setaf 64)
- orange=$(tput setaf 166)
- purple=$(tput setaf 125)
- red=$(tput setaf 124)
- white=$(tput setaf 15)
- yellow=$(tput setaf 136)
+ blue=$(tput setaf 4)
+ cyan=$(tput setaf 6)
+ green=$(tput setaf 2)
+ orange=$(tput setaf 3)
+ magenta=$(tput setaf 5)
+ red=$(tput setaf 1)
+ white=$bold$(tput setaf 7)
+ yellow=$(tput setaf 3)
+
+ dim_black=$dim$black
+ dim_blue=$dim$blue
+ dim_cyan=$dim$cyan
+ dim_green=$dim$green
+ dim_orange=$dim$orange
+ dim_magenta=$dim$magenta
+ dim_red=$dim$red
+ dim_white=$dim$white
+ dim_yellow=$dim$yellow
else
bold=""
+ dim=""
reset="\e[0m"
- black="\e[1;30m"
- blue="\e[1;34m"
- cyan="\e[1;36m"
- green="\e[1;32m"
- orange="\e[1;33m"
- purple="\e[1;35m"
- red="\e[1;31m"
- white="\e[1;37m"
- yellow="\e[1;33m"
+ black="\e[0;30m"
+ blue="\e[0;34m"
+ cyan="\e[0;36m"
+ green="\e[0;32m"
+ orange="\e[0;33m"
+ magenta="\e[0;35m"
+ red="\e[0;31m"
+ white="\e[0;37m"
+ yellow="\e[0;33m"
+
+ dim_black="\e[1;30m"
+ dim_blue="\e[1;34m"
+ dim_cyan="\e[1;36m"
+ dim_green="\e[1;32m"
+ dim_orange="\e[1;33m"
+ dim_magenta="\e[1;35m"
+ dim_red="\e[1;31m"
+ dim_white="\e[1;37m"
+ dim_yellow="\e[1;33m"
fi
- # build the prompt
+ charStyle="$reset$bold$black"
+ gitStyle="\[$white\]on \[$magenta\]"
+ case "$BACKGROUND" in
+ DARK|dark)
+ hostStyle="$reset$cyan"
+ ;;
+ LIGHT|light)
+ hostStyle="$reset$blue"
+ ;;
+ esac
+ wdirStyle="$reset$green"
+
# logged in as root
if [[ "$USER" == "root" ]]; then
- userStyle="\[$bold$red\]"
+ userStyle="$bold$red"
else
- userStyle="\[$orange\]"
+ userStyle="$orange"
fi
- # connected via ssh
- if [[ "$SSH_TTY" ]]; then
- hostStyle="\[$bold$red\]"
- else
- hostStyle="\[$yellow\]"
- fi
-
- # set the terminal title to the current working directory
- PS1="\[\033]0;\w\007\]"
-
- PS1+="\n" # newline
+ # build the prompt
+ # display the user, host and current working directory in the terminal title
+ case "$TERM" in
+ *rxvt*|screen*|*term*|vt100)
+ PS1="\[\033]0;\u@\h:\w\007\]"
+ case "$TERM" in
+ screen*)
+ PS1+"\[\033k\u@\h:\w\033\\\]" # Set screen/tmux caption
+ ;;
+ esac
+ ;;
+
+ *)
+ PS1=""
+ ;;
+ esac
+
+ #PS1+="\n" # newline
PS1+="\[$userStyle\]\u" # username
- PS1+="\[$reset$white\]@"
- PS1+="\[$hostStyle\]\h" # host
- PS1+="\[$reset$white\]: "
- PS1+="\[$green\]\w" # working directory
- PS1+="\$(prompt_git \"$white on $cyan\")" # git repository details
- PS1+="\n"
- PS1+="\[$reset$white\]\$ \[$reset\]" # $ (and reset color)
+ PS1+="\[$charStyle\]@"
+ PS1+="\[$hostStyle\]\h " # host
+ #PS1+="\[$charStyle\]: "
+ PS1+="\[$wdirStyle\]\W " # working directory
+ PS1+='`erco=$?; [ $erco == 0 ] && echo -n ":)" || echo -n '"\"\[$red\]:(\[$reset\] $\""'?=$erco` '
+ PS1+="\$(prompt_git \"$gitStyle\")" # git repository details
+ #PS1+="\n"
+ PS1+="\[$charStyle\]\$ \[$reset\]" # $ (and reset color)
export PS1
}