Used font: http://stuff.dasprids.de/fonts/ubuntumono-powerline.tar.bz2
You can patch any font yourself with the fontpatcher: https://github.com/Lokaltog/vim-powerline/tree/develop/fontpatcher
Used font: http://stuff.dasprids.de/fonts/ubuntumono-powerline.tar.bz2
You can patch any font yourself with the fontpatcher: https://github.com/Lokaltog/vim-powerline/tree/develop/fontpatcher
| function _update_ps1() { | |
| export PS1="$(~/bin/powerline-shell.sh $? your-default-username)" | |
| } | |
| export PROMPT_COMMAND="_update_ps1" |
| #!/bin/bash | |
| fg_black="\[\033[0;30m\]" | |
| fg_red="\[\033[0;31m\]" | |
| fg_green="\[\033[0;32m\]" | |
| fg_yellow="\[\033[0;33m\]" | |
| fg_blue="\[\033[0;34m\]" | |
| fg_magenta="\[\033[0;35m\]" | |
| fg_cyan="\[\033[0;36m\]" | |
| fg_white="\[\033[0;37m\]" | |
| bg_black="\[\033[40m\]" | |
| bg_red="\[\033[41m\]" | |
| bg_green="\[\033[42m\]" | |
| bg_yellow="\[\033[43m\]" | |
| bg_blue="\[\033[44m\]" | |
| bg_magenta="\[\033[45m\]" | |
| bg_cyan="\[\033[46m\]" | |
| bg_white="\[\033[47m\]" | |
| reset="\[\033[00m\]" | |
| CURRENT_BG='none' | |
| SEGMENT_SEPARATOR='⮀' | |
| fg_color() { | |
| local varname=fg_$1 | |
| echo ${!varname} | |
| } | |
| bg_color() { | |
| local varname=bg_$1 | |
| echo ${!varname} | |
| } | |
| # Begin a segment | |
| # Takes two arguments, background and foreground. Both can be omitted, | |
| # rendering default background/foreground. | |
| prompt_segment() { | |
| local bg fg | |
| [[ -n $1 ]] && bg="$(bg_color $1)" || bg="" | |
| [[ -n $2 ]] && fg="$(fg_color $2)" || fg="" | |
| if [[ $CURRENT_BG != 'none' && $1 != $CURRENT_BG ]]; then | |
| echo -n " $(fg_color $CURRENT_BG)$bg$SEGMENT_SEPARATOR$fg$bg " | |
| else | |
| echo -n "$fg$bg " | |
| fi | |
| CURRENT_BG=$1 | |
| [[ -n $3 ]] && echo -n $3 | |
| } | |
| # End the prompt, closing any open segments | |
| prompt_end() { | |
| if [[ -n $CURRENT_BG ]]; then | |
| echo -n " $reset$(fg_color $CURRENT_BG)$SEGMENT_SEPARATOR $reset" | |
| fi | |
| CURRENT_BG='' | |
| } | |
| ### Prompt components | |
| # Each component will draw itself, and hide itself if no information needs to be shown | |
| # Context: user@hostname (who am I and where am I) | |
| prompt_context() { | |
| local user=`whoami` | |
| if [[ "$user" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then | |
| prompt_segment black white "$user@\h" | |
| fi | |
| } | |
| # Git: branch/detached head, dirty status | |
| prompt_git() { | |
| local ref dirty | |
| if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then | |
| dirty=$(git status --porcelain | tail -n1) | |
| ref=$(git symbolic-ref HEAD 2> /dev/null) || ref="➦ $(git show-ref --head -s --abbrev |head -n1 2> /dev/null)" | |
| if [[ -n $dirty ]]; then | |
| dirty='±' | |
| prompt_segment yellow black | |
| else | |
| prompt_segment green black | |
| fi | |
| echo -n "${ref/refs\/heads\//⭠ }$dirty" | |
| fi | |
| } | |
| # Dir: current working directory | |
| prompt_dir() { | |
| prompt_segment blue black '\w' | |
| } | |
| # Status: | |
| # - was there an error | |
| # - am I root | |
| # - are there background jobs? | |
| prompt_status() { | |
| local symbols | |
| symbols=() | |
| [[ $RETVAL -ne 0 ]] && symbols+="$fg_red$bg_black✘" | |
| [[ $UID -eq 0 ]] && symbols+="$fg_yellow$bg_black⚡" | |
| [[ -n "$symbols" ]] && prompt_segment black white "$symbols" | |
| } | |
| ## Main prompt | |
| RETVAL=$1 | |
| DEFAULT_USER=$2 | |
| case "$TERM" in | |
| xterm*|rxvt*) | |
| echo -n "\[\e]0;\u@\h: \w\a\]" | |
| ;; | |
| *) | |
| ;; | |
| esac | |
| prompt_status | |
| prompt_context | |
| prompt_dir | |
| prompt_git | |
| prompt_end |