From d01d718bd6da4446d528262192e78fcfa6a9ebed Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Wed, 27 May 2015 21:03:02 +0200 Subject: [PATCH 01/45] Modified code to work with prezto. --- powerlevel9k.zsh-theme | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index d1e927c8..b7157f75 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -423,17 +423,29 @@ build_right_prompt() { done } -precmd() { +prompt_powerlevel9k_precmd() { vcs_info # Add a static hook to examine staged/unstaged changes. vcs_info_hookadd set-message vcs-detect-changes } -if [[ "$POWERLEVEL9K_PROMPT_ON_NEWLINE" == true ]]; then - PROMPT='╭─%{%f%b%k%}$(build_left_prompt) -╰─ ' -else - PROMPT='%{%f%b%k%}$(build_left_prompt) ' -fi -RPROMPT='%{%f%b%k%}$(build_right_prompt)%{$reset_color%}' +powerlevel9k_init() { + setopt LOCAL_OPTIONS + unsetopt XTRACE KSH_ARRAYS + prompt_opts=(cr percent subst) + + autoload -Uz add-zsh-hook + + add-zsh-hook precmd prompt_powerlevel9k_precmd + + if [[ "$POWERLEVEL9K_PROMPT_ON_NEWLINE" == true ]]; then + PROMPT="╭─%{%f%b%k%}"'$(build_left_prompt)'" +╰─ " + else + PROMPT="%{%f%b%k%}"'$(build_left_prompt)'" " + fi + RPROMPT="%{%f%b%k%}"'$(build_right_prompt)'"%{$reset_color%}" +} + +powerlevel9k_init "$@" From 77024543f2fd6afd013a2fc340c9315ad360eeb5 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Thu, 28 May 2015 00:36:40 +0200 Subject: [PATCH 02/45] Added documentation. --- README.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2c3f2a2d..d2f7be39 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,9 @@ emulator the Powerline font you want to use. #### Install Powerlevel9k -To install this theme, clone this repository into your Oh-My-Zsh `custom/themes` +##### Within Oh-my-ZSH + +To install this theme, clone this repository into your [Oh-my-Zsh](https://github.com/robbyrussell/oh-my-zsh) `custom/themes` directory. $ cd ~/.oh-my-zsh/custom @@ -66,6 +68,19 @@ You then need to select this theme in your `~/.zshrc`: ZSH_THEME="powerlevel9k/powerlevel9k" +##### With Prezto + +To install this theme, clone this repository into your [Prezto](https://github.com/sorin-ionescu/prezto) `prompt/external` +directory. + + $ cd ~.zprezto/modules/prompt/external + $ git clone https://github.com/bhilburn/powerlevel9k.git + $ ln -s powerlevel9k/powerlevel9k.zsh-theme ../functions/prompt_powerlevel9k_setup + +You then need to select this theme in your `~/.zpreztorc`: + + zstyle ':prezto:module:prompt' theme 'powerlevel9k' + ### Segment Customization Customizing your prompt is easy! Select the segments you want to have displayed, From 6f22892fb77dd8021aee262848bcc301d4ff44f9 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Fri, 29 May 2015 23:56:31 +0200 Subject: [PATCH 03/45] Variable scoping. --- powerlevel9k.zsh-theme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index b7157f75..3016f443 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -46,7 +46,7 @@ # The `CURRENT_BG` variable is used to remember what the last BG color used was # when building the left-hand prompt. Because the RPROMPT is created from # right-left but reads the opposite, this isn't necessary for the other side. -CURRENT_BG='NONE' +local CURRENT_BG='NONE' # These characters require the Powerline fonts to work properly. If see boxes or # bizarre characters below, your fonts are not correctly installed. From eb5b9f7c1b4d848aa1e5292dc8d39905ff884b23 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Sat, 30 May 2015 00:00:05 +0200 Subject: [PATCH 04/45] Better compatibility with prezto. --- powerlevel9k.zsh-theme | 118 +++++++++++++++++++++-------------------- 1 file changed, 61 insertions(+), 57 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 3016f443..8536f0cc 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -60,7 +60,7 @@ VCS_STAGED_ICON='✚' ################################################################ local DEFAULT_COLOR DEFAULT_COLOR_INVERTED DEFAULT_COLOR_DARK -if [[ $POWERLEVEL9K_COLOR_SCHEME == "light" ]]; then +if [[ "$POWERLEVEL9K_COLOR_SCHEME" == "light" ]]; then DEFAULT_COLOR=white DEFAULT_COLOR_INVERTED=black DEFAULT_COLOR_DARK="252" @@ -82,8 +82,8 @@ local VCS_CHANGESET_PREFIX='' if [[ "$POWERLEVEL9K_SHOW_CHANGESET" == true ]]; then # Default: Just display the first 12 characters of our changeset-ID. local VCS_CHANGESET_HASH_LENGTH=12 - if [[ -n $POWERLEVEL9K_CHANGESET_HASH_LENGTH ]]; then - VCS_CHANGESET_HASH_LENGTH=$POWERLEVEL9K_CHANGESET_HASH_LENGTH + if [[ -n "$POWERLEVEL9K_CHANGESET_HASH_LENGTH" ]]; then + VCS_CHANGESET_HASH_LENGTH="$POWERLEVEL9K_CHANGESET_HASH_LENGTH" fi VCS_CHANGESET_PREFIX="%F{$DEFAULT_COLOR_DARK}%0.$VCS_CHANGESET_HASH_LENGTH""i@%f" @@ -125,27 +125,27 @@ fi # Begin a left prompt segment # Takes two arguments, background and foreground. Both can be omitted, # rendering default background/foreground. -left_prompt_segment() { +function left_prompt_segment { local bg fg - [[ -n $1 ]] && bg="%K{$1}" || bg="%k" - [[ -n $2 ]] && fg="%F{$2}" || fg="%f" - if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then - echo -n "%{$bg%F{$CURRENT_BG}%}$LEFT_SEGMENT_SEPARATOR%{$fg%} " + [[ -n "$1" ]] && bg="%K{$1}" || bg="%k" + [[ -n "$2" ]] && fg="%F{$2}" || fg="%f" + if [[ "$CURRENT_BG" != 'NONE' && "$1" != "$CURRENT_BG" ]]; then + echo -n "$bg%F{$CURRENT_BG}$LEFT_SEGMENT_SEPARATOR$fg " else - echo -n "%{$bg%}%{$fg%} " + echo -n "$bg$fg " fi - CURRENT_BG=$1 - [[ -n $3 ]] && echo -n $3 + CURRENT_BG="$1" + [[ -n "$3" ]] && echo -n "$3" } # End the left prompt, closing any open segments -left_prompt_end() { - if [[ -n $CURRENT_BG ]]; then - echo -n " %{%k%F{$CURRENT_BG}%}$LEFT_SEGMENT_SEPARATOR" +function left_prompt_end { + if [[ -n "$CURRENT_BG" ]]; then + echo -n " %k%F{$CURRENT_BG}$LEFT_SEGMENT_SEPARATOR" else - echo -n " %{%k%}" + echo -n "%k" fi - echo -n "%{%f%}" + echo -n "%f" CURRENT_BG='' } @@ -153,12 +153,12 @@ left_prompt_end() { # Takes two arguments, background and foreground. Both can be omitted, # rendering default background/foreground. No ending for the right prompt # segment is needed (unlike the left prompt, above). -right_prompt_segment() { +function right_prompt_segment { local bg fg - [[ -n $1 ]] && bg="%K{$1}" || bg="%k" - [[ -n $2 ]] && fg="%F{$2}" || fg="%f" + [[ -n "$1" ]] && bg="%K{$1}" || bg="%k" + [[ -n "$2" ]] && fg="%F{$2}" || fg="%f" echo -n " %f%F{$1}$RIGHT_SEGMENT_SEPARATOR%f%{$bg%}%{$fg%} " - [[ -n $3 ]] && echo -n $3 + [[ -n "$3" ]] && echo -n "$3" } ################################################################ @@ -167,11 +167,11 @@ right_prompt_segment() { prompt_vcs() { local vcs_prompt="${vcs_info_msg_0_}" - if [[ -n $vcs_prompt ]]; then + if [[ -n "$vcs_prompt" ]]; then if [[ "$VCS_WORKDIR_DIRTY" == true ]]; then - $1_prompt_segment yellow $DEFAULT_COLOR + $1_prompt_segment "yellow" "$DEFAULT_COLOR" else - $1_prompt_segment green $DEFAULT_COLOR + $1_prompt_segment "green" "$DEFAULT_COLOR" fi echo -n "%F{$DEFAULT_COLOR}%f$vcs_prompt" @@ -224,7 +224,7 @@ function +vi-git-tagname() { local tag tag=$(git describe --tags --exact-match HEAD 2>/dev/null) - [[ -n ${tag} ]] && hook_com[branch]=" %F{$DEFAULT_COLOR}${tag}%f" + [[ -n "${tag}" ]] && hook_com[branch]=" %F{$DEFAULT_COLOR}${tag}%f" } # Show count of stashed changes @@ -251,7 +251,7 @@ function +vi-hg-bookmarks() { } function +vi-vcs-detect-changes() { - if [[ -n ${hook_com[staged]} ]] || [[ -n ${hook_com[unstaged]} ]]; then + if [[ -n "${hook_com[staged]}" ]] || [[ -n "${hook_com[unstaged]}" ]]; then VCS_WORKDIR_DIRTY=true else VCS_WORKDIR_DIRTY=false @@ -264,8 +264,8 @@ function +vi-vcs-detect-changes() { # AWS Profile prompt_aws() { - local aws_profile=$AWS_DEFAULT_PROFILE - if [[ -n $aws_profile ]]; + local aws_profile="$AWS_DEFAULT_PROFILE" + if [[ -n "$aws_profile" ]]; then $1_prompt_segment red white "AWS: $aws_profile" fi @@ -275,18 +275,18 @@ prompt_aws() { # Note that if $DEFAULT_USER is not set, this prompt segment will always print prompt_context() { if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then - $1_prompt_segment $DEFAULT_COLOR "011" "%(!.%{%F{yellow}%}.)$USER@%m" + $1_prompt_segment "$DEFAULT_COLOR" "011" "%(!.%F{yellow}.)$USER@%m" fi } # Dir: current working directory prompt_dir() { - $1_prompt_segment blue $DEFAULT_COLOR '%~' + $1_prompt_segment "blue" "$DEFAULT_COLOR" '%~' } # Command number (in local history) prompt_history() { - $1_prompt_segment "244" $DEFAULT_COLOR '%h' + $1_prompt_segment "244" "$DEFAULT_COLOR" '%h' } # Right Status: (return code, root status, background jobs) @@ -296,24 +296,24 @@ prompt_longstatus() { local symbols bg symbols=() - if [[ $RETVAL -ne 0 ]]; then - symbols+="%{%F{"226"}%}%? ↵" + if [[ "$RETVAL" -ne 0 ]]; then + symbols+="%F{226}%? ↵" bg="009" else - symbols+="%{%F{"046"}%}✓" + symbols+="%F{046}✓" bg="008" fi - [[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%}⚡" - [[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}⚙" + [[ "$UID" -eq 0 ]] && symbols+="%F{yellow}⚡" + [[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%F{cyan}⚙" - [[ -n "$symbols" ]] && $1_prompt_segment $bg $DEFAULT_COLOR "$symbols" + [[ -n "$symbols" ]] && $1_prompt_segment "$bg" "$DEFAULT_COLOR" "$symbols" } # rbenv information prompt_rbenv() { if [[ -n "$RBENV_VERSION" ]]; then - $1_prompt_segment red $DEFAULT_COLOR "$RBENV_VERSION" + $1_prompt_segment "red" "$DEFAULT_COLOR" "$RBENV_VERSION" fi } @@ -323,7 +323,7 @@ prompt_rspec_stats() { local code_amount=$(ls -1 app/**/*.rb | wc -l) local tests_amount=$(ls -1 spec/**/*.rb | wc -l) - build_test_stats $1 $code_amount $tests_amount "RSpec" + build_test_stats "$1" "$code_amount" "$tests_amount" "RSpec" fi } @@ -332,7 +332,7 @@ prompt_rvm() { local rvm_prompt rvm_prompt=`rvm-prompt` if [ "$rvm_prompt" != "" ]; then - $1_prompt_segment "240" $DEFAULT_COLOR "$rvm_prompt " + $1_prompt_segment "240" "$DEFAULT_COLOR" "$rvm_prompt " fi } @@ -341,11 +341,11 @@ prompt_rvm() { prompt_status() { local symbols symbols=() - [[ $RETVAL -ne 0 ]] && symbols+="%{%F{red}%}✘" - [[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%}⚡" + [[ "$RETVAL" -ne 0 ]] && symbols+="%{%F{red}%}✘" + [[ "$UID" -eq 0 ]] && symbols+="%{%F{yellow}%}⚡" [[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}⚙" - [[ -n "$symbols" ]] && $1_prompt_segment $DEFAULT_COLOR default "$symbols" + [[ -n "$symbols" ]] && $1_prompt_segment "$DEFAULT_COLOR" "default" "$symbols" } # Symfony2-PHPUnit test ratio @@ -354,33 +354,33 @@ prompt_symfony2_tests() { local code_amount=$(ls -1 src/**/*.php | grep -v Tests | wc -l) local tests_amount=$(ls -1 src/**/*.php | grep Tests | wc -l) - build_test_stats $1 $code_amount $tests_amount "SF2-Tests" + build_test_stats "$1" "$code_amount" "$tests_amount" "SF2-Tests" fi } # Show a ratio of tests vs code build_test_stats() { - local code_amount=$2 - local tests_amount=$3+0.00001 - local headline=$4 + local code_amount="$2" + local tests_amount="$3"+0.00001 + local headline="$4" # Set float precision to 2 digits: typeset -F 2 ratio local ratio=$(( (tests_amount/code_amount) * 100 )) - [[ ratio -ge 0.75 ]] && $1_prompt_segment cyan $DEFAULT_COLOR "$headline: $ratio%%" - [[ ratio -ge 0.5 && ratio -lt 0.75 ]] && $1_prompt_segment yellow $DEFAULT_COLOR "$headline: $ratio%%" - [[ ratio -lt 0.5 ]] && $1_prompt_segment red $DEFAULT_COLOR "$headline: $ratio%%" + [[ ratio -ge 0.75 ]] && $1_prompt_segment "cyan" "$DEFAULT_COLOR" "$headline: $ratio%%" + [[ ratio -ge 0.5 && ratio -lt 0.75 ]] && $1_prompt_segment "yellow" "$DEFAULT_COLOR" "$headline: $ratio%%" + [[ ratio -lt 0.5 ]] && $1_prompt_segment "red" "$DEFAULT_COLOR" "$headline: $ratio%%" } # System time prompt_time() { - local time_format='%D{%H:%M:%S}' - if [[ -n $POWERLEVEL9K_TIME_FORMAT ]]; then - time_format=$POWERLEVEL9K_TIME_FORMAT + local time_format="%D{%H:%M:%S}" + if [[ -n "$POWERLEVEL9K_TIME_FORMAT" ]]; then + time_format="$POWERLEVEL9K_TIME_FORMAT" fi - $1_prompt_segment $DEFAULT_COLOR_INVERTED $DEFAULT_COLOR "$time_format " + $1_prompt_segment "$DEFAULT_COLOR_INVERTED" "$DEFAULT_COLOR" "$time_format " } # Virtualenv: current working virtualenv @@ -388,8 +388,8 @@ prompt_time() { # https://virtualenv.pypa.io/en/latest/ prompt_virtualenv() { local virtualenv_path="$VIRTUAL_ENV" - if [[ -n $virtualenv_path && -n $VIRTUAL_ENV_DISABLE_PROMPT ]]; then - $1_prompt_segment blue $DEFAULT_COLOR "(`basename $virtualenv_path`)" + if [[ -n "$virtualenv_path" && -n "$VIRTUAL_ENV_DISABLE_PROMPT" ]]; then + $1_prompt_segment "blue" "$DEFAULT_COLOR" "(`basename $virtualenv_path`)" fi } @@ -399,7 +399,7 @@ prompt_virtualenv() { # Main prompt build_left_prompt() { - if [[ ${#POWERLEVEL9K_LEFT_PROMPT_ELEMENTS} == 0 ]]; then + if [[ "${#POWERLEVEL9K_LEFT_PROMPT_ELEMENTS}" == 0 ]]; then POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir rbenv vcs) fi @@ -414,7 +414,7 @@ build_left_prompt() { build_right_prompt() { RETVAL=$? - if [[ ${#POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS} == 0 ]]; then + if [[ "${#POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS}" == 0 ]]; then POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(longstatus history time) fi @@ -435,6 +435,10 @@ powerlevel9k_init() { unsetopt XTRACE KSH_ARRAYS prompt_opts=(cr percent subst) + # initialize colors + autoload -U colors && colors + + # initialize VCS autoload -Uz add-zsh-hook add-zsh-hook precmd prompt_powerlevel9k_precmd From ac048b2951b87c8b2e77db81eef5848a26d92128 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Wed, 3 Jun 2015 00:22:41 +0200 Subject: [PATCH 05/45] Modified Theme to support awesome-powerline-fonts as well as non-powerline-fonts. --- powerlevel9k.zsh-theme | 178 +++++++++++++++++++++++++++++++---------- 1 file changed, 134 insertions(+), 44 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index d1e927c8..d79b5a00 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -8,9 +8,6 @@ # # The `vcs_info` hooks in this file are from Tom Upton: # https://github.com/tupton/dotfiles/blob/master/zsh/zshrc -# -# In order for this theme to render correctly, you will need a Powerline-patched font: -# https://github.com/Lokaltog/powerline-fonts ################################################################ ################################################################ @@ -49,11 +46,108 @@ CURRENT_BG='NONE' # These characters require the Powerline fonts to work properly. If see boxes or -# bizarre characters below, your fonts are not correctly installed. -LEFT_SEGMENT_SEPARATOR='' -RIGHT_SEGMENT_SEPARATOR='' -VCS_UNSTAGED_ICON='●' -VCS_STAGED_ICON='✚' +# bizarre characters below, your fonts are not correctly installed. In case you +# do not want to install a special font, you can set `POWERLEVEL9K_MODE` to +# `compatible`. This shows all icons in regular symbols. +case $POWERLEVEL9K_MODE in + 'flat') + LEFT_SEGMENT_SEPARATOR='' + RIGHT_SEGMENT_SEPARATOR='' + ROOT_ICON="\uE801" #  + RUBY_ICON="\uE847" #  + AWS_ICON="\uE895" #  + BACKGROUND_JOBS_ICON="\uE82F " #  + TEST_ICON="\uE891" #  + OK_ICON="\u2713" # ✓ + FAIL_ICON="\u2718" # ✘ + VCS_UNSTAGED_ICON="\uE16C" #  + VCS_STAGED_ICON="\uE168" #  + VCS_STASH_ICON="\uE133 " #  + #VCS_INCOMING_CHANGES="\uE1EB " #  + VCS_INCOMING_CHANGES="\uE80D " #  + #VCS_OUTGOING_CHANGES="\uE1EC " #  + VCS_OUTGOING_CHANGES="\uE80E " #  + VCS_TAG_ICON="\uE817 " #  + VCS_BOOKMARK_ICON="\uE87B" #  + VCS_COMMIT_ICON="\uE821 " #  + VCS_BRANCH_ICON=" \uE220" #  + VCS_REMOTE_BRANCH_ICON="\uE804" #  + VCS_GIT_ICON="\uE20E" #  + VCS_HG_ICON="\uE1C3" #  + ;; + 'compatible') + LEFT_SEGMENT_SEPARATOR="\u2B80" # ⮀ + RIGHT_SEGMENT_SEPARATOR="\u2B82" # ⮂ + ROOT_ICON='*R*' + RUBY_ICON='' + AWS_ICON="AWS:" + BACKGROUND_JOBS_ICON="\u2699" # ⚙ + TEST_ICON='' + OK_ICON='' + FAIL_ICON='x' + VCS_UNSTAGED_ICON="\u25CF" # ● + VCS_STAGED_ICON="\u271A" # ✚ + VCS_INCOMING_CHANGES="\u2193" # ↓ + VCS_OUTGOING_CHANGES="\u2191" # ↑ + VCS_TAG_ICON='' + VCS_BOOKMARK_ICON='' + VCS_COMMIT_ICON='' + VCS_BRANCH_ICON='@' + VCS_REMOTE_BRANCH_ICON="\u2192" # → + VCS_GIT_ICON='Git' + VCS_HG_ICON='HG' + ;; + 'awesome-patched') + # Awesome-Patched Font required! See https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched + LEFT_SEGMENT_SEPARATOR="\uE0B0" #  + RIGHT_SEGMENT_SEPARATOR="\uE0B2" #  + ROOT_ICON="\u26A1" # ⚡ + RUBY_ICON="\uE847" #  + AWS_ICON="\uE895" #  + BACKGROUND_JOBS_ICON="\uE82F " #  + TEST_ICON="\uE891" #  + OK_ICON="\u2713" # ✓ + FAIL_ICON="\u2718" # ✘ + VCS_UNSTAGED_ICON="\uE16C" #  + VCS_STAGED_ICON="\uE168" #  + VCS_STASH_ICON="\uE133 " #  + #VCS_INCOMING_CHANGES="\uE1EB " #  + VCS_INCOMING_CHANGES="\uE80D " #  + #VCS_OUTGOING_CHANGES="\uE1EC " #  + VCS_OUTGOING_CHANGES="\uE80E " #  + VCS_TAG_ICON="\uE817 " #  + VCS_BOOKMARK_ICON="\uE87B" #  + VCS_COMMIT_ICON="\uE821 " #  + VCS_BRANCH_ICON=" \uE220" #  + VCS_REMOTE_BRANCH_ICON="\uE804" #  + VCS_GIT_ICON="\uE20E" #  + VCS_HG_ICON="\uE1C3" #  + ;; + *) + # Powerline-Patched Font required! See https://github.com/Lokaltog/powerline-fonts + LEFT_SEGMENT_SEPARATOR="\uE0B0" #  + RIGHT_SEGMENT_SEPARATOR="\uE0B2" #  + ROOT_ICON="\u26A1" # ⚡ + RUBY_ICON='' + AWS_ICON="AWS:" + BACKGROUND_JOBS_ICON="\u2699" # ⚙ + TEST_ICON='' + OK_ICON="\u2713" # ✓ + FAIL_ICON="\u2718" # ✘ + VCS_UNSTAGED_ICON="\u25CF" # ● + VCS_STAGED_ICON="\u271A" # ✚ + VCS_STASH_ICON="\u235F" # ⍟ + VCS_INCOMING_CHANGES="\u2193" # ↓ + VCS_OUTGOING_CHANGES="\u2191" # ↑ + VCS_TAG_ICON='' + VCS_BOOKMARK_ICON="\u263F" # ☿ + VCS_COMMIT_ICON='' + VCS_BRANCH_ICON='@' + VCS_REMOTE_BRANCH_ICON="\u2192" # → + VCS_GIT_ICON="\uE0A0" #  + VCS_HG_ICON="\uE0A0" #  + ;; +esac ################################################################ # color scheme @@ -86,13 +180,16 @@ if [[ "$POWERLEVEL9K_SHOW_CHANGESET" == true ]]; then VCS_CHANGESET_HASH_LENGTH=$POWERLEVEL9K_CHANGESET_HASH_LENGTH fi - VCS_CHANGESET_PREFIX="%F{$DEFAULT_COLOR_DARK}%0.$VCS_CHANGESET_HASH_LENGTH""i@%f" + VCS_CHANGESET_PREFIX="%F{$DEFAULT_COLOR_DARK}$VCS_COMMIT_ICON%0.$VCS_CHANGESET_HASH_LENGTH""i%f" fi zstyle ':vcs_info:*' enable git hg zstyle ':vcs_info:*' check-for-changes true -zstyle ':vcs_info:*' formats " $VCS_CHANGESET_PREFIX%F{$DEFAULT_COLOR}%b%c%u%m%f" +local VCS_DEFAULT_FORMAT="$VCS_CHANGESET_PREFIX%F{$DEFAULT_COLOR}%b%c%u%m%f" +zstyle ':vcs_info:git:*' formats "%F{$DEFAULT_COLOR}$VCS_GIT_ICON%f $VCS_DEFAULT_FORMAT" +zstyle ':vcs_info:hg:*' formats "%F{$DEFAULT_COLOR}$VCS_HG_ICON%f $VCS_DEFAULT_FORMAT" + zstyle ':vcs_info:*' actionformats " %b %F{red}| %a%f" zstyle ':vcs_info:*' stagedstr " %F{$DEFAULT_COLOR}$VCS_STAGED_ICON%f" @@ -101,7 +198,7 @@ zstyle ':vcs_info:*' unstagedstr " %F{$DEFAULT_COLOR}$VCS_UNSTAGED_ICON%f" zstyle ':vcs_info:git*+set-message:*' hooks git-untracked git-aheadbehind git-stash git-remotebranch git-tagname # For Hg, only show the branch name -zstyle ':vcs_info:hg*:*' branchformat "%b" +zstyle ':vcs_info:hg*:*' branchformat "$VCS_BRANCH_ICON%b" # The `get-revision` function must be turned on for dirty-check to work for Hg zstyle ':vcs_info:hg*:*' get-revision true zstyle ':vcs_info:hg*:*' get-bookmarks true @@ -174,17 +271,10 @@ prompt_vcs() { $1_prompt_segment green $DEFAULT_COLOR fi - echo -n "%F{$DEFAULT_COLOR}%f$vcs_prompt" + echo -n "%F{$DEFAULT_COLOR}%f$vcs_prompt" fi } -function +vi-git-untracked() { - if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' && \ - $(git ls-files --others --exclude-standard | sed q | wc -l | tr -d ' ') != 0 ]]; then - hook_com[unstaged]+=" %F{$DEFAULT_COLOR}?%f" - fi -} - function +vi-git-aheadbehind() { local ahead behind branch_name local -a gitstatus @@ -194,12 +284,12 @@ function +vi-git-aheadbehind() { # for git prior to 1.7 # ahead=$(git rev-list origin/${branch_name}..HEAD | wc -l) ahead=$(git rev-list ${branch_name}@{upstream}..HEAD 2>/dev/null | wc -l | tr -d ' ') - (( $ahead )) && gitstatus+=( " %F{$DEFAULT_COLOR}↑${ahead// /}%f" ) + (( $ahead )) && gitstatus+=( " %F{$DEFAULT_COLOR}$VCS_OUTGOING_CHANGES${ahead// /}%f" ) # for git prior to 1.7 # behind=$(git rev-list HEAD..origin/${branch_name} | wc -l) behind=$(git rev-list HEAD..${branch_name}@{upstream} 2>/dev/null | wc -l | tr -d ' ') - (( $behind )) && gitstatus+=( " %F{$DEFAULT_COLOR}↓${behind// /}%f" ) + (( $behind )) && gitstatus+=( " %F{$DEFAULT_COLOR}$VCS_INCOMING_CHANGES${behind// /}%f" ) hook_com[misc]+=${(j::)gitstatus} } @@ -211,12 +301,12 @@ function +vi-git-remotebranch() { remote=${$(git rev-parse --verify HEAD@{upstream} --symbolic-full-name 2>/dev/null)/refs\/(remotes|heads)\/} branch_name=${$(git symbolic-ref --short HEAD 2>/dev/null)} - hook_com[branch]="%F{$DEFAULT_COLOR}${hook_com[branch]}%f" + hook_com[branch]="%F{$DEFAULT_COLOR}$VCS_BRANCH_ICON${hook_com[branch]}%f" # Always show the remote #if [[ -n ${remote} ]] ; then # Only show the remote if it differs from the local if [[ -n ${remote} && ${remote#*/} != ${branch_name} ]] ; then - hook_com[branch]+="%F{$DEFAULT_COLOR}→%f%F{$DEFAULT_COLOR}${remote// /}%f" + hook_com[branch]+="%F{$DEFAULT_COLOR}$VCS_REMOTE_BRANCH_ICON%f%F{$DEFAULT_COLOR}${remote// /}%f" fi } @@ -224,7 +314,7 @@ function +vi-git-tagname() { local tag tag=$(git describe --tags --exact-match HEAD 2>/dev/null) - [[ -n ${tag} ]] && hook_com[branch]=" %F{$DEFAULT_COLOR}${tag}%f" + [[ -n ${tag} ]] && hook_com[branch]=" %F{$DEFAULT_COLOR}$VCS_TAG_ICON${tag}%f" } # Show count of stashed changes @@ -234,20 +324,20 @@ function +vi-git-stash() { if [[ -s $(git rev-parse --git-dir)/refs/stash ]] ; then stashes=$(git stash list 2>/dev/null | wc -l) - hook_com[misc]+=" %F{$DEFAULT_COLOR}⍟${stashes// /}%f" + hook_com[misc]+=" %F{$DEFAULT_COLOR}$VCS_STASH_ICON${stashes// /}%f" fi } function +vi-hg-bookmarks() { - if [[ -n "${hgbmarks[@]}" ]]; then - hook_com[hg-bookmark-string]=" ☿ ${hgbmarks[@]}" - - # And to signal, that we want to use the sting we just generated, - # set the special variable `ret' to something other than the default - # zero: - ret=1 - return 0 - fi + if [[ -n "${hgbmarks[@]}" ]]; then + hook_com[hg-bookmark-string]=" $VCS_BOOKMARK_ICON ${hgbmarks[@]}" + + # And to signal, that we want to use the sting we just generated, + # set the special variable `ret' to something other than the default + # zero: + ret=1 + return 0 + fi } function +vi-vcs-detect-changes() { @@ -267,7 +357,7 @@ prompt_aws() { local aws_profile=$AWS_DEFAULT_PROFILE if [[ -n $aws_profile ]]; then - $1_prompt_segment red white "AWS: $aws_profile" + $1_prompt_segment red white "$AWS_ICON $aws_profile" fi } @@ -300,12 +390,12 @@ prompt_longstatus() { symbols+="%{%F{"226"}%}%? ↵" bg="009" else - symbols+="%{%F{"046"}%}✓" + symbols+="%{%F{"046"}%}$OK_ICON" bg="008" fi - [[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%}⚡" - [[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}⚙" + [[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%} $ROOT_ICON" + [[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}$BACKGROUND_JOBS_ICON" [[ -n "$symbols" ]] && $1_prompt_segment $bg $DEFAULT_COLOR "$symbols" } @@ -323,7 +413,7 @@ prompt_rspec_stats() { local code_amount=$(ls -1 app/**/*.rb | wc -l) local tests_amount=$(ls -1 spec/**/*.rb | wc -l) - build_test_stats $1 $code_amount $tests_amount "RSpec" + build_test_stats $1 $code_amount $tests_amount "RSpec $TEST_ICON" fi } @@ -332,7 +422,7 @@ prompt_rvm() { local rvm_prompt rvm_prompt=`rvm-prompt` if [ "$rvm_prompt" != "" ]; then - $1_prompt_segment "240" $DEFAULT_COLOR "$rvm_prompt " + $1_prompt_segment "240" $DEFAULT_COLOR "$rvm_prompt $RUBY_ICON " fi } @@ -341,9 +431,9 @@ prompt_rvm() { prompt_status() { local symbols symbols=() - [[ $RETVAL -ne 0 ]] && symbols+="%{%F{red}%}✘" - [[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%}⚡" - [[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}⚙" + [[ $RETVAL -ne 0 ]] && symbols+="%{%F{red}%}$FAIL_ICON" + [[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%} $ROOT_ICON" + [[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}$BACKGROUND_JOBS_ICON" [[ -n "$symbols" ]] && $1_prompt_segment $DEFAULT_COLOR default "$symbols" } @@ -354,7 +444,7 @@ prompt_symfony2_tests() { local code_amount=$(ls -1 src/**/*.php | grep -v Tests | wc -l) local tests_amount=$(ls -1 src/**/*.php | grep Tests | wc -l) - build_test_stats $1 $code_amount $tests_amount "SF2-Tests" + build_test_stats $1 $code_amount $tests_amount "SF2 $TEST_ICON" fi } From 84cfc66c33a1e76fd8becc712a6cca8e5704d596 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Wed, 3 Jun 2015 11:45:51 +0200 Subject: [PATCH 06/45] Accidentally removed git-untracked hook. --- powerlevel9k.zsh-theme | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index d79b5a00..f79155e2 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -60,7 +60,8 @@ case $POWERLEVEL9K_MODE in TEST_ICON="\uE891" #  OK_ICON="\u2713" # ✓ FAIL_ICON="\u2718" # ✘ - VCS_UNSTAGED_ICON="\uE16C" #  + VCS_UNTRACKED_ICON="\uE16C" #  + VCS_UNSTAGED_ICON="\uE17C" #  VCS_STAGED_ICON="\uE168" #  VCS_STASH_ICON="\uE133 " #  #VCS_INCOMING_CHANGES="\uE1EB " #  @@ -85,6 +86,7 @@ case $POWERLEVEL9K_MODE in TEST_ICON='' OK_ICON='' FAIL_ICON='x' + VCS_UNTRACKED_ICON='?' VCS_UNSTAGED_ICON="\u25CF" # ● VCS_STAGED_ICON="\u271A" # ✚ VCS_INCOMING_CHANGES="\u2193" # ↓ @@ -108,7 +110,8 @@ case $POWERLEVEL9K_MODE in TEST_ICON="\uE891" #  OK_ICON="\u2713" # ✓ FAIL_ICON="\u2718" # ✘ - VCS_UNSTAGED_ICON="\uE16C" #  + VCS_UNTRACKED_ICON="\uE16C" #  + VCS_UNSTAGED_ICON="\uE17C" #  VCS_STAGED_ICON="\uE168" #  VCS_STASH_ICON="\uE133 " #  #VCS_INCOMING_CHANGES="\uE1EB " #  @@ -134,6 +137,7 @@ case $POWERLEVEL9K_MODE in TEST_ICON='' OK_ICON="\u2713" # ✓ FAIL_ICON="\u2718" # ✘ + VCS_UNTRACKED_ICON='?' VCS_UNSTAGED_ICON="\u25CF" # ● VCS_STAGED_ICON="\u271A" # ✚ VCS_STASH_ICON="\u235F" # ⍟ @@ -275,6 +279,13 @@ prompt_vcs() { fi } +function +vi-git-untracked() { + if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' && \ + $(git ls-files --others --exclude-standard | sed q | wc -l | tr -d ' ') != 0 ]]; then + hook_com[unstaged]+=" %F{$DEFAULT_COLOR}$VCS_UNTRACKED_ICON%f" + fi +} + function +vi-git-aheadbehind() { local ahead behind branch_name local -a gitstatus From a0d48b5c2e02537fc8f997f11a861bc4c5c264b2 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Wed, 3 Jun 2015 11:48:55 +0200 Subject: [PATCH 07/45] Better Icons for incoming/outgoing. --- powerlevel9k.zsh-theme | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index f79155e2..00f3be8e 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -65,9 +65,11 @@ case $POWERLEVEL9K_MODE in VCS_STAGED_ICON="\uE168" #  VCS_STASH_ICON="\uE133 " #  #VCS_INCOMING_CHANGES="\uE1EB " #  - VCS_INCOMING_CHANGES="\uE80D " #  + #VCS_INCOMING_CHANGES="\uE80D " #  + VCS_INCOMING_CHANGES="\uE131 " #  #VCS_OUTGOING_CHANGES="\uE1EC " #  - VCS_OUTGOING_CHANGES="\uE80E " #  + #VCS_OUTGOING_CHANGES="\uE80E " #  + VCS_OUTGOING_CHANGES="\uE132 " #  VCS_TAG_ICON="\uE817 " #  VCS_BOOKMARK_ICON="\uE87B" #  VCS_COMMIT_ICON="\uE821 " #  @@ -115,9 +117,11 @@ case $POWERLEVEL9K_MODE in VCS_STAGED_ICON="\uE168" #  VCS_STASH_ICON="\uE133 " #  #VCS_INCOMING_CHANGES="\uE1EB " #  - VCS_INCOMING_CHANGES="\uE80D " #  + #VCS_INCOMING_CHANGES="\uE80D " #  + VCS_INCOMING_CHANGES="\uE131 " #  #VCS_OUTGOING_CHANGES="\uE1EC " #  - VCS_OUTGOING_CHANGES="\uE80E " #  + #VCS_OUTGOING_CHANGES="\uE80E " #  + VCS_OUTGOING_CHANGES="\uE132 " #  VCS_TAG_ICON="\uE817 " #  VCS_BOOKMARK_ICON="\uE87B" #  VCS_COMMIT_ICON="\uE821 " #  From 46260ffc896aae3cc87845d9f5435eaec9bbb4e9 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Wed, 3 Jun 2015 11:51:09 +0200 Subject: [PATCH 08/45] A bit more whitespace. --- powerlevel9k.zsh-theme | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 00f3be8e..96bc1375 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -75,8 +75,8 @@ case $POWERLEVEL9K_MODE in VCS_COMMIT_ICON="\uE821 " #  VCS_BRANCH_ICON=" \uE220" #  VCS_REMOTE_BRANCH_ICON="\uE804" #  - VCS_GIT_ICON="\uE20E" #  - VCS_HG_ICON="\uE1C3" #  + VCS_GIT_ICON="\uE20E " #  + VCS_HG_ICON="\uE1C3 " #  ;; 'compatible') LEFT_SEGMENT_SEPARATOR="\u2B80" # ⮀ @@ -127,8 +127,8 @@ case $POWERLEVEL9K_MODE in VCS_COMMIT_ICON="\uE821 " #  VCS_BRANCH_ICON=" \uE220" #  VCS_REMOTE_BRANCH_ICON="\uE804" #  - VCS_GIT_ICON="\uE20E" #  - VCS_HG_ICON="\uE1C3" #  + VCS_GIT_ICON="\uE20E " #  + VCS_HG_ICON="\uE1C3 " #  ;; *) # Powerline-Patched Font required! See https://github.com/Lokaltog/powerline-fonts From 19e0689b0232a71198e753e17bf334da632df7c6 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Thu, 4 Jun 2015 01:41:04 +0200 Subject: [PATCH 09/45] Improved documentation. --- README.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2c3f2a2d..0d8adb49 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,29 @@ + + +**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* + +- [powerlevel9k Theme for Oh-My-Zsh](#powerlevel9k-theme-for-oh-my-zsh) + - [Features](#features) + - [Installation](#installation) + - [Install Powerline Fonts](#install-powerline-fonts) + - [Install Powerlevel9k](#install-powerlevel9k) + - [Segment Customization](#segment-customization) + - [The AWS Profile Segment](#the-aws-profile-segment) + - [The 'context' Segment](#the-context-segment) + - [Test ratio](#test-ratio) + - [The 'time' segment](#the-time-segment) + - [The 'vcs' Segment](#the-vcs-segment) + - [Symbols](#symbols) + - [Styling](#styling) + - [Fonts](#fonts) + - [Double-Lined Prompt](#double-lined-prompt) + - [Light Color Theme](#light-color-theme) + - [Troubleshooting](#troubleshooting) + - [Gaps Between Segments](#gaps-between-segments) + - [Contributions / Bugs / Contact](#contributions--bugs--contact) + + + ## powerlevel9k Theme for Oh-My-Zsh This is a theme for [Oh-My-Zsh](https://github.com/robbyrussell/oh-my-zsh). This @@ -40,8 +66,9 @@ Here are some screenshots of `powerlevel9k` with default settings: ### Installation -There are two things you need to make this theme work correctly: Powerline -fonts, and the theme itself. +You just need to install the theme and set `POWERLEVEL9K_MODE='compatible'` +to join the experience. If you want to customize your experience even further +read the chapter about "[fonts](#fonts)" or about "[segment customization](#segment-customization)". #### Install Powerline Fonts First, you need to install Powerline Fonts. You can find the [installation @@ -158,6 +185,25 @@ The `vcs` segment uses various symbols to tell you the state of your repository: You can configure the look and feel of your prompt easily with some built-in options. +#### Fonts + +If you set `POWERLEVEL9K_MODE='compatible'` you just get a little glimpse of +the beauty of this theme. + +To get nicer Icons you need to install a [powerline-patched](https://github.com/Lokaltog/powerline-fonts) font. +In your Terminal you need to select this font and in your `~/.zshrc` you need +to set `POWERLEVEL9K_MODE='powerline-patched'`. +Screenshot: +![](http://bhilburn.org/content/images/2015/01/pl9k-improved.png) + +If even these Icons did not impress you, have a look at `POWERLEVEL9K_MODE='awesome-patched'`. +For this mode, you have to install a [awesome-patched](https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched) font and set the according mode. +Screenshot: +![](https://cloud.githubusercontent.com/assets/1544760/7959660/67612918-09fb-11e5-9ef2-2308363c3c51.png) + +If you prefer segements as rectangles, just set `POWERLEVEL9K_MODE='flat'`, but +beware: You still need a [awesome-patched](https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched) font. + #### Double-Lined Prompt By default, `powerlevel9k` is a single-lined prompt. If you would like to have From 5fafa2005c53d34e4776289cbc29447c3b6cfcd6 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Thu, 4 Jun 2015 01:43:00 +0200 Subject: [PATCH 10/45] Introduction should be in first place. --- README.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 0d8adb49..c754e538 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,14 @@ +## powerlevel9k Theme for Oh-My-Zsh + +This is a theme for [Oh-My-Zsh](https://github.com/robbyrussell/oh-my-zsh). This +theme uses [Powerline Fonts](https://github.com/Lokaltog/powerline-fonts), thus +giving you the most epic terminal styling in the universe. + +Look like a bad-ass. Impress everyone in 'Screenshot Your Desktop' threads. Use powerlevel9k. + +In addition to looking amazing, this theme actually provides a lot of useful +information in configurable prompt segments. + **Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* @@ -24,17 +35,6 @@ -## powerlevel9k Theme for Oh-My-Zsh - -This is a theme for [Oh-My-Zsh](https://github.com/robbyrussell/oh-my-zsh). This -theme uses [Powerline Fonts](https://github.com/Lokaltog/powerline-fonts), thus -giving you the most epic terminal styling in the universe. - -Look like a bad-ass. Impress everyone in 'Screenshot Your Desktop' threads. Use powerlevel9k. - -In addition to looking amazing, this theme actually provides a lot of useful -information in configurable prompt segments. - ### Features * Supports `git` and `mercurial` repo information through ZSH's `VCS_INFO`: From 301d79c6faf88439c64181d36d4dfe4d343c0c88 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Thu, 4 Jun 2015 01:49:01 +0200 Subject: [PATCH 11/45] Powerline-Font is now optional. --- README.md | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index c754e538..684dcc36 100644 --- a/README.md +++ b/README.md @@ -70,17 +70,6 @@ You just need to install the theme and set `POWERLEVEL9K_MODE='compatible'` to join the experience. If you want to customize your experience even further read the chapter about "[fonts](#fonts)" or about "[segment customization](#segment-customization)". -#### Install Powerline Fonts -First, you need to install Powerline Fonts. You can find the [installation -instructions -here](https://powerline.readthedocs.org/en/latest/installation/linux.html#fonts-installation). -You can also find the raw font files [in this Github -repository](https://github.com/powerline/fonts) if you want to manually install -them for your OS. - -After you have installed Powerline fonts, make the default font in your terminal -emulator the Powerline font you want to use. - #### Install Powerlevel9k To install this theme, clone this repository into your Oh-My-Zsh `custom/themes` @@ -191,8 +180,10 @@ If you set `POWERLEVEL9K_MODE='compatible'` you just get a little glimpse of the beauty of this theme. To get nicer Icons you need to install a [powerline-patched](https://github.com/Lokaltog/powerline-fonts) font. -In your Terminal you need to select this font and in your `~/.zshrc` you need +In your terminal emulator you need to select this font and in your `~/.zshrc` you need to set `POWERLEVEL9K_MODE='powerline-patched'`. +You can find the [installation instructions here](https://powerline.readthedocs.org/en/latest/installation/linux.html#fonts-installation). +You can also find the raw font files [in this Github repository](https://github.com/powerline/fonts) if you want to manually install them for your OS. Screenshot: ![](http://bhilburn.org/content/images/2015/01/pl9k-improved.png) From abed8905f4a2855960530e57ad2f91f0c1f6332b Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Thu, 4 Jun 2015 04:46:49 +0200 Subject: [PATCH 12/45] Mercurial-Bookmarks should also appear in the current foreground color. --- powerlevel9k.zsh-theme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 1609e1c6..61c8ede2 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -382,7 +382,7 @@ function +vi-git-stash() { function +vi-hg-bookmarks() { if [[ -n "${hgbmarks[@]}" ]]; then - hook_com[hg-bookmark-string]=" $VCS_BOOKMARK_ICON ${hgbmarks[@]}" + hook_com[hg-bookmark-string]=" %F{$VCS_FOREGROUND_COLOR}$VCS_BOOKMARK_ICON${hgbmarks[@]}%f" # And to signal, that we want to use the sting we just generated, # set the special variable `ret' to something other than the default From 2c370532f9befa5cfa51723e91dd59d173a73ca4 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Thu, 4 Jun 2015 04:59:16 +0200 Subject: [PATCH 13/45] Icon-Explanation as table. --- README.md | 60 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 7a5fdaf5..be364277 100644 --- a/README.md +++ b/README.md @@ -13,25 +13,23 @@ information in configurable prompt segments. **Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* -- [powerlevel9k Theme for Oh-My-Zsh](#powerlevel9k-theme-for-oh-my-zsh) - - [Features](#features) - - [Installation](#installation) - - [Install Powerline Fonts](#install-powerline-fonts) - - [Install Powerlevel9k](#install-powerlevel9k) - - [Segment Customization](#segment-customization) - - [The AWS Profile Segment](#the-aws-profile-segment) - - [The 'context' Segment](#the-context-segment) - - [Test ratio](#test-ratio) - - [The 'time' segment](#the-time-segment) - - [The 'vcs' Segment](#the-vcs-segment) - - [Symbols](#symbols) - - [Styling](#styling) - - [Fonts](#fonts) - - [Double-Lined Prompt](#double-lined-prompt) - - [Light Color Theme](#light-color-theme) - - [Troubleshooting](#troubleshooting) - - [Gaps Between Segments](#gaps-between-segments) - - [Contributions / Bugs / Contact](#contributions--bugs--contact) +- [Features](#features) +- [Installation](#installation) + - [Install Powerlevel9k](#install-powerlevel9k) +- [Segment Customization](#segment-customization) + - [The AWS Profile Segment](#the-aws-profile-segment) + - [The 'context' Segment](#the-context-segment) + - [Test ratio](#test-ratio) + - [The 'time' segment](#the-time-segment) + - [The 'vcs' Segment](#the-vcs-segment) + - [Symbols](#symbols) +- [Styling](#styling) + - [Fonts](#fonts) + - [Double-Lined Prompt](#double-lined-prompt) + - [Light Color Theme](#light-color-theme) +- [Troubleshooting](#troubleshooting) + - [Gaps Between Segments](#gaps-between-segments) +- [Contributions / Bugs / Contact](#contributions--bugs--contact) @@ -159,16 +157,20 @@ Example: ##### Symbols -The `vcs` segment uses various symbols to tell you the state of your repository: - -* `↑4` - The number of commits your repository is ahead of your remote branch -* `↓5` - The number of commits your repository is behind of your remote branch -* `⍟3` - The number of stashes, here 3. -* `●` - There are unstaged changes in your working copy -* `✚` - There are staged changes in your working copy -* `?` - There are files in your working copy, that are unknown to your repository -* `→` - The name of your branch differs from its tracking branch. -* `☿` - A mercurial bookmark is active. +The `vcs` segment uses various symbols to tell you the state of your repository. +These symbols depend on your installed [Font](#fonts) and your `POWERLEVEL9K_MODE` +set. + +| `powerline-patched` | `awesome-patched` | explanation +|---------------------|-------------------|--------------------------------------------- +| `↑4` | | Number of commits your repository is ahead of your remote branch +| `↓5` | | Number of commits your repository is behind of your remote branch +| `⍟3` | | Number of stashes, here 3. +| `●` | | There are unstaged changes in your working copy +| `✚` | | There are staged changes in your working copy +| `?` | | There are files in your working copy, that are unknown to your repository +| `→` | | The name of your branch differs from its tracking branch. +| `☿` | | A mercurial bookmark is active. ### Styling From 3d1a65bfffaf38b800bcdc9c59614bfb579831ee Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Thu, 4 Jun 2015 05:14:33 +0200 Subject: [PATCH 14/45] Added Icons for awesome-patched-Description. --- README.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index be364277..22567a41 100644 --- a/README.md +++ b/README.md @@ -163,14 +163,18 @@ set. | `powerline-patched` | `awesome-patched` | explanation |---------------------|-------------------|--------------------------------------------- -| `↑4` | | Number of commits your repository is ahead of your remote branch -| `↓5` | | Number of commits your repository is behind of your remote branch -| `⍟3` | | Number of stashes, here 3. -| `●` | | There are unstaged changes in your working copy -| `✚` | | There are staged changes in your working copy -| `?` | | There are files in your working copy, that are unknown to your repository -| `→` | | The name of your branch differs from its tracking branch. -| `☿` | | A mercurial bookmark is active. +| `↑4` | ![icon_outgoing](https://cloud.githubusercontent.com/assets/1544760/7976089/b5904d6e-0a76-11e5-8147-5e873ac52d79.gif)4 | Number of commits your repository is ahead of your remote branch +| `↓5` | ![icon_incoming](https://cloud.githubusercontent.com/assets/1544760/7976091/b5909c9c-0a76-11e5-9cad-9bf0a28a897c.gif)5 | Number of commits your repository is behind of your remote branch +| `⍟3` | ![icon_stash](https://cloud.githubusercontent.com/assets/1544760/7976094/b5ae9346-0a76-11e5-8cc7-e98b81824118.gif)3 | Number of stashes, here 3. +| `●` | ![icon_unstaged](https://cloud.githubusercontent.com/assets/1544760/7976096/b5aefa98-0a76-11e5-9408-985440471215.gif) | There are unstaged changes in your working copy +| `✚` | ![icon_staged](https://cloud.githubusercontent.com/assets/1544760/7976095/b5aecc8a-0a76-11e5-8988-221afc6e8982.gif) | There are staged changes in your working copy +| `?` | ![icon_untracked](https://cloud.githubusercontent.com/assets/1544760/7976098/b5c7a2e6-0a76-11e5-8c5b-315b595b2bc4.gif) | There are files in your working copy, that are unknown to your repository +| `→` | ![icon_remote_tracking_branch](https://cloud.githubusercontent.com/assets/1544760/7976093/b5ad2c0e-0a76-11e5-9cd3-62a077b1b0c7.gif) | The name of your branch differs from its tracking branch. +| `☿` | ![icon_bookmark](https://cloud.githubusercontent.com/assets/1544760/7976197/546cfac6-0a78-11e5-88a6-ce3a1e0a174e.gif) | A mercurial bookmark is active. +| `` | ![](https://cloud.githubusercontent.com/assets/1544760/7976087/b58bbe3e-0a76-11e5-8d0d-7a5c1bc7f730.gif) | Branch Icon +| None | ![icon_commit](https://cloud.githubusercontent.com/assets/1544760/7976088/b58f4e50-0a76-11e5-9e70-86450d937030.gif)2c3705 | The current commit hash. Here "2c3705" +| None | ![icon_git](https://cloud.githubusercontent.com/assets/1544760/7976092/b5909f80-0a76-11e5-9950-1438b9d72465.gif) | Repository is a git repository +| None | ![icon_mercurial](https://cloud.githubusercontent.com/assets/1544760/7976090/b5908da6-0a76-11e5-8c91-452b6e73f631.gif) | Repository is a Mercurial repository ### Styling From d7f53e8b36ff5666c6a869874a9830373f3bc445 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Fri, 5 Jun 2015 08:51:31 +0200 Subject: [PATCH 15/45] Branch-Icon as Image --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 22567a41..f8efe498 100644 --- a/README.md +++ b/README.md @@ -171,7 +171,8 @@ set. | `?` | ![icon_untracked](https://cloud.githubusercontent.com/assets/1544760/7976098/b5c7a2e6-0a76-11e5-8c5b-315b595b2bc4.gif) | There are files in your working copy, that are unknown to your repository | `→` | ![icon_remote_tracking_branch](https://cloud.githubusercontent.com/assets/1544760/7976093/b5ad2c0e-0a76-11e5-9cd3-62a077b1b0c7.gif) | The name of your branch differs from its tracking branch. | `☿` | ![icon_bookmark](https://cloud.githubusercontent.com/assets/1544760/7976197/546cfac6-0a78-11e5-88a6-ce3a1e0a174e.gif) | A mercurial bookmark is active. -| `` | ![](https://cloud.githubusercontent.com/assets/1544760/7976087/b58bbe3e-0a76-11e5-8d0d-7a5c1bc7f730.gif) | Branch Icon +| ![icon_branch_powerline](https://cloud.githubusercontent.com/assets/1544760/8000852/e7e8d8a0-0b5f-11e5-9834-de9b25c92284.gif) + | ![](https://cloud.githubusercontent.com/assets/1544760/7976087/b58bbe3e-0a76-11e5-8d0d-7a5c1bc7f730.gif) | Branch Icon | None | ![icon_commit](https://cloud.githubusercontent.com/assets/1544760/7976088/b58f4e50-0a76-11e5-9e70-86450d937030.gif)2c3705 | The current commit hash. Here "2c3705" | None | ![icon_git](https://cloud.githubusercontent.com/assets/1544760/7976092/b5909f80-0a76-11e5-9950-1438b9d72465.gif) | Repository is a git repository | None | ![icon_mercurial](https://cloud.githubusercontent.com/assets/1544760/7976090/b5908da6-0a76-11e5-8c91-452b6e73f631.gif) | Repository is a Mercurial repository From 1c6050ac75217f3f300023eb8afbb5ab4e16701a Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Fri, 5 Jun 2015 08:52:20 +0200 Subject: [PATCH 16/45] Formatting. --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index f8efe498..ed4aae53 100644 --- a/README.md +++ b/README.md @@ -171,8 +171,7 @@ set. | `?` | ![icon_untracked](https://cloud.githubusercontent.com/assets/1544760/7976098/b5c7a2e6-0a76-11e5-8c5b-315b595b2bc4.gif) | There are files in your working copy, that are unknown to your repository | `→` | ![icon_remote_tracking_branch](https://cloud.githubusercontent.com/assets/1544760/7976093/b5ad2c0e-0a76-11e5-9cd3-62a077b1b0c7.gif) | The name of your branch differs from its tracking branch. | `☿` | ![icon_bookmark](https://cloud.githubusercontent.com/assets/1544760/7976197/546cfac6-0a78-11e5-88a6-ce3a1e0a174e.gif) | A mercurial bookmark is active. -| ![icon_branch_powerline](https://cloud.githubusercontent.com/assets/1544760/8000852/e7e8d8a0-0b5f-11e5-9834-de9b25c92284.gif) - | ![](https://cloud.githubusercontent.com/assets/1544760/7976087/b58bbe3e-0a76-11e5-8d0d-7a5c1bc7f730.gif) | Branch Icon +| ![icon_branch_powerline](https://cloud.githubusercontent.com/assets/1544760/8000852/e7e8d8a0-0b5f-11e5-9834-de9b25c92284.gif) | ![](https://cloud.githubusercontent.com/assets/1544760/7976087/b58bbe3e-0a76-11e5-8d0d-7a5c1bc7f730.gif) | Branch Icon | None | ![icon_commit](https://cloud.githubusercontent.com/assets/1544760/7976088/b58f4e50-0a76-11e5-9e70-86450d937030.gif)2c3705 | The current commit hash. Here "2c3705" | None | ![icon_git](https://cloud.githubusercontent.com/assets/1544760/7976092/b5909f80-0a76-11e5-9950-1438b9d72465.gif) | Repository is a git repository | None | ![icon_mercurial](https://cloud.githubusercontent.com/assets/1544760/7976090/b5908da6-0a76-11e5-8c91-452b6e73f631.gif) | Repository is a Mercurial repository From 851877ed97af54abc62c75c7330f6ccd085cd1a1 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Fri, 5 Jun 2015 08:59:48 +0200 Subject: [PATCH 17/45] Added `compatible` icons --- README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index ed4aae53..c62b7da0 100644 --- a/README.md +++ b/README.md @@ -161,20 +161,20 @@ The `vcs` segment uses various symbols to tell you the state of your repository. These symbols depend on your installed [Font](#fonts) and your `POWERLEVEL9K_MODE` set. -| `powerline-patched` | `awesome-patched` | explanation -|---------------------|-------------------|--------------------------------------------- -| `↑4` | ![icon_outgoing](https://cloud.githubusercontent.com/assets/1544760/7976089/b5904d6e-0a76-11e5-8147-5e873ac52d79.gif)4 | Number of commits your repository is ahead of your remote branch -| `↓5` | ![icon_incoming](https://cloud.githubusercontent.com/assets/1544760/7976091/b5909c9c-0a76-11e5-9cad-9bf0a28a897c.gif)5 | Number of commits your repository is behind of your remote branch -| `⍟3` | ![icon_stash](https://cloud.githubusercontent.com/assets/1544760/7976094/b5ae9346-0a76-11e5-8cc7-e98b81824118.gif)3 | Number of stashes, here 3. -| `●` | ![icon_unstaged](https://cloud.githubusercontent.com/assets/1544760/7976096/b5aefa98-0a76-11e5-9408-985440471215.gif) | There are unstaged changes in your working copy -| `✚` | ![icon_staged](https://cloud.githubusercontent.com/assets/1544760/7976095/b5aecc8a-0a76-11e5-8988-221afc6e8982.gif) | There are staged changes in your working copy -| `?` | ![icon_untracked](https://cloud.githubusercontent.com/assets/1544760/7976098/b5c7a2e6-0a76-11e5-8c5b-315b595b2bc4.gif) | There are files in your working copy, that are unknown to your repository -| `→` | ![icon_remote_tracking_branch](https://cloud.githubusercontent.com/assets/1544760/7976093/b5ad2c0e-0a76-11e5-9cd3-62a077b1b0c7.gif) | The name of your branch differs from its tracking branch. -| `☿` | ![icon_bookmark](https://cloud.githubusercontent.com/assets/1544760/7976197/546cfac6-0a78-11e5-88a6-ce3a1e0a174e.gif) | A mercurial bookmark is active. -| ![icon_branch_powerline](https://cloud.githubusercontent.com/assets/1544760/8000852/e7e8d8a0-0b5f-11e5-9834-de9b25c92284.gif) | ![](https://cloud.githubusercontent.com/assets/1544760/7976087/b58bbe3e-0a76-11e5-8d0d-7a5c1bc7f730.gif) | Branch Icon -| None | ![icon_commit](https://cloud.githubusercontent.com/assets/1544760/7976088/b58f4e50-0a76-11e5-9e70-86450d937030.gif)2c3705 | The current commit hash. Here "2c3705" -| None | ![icon_git](https://cloud.githubusercontent.com/assets/1544760/7976092/b5909f80-0a76-11e5-9950-1438b9d72465.gif) | Repository is a git repository -| None | ![icon_mercurial](https://cloud.githubusercontent.com/assets/1544760/7976090/b5908da6-0a76-11e5-8c91-452b6e73f631.gif) | Repository is a Mercurial repository +| `compatible` | `powerline-patched` | `awesome-patched` | explanation +|--------------|---------------------|-------------------|-------------------------- +| `↑4` | `↑4` | ![icon_outgoing](https://cloud.githubusercontent.com/assets/1544760/7976089/b5904d6e-0a76-11e5-8147-5e873ac52d79.gif)4 | Number of commits your repository is ahead of your remote branch +| `↓5` | `↓5` | ![icon_incoming](https://cloud.githubusercontent.com/assets/1544760/7976091/b5909c9c-0a76-11e5-9cad-9bf0a28a897c.gif)5 | Number of commits your repository is behind of your remote branch +| None | `⍟3` | ![icon_stash](https://cloud.githubusercontent.com/assets/1544760/7976094/b5ae9346-0a76-11e5-8cc7-e98b81824118.gif)3 | Number of stashes, here 3. +| `●` | `●` | ![icon_unstaged](https://cloud.githubusercontent.com/assets/1544760/7976096/b5aefa98-0a76-11e5-9408-985440471215.gif) | There are unstaged changes in your working copy +| `✚` | `✚` | ![icon_staged](https://cloud.githubusercontent.com/assets/1544760/7976095/b5aecc8a-0a76-11e5-8988-221afc6e8982.gif) | There are staged changes in your working copy +| `?` | `?` | ![icon_untracked](https://cloud.githubusercontent.com/assets/1544760/7976098/b5c7a2e6-0a76-11e5-8c5b-315b595b2bc4.gif) | There are files in your working copy, that are unknown to your repository +| `→` | `→` | ![icon_remote_tracking_branch](https://cloud.githubusercontent.com/assets/1544760/7976093/b5ad2c0e-0a76-11e5-9cd3-62a077b1b0c7.gif) | The name of your branch differs from its tracking branch. +| None | `☿` | ![icon_bookmark](https://cloud.githubusercontent.com/assets/1544760/7976197/546cfac6-0a78-11e5-88a6-ce3a1e0a174e.gif) | A mercurial bookmark is active. +| `@` | ![icon_branch_powerline](https://cloud.githubusercontent.com/assets/1544760/8000852/e7e8d8a0-0b5f-11e5-9834-de9b25c92284.gif) | ![](https://cloud.githubusercontent.com/assets/1544760/7976087/b58bbe3e-0a76-11e5-8d0d-7a5c1bc7f730.gif) | Branch Icon +| None | None | ![icon_commit](https://cloud.githubusercontent.com/assets/1544760/7976088/b58f4e50-0a76-11e5-9e70-86450d937030.gif)2c3705 | The current commit hash. Here "2c3705" +| None | None | ![icon_git](https://cloud.githubusercontent.com/assets/1544760/7976092/b5909f80-0a76-11e5-9950-1438b9d72465.gif) | Repository is a git repository +| None | None | ![icon_mercurial](https://cloud.githubusercontent.com/assets/1544760/7976090/b5908da6-0a76-11e5-8c91-452b6e73f631.gif) | Repository is a Mercurial repository ### Styling From d8d9e6cfda414c9fa95a770b8e8fbf42499f3d43 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Fri, 5 Jun 2015 09:00:32 +0200 Subject: [PATCH 18/45] Added variable for completeness. --- powerlevel9k.zsh-theme | 1 + 1 file changed, 1 insertion(+) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 61c8ede2..92bbf405 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -91,6 +91,7 @@ case $POWERLEVEL9K_MODE in VCS_UNTRACKED_ICON='?' VCS_UNSTAGED_ICON="\u25CF" # ● VCS_STAGED_ICON="\u271A" # ✚ + VCS_STASH_ICON='' VCS_INCOMING_CHANGES="\u2193" # ↓ VCS_OUTGOING_CHANGES="\u2191" # ↑ VCS_TAG_ICON='' From 7bf7ab94b6ddf91e95e7400c1141dd5d9e3557fc Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Fri, 5 Jun 2015 18:56:11 +0200 Subject: [PATCH 19/45] Fix for Issue #33. Now the RPROMPT is on the first line. --- powerlevel9k.zsh-theme | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index f65143a1..a35292a8 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -470,7 +470,15 @@ precmd() { if [[ "$POWERLEVEL9K_PROMPT_ON_NEWLINE" == true ]]; then PROMPT='╭─%{%f%b%k%}$(build_left_prompt) ╰─ ' + # The right prompt should be on the same line as the first line of the left prompt. + # To do so, there is just a quite ugly workaround: Before zsh draws the RPROMPT, + # we advise it, to go one line up. At the end of RPROMPT, we advise it to go one + # line down. See http://superuser.com/questions/357107/zsh-right-justify-in-ps1 + RPROMPT_PREFIX='%{'$'\e[1A''%}' # one line up + RPROMPT_SUFFIX='%{'$'\e[1B''%}' # one line down else PROMPT='%{%f%b%k%}$(build_left_prompt) ' + RPROMPT_PREFIX='' + RPROMPT_SUFFIX='' fi -RPROMPT='%{%f%b%k%}$(build_right_prompt)%{$reset_color%}' +RPROMPT=$RPROMPT_PREFIX'%{%f%b%k%}$(build_right_prompt)%{$reset_color%}'$RPROMPT_SUFFIX From 3e41f292236336b8b67d329a6c7d86fc8b072320 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Fri, 5 Jun 2015 19:02:07 +0200 Subject: [PATCH 20/45] Formatting. --- powerlevel9k.zsh-theme | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index a35292a8..df0319c7 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -471,14 +471,14 @@ if [[ "$POWERLEVEL9K_PROMPT_ON_NEWLINE" == true ]]; then PROMPT='╭─%{%f%b%k%}$(build_left_prompt) ╰─ ' # The right prompt should be on the same line as the first line of the left prompt. - # To do so, there is just a quite ugly workaround: Before zsh draws the RPROMPT, - # we advise it, to go one line up. At the end of RPROMPT, we advise it to go one - # line down. See http://superuser.com/questions/357107/zsh-right-justify-in-ps1 + # To do so, there is just a quite ugly workaround: Before zsh draws the RPROMPT, + # we advise it, to go one line up. At the end of RPROMPT, we advise it to go one + # line down. See http://superuser.com/questions/357107/zsh-right-justify-in-ps1 RPROMPT_PREFIX='%{'$'\e[1A''%}' # one line up - RPROMPT_SUFFIX='%{'$'\e[1B''%}' # one line down + RPROMPT_SUFFIX='%{'$'\e[1B''%}' # one line down else PROMPT='%{%f%b%k%}$(build_left_prompt) ' - RPROMPT_PREFIX='' - RPROMPT_SUFFIX='' + RPROMPT_PREFIX='' + RPROMPT_SUFFIX='' fi RPROMPT=$RPROMPT_PREFIX'%{%f%b%k%}$(build_right_prompt)%{$reset_color%}'$RPROMPT_SUFFIX From d65aea3a64f125b9f9768218a9165b591d49e46c Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Fri, 5 Jun 2015 19:23:32 +0200 Subject: [PATCH 21/45] Added more Icons, that work in `compatible` mode. --- README.md | 4 ++-- powerlevel9k.zsh-theme | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index c62b7da0..dbcb14f6 100644 --- a/README.md +++ b/README.md @@ -165,12 +165,12 @@ set. |--------------|---------------------|-------------------|-------------------------- | `↑4` | `↑4` | ![icon_outgoing](https://cloud.githubusercontent.com/assets/1544760/7976089/b5904d6e-0a76-11e5-8147-5e873ac52d79.gif)4 | Number of commits your repository is ahead of your remote branch | `↓5` | `↓5` | ![icon_incoming](https://cloud.githubusercontent.com/assets/1544760/7976091/b5909c9c-0a76-11e5-9cad-9bf0a28a897c.gif)5 | Number of commits your repository is behind of your remote branch -| None | `⍟3` | ![icon_stash](https://cloud.githubusercontent.com/assets/1544760/7976094/b5ae9346-0a76-11e5-8cc7-e98b81824118.gif)3 | Number of stashes, here 3. +| `⍟3` | `⍟3` | ![icon_stash](https://cloud.githubusercontent.com/assets/1544760/7976094/b5ae9346-0a76-11e5-8cc7-e98b81824118.gif)3 | Number of stashes, here 3. | `●` | `●` | ![icon_unstaged](https://cloud.githubusercontent.com/assets/1544760/7976096/b5aefa98-0a76-11e5-9408-985440471215.gif) | There are unstaged changes in your working copy | `✚` | `✚` | ![icon_staged](https://cloud.githubusercontent.com/assets/1544760/7976095/b5aecc8a-0a76-11e5-8988-221afc6e8982.gif) | There are staged changes in your working copy | `?` | `?` | ![icon_untracked](https://cloud.githubusercontent.com/assets/1544760/7976098/b5c7a2e6-0a76-11e5-8c5b-315b595b2bc4.gif) | There are files in your working copy, that are unknown to your repository | `→` | `→` | ![icon_remote_tracking_branch](https://cloud.githubusercontent.com/assets/1544760/7976093/b5ad2c0e-0a76-11e5-9cd3-62a077b1b0c7.gif) | The name of your branch differs from its tracking branch. -| None | `☿` | ![icon_bookmark](https://cloud.githubusercontent.com/assets/1544760/7976197/546cfac6-0a78-11e5-88a6-ce3a1e0a174e.gif) | A mercurial bookmark is active. +| `☿` | `☿` | ![icon_bookmark](https://cloud.githubusercontent.com/assets/1544760/7976197/546cfac6-0a78-11e5-88a6-ce3a1e0a174e.gif) | A mercurial bookmark is active. | `@` | ![icon_branch_powerline](https://cloud.githubusercontent.com/assets/1544760/8000852/e7e8d8a0-0b5f-11e5-9834-de9b25c92284.gif) | ![](https://cloud.githubusercontent.com/assets/1544760/7976087/b58bbe3e-0a76-11e5-8d0d-7a5c1bc7f730.gif) | Branch Icon | None | None | ![icon_commit](https://cloud.githubusercontent.com/assets/1544760/7976088/b58f4e50-0a76-11e5-9e70-86450d937030.gif)2c3705 | The current commit hash. Here "2c3705" | None | None | ![icon_git](https://cloud.githubusercontent.com/assets/1544760/7976092/b5909f80-0a76-11e5-9950-1438b9d72465.gif) | Repository is a git repository diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 04e7183d..a02e9d4b 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -58,8 +58,8 @@ case $POWERLEVEL9K_MODE in AWS_ICON="\uE895" #  BACKGROUND_JOBS_ICON="\uE82F " #  TEST_ICON="\uE891" #  - OK_ICON="\u2713" # ✓ - FAIL_ICON="\u2718" # ✘ + OK_ICON="\u2713" # ✓ + FAIL_ICON="\u2718" # ✘ VCS_UNTRACKED_ICON="\uE16C" #  VCS_UNSTAGED_ICON="\uE17C" #  VCS_STAGED_ICON="\uE168" #  @@ -81,21 +81,21 @@ case $POWERLEVEL9K_MODE in 'compatible') LEFT_SEGMENT_SEPARATOR="\u2B80" # ⮀ RIGHT_SEGMENT_SEPARATOR="\u2B82" # ⮂ - ROOT_ICON='*R*' + ROOT_ICON="\u26A1" # ⚡ RUBY_ICON='' AWS_ICON="AWS:" BACKGROUND_JOBS_ICON="\u2699" # ⚙ TEST_ICON='' - OK_ICON='' - FAIL_ICON='x' + OK_ICON="\u2713" # ✓ + FAIL_ICON="\u2718" # ✘ VCS_UNTRACKED_ICON='?' VCS_UNSTAGED_ICON="\u25CF" # ● VCS_STAGED_ICON="\u271A" # ✚ - VCS_STASH_ICON='' + VCS_STASH_ICON="\u235F" # ⍟ VCS_INCOMING_CHANGES="\u2193" # ↓ VCS_OUTGOING_CHANGES="\u2191" # ↑ VCS_TAG_ICON='' - VCS_BOOKMARK_ICON='' + VCS_BOOKMARK_ICON="\u263F" # ☿ VCS_COMMIT_ICON='' VCS_BRANCH_ICON='@' VCS_REMOTE_BRANCH_ICON="\u2192" # → @@ -111,8 +111,8 @@ case $POWERLEVEL9K_MODE in AWS_ICON="\uE895" #  BACKGROUND_JOBS_ICON="\uE82F " #  TEST_ICON="\uE891" #  - OK_ICON="\u2713" # ✓ - FAIL_ICON="\u2718" # ✘ + OK_ICON="\u2713" # ✓ + FAIL_ICON="\u2718" # ✘ VCS_UNTRACKED_ICON="\uE16C" #  VCS_UNSTAGED_ICON="\uE17C" #  VCS_STAGED_ICON="\uE168" #  @@ -140,8 +140,8 @@ case $POWERLEVEL9K_MODE in AWS_ICON="AWS:" BACKGROUND_JOBS_ICON="\u2699" # ⚙ TEST_ICON='' - OK_ICON="\u2713" # ✓ - FAIL_ICON="\u2718" # ✘ + OK_ICON="\u2713" # ✓ + FAIL_ICON="\u2718" # ✘ VCS_UNTRACKED_ICON='?' VCS_UNSTAGED_ICON="\u25CF" # ● VCS_STAGED_ICON="\u271A" # ✚ From 3f074d5e984e379f518bbdb43a9b11d934781f6a Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Fri, 5 Jun 2015 17:17:35 -0700 Subject: [PATCH 22/45] README: Changes / reorg regarding new font options --- README.md | 89 ++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 62 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index dbcb14f6..c7fdb61d 100644 --- a/README.md +++ b/README.md @@ -63,10 +63,12 @@ Here are some screenshots of `powerlevel9k` with default settings: ### Installation +There are three different forms of installation that you can use to make use of +this theme: -You just need to install the theme and set `POWERLEVEL9K_MODE='compatible'` -to join the experience. If you want to customize your experience even further -read the chapter about "[fonts](#fonts)" or about "[segment customization](#segment-customization)". +* Normal - Theme + Powerline Fonts +* Über - Theme + Awesome Powerline Fonts +* Bare Bones - Theme Only #### Install Powerlevel9k @@ -80,6 +82,60 @@ You then need to select this theme in your `~/.zshrc`: ZSH_THEME="powerlevel9k/powerlevel9k" + +#### Install Powerline Fonts for Normal Configuration + +You can find the [installation instructions for Powerline Fonts here] +(https://powerline.readthedocs.org/en/latest/installation/linux.html#fonts-installation). +You can also find the raw font files [in this Github +repository](https://github.com/powerline/fonts) if you want to manually install +them for your OS. + +After you have installed Powerline fonts, make the default font in your terminal +emulator the Powerline font you want to use. + +This is the default mode for `Powerlevel9k`, and no further configuration is +necessary. + +#### Alternative Configuration: Über + +Alternatively, you can install [Awesome Powerline +Fonts](https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched), +which provide a number of additional glyphs. + +You then need to indicate that you wish to use the additional glyphs by defining +the following in your `~/.zshrc`: + + POWERLEVEL9K_MODE='awesome-patched' + +If you choose to make use of this, your prompt will look something like this: + +![](https://cloud.githubusercontent.com/assets/1544760/7959660/67612918-09fb-11e5-9ef2-2308363c3c51.png) + +Note that if you prefer flat segment transitions, you can use the following with +`Awesome Powerline Fonts` installed: + + POWERLEVEL9K_MODE='flat' + +Which looks like this: + +![](https://cloud.githubusercontent.com/assets/1544760/7981324/76d0eb5a-0aae-11e5-9608-d662123d0b0a.png) + +#### Alternative Configuration: Bare Bones + +This option is best if you prefer not to install additional fonts. This option +will work out-of-the-box if your your terminal font supports the segment +separator characters `\uE0B0` (left segment separator) and `\uE0B2` (right +segment separator). + +All you need to do to in this case is install the `Powerlevel9k` theme itself, +as explained above, and then define the following in your `~/.zshrc`: + + POWERLEVEL9K_MODE='compatible' + +Note that depending on your terminal font, this may still not render +appropriately. This configuration should be used as a back-up. + ### Segment Customization Customizing your prompt is easy! Select the segments you want to have displayed, @@ -158,10 +214,10 @@ Example: ##### Symbols The `vcs` segment uses various symbols to tell you the state of your repository. -These symbols depend on your installed [Font](#fonts) and your `POWERLEVEL9K_MODE` -set. +These symbols depend on your installed font and selected `POWERLEVEL9K_MODE` +from the [Installation](#Installation) section above. -| `compatible` | `powerline-patched` | `awesome-patched` | explanation +| `Bare Bones` | `Normal` | `Über` | explanation |--------------|---------------------|-------------------|-------------------------- | `↑4` | `↑4` | ![icon_outgoing](https://cloud.githubusercontent.com/assets/1544760/7976089/b5904d6e-0a76-11e5-8147-5e873ac52d79.gif)4 | Number of commits your repository is ahead of your remote branch | `↓5` | `↓5` | ![icon_incoming](https://cloud.githubusercontent.com/assets/1544760/7976091/b5909c9c-0a76-11e5-9cad-9bf0a28a897c.gif)5 | Number of commits your repository is behind of your remote branch @@ -181,27 +237,6 @@ set. You can configure the look and feel of your prompt easily with some built-in options. -#### Fonts - -If you set `POWERLEVEL9K_MODE='compatible'` you just get a little glimpse of -the beauty of this theme. - -To get nicer Icons you need to install a [powerline-patched](https://github.com/Lokaltog/powerline-fonts) font. -In your terminal emulator you need to select this font and in your `~/.zshrc` you need -to set `POWERLEVEL9K_MODE='powerline-patched'`. -You can find the [installation instructions here](https://powerline.readthedocs.org/en/latest/installation/linux.html#fonts-installation). -You can also find the raw font files [in this Github repository](https://github.com/powerline/fonts) if you want to manually install them for your OS. -Screenshot: -![](http://bhilburn.org/content/images/2015/01/pl9k-improved.png) - -If even these Icons did not impress you, have a look at `POWERLEVEL9K_MODE='awesome-patched'`. -For this mode, you have to install a [awesome-patched](https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched) font and set the according mode. -Screenshot: -![](https://cloud.githubusercontent.com/assets/1544760/7959660/67612918-09fb-11e5-9ef2-2308363c3c51.png) - -If you prefer segements as rectangles, just set `POWERLEVEL9K_MODE='flat'`, but -beware: You still need a [awesome-patched](https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched) font. - #### Double-Lined Prompt By default, `powerlevel9k` is a single-lined prompt. If you would like to have From 9a507fbdae016d1250f5a63c705361c207bee290 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Fri, 5 Jun 2015 17:26:00 -0700 Subject: [PATCH 23/45] Minor changes to docs in README and theme file. --- README.md | 4 ++-- powerlevel9k.zsh-theme | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index c7fdb61d..e74adf7e 100644 --- a/README.md +++ b/README.md @@ -100,8 +100,8 @@ necessary. #### Alternative Configuration: Über Alternatively, you can install [Awesome Powerline -Fonts](https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched), -which provide a number of additional glyphs. +Fonts](https://github.com/gabrielelana/awesome-terminal-fonts), which provide +a number of additional glyphs. You then need to indicate that you wish to use the additional glyphs by defining the following in your `~/.zshrc`: diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index a02e9d4b..0fb515fe 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -46,11 +46,13 @@ CURRENT_BG='NONE' # These characters require the Powerline fonts to work properly. If see boxes or -# bizarre characters below, your fonts are not correctly installed. In case you +# bizarre characters below, your fonts are not correctly installed. If you # do not want to install a special font, you can set `POWERLEVEL9K_MODE` to # `compatible`. This shows all icons in regular symbols. case $POWERLEVEL9K_MODE in 'flat') + # Awesome-Patched Font required! + # See https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched LEFT_SEGMENT_SEPARATOR='' RIGHT_SEGMENT_SEPARATOR='' ROOT_ICON="\uE801" #  @@ -103,7 +105,8 @@ case $POWERLEVEL9K_MODE in VCS_HG_ICON='HG' ;; 'awesome-patched') - # Awesome-Patched Font required! See https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched + # Awesome-Patched Font required! + # See https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched LEFT_SEGMENT_SEPARATOR="\uE0B0" #  RIGHT_SEGMENT_SEPARATOR="\uE0B2" #  ROOT_ICON="\u26A1" # ⚡ @@ -132,7 +135,8 @@ case $POWERLEVEL9K_MODE in VCS_HG_ICON="\uE1C3 " #  ;; *) - # Powerline-Patched Font required! See https://github.com/Lokaltog/powerline-fonts + # Powerline-Patched Font required! + # See https://github.com/Lokaltog/powerline-fonts LEFT_SEGMENT_SEPARATOR="\uE0B0" #  RIGHT_SEGMENT_SEPARATOR="\uE0B2" #  ROOT_ICON="\u26A1" # ⚡ From 86db2731886c6c8882cb6b3f1fd9c5bf94d94632 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Sat, 6 Jun 2015 18:18:35 +0200 Subject: [PATCH 24/45] Cleaned up whitespaces: Now the whitespaces are controlled by the functions that draw the segments (except vcs). This makes it more flexible, and you don't get unwanted whitespaces, when flipping segments from one side to another. --- powerlevel9k.zsh-theme | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index a02e9d4b..800faec9 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -263,22 +263,24 @@ left_prompt_segment() { [[ -n $2 ]] && bg="%K{$2}" || bg="%k" [[ -n $3 ]] && fg="%F{$3}" || fg="%f" if [[ $CURRENT_BG != 'NONE' && $2 != $CURRENT_BG ]]; then + # Middle segment echo -n "%{$bg%F{$CURRENT_BG}%}$LEFT_SEGMENT_SEPARATOR%{$fg%} " else + # First segment echo -n "%{$bg%}%{$fg%} " fi CURRENT_BG=$2 - [[ -n $4 ]] && echo -n $4 + [[ -n $4 ]] && echo -n "$4 " } # End the left prompt, closing any open segments left_prompt_end() { if [[ -n $CURRENT_BG ]]; then - echo -n " %{%k%F{$CURRENT_BG}%}$LEFT_SEGMENT_SEPARATOR" + echo -n "%{%k%F{$CURRENT_BG}%}$LEFT_SEGMENT_SEPARATOR" else - echo -n " %{%k%}" + echo -n "%{%k%}" fi - echo -n "%{%f%}" + echo -n "%{%f%} " CURRENT_BG='' } @@ -300,8 +302,8 @@ right_prompt_segment() { local bg fg [[ -n $2 ]] && bg="%K{$2}" || bg="%k" [[ -n $3 ]] && fg="%F{$3}" || fg="%f" - echo -n " %f%F{$2}$RIGHT_SEGMENT_SEPARATOR%f%{$bg%}%{$fg%} " - [[ -n $4 ]] && echo -n $4 + echo -n "%f%F{$2}$RIGHT_SEGMENT_SEPARATOR%f%{$bg%}%{$fg%} " + [[ -n $4 ]] && echo -n "$4 " } ################################################################ @@ -317,7 +319,7 @@ prompt_vcs() { $1_prompt_segment $0 green $DEFAULT_COLOR fi - echo -n "%F{$VCS_FOREGROUND_COLOR}%f$vcs_prompt" + echo -n "%F{$VCS_FOREGROUND_COLOR}%f$vcs_prompt " fi } @@ -523,7 +525,7 @@ prompt_time() { time_format=$POWERLEVEL9K_TIME_FORMAT fi - $1_prompt_segment $0 $DEFAULT_COLOR_INVERTED $DEFAULT_COLOR "$time_format " + $1_prompt_segment $0 $DEFAULT_COLOR_INVERTED $DEFAULT_COLOR $time_format } # Virtualenv: current working virtualenv @@ -583,7 +585,7 @@ if [[ "$POWERLEVEL9K_PROMPT_ON_NEWLINE" == true ]]; then RPROMPT_PREFIX='%{'$'\e[1A''%}' # one line up RPROMPT_SUFFIX='%{'$'\e[1B''%}' # one line down else - PROMPT='%{%f%b%k%}$(build_left_prompt) ' + PROMPT='%{%f%b%k%}$(build_left_prompt)' RPROMPT_PREFIX='' RPROMPT_SUFFIX='' fi From 6a0925ac962d921d74577a1f2c09254178737977 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Sat, 6 Jun 2015 18:21:57 +0200 Subject: [PATCH 25/45] Updated TOC. --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e74adf7e..9da57cb8 100644 --- a/README.md +++ b/README.md @@ -16,17 +16,20 @@ information in configurable prompt segments. - [Features](#features) - [Installation](#installation) - [Install Powerlevel9k](#install-powerlevel9k) + - [Install Powerline Fonts for Normal Configuration](#install-powerline-fonts-for-normal-configuration) + - [Alternative Configuration: Über](#alternative-configuration-%C3%BCber) + - [Alternative Configuration: Bare Bones](#alternative-configuration-bare-bones) - [Segment Customization](#segment-customization) - [The AWS Profile Segment](#the-aws-profile-segment) - [The 'context' Segment](#the-context-segment) - - [Test ratio](#test-ratio) - [The 'time' segment](#the-time-segment) + - [Unit Test Ratios](#unit-test-ratios) - [The 'vcs' Segment](#the-vcs-segment) - [Symbols](#symbols) - [Styling](#styling) - - [Fonts](#fonts) - [Double-Lined Prompt](#double-lined-prompt) - [Light Color Theme](#light-color-theme) + - [Further color customizations](#further-color-customizations) - [Troubleshooting](#troubleshooting) - [Gaps Between Segments](#gaps-between-segments) - [Contributions / Bugs / Contact](#contributions--bugs--contact) From 945412480ef05502ce14f716dd755860f1394ab8 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Sat, 6 Jun 2015 19:38:20 +0200 Subject: [PATCH 26/45] Reordering code. --- powerlevel9k.zsh-theme | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index d5ce60bb..34470e2a 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -40,10 +40,9 @@ # POWERLEVEL9K_COLOR_SCHEME='light' ################################################################ -# The `CURRENT_BG` variable is used to remember what the last BG color used was -# when building the left-hand prompt. Because the RPROMPT is created from -# right-left but reads the opposite, this isn't necessary for the other side. -CURRENT_BG='NONE' +## Debugging +#zstyle ':vcs_info:*+*:*' debug true +#set -o xtrace # These characters require the Powerline fonts to work properly. If see boxes or # bizarre characters below, your fonts are not correctly installed. If you @@ -236,10 +235,6 @@ else zstyle ':vcs_info:*' use-simple true fi -## Debugging -#zstyle ':vcs_info:*+*:*' debug true -#set -o xtrace - ################################################################ # Prompt Segment Constructors ################################################################ @@ -411,6 +406,11 @@ function +vi-vcs-detect-changes() { # Prompt Segments ################################################################ +# The `CURRENT_BG` variable is used to remember what the last BG color used was +# when building the left-hand prompt. Because the RPROMPT is created from +# right-left but reads the opposite, this isn't necessary for the other side. +CURRENT_BG='NONE' + # AWS Profile prompt_aws() { local aws_profile=$AWS_DEFAULT_PROFILE From 5592c90041c2791c4fa816d957a492ab6d2d71c6 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Mon, 8 Jun 2015 13:42:03 -0700 Subject: [PATCH 27/45] Removing the VCS_BRAND_INDICATOR by default --- powerlevel9k.zsh-theme | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 34470e2a..8055ce05 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -74,7 +74,8 @@ case $POWERLEVEL9K_MODE in VCS_TAG_ICON="\uE817 " #  VCS_BOOKMARK_ICON="\uE87B" #  VCS_COMMIT_ICON="\uE821 " #  - VCS_BRANCH_ICON=" \uE220" #  + #VCS_BRANCH_ICON=" \uE220" #  + VCS_BRANCH_ICON='' VCS_REMOTE_BRANCH_ICON="\uE804" #  VCS_GIT_ICON="\uE20E " #  VCS_HG_ICON="\uE1C3 " #  @@ -98,7 +99,8 @@ case $POWERLEVEL9K_MODE in VCS_TAG_ICON='' VCS_BOOKMARK_ICON="\u263F" # ☿ VCS_COMMIT_ICON='' - VCS_BRANCH_ICON='@' + #VCS_BRANCH_ICON='@' + VCS_BRANCH_ICON='' VCS_REMOTE_BRANCH_ICON="\u2192" # → VCS_GIT_ICON='Git' VCS_HG_ICON='HG' @@ -128,7 +130,8 @@ case $POWERLEVEL9K_MODE in VCS_TAG_ICON="\uE817 " #  VCS_BOOKMARK_ICON="\uE87B" #  VCS_COMMIT_ICON="\uE821 " #  - VCS_BRANCH_ICON=" \uE220" #  + #VCS_BRANCH_ICON=" \uE220" #  + VCS_BRANCH_ICON='' VCS_REMOTE_BRANCH_ICON="\uE804" #  VCS_GIT_ICON="\uE20E " #  VCS_HG_ICON="\uE1C3 " #  @@ -154,7 +157,8 @@ case $POWERLEVEL9K_MODE in VCS_TAG_ICON='' VCS_BOOKMARK_ICON="\u263F" # ☿ VCS_COMMIT_ICON='' - VCS_BRANCH_ICON='@' + #VCS_BRANCH_ICON='@' + VCS_BRANCH_ICON='' VCS_REMOTE_BRANCH_ICON="\u2192" # → VCS_GIT_ICON="\uE0A0" #  VCS_HG_ICON="\uE0A0" #  @@ -582,10 +586,11 @@ precmd() { if [[ "$POWERLEVEL9K_PROMPT_ON_NEWLINE" == true ]]; then PROMPT='╭─%{%f%b%k%}$(build_left_prompt) ╰─ ' - # The right prompt should be on the same line as the first line of the left prompt. - # To do so, there is just a quite ugly workaround: Before zsh draws the RPROMPT, - # we advise it, to go one line up. At the end of RPROMPT, we advise it to go one - # line down. See http://superuser.com/questions/357107/zsh-right-justify-in-ps1 + # The right prompt should be on the same line as the first line of the left + # prompt. To do so, there is just a quite ugly workaround: Before zsh draws + # the RPROMPT, we advise it, to go one line up. At the end of RPROMPT, we + # advise it to go one line down. See: + # http://superuser.com/questions/357107/zsh-right-justify-in-ps1 RPROMPT_PREFIX='%{'$'\e[1A''%}' # one line up RPROMPT_SUFFIX='%{'$'\e[1B''%}' # one line down else From c78bdf95045cfcb3c8b683724ed95129861eabad Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Mon, 8 Jun 2015 13:47:39 -0700 Subject: [PATCH 28/45] README: Updating picture location --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 9da57cb8..5427212f 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,10 @@ giving you the most epic terminal styling in the universe. Look like a bad-ass. Impress everyone in 'Screenshot Your Desktop' threads. Use powerlevel9k. In addition to looking amazing, this theme actually provides a lot of useful -information in configurable prompt segments. +information in configurable prompt segments. Here is an example of what it looks +like with a normal installation and default settings: + +![](http://bhilburn.org/content/images/2015/01/pl9k-improved.png) @@ -58,13 +61,11 @@ information in configurable prompt segments. doesn't require Powerline fonts, check out the sister font, [hackersaurus](https://github.com/bhilburn/hackersaurus).** -Here are some screenshots of `powerlevel9k` with default settings: +Here is a detailed screenshot showing `powerlevel9k` with default settings and +varying terminal status indicators: ![](http://bhilburn.org/content/images/2014/12/powerlevel9k.png) -![](http://bhilburn.org/content/images/2015/01/pl9k-improved.png) - - ### Installation There are three different forms of installation that you can use to make use of this theme: From 4ad6080d319696dc241791bb5ca3f70db42a135e Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Wed, 10 Jun 2015 02:31:36 +0200 Subject: [PATCH 29/45] Added a testing environment in form of a virtual machine. --- .gitignore | 1 + test-vm/README.md | 25 ++++++++++++++ test-vm/Vagrantfile | 82 ++++++++++++++++++++++++++++++++++++++++++++ test-vm/antigen.sh | 27 +++++++++++++++ test-vm/bootstrap.sh | 9 +++++ test-vm/omz.sh | 30 ++++++++++++++++ test-vm/plain.sh | 7 ++++ test-vm/prezto.sh | 27 +++++++++++++++ 8 files changed, 208 insertions(+) create mode 100644 .gitignore create mode 100644 test-vm/README.md create mode 100644 test-vm/Vagrantfile create mode 100644 test-vm/antigen.sh create mode 100644 test-vm/bootstrap.sh create mode 100644 test-vm/omz.sh create mode 100644 test-vm/plain.sh create mode 100644 test-vm/prezto.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..8f6423fa --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +test-vm/.vagrant diff --git a/test-vm/README.md b/test-vm/README.md new file mode 100644 index 00000000..9f0861e9 --- /dev/null +++ b/test-vm/README.md @@ -0,0 +1,25 @@ +# Test-VM for powerlevel9k + +In this virtual machine you will find a recent ubuntu with preinstalled ZSH, oh-my-zsh, antigen, prezto and - of course - powerlevel9k. The main use-case is to test the powerlevel9k theme. + +## Installation + +In order to run this virtual machine, you need [vagrant](https://www.vagrantup.com/) and [VirtualBox](http://www.virtualbox.org/). + +## Running + +`vagrant` is a quite easy to use command line tool to configure a virtual machine. To fire the machine up, just run `vagrant up`. At the first run, it will install a whole ubuntu. With `vagrant ssh` you can log in into the machine. + +## Testing + +Once you have SSH'd into the machine, you'll see a plain ZSH. To test the other frameworks, you just have to switch to one of the following users: + + * `vagrant-antigen` + * `vagrant-prezto` + * `vagrant-omz` + +To switch use `sudo -i -H -u `. `-i` stands for "simulate initial login", `-H` sets the "$HOME" variable to the directory of the user , `-u` for the username. + +All users have `vagrant` as password and are in the /etc/sudoers. + +The regular `vagrant` user has a plain ZSH with the powerlevel9k theme. diff --git a/test-vm/Vagrantfile b/test-vm/Vagrantfile new file mode 100644 index 00000000..a526b54b --- /dev/null +++ b/test-vm/Vagrantfile @@ -0,0 +1,82 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +# All Vagrant configuration is done below. The "2" in Vagrant.configure +# configures the configuration version (we support older styles for +# backwards compatibility). Please don't change it unless you know what +# you're doing. +Vagrant.configure(2) do |config| + # The most common configuration options are documented and commented below. + # For a complete reference, please see the online documentation at + # https://docs.vagrantup.com. + + # Every Vagrant development environment requires a box. You can search for + # boxes at https://atlas.hashicorp.com/search. + config.vm.box = "ubuntu/precise64" + + # Bootstrap +# config.vm.provision :shell, path: "bootstrap.sh", privileged: false +# config.vm.provision :shell, path: "plain.sh" +# config.vm.provision :shell, path: "antigen.sh" +# config.vm.provision :shell, path: "prezto.sh" + config.vm.provision :shell, path: "omz.sh" + + # Disable automatic box update checking. If you disable this, then + # boxes will only be checked for updates when the user runs + # `vagrant box outdated`. This is not recommended. + # config.vm.box_check_update = false + + # Create a forwarded port mapping which allows access to a specific port + # within the machine from a port on the host machine. In the example below, + # accessing "localhost:8080" will access port 80 on the guest machine. + # config.vm.network "forwarded_port", guest: 80, host: 8080 + + # Create a private network, which allows host-only access to the machine + # using a specific IP. + # config.vm.network "private_network", ip: "192.168.33.10" + + # Create a public network, which generally matched to bridged network. + # Bridged networks make the machine appear as another physical device on + # your network. + # config.vm.network "public_network" + + # Share an additional folder to the guest VM. The first argument is + # the path on the host to the actual folder. The second argument is + # the path on the guest to mount the folder. And the optional third + # argument is a set of non-required options. + # config.vm.synced_folder "../data", "/vagrant_data" + + # Provider-specific configuration so you can fine-tune various + # backing providers for Vagrant. These expose provider-specific options. + # Example for VirtualBox: + + config.vm.provider "virtualbox" do |vb| + + # Change name to "powerlevel9k" + vb.name = "powerlevel9k" + + # Display the VirtualBox GUI when booting the machine + #vb.gui = true + + # Customize the amount of memory on the VM: + vb.memory = "256" + end + # + # View the documentation for the provider you are using for more + # information on available options. + + # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies + # such as FTP and Heroku are also available. See the documentation at + # https://docs.vagrantup.com/v2/push/atlas.html for more information. + # config.push.define "atlas" do |push| + # push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME" + # end + + # Enable provisioning with a shell script. Additional provisioners such as + # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the + # documentation for more information about their specific syntax and use. + # config.vm.provision "shell", inline: <<-SHELL + # sudo apt-get update + # sudo apt-get install -y apache2 + # SHELL +end diff --git a/test-vm/antigen.sh b/test-vm/antigen.sh new file mode 100644 index 00000000..1ad71af4 --- /dev/null +++ b/test-vm/antigen.sh @@ -0,0 +1,27 @@ +#!/usr/bin/zsh +# We need to run this script in ZSH, so that switching user works! +NEW_USER=vagrant-antigen +# Create User +PASSWORD='$6$OgLg9v2Z$Db38Jr9inZG7y8BzL8kqFK23fF5jZ7FU1oiIBLFjNYR9XVX03fwQayMgA6Rm1rzLbXaf.gkZaTWhB9pv5XLq11' +sudo useradd -p $PASSWORD -g vagrant -s $(which zsh) -m $NEW_USER +echo "$NEW_USER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/$NEW_USER +chmod 440 /etc/sudoers.d/$NEW_USER + +( + # Change User (See http://unix.stackexchange.com/questions/86778/why-cant-we-execute-a-list-of-commands-as-different-user-without-sudo) + USERNAME=$NEW_USER + #UID=$(id -u $NEW_USER) + #EUID=$(id -u $NEW_USER) + HOME=/home/$NEW_USER + + echo " +source ~/antigen/antigen.zsh\n +antigen theme bhilburn/powerlevel9k powerlevel9k\n +antigen apply +" > ~/.zshrc + + # install antigen + mkdir ~/antigen + curl -qL https://raw.githubusercontent.com/zsh-users/antigen/master/antigen.zsh > ~/antigen/antigen.zsh + source ~/antigen/antigen.zsh +) diff --git a/test-vm/bootstrap.sh b/test-vm/bootstrap.sh new file mode 100644 index 00000000..9651c4eb --- /dev/null +++ b/test-vm/bootstrap.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +#sudo apt-get update + +sudo apt-get install -y curl +sudo apt-get install -y git + +sudo apt-get install -y zsh +sudo chsh -s $(which zsh) vagrant diff --git a/test-vm/omz.sh b/test-vm/omz.sh new file mode 100644 index 00000000..aeb5f897 --- /dev/null +++ b/test-vm/omz.sh @@ -0,0 +1,30 @@ +#!/usr/bin/zsh +# We need to run this script in ZSH, so that switching user works! +NEW_USER=vagrant-omz +# Create User +PASSWORD='$6$OgLg9v2Z$Db38Jr9inZG7y8BzL8kqFK23fF5jZ7FU1oiIBLFjNYR9XVX03fwQayMgA6Rm1rzLbXaf.gkZaTWhB9pv5XLq11' +sudo useradd -p $PASSWORD -g vagrant -s $(which zsh) -m $NEW_USER +echo "$NEW_USER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/$NEW_USER +chmod 440 /etc/sudoers.d/$NEW_USER + +( + # Change User (See http://unix.stackexchange.com/questions/86778/why-cant-we-execute-a-list-of-commands-as-different-user-without-sudo) + USERNAME=$NEW_USER + #UID=$(id -u $NEW_USER) + #EUID=$(id -u $NEW_USER) + HOME=/home/$NEW_USER + + curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh + + cd ~/.oh-my-zsh/custom + git clone https://github.com/bhilburn/powerlevel9k.git themes/powerlevel9k + + echo ' +export ZSH=$HOME/.oh-my-zsh +plugins=(git bundler osx rake ruby) +ZSH_THEME="powerlevel9k/powerlevel9k" + +source $ZSH/oh-my-zsh.sh +' > ~/.zshrc + +) diff --git a/test-vm/plain.sh b/test-vm/plain.sh new file mode 100644 index 00000000..e2fa6a86 --- /dev/null +++ b/test-vm/plain.sh @@ -0,0 +1,7 @@ +#!/usr/bin/zsh + +git clone https://github.com/bhilburn/powerlevel9k.git + +echo " +source powerlevel9k/powerlevel9k.zsh-theme\n +" > ~/.zshrc diff --git a/test-vm/prezto.sh b/test-vm/prezto.sh new file mode 100644 index 00000000..dda885fd --- /dev/null +++ b/test-vm/prezto.sh @@ -0,0 +1,27 @@ +#!/usr/bin/zsh +# We need to run this script in ZSH, so that switching user works! +NEW_USER=vagrant-prezto +# Create User +PASSWORD='$6$OgLg9v2Z$Db38Jr9inZG7y8BzL8kqFK23fF5jZ7FU1oiIBLFjNYR9XVX03fwQayMgA6Rm1rzLbXaf.gkZaTWhB9pv5XLq11' +sudo useradd -p $PASSWORD -g vagrant -s $(which zsh) -m $NEW_USER +echo "$NEW_USER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/$NEW_USER +chmod 440 /etc/sudoers.d/$NEW_USER + +( + # Change User (See http://unix.stackexchange.com/questions/86778/why-cant-we-execute-a-list-of-commands-as-different-user-without-sudo) + USERNAME=$NEW_USER + #UID=$(id -u $NEW_USER) + #EUID=$(id -u $NEW_USER) + HOME=/home/$NEW_USER + + git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto" + + setopt EXTENDED_GLOB + for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do + ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}" + done + + git clone https://github.com/bhilburn/powerlevel9k.git ~/powerlevel9k + ln -s ~/powerlevel9k/powerlevel9k.zsh-theme ~/.zprezto/modules/prompt/functions/prompt_powerlevel9k_setup + sed -i "s/theme\ 'sorin'/theme\ 'powerlevel9k'/g" ~/.zpreztorc +) From 494714049ac1036b23cbfd45ae417577ddf65722 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Wed, 10 Jun 2015 02:38:36 +0200 Subject: [PATCH 30/45] Added provisioning for all frameworks. --- test-vm/Vagrantfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test-vm/Vagrantfile b/test-vm/Vagrantfile index a526b54b..bc6c8921 100644 --- a/test-vm/Vagrantfile +++ b/test-vm/Vagrantfile @@ -15,10 +15,10 @@ Vagrant.configure(2) do |config| config.vm.box = "ubuntu/precise64" # Bootstrap -# config.vm.provision :shell, path: "bootstrap.sh", privileged: false -# config.vm.provision :shell, path: "plain.sh" -# config.vm.provision :shell, path: "antigen.sh" -# config.vm.provision :shell, path: "prezto.sh" + config.vm.provision :shell, path: "bootstrap.sh", privileged: false + config.vm.provision :shell, path: "plain.sh" + config.vm.provision :shell, path: "antigen.sh" + config.vm.provision :shell, path: "prezto.sh" config.vm.provision :shell, path: "omz.sh" # Disable automatic box update checking. If you disable this, then From 3e13603557cf2859332ea2f6d27d12acaef6af95 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Thu, 11 Jun 2015 00:58:46 +0200 Subject: [PATCH 31/45] It makes no sense, to clone the powerlevel9k-theme in all frameworks. Instead, we can simply use the one, which is mounted in /vagrant_data.. --- test-vm/Vagrantfile | 4 ++-- test-vm/antigen.sh | 4 ++-- test-vm/omz.sh | 6 +++--- test-vm/plain.sh | 6 +----- test-vm/prezto.sh | 5 ++--- 5 files changed, 10 insertions(+), 15 deletions(-) diff --git a/test-vm/Vagrantfile b/test-vm/Vagrantfile index bc6c8921..ee53fcdf 100644 --- a/test-vm/Vagrantfile +++ b/test-vm/Vagrantfile @@ -16,7 +16,7 @@ Vagrant.configure(2) do |config| # Bootstrap config.vm.provision :shell, path: "bootstrap.sh", privileged: false - config.vm.provision :shell, path: "plain.sh" + config.vm.provision :shell, path: "plain.sh", privileged: false config.vm.provision :shell, path: "antigen.sh" config.vm.provision :shell, path: "prezto.sh" config.vm.provision :shell, path: "omz.sh" @@ -44,7 +44,7 @@ Vagrant.configure(2) do |config| # the path on the host to the actual folder. The second argument is # the path on the guest to mount the folder. And the optional third # argument is a set of non-required options. - # config.vm.synced_folder "../data", "/vagrant_data" + config.vm.synced_folder "..", "/vagrant_data" # Provider-specific configuration so you can fine-tune various # backing providers for Vagrant. These expose provider-specific options. diff --git a/test-vm/antigen.sh b/test-vm/antigen.sh index 1ad71af4..0f44c6ca 100644 --- a/test-vm/antigen.sh +++ b/test-vm/antigen.sh @@ -3,7 +3,7 @@ NEW_USER=vagrant-antigen # Create User PASSWORD='$6$OgLg9v2Z$Db38Jr9inZG7y8BzL8kqFK23fF5jZ7FU1oiIBLFjNYR9XVX03fwQayMgA6Rm1rzLbXaf.gkZaTWhB9pv5XLq11' -sudo useradd -p $PASSWORD -g vagrant -s $(which zsh) -m $NEW_USER +useradd -p $PASSWORD -g vagrant -s $(which zsh) -m $NEW_USER echo "$NEW_USER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/$NEW_USER chmod 440 /etc/sudoers.d/$NEW_USER @@ -16,7 +16,7 @@ chmod 440 /etc/sudoers.d/$NEW_USER echo " source ~/antigen/antigen.zsh\n -antigen theme bhilburn/powerlevel9k powerlevel9k\n +antigen theme /vagrant_data powerlevel9k --no-local-clone\n antigen apply " > ~/.zshrc diff --git a/test-vm/omz.sh b/test-vm/omz.sh index aeb5f897..eead4905 100644 --- a/test-vm/omz.sh +++ b/test-vm/omz.sh @@ -3,7 +3,7 @@ NEW_USER=vagrant-omz # Create User PASSWORD='$6$OgLg9v2Z$Db38Jr9inZG7y8BzL8kqFK23fF5jZ7FU1oiIBLFjNYR9XVX03fwQayMgA6Rm1rzLbXaf.gkZaTWhB9pv5XLq11' -sudo useradd -p $PASSWORD -g vagrant -s $(which zsh) -m $NEW_USER +useradd -p $PASSWORD -g vagrant -s $(which zsh) -m $NEW_USER echo "$NEW_USER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/$NEW_USER chmod 440 /etc/sudoers.d/$NEW_USER @@ -16,8 +16,8 @@ chmod 440 /etc/sudoers.d/$NEW_USER curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh - cd ~/.oh-my-zsh/custom - git clone https://github.com/bhilburn/powerlevel9k.git themes/powerlevel9k + mkdir -p ~/.oh-my-zsh/custom/themes + ln -s /vagrant_data ~/.oh-my-zsh/custom/themes/powerlevel9k echo ' export ZSH=$HOME/.oh-my-zsh diff --git a/test-vm/plain.sh b/test-vm/plain.sh index e2fa6a86..9c8445f4 100644 --- a/test-vm/plain.sh +++ b/test-vm/plain.sh @@ -1,7 +1,3 @@ #!/usr/bin/zsh -git clone https://github.com/bhilburn/powerlevel9k.git - -echo " -source powerlevel9k/powerlevel9k.zsh-theme\n -" > ~/.zshrc +echo 'source /vagrant_data/powerlevel9k.zsh-theme' > ~/.zshrc diff --git a/test-vm/prezto.sh b/test-vm/prezto.sh index dda885fd..af4e7454 100644 --- a/test-vm/prezto.sh +++ b/test-vm/prezto.sh @@ -3,7 +3,7 @@ NEW_USER=vagrant-prezto # Create User PASSWORD='$6$OgLg9v2Z$Db38Jr9inZG7y8BzL8kqFK23fF5jZ7FU1oiIBLFjNYR9XVX03fwQayMgA6Rm1rzLbXaf.gkZaTWhB9pv5XLq11' -sudo useradd -p $PASSWORD -g vagrant -s $(which zsh) -m $NEW_USER +useradd -p $PASSWORD -g vagrant -s $(which zsh) -m $NEW_USER echo "$NEW_USER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/$NEW_USER chmod 440 /etc/sudoers.d/$NEW_USER @@ -21,7 +21,6 @@ chmod 440 /etc/sudoers.d/$NEW_USER ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}" done - git clone https://github.com/bhilburn/powerlevel9k.git ~/powerlevel9k - ln -s ~/powerlevel9k/powerlevel9k.zsh-theme ~/.zprezto/modules/prompt/functions/prompt_powerlevel9k_setup + ln -s /vagrant_data/powerlevel9k.zsh-theme ~/.zprezto/modules/prompt/functions/prompt_powerlevel9k_setup sed -i "s/theme\ 'sorin'/theme\ 'powerlevel9k'/g" ~/.zpreztorc ) From 966bf5fe740facfa03286b4c7ceff3794c9a212c Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Thu, 11 Jun 2015 18:09:57 +0200 Subject: [PATCH 32/45] Global variables need to be global, so that antigen and prezto see them.. --- powerlevel9k.zsh-theme | 1 - 1 file changed, 1 deletion(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index be4b68da..695a39c3 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -169,7 +169,6 @@ esac # color scheme ################################################################ -local DEFAULT_COLOR DEFAULT_COLOR_INVERTED DEFAULT_COLOR_DARK if [[ "$POWERLEVEL9K_COLOR_SCHEME" == "light" ]]; then DEFAULT_COLOR=white DEFAULT_COLOR_INVERTED=black From e97c216c7b6973e1ce80f3f76d0254e9f52ba894 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Thu, 11 Jun 2015 18:24:16 +0200 Subject: [PATCH 33/45] More Documentation. --- README.md | 51 ++++++++++++++++++++++++++------------------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index e486a84e..2ba97554 100644 --- a/README.md +++ b/README.md @@ -76,34 +76,14 @@ this theme: #### Install Powerlevel9k -To install this theme, clone this repository into your Oh-My-Zsh `custom/themes` -directory. - - $ cd ~/.oh-my-zsh/custom - $ git clone https://github.com/bhilburn/powerlevel9k.git themes/powerlevel9k +##### With plain ZSH -You then need to select this theme in your `~/.zshrc`: +If you use just a plain ZSH, just clone this repository and reference it in your `~/.zshrc`: - ZSH_THEME="powerlevel9k/powerlevel9k" - - -#### Install Powerline Fonts for Normal Configuration - -You can find the [installation instructions for Powerline Fonts here] -(https://powerline.readthedocs.org/en/latest/installation/linux.html#fonts-installation). -You can also find the raw font files [in this Github -repository](https://github.com/powerline/fonts) if you want to manually install -them for your OS. - -After you have installed Powerline fonts, make the default font in your terminal -emulator the Powerline font you want to use. - -This is the default mode for `Powerlevel9k`, and no further configuration is -necessary. - -#### Install Powerlevel9k + $ git clone https://github.com/bhilburn/powerlevel9k.git + $ echo 'source powerlevel9k/powerlevel9k.zsh-theme' >> ~/.zshrc -##### Within Oh-my-ZSH +##### With Oh-my-ZSH To install this theme, clone this repository into your [Oh-my-Zsh](https://github.com/robbyrussell/oh-my-zsh) `custom/themes` directory. @@ -128,6 +108,27 @@ You then need to select this theme in your `~/.zpreztorc`: zstyle ':prezto:module:prompt' theme 'powerlevel9k' +##### With antigen + +If you prefer [antigen](https://github.com/zsh-users/antigen), just add it to your `~/.zshrc`: + + $ echo 'antigen theme /vagrant_data powerlevel9k' >> ~/.zshrc + $ echo 'antigen apply' >> ~/.zshrc + +#### Install Powerline Fonts for Normal Configuration + +You can find the [installation instructions for Powerline Fonts here] +(https://powerline.readthedocs.org/en/latest/installation/linux.html#fonts-installation). +You can also find the raw font files [in this Github +repository](https://github.com/powerline/fonts) if you want to manually install +them for your OS. + +After you have installed Powerline fonts, make the default font in your terminal +emulator the Powerline font you want to use. + +This is the default mode for `Powerlevel9k`, and no further configuration is +necessary. + #### Alternative Configuration: Über Alternatively, you can install [Awesome Powerline From 2821a0deee22cbb4884023e7343e22901b997c05 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Thu, 11 Jun 2015 18:24:55 +0200 Subject: [PATCH 34/45] Updated TOC. --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 2ba97554..4b430a44 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,10 @@ like with a normal installation and default settings: - [Features](#features) - [Installation](#installation) - [Install Powerlevel9k](#install-powerlevel9k) + - [With plain ZSH](#with-plain-zsh) + - [With Oh-my-ZSH](#with-oh-my-zsh) + - [With Prezto](#with-prezto) + - [With antigen](#with-antigen) - [Install Powerline Fonts for Normal Configuration](#install-powerline-fonts-for-normal-configuration) - [Alternative Configuration: Über](#alternative-configuration-%C3%BCber) - [Alternative Configuration: Bare Bones](#alternative-configuration-bare-bones) From 1e7105918d4505532eb6183254bfa15176711f10 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Thu, 11 Jun 2015 19:50:30 +0200 Subject: [PATCH 35/45] Added a reference to the test-vm folder --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 4b430a44..2f71441c 100644 --- a/README.md +++ b/README.md @@ -370,3 +370,6 @@ Please submit your contribution as a Github pull-request. If you would like to contact me directly, you can find my e-mail address on my [Github profile page](https://github.com/bhilburn). +### Testing + +Check out the [vagrant](https://www.vagrantup.com/) configuration in the [test-vm](test-vm) folder. From fe5ef3cee8178aba2dd290de1597ecc9ef5652b8 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Sat, 13 Jun 2015 00:26:18 +0200 Subject: [PATCH 36/45] All top-level usages of "local" removed. That variables need to be global for antigen and prezto to work correctly. --- powerlevel9k.zsh-theme | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 695a39c3..1ebc31bb 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -179,8 +179,8 @@ else DEFAULT_COLOR_DARK="236" fi -local VCS_FOREGROUND_COLOR=$DEFAULT_COLOR -local VCS_FOREGROUND_COLOR_DARK=$DEFAULT_COLOR_DARK +VCS_FOREGROUND_COLOR=$DEFAULT_COLOR +VCS_FOREGROUND_COLOR_DARK=$DEFAULT_COLOR_DARK # If user has defined custom colors for the `vcs` segment, override the defaults if [[ -n $POWERLEVEL9K_VCS_FOREGROUND ]]; then @@ -197,8 +197,8 @@ fi setopt prompt_subst autoload -Uz vcs_info -local VCS_WORKDIR_DIRTY=false -local VCS_CHANGESET_PREFIX='' +VCS_WORKDIR_DIRTY=false +VCS_CHANGESET_PREFIX='' if [[ "$POWERLEVEL9K_SHOW_CHANGESET" == true ]]; then # Default: Just display the first 12 characters of our changeset-ID. local VCS_CHANGESET_HASH_LENGTH=12 @@ -212,7 +212,7 @@ fi zstyle ':vcs_info:*' enable git hg zstyle ':vcs_info:*' check-for-changes true -local VCS_DEFAULT_FORMAT="$VCS_CHANGESET_PREFIX%F{$VCS_FOREGROUND_COLOR}%b%c%u%m%f" +VCS_DEFAULT_FORMAT="$VCS_CHANGESET_PREFIX%F{$VCS_FOREGROUND_COLOR}%b%c%u%m%f" zstyle ':vcs_info:git:*' formats "%F{$VCS_FOREGROUND_COLOR}$VCS_GIT_ICON%f $VCS_DEFAULT_FORMAT" zstyle ':vcs_info:hg:*' formats "%F{$VCS_FOREGROUND_COLOR}$VCS_HG_ICON%f $VCS_DEFAULT_FORMAT" From 5bbe8aa6ffc8187eb123a00f280b790ce4d52896 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Sun, 28 Jun 2015 17:19:22 -0700 Subject: [PATCH 37/45] README: Removing reference to un-merged Vagrant test VM --- README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.md b/README.md index 2f71441c..4b430a44 100644 --- a/README.md +++ b/README.md @@ -370,6 +370,3 @@ Please submit your contribution as a Github pull-request. If you would like to contact me directly, you can find my e-mail address on my [Github profile page](https://github.com/bhilburn). -### Testing - -Check out the [vagrant](https://www.vagrantup.com/) configuration in the [test-vm](test-vm) folder. From f84a14419400854f84ed70676fe0296de86480f7 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Sun, 28 Jun 2015 17:57:28 -0700 Subject: [PATCH 38/45] README: Updating to reflect new system support --- README.md | 100 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 68 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 4b430a44..db25c295 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,17 @@ -## powerlevel9k Theme for Oh-My-Zsh +## powerlevel9k Theme for ZSH -This is a theme for [Oh-My-Zsh](https://github.com/robbyrussell/oh-my-zsh). This -theme uses [Powerline Fonts](https://github.com/Lokaltog/powerline-fonts), thus -giving you the most epic terminal styling in the universe. +Powerlevel9k is a theme for ZSH which uses [Powerline +Fonts](https://github.com/Lokaltog/powerline-fonts), thus giving you the most +epic terminal styling in the universe. Look like a bad-ass. Impress everyone in 'Screenshot Your Desktop' threads. Use powerlevel9k. +Powerlevel9k can be used with vanilla ZSH, +[Oh-My-Zsh](https://github.com/robbyrussell/oh-my-zsh), or +[Prezto](https://github.com/sorin-ionescu/prezto), and can also be installed +using [antigen](https://github.com/zsh-users/antigen). + + In addition to looking amazing, this theme actually provides a lot of useful information in configurable prompt segments. Here is an example of what it looks like with a normal installation and default settings: @@ -18,14 +24,15 @@ like with a normal installation and default settings: - [Features](#features) - [Installation](#installation) - - [Install Powerlevel9k](#install-powerlevel9k) - - [With plain ZSH](#with-plain-zsh) - - [With Oh-my-ZSH](#with-oh-my-zsh) - - [With Prezto](#with-prezto) - - [With antigen](#with-antigen) - - [Install Powerline Fonts for Normal Configuration](#install-powerline-fonts-for-normal-configuration) - - [Alternative Configuration: Über](#alternative-configuration-%C3%BCber) - - [Alternative Configuration: Bare Bones](#alternative-configuration-bare-bones) + - [Step 1: Install Powerlevel9k](#step-1-install-powerlevel9k) + - [Option 1: Install for Vanilla ZSH](#option-1-install-for-vanilla-zsh) + - [Option 2: Install for Oh-My-ZSH](#option-2-install-for-oh-my-zsh) + - [Option 3: Install for Prezto](#option-3-install-for-prezto) + - [Option 4: Install for antigen](#option-4-install-for-antigen) + - [Step 2: Install Powerline Fonts](#step-2-install-powerline-fonts) + - [Option 1: Install Powerline Fonts](#option-1-install-powerline-fonts) + - [Option 2: Install Awesome Powerline Fonts](#option-2-install-awesome-powerline-fonts) + - [Option 3: Compatible Mode](#option-3-compatible-mode) - [Segment Customization](#segment-customization) - [The AWS Profile Segment](#the-aws-profile-segment) - [The 'context' Segment](#the-context-segment) @@ -55,7 +62,7 @@ like with a normal installation and default settings: * various working tree statuses (e.g., unstaged, staged, etc.,) * Shows return-code of the last command if it is an error code * Indicates background jobs with a gear icon -* Can conditionally display the `user@host` string when needed +* Can conditionally display the `user@host` string when needed (e.g., SSH) * Provides segment for command history (so you can `$ !` to re-run) * Plenty of additional segments to choose from (e.g., AWS, ruby) * Can be used as a single or double-lined prompt (see screenshots below) @@ -71,26 +78,38 @@ varying terminal status indicators: ![](http://bhilburn.org/content/images/2014/12/powerlevel9k.png) ### Installation -There are three different forms of installation that you can use to make use of -this theme: +There are two steps to start using this theme: + +1. Install the Powerlevel9k theme. +2. Install Powerline-patched fonts. +3. [Optional] Configuration + +To get the most out of Powerlevel9k, you need to install both the theme as well +as Powerline-patched fonts, if you don't have them installed already. If you +cannot install Powerline-patched fonts for some reason, follow the instructions +below for a `compatible` install. -* Normal - Theme + Powerline Fonts -* Über - Theme + Awesome Powerline Fonts -* Bare Bones - Theme Only +No configuration is necessary post-installation if you like the default +settings, but there is plenty of segment configuration available if you are +interested. -#### Install Powerlevel9k +#### Step 1: Install Powerlevel9k +There are four ways to install and use the Powerlevel9k theme: vanilla ZSH, +Oh-My-Zsh, Prezto, and antigen. Do one of the following: -##### With plain ZSH +##### Option 1: Install for Vanilla ZSH -If you use just a plain ZSH, just clone this repository and reference it in your `~/.zshrc`: +If you use just a vanilla ZSH install, simply clone this repository and +reference it in your `~/.zshrc`: $ git clone https://github.com/bhilburn/powerlevel9k.git $ echo 'source powerlevel9k/powerlevel9k.zsh-theme' >> ~/.zshrc -##### With Oh-my-ZSH +##### Option 2: Install for Oh-My-ZSH -To install this theme, clone this repository into your [Oh-my-Zsh](https://github.com/robbyrussell/oh-my-zsh) `custom/themes` -directory. +To install this theme for +[Oh-My-Zsh](https://github.com/robbyrussell/oh-my-zsh), clone this repository +into your OMZ `custom/themes` directory. $ cd ~/.oh-my-zsh/custom $ git clone https://github.com/bhilburn/powerlevel9k.git themes/powerlevel9k @@ -99,10 +118,10 @@ You then need to select this theme in your `~/.zshrc`: ZSH_THEME="powerlevel9k/powerlevel9k" -##### With Prezto +##### Option 3: Install for Prezto -To install this theme, clone this repository into your [Prezto](https://github.com/sorin-ionescu/prezto) `prompt/external` -directory. +To install this theme for use in Prezto, clone this repository into your +[Prezto](https://github.com/sorin-ionescu/prezto) `prompt/external` directory. $ cd ~.zprezto/modules/prompt/external $ git clone https://github.com/bhilburn/powerlevel9k.git @@ -112,14 +131,27 @@ You then need to select this theme in your `~/.zpreztorc`: zstyle ':prezto:module:prompt' theme 'powerlevel9k' -##### With antigen +##### Option 4: Install for antigen -If you prefer [antigen](https://github.com/zsh-users/antigen), just add it to your `~/.zshrc`: +If you prefer [antigen](https://github.com/zsh-users/antigen), just add this +theme to the antigen config in your `~/.zshrc`: $ echo 'antigen theme /vagrant_data powerlevel9k' >> ~/.zshrc $ echo 'antigen apply' >> ~/.zshrc -#### Install Powerline Fonts for Normal Configuration +#### Step 2: Install Powerline Fonts +Technically, you don't *have* to install Powerline fonts. If you are using +a font that has some of the basic glyphs we need, you can use the theme in +`compatible` mode - see the third option, below. + +To get the most out of theme, though, you'll want Powerline-patched fonts. There +are two varieties of these: 'Powerline Fonts' and 'Awesome Powerline +Fonts'. The latter includes additional glyphs that aren't required for a normal +install. + +Do one of the following: + +##### Option 1: Install Powerline Fonts You can find the [installation instructions for Powerline Fonts here] (https://powerline.readthedocs.org/en/latest/installation/linux.html#fonts-installation). @@ -133,7 +165,11 @@ emulator the Powerline font you want to use. This is the default mode for `Powerlevel9k`, and no further configuration is necessary. -#### Alternative Configuration: Über +**N.B.:** If Powerlevel9k is not working properly, it is almost always the case +that the fonts were not properly installed, or you have not configured your +terminal to use a Powerline-patched font! + +##### Option 2: Install Awesome Powerline Fonts Alternatively, you can install [Awesome Powerline Fonts](https://github.com/gabrielelana/awesome-terminal-fonts), which provide @@ -157,7 +193,7 @@ Which looks like this: ![](https://cloud.githubusercontent.com/assets/1544760/7981324/76d0eb5a-0aae-11e5-9608-d662123d0b0a.png) -#### Alternative Configuration: Bare Bones +##### Option 3: Compatible Mode This option is best if you prefer not to install additional fonts. This option will work out-of-the-box if your your terminal font supports the segment From d2a0346bf11b28ffe42ae90657d7a232234a06fd Mon Sep 17 00:00:00 2001 From: Daniel Sager Date: Mon, 29 Jun 2015 07:54:56 +0200 Subject: [PATCH 39/45] updated info for antigen install option --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index db25c295..80ae1f46 100644 --- a/README.md +++ b/README.md @@ -136,9 +136,12 @@ You then need to select this theme in your `~/.zpreztorc`: If you prefer [antigen](https://github.com/zsh-users/antigen), just add this theme to the antigen config in your `~/.zshrc`: - $ echo 'antigen theme /vagrant_data powerlevel9k' >> ~/.zshrc + $ echo 'antigen theme bhilburn/powerlevel9k powerlevel9k' >> ~/.zshrc $ echo 'antigen apply' >> ~/.zshrc +Note that you should define any customizations before calling `antigen theme` +(i.e. setting the `POWERLEVEL9K_*` variables) in your `.zshrc`. + #### Step 2: Install Powerline Fonts Technically, you don't *have* to install Powerline fonts. If you are using a font that has some of the basic glyphs we need, you can use the theme in From 8950a0a6e307a15c32bf3347323c5ebdd136f87f Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Tue, 30 Jun 2015 14:40:01 -0700 Subject: [PATCH 40/45] README: Adding note about theme inspiration. --- README.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 80ae1f46..0cea87d6 100644 --- a/README.md +++ b/README.md @@ -398,13 +398,20 @@ Thankfully, this is easy to fix. This happens if you have successfully installed Powerline fonts, but did not make a Powerline font the default font in your terminal emulator (e.g., 'terminator', 'gnome-terminal', 'konsole', etc.,). -### Contributions / Bugs / Contact +### Meta + +#### Kudos + +This theme wouldn't have happened without inspiration from the original [agnoster](https://gist.github.com/agnoster/3712874) Oh-My-ZSH theme. + +Before creating this theme, I also tried [jeremyFreeAgent's theme](https://github.com/jeremyFreeAgent/oh-my-zsh-powerline-theme) and [maverick2000's theme ZSH2000](https://github.com/maverick2000/zsh2000). + +#### Contributions / Bugs / Contact If you have any requests or bug reports, please use the tracker in this Github repository. -I'm happy to accept code contributions from anyone who has an improvement! -Please submit your contribution as a Github pull-request. +I'm happy to accept code contributions from anyone who has a bug fix, new feature, or just a general improvement! Please submit your contribution as a Github pull-request. If you would like to contact me directly, you can find my e-mail address on my [Github profile page](https://github.com/bhilburn). From 558d137bfaf3b64c5e1b6b1091b0c066cb5f5cce Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Tue, 30 Jun 2015 14:40:42 -0700 Subject: [PATCH 41/45] README: Silly missing comma. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0cea87d6..c406835c 100644 --- a/README.md +++ b/README.md @@ -404,7 +404,7 @@ terminal emulator (e.g., 'terminator', 'gnome-terminal', 'konsole', etc.,). This theme wouldn't have happened without inspiration from the original [agnoster](https://gist.github.com/agnoster/3712874) Oh-My-ZSH theme. -Before creating this theme, I also tried [jeremyFreeAgent's theme](https://github.com/jeremyFreeAgent/oh-my-zsh-powerline-theme) and [maverick2000's theme ZSH2000](https://github.com/maverick2000/zsh2000). +Before creating this theme, I also tried [jeremyFreeAgent's theme](https://github.com/jeremyFreeAgent/oh-my-zsh-powerline-theme) and [maverick2000's theme, ZSH2000](https://github.com/maverick2000/zsh2000). #### Contributions / Bugs / Contact From f1b5b783d3c8daabf427dfc8c1baf6a9145d7c62 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Sun, 24 May 2015 19:34:46 +0100 Subject: [PATCH 42/45] Added a segment that shows the Symfony2 version number. --- README.md | 1 + powerlevel9k.zsh-theme | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/README.md b/README.md index c406835c..b56c6cd2 100644 --- a/README.md +++ b/README.md @@ -225,6 +225,7 @@ currently available are: * **rspec_stats** - Show a ratio of test classes vs code classes for RSpec. * **status** - The return code of the previous command, and status of background jobs. * **symfony2_tests** - Show a ratio of test classes vs code classes for Symfony2. +* **symfony2_version** - Show the current Symfony2 version, if you are in a Symfony2-Project dir. * **time** - System time. * **virtualenv** - Your Python [VirtualEnv](https://virtualenv.pypa.io/en/latest/). * **vcs** - Information about this `git` or `hg` repository (if you are in one). diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 1ebc31bb..ef9b1b3b 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -61,6 +61,7 @@ case $POWERLEVEL9K_MODE in TEST_ICON="\uE891" #  OK_ICON="\u2713" # ✓ FAIL_ICON="\u2718" # ✘ + SYMFONY_ICON="SF" VCS_UNTRACKED_ICON="\uE16C" #  VCS_UNSTAGED_ICON="\uE17C" #  VCS_STAGED_ICON="\uE168" #  @@ -90,6 +91,7 @@ case $POWERLEVEL9K_MODE in TEST_ICON='' OK_ICON="\u2713" # ✓ FAIL_ICON="\u2718" # ✘ + SYMFONY_ICON="SF" VCS_UNTRACKED_ICON='?' VCS_UNSTAGED_ICON="\u25CF" # ● VCS_STAGED_ICON="\u271A" # ✚ @@ -117,6 +119,7 @@ case $POWERLEVEL9K_MODE in TEST_ICON="\uE891" #  OK_ICON="\u2713" # ✓ FAIL_ICON="\u2718" # ✘ + SYMFONY_ICON="SF" VCS_UNTRACKED_ICON="\uE16C" #  VCS_UNSTAGED_ICON="\uE17C" #  VCS_STAGED_ICON="\uE168" #  @@ -148,6 +151,7 @@ case $POWERLEVEL9K_MODE in TEST_ICON='' OK_ICON="\u2713" # ✓ FAIL_ICON="\u2718" # ✘ + SYMFONY_ICON="SF" VCS_UNTRACKED_ICON='?' VCS_UNSTAGED_ICON="\u25CF" # ● VCS_STAGED_ICON="\u271A" # ✚ @@ -510,6 +514,14 @@ prompt_symfony2_tests() { fi } +# Symfony2-Version +prompt_symfony2_version() { + if [[ -f app/bootstrap.php.cache ]]; then + local symfony2_version=$(grep " VERSION " app/bootstrap.php.cache | sed -e 's/[^.0-9]*//g') + $1_prompt_segment "$0" "240" "$DEFAULT_COLOR" "$SYMFONY_ICON $symfony2_version" + fi +} + # Show a ratio of tests vs code build_test_stats() { local code_amount="$3" From 2538e5579b2b69cf77342957b5fd436ccc4b20a2 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Wed, 8 Jul 2015 00:44:52 +0200 Subject: [PATCH 43/45] Make branch icon configurable. --- README.md | 6 +++++- powerlevel9k.zsh-theme | 16 ++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index c406835c..2a90e730 100644 --- a/README.md +++ b/README.md @@ -278,13 +278,17 @@ By default, the `vcs` segment will provide quite a bit of information. If you would also like for it to display the current hash / changeset, simply define `POWERLEVEL9K_SHOW_CHANGESET` in your `~/.zshrc`. If activated, it will show the first 12 characters of the changeset id. To change the amount of characters, -set `POWERLEVEL9K_CHANGESET_HASH_LENTH` to any value you want. +set `POWERLEVEL9K_CHANGESET_HASH_LENGTH` to any value you want. +By setting `POWERLEVEL9K_SHOW_BRANCH_ICON` it shows a nice icon before the +branch name. Example: # enable the vcs segment in general POWERLEVEL9K_SHOW_CHANGESET=true # just show the 6 first characters of changeset POWERLEVEL9K_CHANGESET_HASH_LENGTH=6 + # Show an icon before the branch name + POWERLEVEL9K_SHOW_BRANCH_ICON=true ##### Symbols diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 1ebc31bb..cee6acad 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -74,8 +74,7 @@ case $POWERLEVEL9K_MODE in VCS_TAG_ICON="\uE817 " #  VCS_BOOKMARK_ICON="\uE87B" #  VCS_COMMIT_ICON="\uE821 " #  - #VCS_BRANCH_ICON=" \uE220" #  - VCS_BRANCH_ICON='' + VCS_BRANCH_ICON=" \uE220" #  VCS_REMOTE_BRANCH_ICON="\uE804" #  VCS_GIT_ICON="\uE20E " #  VCS_HG_ICON="\uE1C3 " #  @@ -99,8 +98,7 @@ case $POWERLEVEL9K_MODE in VCS_TAG_ICON='' VCS_BOOKMARK_ICON="\u263F" # ☿ VCS_COMMIT_ICON='' - #VCS_BRANCH_ICON='@' - VCS_BRANCH_ICON='' + VCS_BRANCH_ICON='@' VCS_REMOTE_BRANCH_ICON="\u2192" # → VCS_GIT_ICON='Git' VCS_HG_ICON='HG' @@ -130,8 +128,7 @@ case $POWERLEVEL9K_MODE in VCS_TAG_ICON="\uE817 " #  VCS_BOOKMARK_ICON="\uE87B" #  VCS_COMMIT_ICON="\uE821 " #  - #VCS_BRANCH_ICON=" \uE220" #  - VCS_BRANCH_ICON='' + VCS_BRANCH_ICON=" \uE220" #  VCS_REMOTE_BRANCH_ICON="\uE804" #  VCS_GIT_ICON="\uE20E " #  VCS_HG_ICON="\uE1C3 " #  @@ -157,14 +154,17 @@ case $POWERLEVEL9K_MODE in VCS_TAG_ICON='' VCS_BOOKMARK_ICON="\u263F" # ☿ VCS_COMMIT_ICON='' - #VCS_BRANCH_ICON='@' - VCS_BRANCH_ICON='' + VCS_BRANCH_ICON='@' VCS_REMOTE_BRANCH_ICON="\u2192" # → VCS_GIT_ICON="\uE0A0" #  VCS_HG_ICON="\uE0A0" #  ;; esac +if [[ "$POWERLEVEL9K_SHOW_BRANCH_ICON" != true ]]; then + VCS_BRANCH_ICON='' +fi + ################################################################ # color scheme ################################################################ From 5a9695dcd4e1900b92a7ec84cf2ed0dd105aa1a8 Mon Sep 17 00:00:00 2001 From: Martin Pelikan Date: Mon, 6 Jul 2015 20:56:02 -0700 Subject: [PATCH 44/45] Correctly set VCS dirty status on first invocation. The precmd hook seems to not get called on first invocation, and gets called recursively for every subsequent invocation. --- powerlevel9k.zsh-theme | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 1ebc31bb..52cfa96d 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -221,7 +221,8 @@ zstyle ':vcs_info:*' actionformats " %b %F{red}| %a%f" zstyle ':vcs_info:*' stagedstr " %F{$VCS_FOREGROUND_COLOR}$VCS_STAGED_ICON%f" zstyle ':vcs_info:*' unstagedstr " %F{$VCS_FOREGROUND_COLOR}$VCS_UNSTAGED_ICON%f" -zstyle ':vcs_info:git*+set-message:*' hooks git-untracked git-aheadbehind git-stash git-remotebranch git-tagname +zstyle ':vcs_info:git*+set-message:*' hooks vcs-detect-changes git-untracked git-aheadbehind git-stash git-remotebranch git-tagname +zstyle ':vcs_info:hg*+set-message:*' hooks vcs-detect-changes # For Hg, only show the branch name zstyle ':vcs_info:hg*:*' branchformat "$VCS_BRANCH_ICON%b" @@ -575,13 +576,6 @@ build_right_prompt() { done } -prompt_powerlevel9k_precmd() { - vcs_info - - # Add a static hook to examine staged/unstaged changes. - vcs_info_hookadd set-message vcs-detect-changes -} - powerlevel9k_init() { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS @@ -593,7 +587,7 @@ powerlevel9k_init() { # initialize VCS autoload -Uz add-zsh-hook - add-zsh-hook precmd prompt_powerlevel9k_precmd + add-zsh-hook precmd vcs_info if [[ "$POWERLEVEL9K_PROMPT_ON_NEWLINE" == true ]]; then PROMPT="╭─%{%f%b%k%}"'$(build_left_prompt)'" From 772c9ab85d82a87c0e7cf638ce4032697e217bc7 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Wed, 8 Jul 2015 18:52:30 -0700 Subject: [PATCH 45/45] README: Updating for branch icon, ToC --- README.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c065d382..7d5a5f76 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,9 @@ like with a normal installation and default settings: - [Further color customizations](#further-color-customizations) - [Troubleshooting](#troubleshooting) - [Gaps Between Segments](#gaps-between-segments) -- [Contributions / Bugs / Contact](#contributions--bugs--contact) +- [Meta](#meta) + - [Kudos](#kudos) + - [Contributions / Bugs / Contact](#contributions--bugs--contact) @@ -280,14 +282,15 @@ would also like for it to display the current hash / changeset, simply define `POWERLEVEL9K_SHOW_CHANGESET` in your `~/.zshrc`. If activated, it will show the first 12 characters of the changeset id. To change the amount of characters, set `POWERLEVEL9K_CHANGESET_HASH_LENGTH` to any value you want. -By setting `POWERLEVEL9K_SHOW_BRANCH_ICON` it shows a nice icon before the -branch name. -Example: # enable the vcs segment in general POWERLEVEL9K_SHOW_CHANGESET=true # just show the 6 first characters of changeset POWERLEVEL9K_CHANGESET_HASH_LENGTH=6 + +You can also enable an additional branch icon in your prompt by setting +`POWERLEVEL9K_SHOW_BRANCH_ICON` to `true`: + # Show an icon before the branch name POWERLEVEL9K_SHOW_BRANCH_ICON=true