From 0125c186d35b37b62b1710e5ad1038be0cc70601 Mon Sep 17 00:00:00 2001 From: Ernesto Buenrostro Date: Sun, 9 Feb 2014 15:48:54 -0800 Subject: [PATCH 1/3] - Fixes symbol display according to the user - Adds a space when showing commits ahead/behind - Fixes background for magenta color - Fixes regex match with grep - Adds styling to the output - Adds more fields to the prompt (user, host, time, current dir, tty name/console number) --- bash-powerline.sh | 42 ++++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/bash-powerline.sh b/bash-powerline.sh index 6ddbd5d..a33e4c2 100644 --- a/bash-powerline.sh +++ b/bash-powerline.sh @@ -4,12 +4,12 @@ __powerline() { # Unicode symbols PS_SYMBOL_DARWIN='' - PS_SYMBOL_LINUX='$' + PS_SYMBOL_LINUX='\$' PS_SYMBOL_OTHER='%' GIT_BRANCH_SYMBOL='⑂ ' GIT_BRANCH_CHANGED_SYMBOL='+' - GIT_NEED_PUSH_SYMBOL='⇡' - GIT_NEED_PULL_SYMBOL='⇣' + GIT_NEED_PUSH_SYMBOL='⇡ ' + GIT_NEED_PULL_SYMBOL='⇣ ' # Solarized colorscheme FG_BASE03="\[$(tput setaf 8)\]" @@ -34,6 +34,7 @@ __powerline() { FG_ORANGE="\[$(tput setaf 9)\]" FG_RED="\[$(tput setaf 1)\]" FG_MAGENTA="\[$(tput setaf 5)\]" + FG_MAGENTA="\[\033[0;35m\]" # foreground magenta FG_VIOLET="\[$(tput setaf 13)\]" FG_BLUE="\[$(tput setaf 4)\]" FG_CYAN="\[$(tput setaf 6)\]" @@ -79,8 +80,8 @@ __powerline() { # how many commits local branch is ahead/behind of remote? local stat="$(git status --porcelain --branch | grep '^##' | grep -o '\[.\+\]$')" - local aheadN="$(echo $stat | grep -o 'ahead \d\+' | grep -o '\d\+')" - local behindN="$(echo $stat | grep -o 'behind \d\+' | grep -o '\d\+')" + local aheadN="$(echo $stat | grep -o 'ahead [0-9]\+'| grep -o '[0-9]\+')" + local behindN="$(echo $stat | grep -o 'behind [0-9]\+' | grep -o '[0-9]\+')" [ -n "$aheadN" ] && marks+=" $GIT_NEED_PUSH_SYMBOL$aheadN" [ -n "$behindN" ] && marks+=" $GIT_NEED_PULL_SYMBOL$behindN" @@ -92,14 +93,35 @@ __powerline() { # Check the exit code of the previous command and display different # colors in the prompt accordingly. if [ $? -eq 0 ]; then - local BG_EXIT="$BG_GREEN" + local GITINFO=$(__git_info) + if [ -n "$GITINFO" ]; then + local BG_EXIT="$FG_BLUE" + else + local BG_EXIT="$FG_YELLOW" + fi + BG_EXIT+="$BG_GREEN▶ $RESET$BG_GREEN" + local FG_EXIT="$FG_GREEN" + local EXIT_RESULT=0 else - local BG_EXIT="$BG_RED" + local GITINFO=$(__git_info) + if [ -n "$GITINFO" ]; then + local BG_EXIT="$FG_BLUE" + else + local BG_EXIT="$FG_YELLOW" + fi + BG_EXIT+="$BG_RED▶ $RESET$BG_RED" + local FG_EXIT="$FG_RED" + local EXIT_RESULT=1 fi + PS1="$BG_BASE2$FG_BASE02\t$FG_BASE2$BG_MAGENTA▶ $RESET" #time + PS1+="$BG_MAGENTA$BOLD$FG_YELLOW\u@\H$FG_MAGENTA$BG_YELLOW▶ $RESET" # user@host + PS1+="$BG_YELLOW$FG_BASE02\W$RESET" # current directory - PS1="$BG_BASE1$FG_BASE3 \w $RESET" - PS1+="$BG_BLUE$FG_BASE3$(__git_info)$RESET" - PS1+="$BG_EXIT$FG_BASE3 $PS_SYMBOL $RESET " + if [ -n "$GITINFO" ]; then + PS1+="$FG_YELLOW$BG_BLUE▶ $RESET" # GIT Info + PS1+="$BG_BLUE$FG_BASE3$GITINFO$RESET" # GIT Info + fi + PS1+="$BG_EXIT$FG_BASE3\l:$PS_SYMBOL $RESET " # current terminal plus $ } PROMPT_COMMAND=ps1 From a34e8b325c303a20df7ef93f320addbe79f80450 Mon Sep 17 00:00:00 2001 From: Ernesto Buenrostro Date: Sun, 9 Feb 2014 15:56:42 -0800 Subject: [PATCH 2/3] Fix spacing on git output --- bash-powerline.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bash-powerline.sh b/bash-powerline.sh index a33e4c2..9817056 100644 --- a/bash-powerline.sh +++ b/bash-powerline.sh @@ -86,7 +86,7 @@ __powerline() { [ -n "$behindN" ] && marks+=" $GIT_NEED_PULL_SYMBOL$behindN" # print the git branch segment without a trailing newline - printf " $GIT_BRANCH_SYMBOL$branch$marks " + printf "$GIT_BRANCH_SYMBOL$branch$marks" } ps1() { From 54ae9845713cb80435172a72b5a0f7ccaeab86dc Mon Sep 17 00:00:00 2001 From: Ernesto Buenrostro Date: Sun, 16 Mar 2014 11:37:50 -0700 Subject: [PATCH 3/3] Adding support for patched fonts from powerline fonts https://github.com/Lokaltog/powerline-fonts --- bash-powerline.sh | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/bash-powerline.sh b/bash-powerline.sh index 9817056..09b7921 100644 --- a/bash-powerline.sh +++ b/bash-powerline.sh @@ -6,10 +6,12 @@ __powerline() { PS_SYMBOL_DARWIN='' PS_SYMBOL_LINUX='\$' PS_SYMBOL_OTHER='%' - GIT_BRANCH_SYMBOL='⑂ ' - GIT_BRANCH_CHANGED_SYMBOL='+' + GIT_BRANCH_SYMBOL='  ' + GIT_BRANCH_CHANGED_SYMBOL='+ ' GIT_NEED_PUSH_SYMBOL='⇡ ' GIT_NEED_PULL_SYMBOL='⇣ ' + SEPARATOR='' + SEPARATOR_THIN='' # Solarized colorscheme FG_BASE03="\[$(tput setaf 8)\]" @@ -86,7 +88,7 @@ __powerline() { [ -n "$behindN" ] && marks+=" $GIT_NEED_PULL_SYMBOL$behindN" # print the git branch segment without a trailing newline - printf "$GIT_BRANCH_SYMBOL$branch$marks" + printf "$GIT_BRANCH_SYMBOL$branch$marks " } ps1() { @@ -99,7 +101,7 @@ __powerline() { else local BG_EXIT="$FG_YELLOW" fi - BG_EXIT+="$BG_GREEN▶ $RESET$BG_GREEN" + BG_EXIT+="$BG_GREEN$RESET$BG_GREEN" local FG_EXIT="$FG_GREEN" local EXIT_RESULT=0 else @@ -109,19 +111,20 @@ __powerline() { else local BG_EXIT="$FG_YELLOW" fi - BG_EXIT+="$BG_RED▶ $RESET$BG_RED" + BG_EXIT+="$BG_RED$RESET$BG_RED" local FG_EXIT="$FG_RED" local EXIT_RESULT=1 fi - PS1="$BG_BASE2$FG_BASE02\t$FG_BASE2$BG_MAGENTA▶ $RESET" #time - PS1+="$BG_MAGENTA$BOLD$FG_YELLOW\u@\H$FG_MAGENTA$BG_YELLOW▶ $RESET" # user@host - PS1+="$BG_YELLOW$FG_BASE02\W$RESET" # current directory + PS1="$BG_BASE2$FG_BASE02\t $FG_BASE2$BG_BASE02$SEPARATOR$RESET" #time + PS1+="$BG_BASE02$FG_BASE3 \u $FG_BASE02$BG_MAGENTA$SEPARATOR$RESET" # user + PS1+="$BG_MAGENTA$FG_YELLOW \H $FG_MAGENTA$BG_YELLOW$RESET" # host + PS1+="$BG_YELLOW$FG_BASE02 \W $RESET" # current directory if [ -n "$GITINFO" ]; then - PS1+="$FG_YELLOW$BG_BLUE▶ $RESET" # GIT Info + PS1+="$FG_YELLOW$BG_BLUE$RESET" # GIT Info PS1+="$BG_BLUE$FG_BASE3$GITINFO$RESET" # GIT Info fi - PS1+="$BG_EXIT$FG_BASE3\l:$PS_SYMBOL $RESET " # current terminal plus $ + PS1+="$BG_EXIT$FG_BASE3 \l $SEPARATOR_THIN $PS_SYMBOL$RESET$FG_EXIT$RESET" # current terminal plus $ } PROMPT_COMMAND=ps1