From 3f4a7bcd4c389371b21d4af9e5b5dbe562094c20 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Sat, 4 Apr 2015 22:38:09 +0200 Subject: [PATCH 01/71] Nicer Symbols for multiline. --- powerlevel9k.zsh-theme | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 1662d58d..bca76fce 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -417,8 +417,8 @@ precmd() { } if [[ "$POWERLEVEL9K_PROMPT_ON_NEWLINE" == true ]]; then - PROMPT='╭─%{%f%b%k%}$(build_left_prompt) -╰─ ' + PROMPT="%F{blue}↱%f%{%f%b%k%}$(build_left_prompt) +%F{blue}↳%f " else PROMPT='%{%f%b%k%}$(build_left_prompt) ' fi From ddef3a6584fdaead20082c65919377cbc5117f74 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Tue, 26 May 2015 21:51:01 +0200 Subject: [PATCH 02/71] Added the node version. --- powerlevel9k.zsh-theme | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index d1e927c8..a3f973ff 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -310,6 +310,14 @@ prompt_longstatus() { [[ -n "$symbols" ]] && $1_prompt_segment $bg $DEFAULT_COLOR "$symbols" } +# Node version +prompt_node_version() { + local nvm_prompt=$(node -v 2>/dev/null) + [[ -z "${nvm_prompt}" ]] && return + + $1_prompt_segment green white ${nvm_prompt:1} +} + # rbenv information prompt_rbenv() { if [[ -n "$RBENV_VERSION" ]]; then From 2ad6280b517d48d0baf399fe460e5ab30d81fda1 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Tue, 26 May 2015 21:53:29 +0200 Subject: [PATCH 03/71] Added documentation. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2c3f2a2d..e4843f76 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,7 @@ currently available are: * **context** - Your username and host (more info below) * **dir** - Your current working directory. * **history** - The command number for the current line. +* **node_version** - Show the version number of the installed node. * **rbenv** - Ruby environment information (if one is active). * **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. From 79678020f7a3abff84f531345234f35f1826e6e4 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Tue, 26 May 2015 21:55:07 +0200 Subject: [PATCH 04/71] Better documentation. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e4843f76..7678d353 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ currently available are: * **context** - Your username and host (more info below) * **dir** - Your current working directory. * **history** - The command number for the current line. -* **node_version** - Show the version number of the installed node. +* **node_version** - Show the version number of the installed Node.js. * **rbenv** - Ruby environment information (if one is active). * **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. From d01d718bd6da4446d528262192e78fcfa6a9ebed Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Wed, 27 May 2015 21:03:02 +0200 Subject: [PATCH 05/71] 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 06/71] 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 07/71] 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 08/71] 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 10c5b28859d372f480c1352d4b7a74672e77b430 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Sun, 31 May 2015 03:15:16 +0200 Subject: [PATCH 09/71] We don't need `tr`, as we strip whitespace directly with zsh. --- powerlevel9k.zsh-theme | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 8536f0cc..9e333071 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -180,7 +180,7 @@ prompt_vcs() { 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 + $(git ls-files --others --exclude-standard | sed q | wc -l) != 0 ]]; then hook_com[unstaged]+=" %F{$DEFAULT_COLOR}?%f" fi } @@ -193,12 +193,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=$(git rev-list ${branch_name}@{upstream}..HEAD 2>/dev/null | wc -l) (( $ahead )) && gitstatus+=( " %F{$DEFAULT_COLOR}↑${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=$(git rev-list HEAD..${branch_name}@{upstream} 2>/dev/null | wc -l) (( $behind )) && gitstatus+=( " %F{$DEFAULT_COLOR}↓${behind// /}%f" ) hook_com[misc]+=${(j::)gitstatus} From ac048b2951b87c8b2e77db81eef5848a26d92128 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Wed, 3 Jun 2015 00:22:41 +0200 Subject: [PATCH 10/71] 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 11/71] 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 12/71] 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 13/71] 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 14/71] 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 15/71] 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 16/71] 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 3dc5084e40b2e10272d072c7d6f05b642016e326 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Thu, 4 Jun 2015 03:58:27 +0200 Subject: [PATCH 17/71] Added a little "Developers Guide" --- README.md | 52 ++++++++++++++++++++++++++++++++++++++++++ powerlevel9k.zsh-theme | 19 +++++++++++---- 2 files changed, 66 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index dc8798fe..76b98ea7 100644 --- a/README.md +++ b/README.md @@ -256,3 +256,55 @@ 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). +#### Developers Guide + +The theme has grown a lot lately, so I think a little explanation would be +helpful. + +##### Basic Knowledge + +Our main entry point are the `PROMPT` and `RPROMPT` variables, which are +interpreted by zsh itself. All that this (and any other) theme does is +filling these two variables with control instructions (like defining +colors, etc.) and ready-to-use data. So within this theme we collect a +whole bunch of information to put in that variables. You can find +`PROMPT` and `RPROMPT` at the very end of the `powerlevel9k.zsh-theme`. + +This simple diagram may explain the invoking order better: + +``` ++-----+ +---------+ +| Zsh |--->| $PROMPT | ++-----+ +---------+ + | + V + +---------------------+ +------------+ +---------------------+ + | build_left_prompt() |--->| prompt_*() |->| $1_prompt_segment() | + +---------------------+ +------------+ +---------------------+ +``` + +##### Adding Segments + +Feel free to add your own segments. Every segment gets called with an +orientation as first parameter (`left` or `right`), so we can figure +out on which side we should draw the segment. This information is +used at the time we call the actual segment-drawing function: +`$1_prompt_segment`. To make the magic color-overwrite mechanism to +work, we have to pass our function name as first argument. Usually +this is just `$0`. Second parameter is a default background color, +third the default foreground color. And finally we pass our content +to the function. So our function could look somewhat like this: + +```zsh + prompt_echo() { + local content='Hello World!' + $1_prompt_segment $0 blue red $content + } +``` + +At this point we can overwrite our blue-on-red segment by putting + + POWERLEVEL9K_ECHO_FOREGROUND="200" + POWERLEVEL9K_ECHO_BACKGROUND="040" + +in our `~/.zshrc`. We now have a pink-on-green segment. Yay! diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index f65143a1..726ccbb9 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -135,8 +135,13 @@ fi ################################################################ # Begin a left prompt segment -# Takes two arguments, background and foreground. Both can be omitted, -# rendering default background/foreground. +# Takes four arguments: +# * $1: Name of the function that was orginally invoked (mandatory). +# Necessary, to make the dynamic color-overwrite mechanism work. +# * $2: Background color +# * $3: Foreground color +# * $4: The segment content +# The latter three can be omitted, left_prompt_segment() { # Overwrite given background-color by user defined variable for this segment. # We get as first Parameter the function name, which called this function. @@ -177,9 +182,13 @@ left_prompt_end() { } # Begin a right prompt segment -# 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). +# Takes four arguments: +# * $1: Name of the function that was orginally invoked (mandatory). +# Necessary, to make the dynamic color-overwrite mechanism work. +# * $2: Background color +# * $3: Foreground color +# * $4: The segment content +# No ending for the right prompt segment is needed (unlike the left prompt, above). right_prompt_segment() { # Overwrite given background-color by user defined variable for this segment. local BACKGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)1#prompt_}_BACKGROUND From abed8905f4a2855960530e57ad2f91f0c1f6332b Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Thu, 4 Jun 2015 04:46:49 +0200 Subject: [PATCH 18/71] 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 19/71] 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 20/71] 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 21/71] 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 22/71] 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 23/71] 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 24/71] 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 d65aea3a64f125b9f9768218a9165b591d49e46c Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Fri, 5 Jun 2015 19:23:32 +0200 Subject: [PATCH 25/71] 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 26/71] 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 27/71] 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 28/71] 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 29/71] 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 30/71] 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 5bd4f439e464321ad402aac9b8886b8cbd188b68 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Sat, 6 Jun 2015 23:05:31 +0200 Subject: [PATCH 31/71] Added NodeJS icon. --- powerlevel9k.zsh-theme | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index a3f973ff..70593abd 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -314,8 +314,9 @@ prompt_longstatus() { prompt_node_version() { local nvm_prompt=$(node -v 2>/dev/null) [[ -z "${nvm_prompt}" ]] && return + NODE_ICON="\u2B22 " # ⬢ - $1_prompt_segment green white ${nvm_prompt:1} + $1_prompt_segment green white "${nvm_prompt:1} $NODE_ICON" } # rbenv information From 291bcddd103a91c52e8464781c2a07e8a512b028 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Sun, 7 Jun 2015 01:06:26 +0200 Subject: [PATCH 32/71] Shorten dir path, if POWERLEVEL9K_SHORTEN_PWD_LENGTH is set. --- powerlevel9k.zsh-theme | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index df0319c7..1cd6a870 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -318,7 +318,13 @@ prompt_context() { # Dir: current working directory prompt_dir() { - $1_prompt_segment $0 blue $DEFAULT_COLOR '%~' + local current_path='%~' + if [[ -n "$POWERLEVEL9K_SHORTEN_PWD_LENGTH" ]]; then + # shorten path to $POWERLEVEL9K_SHORTEN_PWD_LENGTH characters + local current_path="%${POWERLEVEL9K_SHORTEN_PWD_LENGTH}<..<%~%<<" + fi + + $1_prompt_segment $0 blue $DEFAULT_COLOR $current_path } # Command number (in local history) From fea1d7ec5e21be22f7bd58480a323f4509ff656e Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Sun, 7 Jun 2015 01:11:06 +0200 Subject: [PATCH 33/71] Added documentation. --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index dc8798fe..e3a382fa 100644 --- a/README.md +++ b/README.md @@ -110,6 +110,14 @@ elements (it is by default), and define a `DEFAULT_USER` in your `~/.zshrc`: export DEFAULT_USER= +#### The `dir` segment + +The `dir` segment shows the current working directory. You can limit the output +to a certain length: + + # Limit to 20 characters + POWERLEVEL9K_SHORTEN_PWD_LENGTH=20 + #### The 'time' segment By default the time is show in 'H:M:S' format. If you want to change it, From 891f5567fd198220cd2b7b4e471a465ac736579e Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Sun, 7 Jun 2015 01:48:02 +0200 Subject: [PATCH 34/71] Limit to whole folders, not just characters. --- README.md | 4 ++-- powerlevel9k.zsh-theme | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index e3a382fa..10610c3f 100644 --- a/README.md +++ b/README.md @@ -115,8 +115,8 @@ elements (it is by default), and define a `DEFAULT_USER` in your `~/.zshrc`: The `dir` segment shows the current working directory. You can limit the output to a certain length: - # Limit to 20 characters - POWERLEVEL9K_SHORTEN_PWD_LENGTH=20 + # Limit to the last two folders + POWERLEVEL9K_SHORTEN_DIR_LENGTH=2 #### The 'time' segment diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 1cd6a870..a049f863 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -319,9 +319,9 @@ prompt_context() { # Dir: current working directory prompt_dir() { local current_path='%~' - if [[ -n "$POWERLEVEL9K_SHORTEN_PWD_LENGTH" ]]; then - # shorten path to $POWERLEVEL9K_SHORTEN_PWD_LENGTH characters - local current_path="%${POWERLEVEL9K_SHORTEN_PWD_LENGTH}<..<%~%<<" + if [[ -n "$POWERLEVEL9K_SHORTEN_DIR_LENGTH" ]]; then + # shorten path to $POWERLEVEL9K_SHORTEN_DIR_LENGTH + current_path="%$((POWERLEVEL9K_SHORTEN_DIR_LENGTH+1))(c:.../:)%${POWERLEVEL9K_SHORTEN_DIR_LENGTH}c" fi $1_prompt_segment $0 blue $DEFAULT_COLOR $current_path From 5592c90041c2791c4fa816d957a492ab6d2d71c6 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Mon, 8 Jun 2015 13:42:03 -0700 Subject: [PATCH 35/71] 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 36/71] 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 37/71] 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 38/71] 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 39/71] 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 40/71] 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 41/71] 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 42/71] 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 43/71] 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 44/71] 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 45/71] 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 46/71] 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 686b351adb1b46693da67d78d3bc8a8cf9609721 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Sun, 28 Jun 2015 18:07:55 -0700 Subject: [PATCH 47/71] Merging Vagrant test VM from dritter/prezto --- 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 | 3 ++ test-vm/prezto.sh | 26 ++++++++++++++ 7 files changed, 202 insertions(+) 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/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..ee53fcdf --- /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", privileged: false + 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 "..", "/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..0f44c6ca --- /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' +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 /vagrant_data powerlevel9k --no-local-clone\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..eead4905 --- /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' +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 + + mkdir -p ~/.oh-my-zsh/custom/themes + ln -s /vagrant_data ~/.oh-my-zsh/custom/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..9c8445f4 --- /dev/null +++ b/test-vm/plain.sh @@ -0,0 +1,3 @@ +#!/usr/bin/zsh + +echo 'source /vagrant_data/powerlevel9k.zsh-theme' > ~/.zshrc diff --git a/test-vm/prezto.sh b/test-vm/prezto.sh new file mode 100644 index 00000000..af4e7454 --- /dev/null +++ b/test-vm/prezto.sh @@ -0,0 +1,26 @@ +#!/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' +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 + + ln -s /vagrant_data/powerlevel9k.zsh-theme ~/.zprezto/modules/prompt/functions/prompt_powerlevel9k_setup + sed -i "s/theme\ 'sorin'/theme\ 'powerlevel9k'/g" ~/.zpreztorc +) From d2a0346bf11b28ffe42ae90657d7a232234a06fd Mon Sep 17 00:00:00 2001 From: Daniel Sager Date: Mon, 29 Jun 2015 07:54:56 +0200 Subject: [PATCH 48/71] 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 49/71] 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 50/71] 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 c35a1c3f45ffaf52cd69c8100cdf044c2eec26db Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Tue, 7 Jul 2015 20:08:06 +0200 Subject: [PATCH 51/71] Fixed oh-my-zsh test installation. --- test-vm/omz.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/test-vm/omz.sh b/test-vm/omz.sh index eead4905..953f5c8f 100644 --- a/test-vm/omz.sh +++ b/test-vm/omz.sh @@ -13,18 +13,19 @@ chmod 440 /etc/sudoers.d/$NEW_USER #UID=$(id -u $NEW_USER) #EUID=$(id -u $NEW_USER) HOME=/home/$NEW_USER + SHELL=$(which zsh) - curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh + sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" mkdir -p ~/.oh-my-zsh/custom/themes ln -s /vagrant_data ~/.oh-my-zsh/custom/themes/powerlevel9k echo ' export ZSH=$HOME/.oh-my-zsh -plugins=(git bundler osx rake ruby) ZSH_THEME="powerlevel9k/powerlevel9k" +plugins=(git rake ruby) source $ZSH/oh-my-zsh.sh -' > ~/.zshrc +' > $HOME/.zshrc ) From f1b5b783d3c8daabf427dfc8c1baf6a9145d7c62 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Sun, 24 May 2015 19:34:46 +0100 Subject: [PATCH 52/71] 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 53/71] 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 54/71] 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 55/71] 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 From 0226f871f698d0d802f7a9dee9587d88a627856c Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Fri, 10 Jul 2015 00:43:10 +0200 Subject: [PATCH 56/71] Fix the branch icon and whitespaces in the vcs segment. --- README.md | 8 ++++---- powerlevel9k.zsh-theme | 26 +++++++++++++------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 7d5a5f76..6d7618d8 100644 --- a/README.md +++ b/README.md @@ -288,11 +288,11 @@ set `POWERLEVEL9K_CHANGESET_HASH_LENGTH` to any value you want. # 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`: +You can also disable the branch icon in your prompt by setting +`POWERLEVEL9K_HIDE_BRANCH_ICON` to `true`: - # Show an icon before the branch name - POWERLEVEL9K_SHOW_BRANCH_ICON=true + # Hide the branch icon + POWERLEVEL9K_HIDE_BRANCH_ICON=true ##### Symbols diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 83d7314c..84f74cfd 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -75,10 +75,10 @@ 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_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" # ⮀ @@ -131,10 +131,10 @@ 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_REMOTE_BRANCH_ICON="\uE804" #  - VCS_GIT_ICON="\uE20E " #  - VCS_HG_ICON="\uE1C3 " #  + VCS_GIT_ICON="\uE20E " #  + VCS_HG_ICON="\uE1C3 " #  ;; *) # Powerline-Patched Font required! @@ -158,14 +158,14 @@ case $POWERLEVEL9K_MODE in VCS_TAG_ICON='' VCS_BOOKMARK_ICON="\u263F" # ☿ VCS_COMMIT_ICON='' - VCS_BRANCH_ICON='@' + VCS_BRANCH_ICON="\uE0A0 " #  VCS_REMOTE_BRANCH_ICON="\u2192" # → - VCS_GIT_ICON="\uE0A0" #  - VCS_HG_ICON="\uE0A0" #  + VCS_GIT_ICON="" + VCS_HG_ICON="" ;; esac -if [[ "$POWERLEVEL9K_SHOW_BRANCH_ICON" != true ]]; then +if [[ "$POWERLEVEL9K_HIDE_BRANCH_ICON" == true ]]; then VCS_BRANCH_ICON='' fi @@ -210,15 +210,15 @@ if [[ "$POWERLEVEL9K_SHOW_CHANGESET" == true ]]; then VCS_CHANGESET_HASH_LENGTH="$POWERLEVEL9K_CHANGESET_HASH_LENGTH" fi - VCS_CHANGESET_PREFIX="%F{$VCS_FOREGROUND_COLOR_DARK}$VCS_COMMIT_ICON%0.$VCS_CHANGESET_HASH_LENGTH""i%f" + VCS_CHANGESET_PREFIX="%F{$VCS_FOREGROUND_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 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" +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" zstyle ':vcs_info:*' actionformats " %b %F{red}| %a%f" From 59cd8a71fad24bc011c948c02415ce4a4b8c9485 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Sun, 7 Jun 2015 03:10:27 +0200 Subject: [PATCH 57/71] When opening this file in VIM set "expanded tabs"-option and set encoding to "utf8". --- powerlevel9k.zsh-theme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 83d7314c..0e556138 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -1,4 +1,4 @@ -# vim:ft=zsh ts=2 sw=2 sts=2 +# vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8 ################################################################ # powerlevel9k Theme # https://github.com/bhilburn/powerlevel9k From 114470ea43e86a7f4e7c2dcce1b8d1af0478147a Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Fri, 10 Jul 2015 19:44:20 +0200 Subject: [PATCH 58/71] simple-mode deactivated. With that option on, vcs_info doesn't detect the repository state correctly. --- powerlevel9k.zsh-theme | 4 ---- 1 file changed, 4 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 83d7314c..fe1e9a9c 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -237,10 +237,6 @@ zstyle ':vcs_info:hg*+gen-hg-bookmark-string:*' hooks hg-bookmarks if [[ "$POWERLEVEL9K_SHOW_CHANGESET" == true ]]; then zstyle ':vcs_info:*' get-revision true -else - # A little performance-boost for large repositories (especially Hg). If we - # don't show the changeset, we can switch to simple mode. - zstyle ':vcs_info:*' use-simple true fi ################################################################ From 3a857c276d28503d293634b0a1d1ce1eb3b15ff0 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Fri, 10 Jul 2015 20:39:27 -0700 Subject: [PATCH 59/71] README: Moving Dev Guide to Github wiki --- README.md | 59 ++++++------------------------------------------------- 1 file changed, 6 insertions(+), 53 deletions(-) diff --git a/README.md b/README.md index ff124b2e..0f3867b2 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,7 @@ like with a normal installation and default settings: - [Gaps Between Segments](#gaps-between-segments) - [Meta](#meta) - [Kudos](#kudos) + - [Developing](#developing) - [Contributions / Bugs / Contact](#contributions--bugs--contact) @@ -414,6 +415,11 @@ This theme wouldn't have happened without inspiration from the original [agnoste 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). +#### Developing + +Documentation for developers is kept on the [Powerlevel9k Github +wiki](https://github.com/bhilburn/powerlevel9k/wiki/Developers'-Guide). + #### Contributions / Bugs / Contact If you have any requests or bug reports, please use the tracker in this Github @@ -423,56 +429,3 @@ I'm happy to accept code contributions from anyone who has a bug fix, new featur If you would like to contact me directly, you can find my e-mail address on my [Github profile page](https://github.com/bhilburn). - -#### Developers Guide - -The theme has grown a lot lately, so I think a little explanation would be -helpful. - -##### Basic Knowledge - -Our main entry point are the `PROMPT` and `RPROMPT` variables, which are -interpreted by zsh itself. All that this (and any other) theme does is -filling these two variables with control instructions (like defining -colors, etc.) and ready-to-use data. So within this theme we collect a -whole bunch of information to put in that variables. You can find -`PROMPT` and `RPROMPT` at the very end of the `powerlevel9k.zsh-theme`. - -This simple diagram may explain the invoking order better: - -``` -+-----+ +---------+ -| Zsh |--->| $PROMPT | -+-----+ +---------+ - | - V - +---------------------+ +------------+ +---------------------+ - | build_left_prompt() |--->| prompt_*() |->| $1_prompt_segment() | - +---------------------+ +------------+ +---------------------+ -``` - -##### Adding Segments - -Feel free to add your own segments. Every segment gets called with an -orientation as first parameter (`left` or `right`), so we can figure -out on which side we should draw the segment. This information is -used at the time we call the actual segment-drawing function: -`$1_prompt_segment`. To make the magic color-overwrite mechanism to -work, we have to pass our function name as first argument. Usually -this is just `$0`. Second parameter is a default background color, -third the default foreground color. And finally we pass our content -to the function. So our function could look somewhat like this: - -```zsh - prompt_echo() { - local content='Hello World!' - $1_prompt_segment $0 blue red $content - } -``` - -At this point we can overwrite our blue-on-red segment by putting - - POWERLEVEL9K_ECHO_FOREGROUND="200" - POWERLEVEL9K_ECHO_BACKGROUND="040" - -in our `~/.zshrc`. We now have a pink-on-green segment. Yay! From 79499dbb00147fea47a66492b46c110445371c91 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Fri, 10 Jul 2015 20:43:06 -0700 Subject: [PATCH 60/71] README: Fixing symbol table headers --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cba403aa..ebf643b9 100644 --- a/README.md +++ b/README.md @@ -301,7 +301,7 @@ The `vcs` segment uses various symbols to tell you the state of your repository. These symbols depend on your installed font and selected `POWERLEVEL9K_MODE` from the [Installation](#Installation) section above. -| `Bare Bones` | `Normal` | `Über` | explanation +| `Compatible` | `Powerline` | `Awesome Powerline` | 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 From 505a55b61c75f13a7bbbff56be54e9e8fc0f2054 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Sat, 11 Jul 2015 14:29:48 +0200 Subject: [PATCH 61/71] Updated node-prompt. --- powerlevel9k.zsh-theme | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 26763740..cecb19db 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -476,9 +476,9 @@ prompt_longstatus() { prompt_node_version() { local nvm_prompt=$(node -v 2>/dev/null) [[ -z "${nvm_prompt}" ]] && return - NODE_ICON="\u2B22 " # ⬢ + NODE_ICON=$'\u2B22 ' # ⬢ - $1_prompt_segment green white "${nvm_prompt:1} $NODE_ICON" + $1_prompt_segment "$0" "green" "white" "${nvm_prompt:1} $NODE_ICON" } # rbenv information From 83584894703039a4337b1f7d7b969992ea4cb9c9 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Sun, 12 Jul 2015 18:10:33 -0700 Subject: [PATCH 62/71] README: Updating with minor fixes. --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 42c6c9a0..e38b04b4 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ like with a normal installation and default settings: - [Segment Customization](#segment-customization) - [The AWS Profile Segment](#the-aws-profile-segment) - [The 'context' Segment](#the-context-segment) + - [The 'dir' segment](#the-dir-segment) - [The 'time' segment](#the-time-segment) - [Unit Test Ratios](#unit-test-ratios) - [The 'vcs' Segment](#the-vcs-segment) @@ -260,7 +261,7 @@ elements (it is by default), and define a `DEFAULT_USER` in your `~/.zshrc`: export DEFAULT_USER= -#### The `dir` segment +#### The 'dir' segment The `dir` segment shows the current working directory. You can limit the output to a certain length: @@ -427,7 +428,7 @@ Before creating this theme, I also tried [jeremyFreeAgent's theme](https://githu #### Developing Documentation for developers is kept on the [Powerlevel9k Github -wiki](https://github.com/bhilburn/powerlevel9k/wiki/Developers'-Guide). +wiki](https://github.com/bhilburn/powerlevel9k/wiki/Developer's-Guide). #### Contributions / Bugs / Contact From eed0c842735d8fe40e024dfd05ac09824f4fc6b2 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Sun, 19 Jul 2015 14:32:13 +0200 Subject: [PATCH 63/71] Made the `context` segment customizable. --- README.md | 8 +++++++- powerlevel9k.zsh-theme | 7 ++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e38b04b4..53c8f482 100644 --- a/README.md +++ b/README.md @@ -366,7 +366,13 @@ of the `time` segment, you would use: Use the segment names from the above section `Segment Customization`. Some of the Segments have special color variables, as they change the colors according -to some internal rules. These Segments are `vcs`, `rspec_stats`, `symfony2_tests`: +to some internal rules. These Segments are `context`, `vcs`, `rspec_stats`, `symfony2_tests`: + + # Colors for root and other users: + POWERLEVEL9K_CONTEXT_DEFAULT_BACKGROUND="green" + POWERLEVEL9K_CONTEXT_DEFAULT_FOREGROUND="cyan" + POWERLEVEL9K_CONTEXT_ROOT_BACKGROUND="red" + POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND="blue" # General VCS color segments: POWERLEVEL9K_VCS_FOREGROUND='blue' diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 4f75e89b..8677ac4a 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -437,7 +437,12 @@ 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 "$0" "$DEFAULT_COLOR" "011" "%(!.%{%F{yellow}%}.)$USER@%m" + if [[ $(print -P "%#") == '#' ]]; then + # Shell runs as root + $1_prompt_segment "$0_ROOT" "$DEFAULT_COLOR" "yellow" "$USER@%m" + else + $1_prompt_segment "$0_DEFAULT" "$DEFAULT_COLOR" "011" "$USER@%m" + fi fi } From cb20e0e0d95227c7dfa44392527e123fe5527f53 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Sun, 19 Jul 2015 14:57:17 +0200 Subject: [PATCH 64/71] Made Multiline-Icons customizable. --- README.md | 5 +++++ powerlevel9k.zsh-theme | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e38b04b4..54b19833 100644 --- a/README.md +++ b/README.md @@ -343,6 +343,11 @@ Here is what it looks like: ![](http://bhilburn.org/content/images/2015/03/double-line.png) +If you want other icons, you can set the following variables in your `~/.zshrc`: + + POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX="↱" + POWERLEVEL9K_MULTILINE_SECOND_PROMPT_PREFIX="↳ " + #### Light Color Theme If you prefer to use "light" colors, simply set `POWERLEVEL9K_COLOR_SCHEME` diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 4f75e89b..a9105482 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -622,8 +622,11 @@ powerlevel9k_init() { add-zsh-hook precmd vcs_info if [[ "$POWERLEVEL9K_PROMPT_ON_NEWLINE" == true ]]; then - PROMPT="╭─%{%f%b%k%}"'$(build_left_prompt)'" -╰─ " + [[ -n $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX ]] || POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX="╭─" + [[ -n $POWERLEVEL9K_MULTILINE_SECOND_PROMPT_PREFIX ]] || POWERLEVEL9K_MULTILINE_SECOND_PROMPT_PREFIX="╰─ " + + PROMPT="$POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX%{%f%b%k%}"'$(build_left_prompt)'" +$POWERLEVEL9K_MULTILINE_SECOND_PROMPT_PREFIX" # 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 From 1f69d67c2a9802d00bc6e0f89c06175376c4de71 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Sun, 19 Jul 2015 12:11:43 -0700 Subject: [PATCH 65/71] Merging dritter/remote_icon_space_names Optimizing VCS icon spacing for different configurations. --- powerlevel9k.zsh-theme | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 4f75e89b..fd0e3ecd 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -76,7 +76,7 @@ case $POWERLEVEL9K_MODE in VCS_BOOKMARK_ICON="\uE87B" #  VCS_COMMIT_ICON="\uE821 " #  VCS_BRANCH_ICON="\uE220" #  - VCS_REMOTE_BRANCH_ICON="\uE804" #  + VCS_REMOTE_BRANCH_ICON=" \uE804 " #  VCS_GIT_ICON="\uE20E " #  VCS_HG_ICON="\uE1C3 " #  ;; @@ -132,7 +132,7 @@ case $POWERLEVEL9K_MODE in VCS_BOOKMARK_ICON="\uE87B" #  VCS_COMMIT_ICON="\uE821 " #  VCS_BRANCH_ICON="\uE220" #  - VCS_REMOTE_BRANCH_ICON="\uE804" #  + VCS_REMOTE_BRANCH_ICON=" \uE804 " #  VCS_GIT_ICON="\uE20E " #  VCS_HG_ICON="\uE1C3 " #  ;; @@ -482,7 +482,7 @@ prompt_longstatus() { prompt_node_version() { local nvm_prompt=$(node -v 2>/dev/null) [[ -z "${nvm_prompt}" ]] && return - NODE_ICON=$'\u2B22 ' # ⬢ + NODE_ICON=$'\u2B22' # ⬢ $1_prompt_segment "$0" "green" "white" "${nvm_prompt:1} $NODE_ICON" } From d17fecbf81ddfc8fad682d3843b069a43dfa1c7b Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Sun, 19 Jul 2015 12:20:04 -0700 Subject: [PATCH 66/71] README: bit of cleanup in color customization docs --- README.md | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 53c8f482..62a24814 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,8 @@ like with a normal installation and default settings: - [Styling](#styling) - [Double-Lined Prompt](#double-lined-prompt) - [Light Color Theme](#light-color-theme) - - [Further color customizations](#further-color-customizations) + - [Segment Color Customization](#segment-color-customization) + - [Special Segment Colors](#special-segment-colors) - [Troubleshooting](#troubleshooting) - [Gaps Between Segments](#gaps-between-segments) - [Meta](#meta) @@ -355,26 +356,36 @@ Light'](https://github.com/altercation/solarized) users. Check it out: ![](http://bhilburn.org/content/images/2015/03/solarized-light.png) -#### Further color customizations +#### Segment Color Customization For each segment in your prompt, you can specify a foreground and background -color by setting them in your `~/.zshrc`. For example, to change the appearance -of the `time` segment, you would use: +color by setting them in your `~/.zshrc`. Use the segment names from the above +section `Segment Customization`. For example, to change the appearance of the +`time` segment, you would use: POWERLEVEL9K_TIME_FOREGROUND='red' POWERLEVEL9K_TIME_BACKGROUND='blue' -Use the segment names from the above section `Segment Customization`. Some of -the Segments have special color variables, as they change the colors according -to some internal rules. These Segments are `context`, `vcs`, `rspec_stats`, `symfony2_tests`: +Note that you can also use a colorcode value. Example: - # Colors for root and other users: + POWERLEVEL9K_VCS_FOREGROUND='021' # Dark blue + +For a full list of supported colors, run the `spectrum_ls` program in your +terminal. + +#### Special Segment Colors + +Some segments have additional color options if you want to customize the look of +your prompt even further. These Segments are `context`, `vcs`, `rspec_stats`, +`symfony2_tests`: + + # Customizing `context` colors for root and non-root users POWERLEVEL9K_CONTEXT_DEFAULT_BACKGROUND="green" POWERLEVEL9K_CONTEXT_DEFAULT_FOREGROUND="cyan" POWERLEVEL9K_CONTEXT_ROOT_BACKGROUND="red" POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND="blue" - # General VCS color segments: + # Advanced `vcs` color customization POWERLEVEL9K_VCS_FOREGROUND='blue' POWERLEVEL9K_VCS_DARK_FOREGROUND='black' POWERLEVEL9K_VCS_BACKGROUND='green' @@ -402,13 +413,6 @@ to some internal rules. These Segments are `context`, `vcs`, `rspec_stats`, `sym POWERLEVEL9K_SYMFONY2_TESTS_BAD_FOREGROUND='red' POWERLEVEL9K_SYMFONY2_TESTS_BAD_BACKGROUND='white' -You could also use a colorcode value. Example: - - POWERLEVEL9K_VCS_FOREGROUND='021' # Dark blue - -For a full list of supported colors, run the `spectrum_ls` program in your -terminal. - ### Troubleshooting Here are some fixes to some common problems. From ea2af79042044e1f05a65f161259b32ad4b1b3c4 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Sun, 19 Jul 2015 12:24:21 -0700 Subject: [PATCH 67/71] README: simple cleanup --- README.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a0a3035f..5225c16a 100644 --- a/README.md +++ b/README.md @@ -344,7 +344,8 @@ Here is what it looks like: ![](http://bhilburn.org/content/images/2015/03/double-line.png) -If you want other icons, you can set the following variables in your `~/.zshrc`: +You can customize the icons used to draw the multiline prompt by setting the +following variables in your `~/.zshrc`: POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX="↱" POWERLEVEL9K_MULTILINE_SECOND_PROMPT_PREFIX="↳ " @@ -436,9 +437,12 @@ terminal emulator (e.g., 'terminator', 'gnome-terminal', 'konsole', etc.,). #### Kudos -This theme wouldn't have happened without inspiration from the original [agnoster](https://gist.github.com/agnoster/3712874) Oh-My-ZSH theme. +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). #### Developing @@ -450,7 +454,9 @@ wiki](https://github.com/bhilburn/powerlevel9k/wiki/Developer's-Guide). 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 a bug fix, new feature, or just a general 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 71f5be368ed4c5854a40895dd4590af9759af173 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Sun, 19 Jul 2015 12:40:59 -0700 Subject: [PATCH 68/71] README: Updating introduction to the theme. --- README.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 5225c16a..aa6be3a5 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,24 @@ ## powerlevel9k Theme for ZSH 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 +Fonts](https://github.com/Lokaltog/powerline-fonts). It 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: +Look like a bad-ass. Impress everyone in 'Screenshot Your Desktop' threads. Use powerlevel9k. ![](http://bhilburn.org/content/images/2015/01/pl9k-improved.png) +There are a number of Powerline ZSH themes available, now. The developers of +this theme focus on three primary goals: +1. Give users a great out-of-the-box configuration with no additional + configuration required. +2. Make customization easy for users who do want to tweak their prompt. +3. Provide useful segments that you can enable to make your prompt even more + effective and helpful. We have prompt segments for everything from unit test + coverage to your AWS instance. + **Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* From c853be57e7efa79f9818394e3aec7900a6a35516 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Sun, 19 Jul 2015 12:42:00 -0700 Subject: [PATCH 69/71] README: markdown syntax derp --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index aa6be3a5..71dfceb2 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ Look like a bad-ass. Impress everyone in 'Screenshot Your Desktop' threads. Use There are a number of Powerline ZSH themes available, now. The developers of this theme focus on three primary goals: + 1. Give users a great out-of-the-box configuration with no additional configuration required. 2. Make customization easy for users who do want to tweak their prompt. From 7f83bac947893175ef937e26f1a3bc8a389d1718 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Sun, 19 Jul 2015 17:55:10 -0700 Subject: [PATCH 70/71] Revert "We don't need `tr`, as we strip whitespace directly with zsh." This reverts commit 10c5b28859d372f480c1352d4b7a74672e77b430. Conflicts: powerlevel9k.zsh-theme --- powerlevel9k.zsh-theme | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index dbfc60c8..ac7d98fa 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -337,7 +337,7 @@ prompt_vcs() { 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) != 0 ]]; then + $(git ls-files --others --exclude-standard | sed q | wc -l | tr -d ' ') != 0 ]]; then hook_com[unstaged]+=" %F{$VCS_FOREGROUND_COLOR}$VCS_UNTRACKED_ICON%f" fi } @@ -350,12 +350,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) + ahead=$(git rev-list ${branch_name}@{upstream}..HEAD 2>/dev/null | wc -l | tr -d ' ') (( $ahead )) && gitstatus+=( " %F{$VCS_FOREGROUND_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) + behind=$(git rev-list HEAD..${branch_name}@{upstream} 2>/dev/null | wc -l | tr -d ' ') (( $behind )) && gitstatus+=( " %F{$VCS_FOREGROUND_COLOR}$VCS_INCOMING_CHANGES${behind// /}%f" ) hook_com[misc]+=${(j::)gitstatus} From 30c4acd24951d434a9bfb798a7333460451a4060 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Mon, 20 Jul 2015 23:37:57 +0200 Subject: [PATCH 71/71] Strip the whitespace of OSX `wc` with pure zsh. No need to install `coreutils`. --- powerlevel9k.zsh-theme | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index ac7d98fa..69eee6e3 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -337,7 +337,7 @@ prompt_vcs() { 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 + ${$(git ls-files --others --exclude-standard | sed q | wc -l)// /} != 0 ]]; then hook_com[unstaged]+=" %F{$VCS_FOREGROUND_COLOR}$VCS_UNTRACKED_ICON%f" fi } @@ -350,12 +350,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=$(git rev-list ${branch_name}@{upstream}..HEAD 2>/dev/null | wc -l) (( $ahead )) && gitstatus+=( " %F{$VCS_FOREGROUND_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=$(git rev-list HEAD..${branch_name}@{upstream} 2>/dev/null | wc -l) (( $behind )) && gitstatus+=( " %F{$VCS_FOREGROUND_COLOR}$VCS_INCOMING_CHANGES${behind// /}%f" ) hook_com[misc]+=${(j::)gitstatus}