From 0f58a4950cd3e938662b8aa2131caf1acea08915 Mon Sep 17 00:00:00 2001 From: Paul Frybarger Date: Sun, 13 Aug 2017 01:25:29 +0200 Subject: [PATCH 01/39] similar to PR #472, fixing for awesome font mappings --- functions/icons.zsh | 71 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/functions/icons.zsh b/functions/icons.zsh index ab4d2bac..10db97ac 100644 --- a/functions/icons.zsh +++ b/functions/icons.zsh @@ -152,6 +152,77 @@ case $POWERLEVEL9K_MODE in SSH_ICON '(ssh)' ) ;; + 'awesome-mapped-fontconfig') + # mapped fontconfig with awesome-font required! See + # https://github.com/gabrielelana/awesome-terminal-fonts + # don't forget to source the font maps in your startup script + # Set the right locale to protect special characters + local LC_ALL="" LC_CTYPE="en_US.UTF-8" + + if [ -z "$AWESOME_GLYPHS_LOADED" ]; then + echo "powerlevel9k warning: awesome font mappings have not been loaded, source during shell startup"; + fi + + icons=( + LEFT_SEGMENT_SEPARATOR $'\uE0B0' #  + RIGHT_SEGMENT_SEPARATOR $'\uE0B2' #  + LEFT_SEGMENT_END_SEPARATOR ' ' # Whitespace + LEFT_SUBSEGMENT_SEPARATOR $'\uE0B1' #  + RIGHT_SUBSEGMENT_SEPARATOR $'\uE0B3' #  + CARRIAGE_RETURN_ICON $'\u21B5' # ↵ + ROOT_ICON '\u'$CODEPOINT_OF_OCTICONS_ZAP #  + RUBY_ICON '\u'$CODEPOINT_OF_OCTICONS_RUBY' ' #  + AWS_ICON '\u'$CODEPOINT_OF_AWESOME_SERVER #  + AWS_EB_ICON $'\U1F331 ' # 🌱 + BACKGROUND_JOBS_ICON '\u'$CODEPOINT_OF_AWESOME_COG' ' #  + TEST_ICON '\u'$CODEPOINT_OF_AWESOME_BUG #  + TODO_ICON '\u'$CODEPOINT_OF_AWESOME_CHECK_SQUARE_O #  + BATTERY_ICON '\U'$CODEPOINT_OF_AWESOME_BATTERY_FULL #  + DISK_ICON '\u'$CODEPOINT_OF_AWESOME_HDD_O' ' #  + OK_ICON '\u'$CODEPOINT_OF_AWESOME_CHECK #  + FAIL_ICON '\u'$CODEPOINT_OF_AWESOME_TIMES #  + SYMFONY_ICON 'SF' + NODE_ICON $'\u2B22' # ⬢ + MULTILINE_FIRST_PROMPT_PREFIX $'\u256D'$'\U2500' # ╭─ + MULTILINE_SECOND_PROMPT_PREFIX $'\u2570'$'\U2500 ' # ╰─ + APPLE_ICON '\u'$CODEPOINT_OF_AWESOME_APPLE #  + FREEBSD_ICON $'\U1F608 ' # 😈 + LINUX_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX #  + SUNOS_ICON '\u'$CODEPOINT_OF_AWESOME_SUN_O' ' #  + HOME_ICON '\u'$CODEPOINT_OF_AWESOME_HOME #  + HOME_SUB_ICON '\u'$CODEPOINT_OF_AWESOME_FOLDER_OPEN #  + FOLDER_ICON '\u'$CODEPOINT_OF_AWESOME_FOLDER_O #  + NETWORK_ICON '\u'$CODEPOINT_OF_AWESOME_RSS #  + LOAD_ICON '\u'$CODEPOINT_OF_AWESOME_BAR_CHART' ' #  + SWAP_ICON '\u'$CODEPOINT_OF_AWESOME_DASHBOARD #  + RAM_ICON '\u'$CODEPOINT_OF_AWESOME_DASHBOARD #  + SERVER_ICON '\u'$CODEPOINT_OF_AWESOME_SERVER #  + VCS_UNTRACKED_ICON '\u'$CODEPOINT_OF_AWESOME_QUESTION_CIRCLE #  + VCS_UNSTAGED_ICON '\u'$CODEPOINT_OF_AWESOME_EXCLAMATION_CIRCLE #  + VCS_STAGED_ICON '\u'$CODEPOINT_OF_AWESOME_PLUS_CIRCLE #  + VCS_STASH_ICON '\u'$CODEPOINT_OF_AWESOME_INBOX' ' #  + VCS_INCOMING_CHANGES_ICON '\u'$CODEPOINT_OF_AWESOME_ARROW_CIRCLE_DOWN' ' #  + VCS_OUTGOING_CHANGES_ICON '\u'$CODEPOINT_OF_AWESOME_ARROW_CIRCLE_UP' ' #  + VCS_TAG_ICON '\u'$CODEPOINT_OF_AWESOME_TAG' ' #  + VCS_BOOKMARK_ICON '\u'$CODEPOINT_OF_OCTICONS_BOOKMARK #  + VCS_COMMIT_ICON '\u'$CODEPOINT_OF_OCTICONS_GIT_COMMIT' ' #  + VCS_BRANCH_ICON '\u'$CODEPOINT_OF_OCTICONS_GIT_BRANCH' ' #  + VCS_REMOTE_BRANCH_ICON '\u'$CODEPOINT_OF_OCTICONS_REPO_PUSH #  + VCS_GIT_ICON '\u'$CODEPOINT_OF_AWESOME_GIT' ' #  + VCS_GIT_GITHUB_ICON '\u'$CODEPOINT_OF_AWESOME_GITHUB_ALT' ' #  + VCS_GIT_BITBUCKET_ICON '\u'$CODEPOINT_OF_AWESOME_BITBUCKET' ' #  + VCS_GIT_GITLAB_ICON '\u'$CODEPOINT_OF_AWESOME_GITLAB' ' #  + VCS_HG_ICON '\u'$CODEPOINT_OF_AWESOME_FLASK' ' #  + VCS_SVN_ICON '(svn) ' + RUST_ICON $'\uE6A8' #  + PYTHON_ICON $'\U1F40D' # 🐍 + SWIFT_ICON $'\uE655' #  + PUBLIC_IP_ICON '\u'$CODEPOINT_OF_AWESOME_GLOBE #  + LOCK_ICON '\u'$CODEPOINT_OF_AWESOME_LOCK #  + EXECUTION_TIME_ICON '\u'$CODEPOINT_OF_AWESOME_HOURGLASS_END #  + SSH_ICON '(ssh)' + ) + ;; 'nerdfont-complete'|'nerdfont-fontconfig') # nerd-font patched (complete) font required! See # https://github.com/ryanoasis/nerd-fonts From 50f0a94642222e62fc30f7f3f2e487ad962210c7 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Sun, 27 Aug 2017 12:41:25 -0400 Subject: [PATCH 02/39] Slight tweaks to the awesome-mapped-fontconfig error message. --- functions/icons.zsh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/functions/icons.zsh b/functions/icons.zsh index 57971b45..a20cef2c 100644 --- a/functions/icons.zsh +++ b/functions/icons.zsh @@ -168,7 +168,10 @@ case $POWERLEVEL9K_MODE in local LC_ALL="" LC_CTYPE="en_US.UTF-8" if [ -z "$AWESOME_GLYPHS_LOADED" ]; then - echo "powerlevel9k warning: awesome font mappings have not been loaded, source during shell startup"; + echo "Powerlevel9k warning: Awesome-Font mappings have not been loaded. + Source a font mapping in your shell config, per the Awesome-Font docs + (https://github.com/gabrielelana/awesome-terminal-fonts), + Or use a different Powerlevel9k font configuration."; fi icons=( From 79a73ef4aaa0f2c5a98ec837bf198dccf7d8c90f Mon Sep 17 00:00:00 2001 From: Matt Nicholson Date: Thu, 17 Aug 2017 10:45:45 -0400 Subject: [PATCH 03/39] add ability to force rbenv being shown --- README.md | 4 ++++ powerlevel9k.zsh-theme | 12 ++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 9c17c2c5..c7d8b8e2 100644 --- a/README.md +++ b/README.md @@ -500,6 +500,10 @@ It figures out the version being used by taking the output of the `rbenv version * If `rbenv` is not in $PATH, nothing will be shown. * If the current Ruby version is the same as the global Ruby version, nothing will be shown. +Variable | Default Value | Description | +|----------|---------------|-------------| +|`POWERLEVEL9K_RBENV_ALWAYS`|'false'|Always show rbenv version, even if global| + ##### rspec_stats See [Unit Test Ratios](#unit-test-ratios), below. diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 3c34f0bb..dc2af025 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -1047,11 +1047,15 @@ prompt_rbenv() { local rbenv_global="$(rbenv global)" # Don't show anything if the current Ruby is the same as the global Ruby. - if [[ $rbenv_version_name == $rbenv_global ]]; then - return + # Unless POWERLEVEL_RBENV_ALWAYS is set. + set_default POWERLEVEL9K_RBENV_ALWAYS false + if [[ $POWERLEVEL9K_RBENV_ALWAYS == true || $rbenv_version_name != $rbenv_global ]];then + "$1_prompt_segment" "$0" "$2" "red" "$DEFAULT_COLOR" "$rbenv_version_name" 'RUBY_ICON' + #elif [[ $rbenv_version_name != $rbenv_global ]]; then + # "$1_prompt_segment" "$0" "$2" "red" "$DEFAULT_COLOR" "$rbenv_version_name" 'RUBY_ICON' + #else + # return fi - - "$1_prompt_segment" "$0" "$2" "red" "$DEFAULT_COLOR" "$rbenv_version_name" 'RUBY_ICON' fi } From 095351cfe105acb48c1cd6874f4115bc50aaacbb Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Thu, 28 Sep 2017 17:24:39 -0400 Subject: [PATCH 04/39] Cleaning up README language about new `rbenv` feature. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c7d8b8e2..3a40af61 100644 --- a/README.md +++ b/README.md @@ -498,11 +498,11 @@ This segment shows the version of Ruby being used when using `rbenv` to change y It figures out the version being used by taking the output of the `rbenv version-name` command. * If `rbenv` is not in $PATH, nothing will be shown. -* If the current Ruby version is the same as the global Ruby version, nothing will be shown. +* By default, if the current local Ruby version is the same as the global Ruby version, nothing will be shown. See the configuration variable, below, to modify this behavior. Variable | Default Value | Description | |----------|---------------|-------------| -|`POWERLEVEL9K_RBENV_ALWAYS`|'false'|Always show rbenv version, even if global| +|`POWERLEVEL9K_RBENV_ALWAYS`|'false'|Always show the `rbenv` segment, even if the local version matches the global.| ##### rspec_stats From 748f9868fcf275a12359d23433191118ff690489 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Thu, 28 Sep 2017 17:27:59 -0400 Subject: [PATCH 05/39] Final cleanup for new POWERLEVEL9K_RBENV_ALWAYS flag --- powerlevel9k.zsh-theme | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index dc2af025..d7d99c3f 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -1041,20 +1041,16 @@ prompt_ram() { } # rbenv information +set_default POWERLEVEL9K_RBENV_ALWAYS false prompt_rbenv() { if which rbenv 2>/dev/null >&2; then local rbenv_version_name="$(rbenv version-name)" local rbenv_global="$(rbenv global)" - # Don't show anything if the current Ruby is the same as the global Ruby. - # Unless POWERLEVEL_RBENV_ALWAYS is set. - set_default POWERLEVEL9K_RBENV_ALWAYS false + # Don't show anything if the current Ruby is the same as the global Ruby + # unless `POWERLEVEL9K_RBENV_ALWAYS` is set. if [[ $POWERLEVEL9K_RBENV_ALWAYS == true || $rbenv_version_name != $rbenv_global ]];then "$1_prompt_segment" "$0" "$2" "red" "$DEFAULT_COLOR" "$rbenv_version_name" 'RUBY_ICON' - #elif [[ $rbenv_version_name != $rbenv_global ]]; then - # "$1_prompt_segment" "$0" "$2" "red" "$DEFAULT_COLOR" "$rbenv_version_name" 'RUBY_ICON' - #else - # return fi fi } From 81cbd65142609da34f463046abec8ad456440056 Mon Sep 17 00:00:00 2001 From: Timothy Earley Date: Sun, 1 Oct 2017 17:53:07 +0200 Subject: [PATCH 06/39] Added dropbox segment --- README.md | 1 + functions/icons.zsh | 4 ++++ powerlevel9k.zsh-theme | 17 +++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/README.md b/README.md index 4b0c2791..c4ff1c1f 100644 --- a/README.md +++ b/README.md @@ -140,6 +140,7 @@ The segments that are currently available are: * `aws_eb_env` - The current Elastic Beanstalk Environment. * `docker_machine` - The current Docker Machine. * `kubecontext` - The current context of your `kubectl` configuration. +* `dropbox` - Indicates Dropbox directory and syncing status using `dropbox-cli` **Other:** * [`custom_command`](#custom_command) - Create a custom segment to display the diff --git a/functions/icons.zsh b/functions/icons.zsh index a20cef2c..3fc6d3b0 100644 --- a/functions/icons.zsh +++ b/functions/icons.zsh @@ -87,6 +87,7 @@ case $POWERLEVEL9K_MODE in SSH_ICON '(ssh)' VPN_ICON '(vpn)' KUBERNETES_ICON $'\U2388' # ⎈ + DROPBOX_ICON $'\UF16B' #  ) ;; 'awesome-fontconfig') @@ -158,6 +159,7 @@ case $POWERLEVEL9K_MODE in SSH_ICON '(ssh)' VPN_ICON $'\uF023' KUBERNETES_ICON $'\U2388' # ⎈ + DROPBOX_ICON $'\UF16B' #  ) ;; 'awesome-mapped-fontconfig') @@ -303,6 +305,7 @@ case $POWERLEVEL9K_MODE in SSH_ICON $'\uF489' #  VPN_ICON '(vpn)' KUBERNETES_ICON $'\U2388' # ⎈ + DROPBOX_ICON $'\UF16B' #  ) ;; *) @@ -374,6 +377,7 @@ case $POWERLEVEL9K_MODE in SSH_ICON '(ssh)' VPN_ICON '(vpn)' KUBERNETES_ICON $'\U2388' # ⎈ + DROPBOX_ICON $'\UF16B' #  ) ;; esac diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 9a146fa8..792771ac 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -1423,6 +1423,23 @@ prompt_kubecontext() { fi } +# Dropbox status +prompt_dropbox() { + # The first column is just the directory, so cut it + local dropbox_status="$(dropbox-cli filestatus . | cut -d\ -f2-)" + + # Only show if the folder is tracked + if [[ "$dropbox_status" != 'unwatched' ]]; then + # If "up to date", only show the icon + if [[ "$dropbox_status" =~ 'up to date' ]]; then + dropbox_status="" + fi + + "$1_prompt_segment" "$0" "$2" "white" "blue" "$dropbox_status" "DROPBOX_ICON" + fi + +} + ################################################################ # Prompt processing and drawing From 985dac910cd52f22aa81de8442f335fd08dbd515 Mon Sep 17 00:00:00 2001 From: Timothy Earley Date: Mon, 2 Oct 2017 14:24:06 +0200 Subject: [PATCH 07/39] Don't show when dropbox is not running --- powerlevel9k.zsh-theme | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 792771ac..7770fb0a 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -1428,8 +1428,8 @@ prompt_dropbox() { # The first column is just the directory, so cut it local dropbox_status="$(dropbox-cli filestatus . | cut -d\ -f2-)" - # Only show if the folder is tracked - if [[ "$dropbox_status" != 'unwatched' ]]; then + # Only show if the folder is tracked and dropbox is running + if [[ "$dropbox_status" != 'unwatched' && "$dropbox_status" != "isn't running!" ]]; then # If "up to date", only show the icon if [[ "$dropbox_status" =~ 'up to date' ]]; then dropbox_status="" From b87c3b85ace58b4a247046a51c37a5b043fcefb5 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Fri, 6 Oct 2017 20:41:51 -0400 Subject: [PATCH 08/39] Updating Dropbox icon for non-awesome fonts --- functions/icons.zsh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/functions/icons.zsh b/functions/icons.zsh index 3fc6d3b0..76913a81 100644 --- a/functions/icons.zsh +++ b/functions/icons.zsh @@ -234,6 +234,9 @@ case $POWERLEVEL9K_MODE in LOCK_ICON '\u'$CODEPOINT_OF_AWESOME_LOCK #  EXECUTION_TIME_ICON '\u'$CODEPOINT_OF_AWESOME_HOURGLASS_END #  SSH_ICON '(ssh)' + VPN_ICON '\u'$CODEPOINT_OF_AWESOME_LOCK + KUBERNETES_ICON $'\U2388' # ⎈ + DROPBOX_ICON '\u'$CODEPOINT_OF_AWESOME_DROPBOX #  ) ;; 'nerdfont-complete'|'nerdfont-fontconfig') @@ -377,7 +380,7 @@ case $POWERLEVEL9K_MODE in SSH_ICON '(ssh)' VPN_ICON '(vpn)' KUBERNETES_ICON $'\U2388' # ⎈ - DROPBOX_ICON $'\UF16B' #  + DROPBOX_ICON 'Dropbox' ) ;; esac From ad741998223871910d0286ed11620ec473ce8ed5 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Fri, 6 Oct 2017 22:34:44 -0400 Subject: [PATCH 09/39] Adding `SIG` to signal name, removing `-` sign. --- powerlevel9k.zsh-theme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index f2fc9d90..db73e436 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -1146,7 +1146,7 @@ exit_code_or_status() { else local sig=$(( ec - 128 )) local idx=$(( sig + 1 )) - echo "${signals[$idx]}(-${sig})" + echo "SIG${signals[$idx]}(${sig})" fi } From e6d882ac4783b67e4541fff73a8f54fa43de73b9 Mon Sep 17 00:00:00 2001 From: Jordan Taylor Date: Wed, 18 Oct 2017 21:57:31 -0400 Subject: [PATCH 10/39] Added functionality to parse the current namespace regardless of config settings --- powerlevel9k.zsh-theme | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 1bfd348d..ee63a49a 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -1410,20 +1410,22 @@ prompt_dir_writable() { fi } -# Kubernetes Current Context +# Kubernetes Current Context/Namespace prompt_kubecontext() { local kubectl_version="$(kubectl version --client 2>/dev/null)" if [[ -n "$kubectl_version" ]]; then - # Get the current Kubernetes config context's namespaece - local k8s_namespace=$(kubectl config get-contexts --no-headers | grep '*' | awk '{print $5}') - # Get the current Kuberenetes context - local k8s_context=$(kubectl config current-context) - - if [[ -z "$k8s_namespace" ]]; then - k8s_namespace="default" + local cur_ctx=$(kubectl config view -o=jsonpath='{.current-context}') + cur_namespace="$(kubectl config view -o=jsonpath="{.contexts[?(@.name==\"${cur_ctx}\")].context.namespace}")" + # If the namespace comes back empty set it default. + if [[ -z "${cur_namespace}" ]]; then + cur_namespace="default" fi - "$1_prompt_segment" "$0" "$2" "magenta" "white" "$k8s_context/$k8s_namespace" "KUBERNETES_ICON" + + # Get the current Kuberenetes context + local cur_ctx=$(kubectl config view -o=jsonpath='{.current-context}') + + "$1_prompt_segment" "$0" "$2" "magenta" "white" "$cur_ctx/$cur_namespace" "KUBERNETES_ICON" fi } From 1c2774f5925d1734e25843ec1c5e65eaa37f8ceb Mon Sep 17 00:00:00 2001 From: Derek Bassett Date: Fri, 27 Oct 2017 11:55:21 -0600 Subject: [PATCH 11/39] Fix to unit tests. Also removed unneeded extra call to kubectl. --- powerlevel9k.zsh-theme | 4 +--- test/segments/kubecontext.spec | 38 +++++++++++++++++++++++++--------- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index ee63a49a..3d8a245f 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -1415,6 +1415,7 @@ prompt_kubecontext() { local kubectl_version="$(kubectl version --client 2>/dev/null)" if [[ -n "$kubectl_version" ]]; then + # Get the current Kuberenetes context local cur_ctx=$(kubectl config view -o=jsonpath='{.current-context}') cur_namespace="$(kubectl config view -o=jsonpath="{.contexts[?(@.name==\"${cur_ctx}\")].context.namespace}")" # If the namespace comes back empty set it default. @@ -1422,9 +1423,6 @@ prompt_kubecontext() { cur_namespace="default" fi - # Get the current Kuberenetes context - local cur_ctx=$(kubectl config view -o=jsonpath='{.current-context}') - "$1_prompt_segment" "$0" "$2" "magenta" "white" "$cur_ctx/$cur_namespace" "KUBERNETES_ICON" fi } diff --git a/test/segments/kubecontext.spec b/test/segments/kubecontext.spec index eaaa2300..4f1d2c5e 100755 --- a/test/segments/kubecontext.spec +++ b/test/segments/kubecontext.spec @@ -18,11 +18,19 @@ function mockKubectl() { ;; 'config') case "$2" in - 'current-context') - echo 'minikube' - ;; - 'get-contexts') - echo '* minikube minikube minikube ' + 'view') + case "$3" in + '-o=jsonpath={.current-context}') + echo 'minikube' + ;; + '-o=jsonpath={.contexts'*) + echo '' + ;; + *) + echo "Mock value missed" + exit 1 + ;; + esac ;; esac ;; @@ -36,11 +44,21 @@ function mockKubectlOtherNamespace() { ;; 'config') case "$2" in - 'current-context') - echo 'minikube' - ;; - 'get-contexts') - echo '* minikube minikube minikube kube-system' + 'view') + case "$3" in + # Get Current Context + '-o=jsonpath={.current-context}') + echo 'minikube' + ;; + # Get current namespace + '-o=jsonpath={.contexts'*) + echo 'kube-system' + ;; + *) + echo "Mock value missed" + exit 1 + ;; + esac ;; esac ;; From 7db892408fce0643687c2aa5f8d7ce80a2dfd4b6 Mon Sep 17 00:00:00 2001 From: Parth Laxmikant Kolekar Date: Sun, 5 Nov 2017 14:33:23 +0900 Subject: [PATCH 12/39] Update powerlevel9k.zsh-theme Allow showing the number of jobs even if there is <= 1 job present. --- powerlevel9k.zsh-theme | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index f33d5a9a..e8872d19 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -305,6 +305,7 @@ prompt_aws_eb_env() { # Segment to indicate background jobs with an icon. set_default POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE true +set_default POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE_EVEN_ONE false prompt_background_jobs() { local background_jobs_number=${$(jobs -l | wc -l)// /} local wrong_lines=`jobs -l | awk '/pwd now/{ count++ } END {print count}'` @@ -313,7 +314,7 @@ prompt_background_jobs() { fi if [[ background_jobs_number -gt 0 ]]; then local background_jobs_number_print="" - if [[ "$POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE" == "true" ]] && [[ "$background_jobs_number" -gt 1 ]]; then + if [[ "$POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE" == "true" ]] && ([[ "$background_jobs_number" -gt 1 ]] || [[ "$POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE_EVEN_ONE" == "true" ]]); then background_jobs_number_print="$background_jobs_number" fi "$1_prompt_segment" "$0" "$2" "$DEFAULT_COLOR" "cyan" "$background_jobs_number_print" 'BACKGROUND_JOBS_ICON' From 6243c2e72f6d67de69d456286f3dc1bfa915436e Mon Sep 17 00:00:00 2001 From: Parth Kolekar Date: Sun, 5 Nov 2017 14:43:10 +0900 Subject: [PATCH 13/39] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 7c1974de..ad5d1382 100644 --- a/README.md +++ b/README.md @@ -186,6 +186,7 @@ your `~/.zshrc`: | Variable | Default Value | Description | |----------|---------------|-------------| |`POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE`|`true`|If there is more than one background job, this segment will show the number of jobs. Set this to `false` to turn this feature off.| +`POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE_EVEN_ONE`|`false`|Show the jobs count even if it is less than one and if this segment is being shown| ##### battery From 698697a710321c6dcf2b334eca04ffb395062c5d Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Fri, 10 Nov 2017 10:28:10 -0500 Subject: [PATCH 14/39] Minor README cleanup --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ad5d1382..d9353b40 100644 --- a/README.md +++ b/README.md @@ -186,7 +186,7 @@ your `~/.zshrc`: | Variable | Default Value | Description | |----------|---------------|-------------| |`POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE`|`true`|If there is more than one background job, this segment will show the number of jobs. Set this to `false` to turn this feature off.| -`POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE_EVEN_ONE`|`false`|Show the jobs count even if it is less than one and if this segment is being shown| +`POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE_ALWAYS`|`false`|Always show the jobs count (even if it's zero).| ##### battery From 46fb03ed1982cfd3484d9309c66a086f29278557 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Fri, 10 Nov 2017 10:28:50 -0500 Subject: [PATCH 15/39] Updating variable name for always showing jobs count --- powerlevel9k.zsh-theme | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index e8872d19..167e3379 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -305,7 +305,7 @@ prompt_aws_eb_env() { # Segment to indicate background jobs with an icon. set_default POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE true -set_default POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE_EVEN_ONE false +set_default POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE_ALWAYS false prompt_background_jobs() { local background_jobs_number=${$(jobs -l | wc -l)// /} local wrong_lines=`jobs -l | awk '/pwd now/{ count++ } END {print count}'` @@ -314,7 +314,7 @@ prompt_background_jobs() { fi if [[ background_jobs_number -gt 0 ]]; then local background_jobs_number_print="" - if [[ "$POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE" == "true" ]] && ([[ "$background_jobs_number" -gt 1 ]] || [[ "$POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE_EVEN_ONE" == "true" ]]); then + if [[ "$POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE" == "true" ]] && ([[ "$background_jobs_number" -gt 1 ]] || [[ "$POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE_ALWAYS" == "true" ]]); then background_jobs_number_print="$background_jobs_number" fi "$1_prompt_segment" "$0" "$2" "$DEFAULT_COLOR" "cyan" "$background_jobs_number_print" 'BACKGROUND_JOBS_ICON' From 7f9669d28a52b566560c97f948d9ddf6366c0580 Mon Sep 17 00:00:00 2001 From: lemaral Date: Tue, 14 Nov 2017 22:23:19 +0100 Subject: [PATCH 16/39] Replace PUBLIC_IP_ICON with VPN_ICON if VPN is up Replace PUBLIC_IP_ICON with VPN_ICON if $POWERLEVEL9K_PUBLIC_IP_VPN_INTERFACE is set and up --- powerlevel9k.zsh-theme | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 73178865..54528fc7 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -555,8 +555,16 @@ prompt_public_ip() { # Draw the prompt segment if [[ -n $public_ip ]]; then - $1_prompt_segment "$0" "$2" "$DEFAULT_COLOR" "$DEFAULT_COLOR_INVERTED" "${public_ip}" 'PUBLIC_IP_ICON' - fi + icon='PUBLIC_IP_ICON' + # Check VPN is on if VPN interface is set + if [[ -n $POWERLEVEL9K_PUBLIC_IP_VPN_INTERFACE ]]; then + for vpn_iface in $(/sbin/ifconfig | grep -e ^"$POWERLEVEL9K_PUBLIC_IP_VPN_INTERFACE" | cut -d":" -f1) + do + icon='VPN_ICON' + break + done + fi + $1_prompt_segment "$0" "$2" "$DEFAULT_COLOR" "$DEFAULT_COLOR_INVERTED" "${public_ip}" "$icon" fi } # Context: user@hostname (who am I and where am I) From 264897a426c7286d0734895b35ea437a6accc1bc Mon Sep 17 00:00:00 2001 From: Charles Peterson Date: Sat, 25 Nov 2017 12:46:45 -0600 Subject: [PATCH 17/39] color names and fixes - fix for packageName truncated by POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER - processing the pwd/HOME replacement ONCE. - fix tests for named colors - use color names by default to allow dark/light themes to adjust colors based on names --- .gitignore | 1 + README.md | 8 +- functions/colors.zsh | 267 +++++++++++++++++++++- powerlevel9k.zsh-theme | 38 +-- test/segments/command_execution_time.spec | 12 +- test/segments/go_version.spec | 2 +- test/segments/rust_version.spec | 2 +- 7 files changed, 292 insertions(+), 38 deletions(-) diff --git a/.gitignore b/.gitignore index 8bebd352..83a62462 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ test-vm/.vagrant *.swp +.idea \ No newline at end of file diff --git a/README.md b/README.md index 7c1974de..9c77fb7c 100644 --- a/README.md +++ b/README.md @@ -243,7 +243,7 @@ battery level. This will override the following variables: `POWERLEVEL9K_BATTERY_DISCONNECTED`, and `POWERLEVEL9K_BATTERY_LOW_COLOR`. In order to do this, define a color array, from low to high, as shown below: ```zsh -POWERLEVEL9K_BATTERY_LEVEL_BACKGROUND=(196 202 208 214 220 226 190 154 118 82 46) +POWERLEVEL9K_BATTERY_LEVEL_BACKGROUND=(red1 orangered1 darkorange orange1 gold1 yellow1 yellow2 greenyellow chartreuse1 chartreuse2 green1) ``` As with the battery stages, you can use any number of colors and Powerlevel9k @@ -251,9 +251,9 @@ will automatically use all of them appropriately. Some example settings: |Brightness|Possible Array| -|Bright Colors|(196 202 208 214 220 226 190 154 118 82 46)| -|Normal Colors|(124 130 136 142 148 112 76 40 34 28 22)| -|Subdued Colors|( 88 94 100 106 70 34 28 22)| +|Bright Colors|(red1 orangered1 darkorange orange1 gold1 yellow1 yellow2 greenyellow chartreuse1 chartreuse2 green1)| +|Normal Colors|(red3 darkorange3 darkgoldenrod gold3 yellow3 chartreuse2 mediumspringgreen green3 green3 green4 darkgreen)| +|Subdued Colors|(darkred orange4 yellow4 yellow4 chartreuse3 green3 green4 darkgreen)| ##### command_execution_time diff --git a/functions/colors.zsh b/functions/colors.zsh index c82af9ea..8d75e670 100644 --- a/functions/colors.zsh +++ b/functions/colors.zsh @@ -22,14 +22,264 @@ function getColorCode() { else typeset -A codes codes=( - 'black' '000' - 'red' '001' - 'green' '002' - 'yellow' '003' - 'blue' '004' - 'magenta' '005' - 'cyan' '006' - 'white' '007' + # https://jonasjacek.github.io/colors/ + # use color names by default to allow dark/light themes to adjust colors based on names + 'black' '000' + 'maroon' '001' + 'green' '002' + 'olive' '003' + 'navy' '004' + 'purple' '005' + 'teal' '006' + 'silver' '007' + 'grey' '008' + 'red' '009' + 'lime' '010' + 'yellow' '011' + 'blue' '012' + 'fuchsia' '013' + 'aqua' '014' + 'white' '015' + 'grey0' '016' + 'navyblue' '017' + 'darkblue' '018' + 'blue3' '019' + 'blue3' '020' + 'blue1' '021' + 'darkgreen' '022' + 'deepskyblue4' '023' + 'deepskyblue4' '024' + 'deepskyblue4' '025' + 'dodgerblue3' '026' + 'dodgerblue2' '027' + 'green4' '028' + 'springgreen4' '029' + 'turquoise4' '030' + 'deepskyblue3' '031' + 'deepskyblue3' '032' + 'dodgerblue1' '033' + 'green3' '034' + 'springgreen3' '035' + 'darkcyan' '036' + 'lightseagreen' '037' + 'deepskyblue2' '038' + 'deepskyblue1' '039' + 'green3' '040' + 'springgreen3' '041' + 'springgreen2' '042' + 'cyan3' '043' + 'darkturquoise' '044' + 'turquoise2' '045' + 'green1' '046' + 'springgreen2' '047' + 'springgreen1' '048' + 'mediumspringgreen' '049' + 'cyan2' '050' + 'cyan1' '051' + 'darkred' '052' + 'deeppink4' '053' + 'purple4' '054' + 'purple4' '055' + 'purple3' '056' + 'blueviolet' '057' + 'orange4' '058' + 'grey37' '059' + 'mediumpurple4' '060' + 'slateblue3' '061' + 'slateblue3' '062' + 'royalblue1' '063' + 'chartreuse4' '064' + 'darkseagreen4' '065' + 'paleturquoise4' '066' + 'steelblue' '067' + 'steelblue3' '068' + 'cornflowerblue' '069' + 'chartreuse3' '070' + 'darkseagreen4' '071' + 'cadetblue' '072' + 'cadetblue' '073' + 'skyblue3' '074' + 'steelblue1' '075' + 'chartreuse3' '076' + 'palegreen3' '077' + 'seagreen3' '078' + 'aquamarine3' '079' + 'mediumturquoise' '080' + 'steelblue1' '081' + 'chartreuse2' '082' + 'seagreen2' '083' + 'seagreen1' '084' + 'seagreen1' '085' + 'aquamarine1' '086' + 'darkslategray2' '087' + 'darkred' '088' + 'deeppink4' '089' + 'darkmagenta' '090' + 'darkmagenta' '091' + 'darkviolet' '092' + 'purple' '093' + 'orange4' '094' + 'lightpink4' '095' + 'plum4' '096' + 'mediumpurple3' '097' + 'mediumpurple3' '098' + 'slateblue1' '099' + 'yellow4' '100' + 'wheat4' '101' + 'grey53' '102' + 'lightslategrey' '103' + 'mediumpurple' '104' + 'lightslateblue' '105' + 'yellow4' '106' + 'darkolivegreen3' '107' + 'darkseagreen' '108' + 'lightskyblue3' '109' + 'lightskyblue3' '110' + 'skyblue2' '111' + 'chartreuse2' '112' + 'darkolivegreen3' '113' + 'palegreen3' '114' + 'darkseagreen3' '115' + 'darkslategray3' '116' + 'skyblue1' '117' + 'chartreuse1' '118' + 'lightgreen' '119' + 'lightgreen' '120' + 'palegreen1' '121' + 'aquamarine1' '122' + 'darkslategray1' '123' + 'red3' '124' + 'deeppink4' '125' + 'mediumvioletred' '126' + 'magenta3' '127' + 'darkviolet' '128' + 'purple' '129' + 'darkorange3' '130' + 'indianred' '131' + 'hotpink3' '132' + 'mediumorchid3' '133' + 'mediumorchid' '134' + 'mediumpurple2' '135' + 'darkgoldenrod' '136' + 'lightsalmon3' '137' + 'rosybrown' '138' + 'grey63' '139' + 'mediumpurple2' '140' + 'mediumpurple1' '141' + 'gold3' '142' + 'darkkhaki' '143' + 'navajowhite3' '144' + 'grey69' '145' + 'lightsteelblue3' '146' + 'lightsteelblue' '147' + 'yellow3' '148' + 'darkolivegreen3' '149' + 'darkseagreen3' '150' + 'darkseagreen2' '151' + 'lightcyan3' '152' + 'lightskyblue1' '153' + 'greenyellow' '154' + 'darkolivegreen2' '155' + 'palegreen1' '156' + 'darkseagreen2' '157' + 'darkseagreen1' '158' + 'paleturquoise1' '159' + 'red3' '160' + 'deeppink3' '161' + 'deeppink3' '162' + 'magenta3' '163' + 'magenta3' '164' + 'magenta2' '165' + 'darkorange3' '166' + 'indianred' '167' + 'hotpink3' '168' + 'hotpink2' '169' + 'orchid' '170' + 'mediumorchid1' '171' + 'orange3' '172' + 'lightsalmon3' '173' + 'lightpink3' '174' + 'pink3' '175' + 'plum3' '176' + 'violet' '177' + 'gold3' '178' + 'lightgoldenrod3' '179' + 'tan' '180' + 'mistyrose3' '181' + 'thistle3' '182' + 'plum2' '183' + 'yellow3' '184' + 'khaki3' '185' + 'lightgoldenrod2' '186' + 'lightyellow3' '187' + 'grey84' '188' + 'lightsteelblue1' '189' + 'yellow2' '190' + 'darkolivegreen1' '191' + 'darkolivegreen1' '192' + 'darkseagreen1' '193' + 'honeydew2' '194' + 'lightcyan1' '195' + 'red1' '196' + 'deeppink2' '197' + 'deeppink1' '198' + 'deeppink1' '199' + 'magenta2' '200' + 'magenta1' '201' + 'orangered1' '202' + 'indianred1' '203' + 'indianred1' '204' + 'hotpink' '205' + 'hotpink' '206' + 'mediumorchid1' '207' + 'darkorange' '208' + 'salmon1' '209' + 'lightcoral' '210' + 'palevioletred1' '211' + 'orchid2' '212' + 'orchid1' '213' + 'orange1' '214' + 'sandybrown' '215' + 'lightsalmon1' '216' + 'lightpink1' '217' + 'pink1' '218' + 'plum1' '219' + 'gold1' '220' + 'lightgoldenrod2' '221' + 'lightgoldenrod2' '222' + 'navajowhite1' '223' + 'mistyrose1' '224' + 'thistle1' '225' + 'yellow1' '226' + 'lightgoldenrod1' '227' + 'khaki1' '228' + 'wheat1' '229' + 'cornsilk1' '230' + 'grey100' '231' + 'grey3' '232' + 'grey7' '233' + 'grey11' '234' + 'grey15' '235' + 'grey19' '236' + 'grey23' '237' + 'grey27' '238' + 'grey30' '239' + 'grey35' '240' + 'grey39' '241' + 'grey42' '242' + 'grey46' '243' + 'grey50' '244' + 'grey54' '245' + 'grey58' '246' + 'grey62' '247' + 'grey66' '248' + 'grey70' '249' + 'grey74' '250' + 'grey78' '251' + 'grey82' '252' + 'grey85' '253' + 'grey89' '254' + 'grey93' '255' ) # Strip eventual "bg-" prefixes @@ -53,4 +303,3 @@ function isSameColor() { return $(( color1 != color2 )) } - diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 73178865..b4ccb389 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -569,7 +569,7 @@ prompt_context() { typeset -AH context_states context_states=( "ROOT" "yellow" - "DEFAULT" "011" + "DEFAULT" "yellow" ) local content="" @@ -612,7 +612,7 @@ prompt_user() { "STATE" "DEFAULT" "CONTENT" "$(whoami)" "BACKGROUND_COLOR" "${DEFAULT_COLOR}" - "FOREGROUND_COLOR" "011" + "FOREGROUND_COLOR" "yellow" "VISUAL_IDENTIFIER" "USER_ICON" ) fi @@ -639,7 +639,7 @@ prompt_host() { "STATE" "LOCAL" "CONTENT" "${POWERLEVEL9K_HOST_TEMPLATE}" "BACKGROUND_COLOR" "${DEFAULT_COLOR}" - "FOREGROUND_COLOR" "011" + "FOREGROUND_COLOR" "yellow" "VISUAL_IDENTIFIER" "HOST_ICON" ) fi @@ -686,7 +686,7 @@ prompt_command_execution_time() { fi if (( _P9K_COMMAND_DURATION >= POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD )); then - "$1_prompt_segment" "$0" "$2" "red" "226" "${humanReadableDuration}" 'EXECUTION_TIME_ICON' + "$1_prompt_segment" "$0" "$2" "red" "yellow1" "${humanReadableDuration}" 'EXECUTION_TIME_ICON' fi } @@ -701,10 +701,10 @@ prompt_dir() { case "$POWERLEVEL9K_SHORTEN_STRATEGY" in truncate_middle) - current_path=$(pwd | sed -e "s,^$HOME,~," | sed $SED_EXTENDED_REGEX_PARAMETER "s/([^/]{$POWERLEVEL9K_SHORTEN_DIR_LENGTH})[^/]+([^/]{$POWERLEVEL9K_SHORTEN_DIR_LENGTH})\//\1$POWERLEVEL9K_SHORTEN_DELIMITER\2\//g") + current_path=$(echo "$current_path" | sed $SED_EXTENDED_REGEX_PARAMETER "s/([^/]{$POWERLEVEL9K_SHORTEN_DIR_LENGTH})[^/]+([^/]{$POWERLEVEL9K_SHORTEN_DIR_LENGTH})\//\1$POWERLEVEL9K_SHORTEN_DELIMITER\2\//g") ;; truncate_from_right) - current_path=$(truncatePathFromRight "$(pwd | sed -e "s,^$HOME,~,")" ) + current_path=$(truncatePathFromRight "$current_path" ) ;; truncate_with_package_name) local name repo_path package_path current_dir zero @@ -754,8 +754,12 @@ prompt_dir() { # Instead of printing out the full path, print out the name of the package # from the package.json and append the current subdirectory current_path="`echo $packageName | tr -d '"'`$subdirectory_path" + if [[ "${POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER}" == "true" ]]; then + # add space before the packageName to allow for removing the "first" character, without messing up the package name. + current_path=" ${current_path}" + fi else - current_path=$(truncatePathFromRight "$(pwd | sed -e "s,^$HOME,~,")" ) + current_path=$(truncatePathFromRight "$current_path" ) fi ;; truncate_with_folder_marker) @@ -858,13 +862,13 @@ prompt_go_version() { go_path=$(go env GOPATH 2>/dev/null) if [[ -n "$go_version" && "${PWD##$go_path}" != "$PWD" ]]; then - "$1_prompt_segment" "$0" "$2" "green" "255" "$go_version" "GO_ICON" + "$1_prompt_segment" "$0" "$2" "green" "grey93" "$go_version" "GO_ICON" fi } # Command number (in local history) prompt_history() { - "$1_prompt_segment" "$0" "$2" "244" "$DEFAULT_COLOR" '%h' + "$1_prompt_segment" "$0" "$2" "grey50" "$DEFAULT_COLOR" '%h' } # Detection for virtualization (systemd based systems only) @@ -1026,7 +1030,7 @@ prompt_nodeenv() { # print a little OS icon prompt_os_icon() { - "$1_prompt_segment" "$0" "$2" "black" "255" "$OS_ICON" + "$1_prompt_segment" "$0" "$2" "black" "white" "$OS_ICON" } # print PHP version number @@ -1035,7 +1039,7 @@ prompt_php_version() { php_version=$(php -v 2>&1 | grep -oe "^PHP\s*[0-9.]*") if [[ -n "$php_version" ]]; then - "$1_prompt_segment" "$0" "$2" "013" "255" "$php_version" + "$1_prompt_segment" "$0" "$2" "fuchsia" "grey93" "$php_version" fi } @@ -1101,7 +1105,7 @@ prompt_rust_version() { rust_version=$(rustc --version 2>&1 | grep -oe "^rustc\s*[^ ]*" | grep -o '[0-9.a-z\\\-]*$') if [[ -n "$rust_version" ]]; then - "$1_prompt_segment" "$0" "$2" "208" "$DEFAULT_COLOR" "Rust $rust_version" 'RUST_ICON' + "$1_prompt_segment" "$0" "$2" "darkorange" "$DEFAULT_COLOR" "Rust $rust_version" 'RUST_ICON' fi } # RSpec test ratio @@ -1120,7 +1124,7 @@ prompt_rvm() { local version_and_gemset=${rvm_env_string/ruby-} if [[ -n "$version_and_gemset" ]]; then - "$1_prompt_segment" "$0" "$2" "240" "$DEFAULT_COLOR" "$version_and_gemset" 'RUBY_ICON' + "$1_prompt_segment" "$0" "$2" "grey35" "$DEFAULT_COLOR" "$version_and_gemset" 'RUBY_ICON' fi } @@ -1176,7 +1180,7 @@ prompt_status() { if (( ec_sum > 0 )); then if [[ "$POWERLEVEL9K_STATUS_CROSS" == false && "$POWERLEVEL9K_STATUS_VERBOSE" == true ]]; then - "$1_prompt_segment" "$0_ERROR" "$2" "red" "226" "$ec_text" 'CARRIAGE_RETURN_ICON' + "$1_prompt_segment" "$0_ERROR" "$2" "red" "yellow1" "$ec_text" 'CARRIAGE_RETURN_ICON' else "$1_prompt_segment" "$0_ERROR" "$2" "$DEFAULT_COLOR" "red" "" 'FAIL_ICON' fi @@ -1225,7 +1229,7 @@ prompt_symfony2_version() { if [[ -f app/bootstrap.php.cache ]]; then local symfony2_version symfony2_version=$(grep " VERSION " app/bootstrap.php.cache | sed -e 's/[^.0-9]*//g') - "$1_prompt_segment" "$0" "$2" "240" "$DEFAULT_COLOR" "$symfony2_version" 'SYMFONY_ICON' + "$1_prompt_segment" "$0" "$2" "grey35" "$DEFAULT_COLOR" "$symfony2_version" 'SYMFONY_ICON' fi } @@ -1259,7 +1263,7 @@ prompt_todo() { if $(hash todo.sh 2>&-); then count=$(todo.sh ls | egrep "TODO: [0-9]+ of ([0-9]+) tasks shown" | awk '{ print $4 }') if [[ "$count" = <-> ]]; then - "$1_prompt_segment" "$0" "$2" "244" "$DEFAULT_COLOR" "$count" 'TODO_ICON' + "$1_prompt_segment" "$0" "$2" "grey50" "$DEFAULT_COLOR" "$count" 'TODO_ICON' fi fi } @@ -1406,7 +1410,7 @@ prompt_swift_version() { # dir_writable: Display information about the user's permission to write in the current directory prompt_dir_writable() { if [[ ! -w "$PWD" ]]; then - "$1_prompt_segment" "$0_FORBIDDEN" "$2" "red" "226" "" 'LOCK_ICON' + "$1_prompt_segment" "$0_FORBIDDEN" "$2" "red" "yellow1" "" 'LOCK_ICON' fi } diff --git a/test/segments/command_execution_time.spec b/test/segments/command_execution_time.spec index 09738859..e8be508f 100755 --- a/test/segments/command_execution_time.spec +++ b/test/segments/command_execution_time.spec @@ -28,7 +28,7 @@ function testCommandExecutionTimeThresholdCouldBeChanged() { POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=1 _P9K_COMMAND_DURATION=2.03 - assertEquals "%K{red} %F{226%}Dur%f %F{226}2.03 %k%F{red}%f " "$(build_left_prompt)" + assertEquals "%K{red} %F{yellow1%}Dur%f %F{yellow1}2.03 %k%F{red}%f " "$(build_left_prompt)" unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS unset _P9K_COMMAND_DURATION @@ -40,7 +40,7 @@ function testCommandExecutionTimeThresholdCouldBeSetToZero() { POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=0 _P9K_COMMAND_DURATION=0.03 - assertEquals "%K{red} %F{226%}Dur%f %F{226}0.03 %k%F{red}%f " "$(build_left_prompt)" + assertEquals "%K{red} %F{yellow1%}Dur%f %F{yellow1}0.03 %k%F{red}%f " "$(build_left_prompt)" unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS unset _P9K_COMMAND_DURATION @@ -53,7 +53,7 @@ function testCommandExecutionTimePrecisionCouldBeChanged() { POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=4 _P9K_COMMAND_DURATION=0.0001 - assertEquals "%K{red} %F{226%}Dur%f %F{226}0.0001 %k%F{red}%f " "$(build_left_prompt)" + assertEquals "%K{red} %F{yellow1%}Dur%f %F{yellow1}0.0001 %k%F{red}%f " "$(build_left_prompt)" unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS unset _P9K_COMMAND_DURATION @@ -66,7 +66,7 @@ function testCommandExecutionTimePrecisionCouldBeSetToZero() { POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0 _P9K_COMMAND_DURATION=23.5001 - assertEquals "%K{red} %F{226%}Dur%f %F{226}23 %k%F{red}%f " "$(build_left_prompt)" + assertEquals "%K{red} %F{yellow1%}Dur%f %F{yellow1}23 %k%F{red}%f " "$(build_left_prompt)" unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS unset _P9K_COMMAND_DURATION @@ -77,7 +77,7 @@ function testCommandExecutionTimeIsFormattedHumandReadbleForMinuteLongCommand() POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time) _P9K_COMMAND_DURATION=180 - assertEquals "%K{red} %F{226%}Dur%f %F{226}03:00 %k%F{red}%f " "$(build_left_prompt)" + assertEquals "%K{red} %F{yellow1%}Dur%f %F{yellow1}03:00 %k%F{red}%f " "$(build_left_prompt)" unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS unset _P9K_COMMAND_DURATION @@ -87,7 +87,7 @@ function testCommandExecutionTimeIsFormattedHumandReadbleForHourLongCommand() { POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time) _P9K_COMMAND_DURATION=7200 - assertEquals "%K{red} %F{226%}Dur%f %F{226}02:00:00 %k%F{red}%f " "$(build_left_prompt)" + assertEquals "%K{red} %F{yellow1%}Dur%f %F{yellow1}02:00:00 %k%F{red}%f " "$(build_left_prompt)" unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS unset _P9K_COMMAND_DURATION diff --git a/test/segments/go_version.spec b/test/segments/go_version.spec index 2aac460b..347ba4c0 100755 --- a/test/segments/go_version.spec +++ b/test/segments/go_version.spec @@ -40,7 +40,7 @@ function testGo() { PWD="$HOME/go/src/github.com/bhilburn/powerlevel9k" - assertEquals "%K{green} %F{255%}%f %F{255}go1.5.3 %k%F{green}%f " "$(build_left_prompt)" + assertEquals "%K{green} %F{grey93%}%f %F{grey93}go1.5.3 %k%F{green}%f " "$(build_left_prompt)" unset POWERLEVEL9K_GO_ICON unset PWD diff --git a/test/segments/rust_version.spec b/test/segments/rust_version.spec index 49b06bcf..8eea31dc 100755 --- a/test/segments/rust_version.spec +++ b/test/segments/rust_version.spec @@ -19,7 +19,7 @@ function testRust() { alias rustc=mockRust POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(rust_version) - assertEquals "%K{208} %F{black}Rust 0.4.1a-alpha %k%F{208}%f " "$(build_left_prompt)" + assertEquals "%K{darkorange} %F{black}Rust 0.4.1a-alpha %k%F{darkorange}%f " "$(build_left_prompt)" unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS unalias rustc From cbc7199dc402bb1e72592bf20de9b4f2bc3748c3 Mon Sep 17 00:00:00 2001 From: Daniel Porter Date: Thu, 30 Nov 2017 12:03:54 +0000 Subject: [PATCH 18/39] Add Stash naming support for Bitbucket Server --- functions/vcs.zsh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/functions/vcs.zsh b/functions/vcs.zsh index c3e507b9..d80bca8e 100644 --- a/functions/vcs.zsh +++ b/functions/vcs.zsh @@ -116,6 +116,8 @@ function +vi-vcs-detect-changes() { vcs_visual_identifier='VCS_GIT_GITHUB_ICON' elif [[ "$remote" =~ "bitbucket" ]] then vcs_visual_identifier='VCS_GIT_BITBUCKET_ICON' + elif [[ "$remote" =~ "stash" ]] then + vcs_visual_identifier='VCS_GIT_BITBUCKET_ICON' elif [[ "$remote" =~ "gitlab" ]] then vcs_visual_identifier='VCS_GIT_GITLAB_ICON' else From ea062a17086a93c488256c2d91656e5cd925cf23 Mon Sep 17 00:00:00 2001 From: David Jetelina Date: Tue, 5 Dec 2017 10:21:31 +0100 Subject: [PATCH 19/39] Fix of k8s shorter segment My latest PR #676 seemed to have been incompatible with #661 - I did my PR on top of master instead of next. This one is done on top of next and should fix the current not so great state of next (prints nothing). Sorry! --- powerlevel9k.zsh-theme | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 4e7f4316..cbb9e202 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -1430,11 +1430,11 @@ prompt_kubecontext() { local k8s_final_text="" - if [[ "$k8s_context" == "k8s_namespace" ]]; then + if [[ "$cur_ctx" == "cur_namespace" ]]; then # No reason to print out the same identificator twice - k8s_final_text="$k8s_context" + k8s_final_text="$cur_ctx" else - k8s_final_text="$k8s_context/$k8s_namespace" + k8s_final_text="$cur_ctx/$cur_namespace" fi "$1_prompt_segment" "$0" "$2" "magenta" "white" "$k8s_final_text" "KUBERNETES_ICON" From f5f73f25e579c3c5d6e7c25f2e823dbd5d60ef91 Mon Sep 17 00:00:00 2001 From: Robin Rosenstock Date: Mon, 11 Dec 2017 22:40:06 +0100 Subject: [PATCH 20/39] fixes #696 --- powerlevel9k.zsh-theme | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 4e7f4316..8578e6f2 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -1399,6 +1399,16 @@ prompt_pyenv() { fi } +prompt_openfoam() { + local wm_project_version="$WM_PROJECT_VERSION" + local wm_fork="$WM_FORK" + if [[ -n "$wm_project_version" ]] && [[ -z "$wm_fork" ]] ; then + "$1_prompt_segment" "$0" "$2" "yellow" "$DEFAULT_COLOR" "OF: $(basename "$wm_project_version")" + elif [[ -n "$wm_project_version" ]] && [[ -n "$wm_fork" ]] ; then + "$1_prompt_segment" "$0" "$2" "yellow" "$DEFAULT_COLOR" "F-X: $(basename "$wm_project_version")" + fi +} + # Swift version prompt_swift_version() { # Get the first number as this is probably the "main" version number.. From fddb5a90e8709b6e01e20fcbce1f8662c41264b5 Mon Sep 17 00:00:00 2001 From: Robin Rosenstock Date: Thu, 14 Dec 2017 22:12:18 +0100 Subject: [PATCH 21/39] update readme for #696 and #697. OpenFOAM! --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index c4682dd9..4cba65ce 100644 --- a/README.md +++ b/README.md @@ -149,6 +149,7 @@ The segments that are currently available are: * [`todo`](http://todotxt.com/) - Shows the number of tasks in your todo.txt tasks file. * `detect_virt` - Virtualization detection with systemd * `newline` - Continues the prompt on a new line. +* `openfoam` - Shows the current sourced [OpenFOAM](https://openfoam.org/) environment. --------------------------------------------------------------------------------- @@ -504,6 +505,11 @@ prompt itself. This only works on the left side. On the right side it does nothing. +##### openfoam + +This is for all simulation experts, which work with [OpenFOAM](https://openfoam.org/) or with the [foam-extend](https://sourceforge.net/projects/foam-extend/) project. It shows the current sourced environment. So, after specifying someting like `alias of5='source /opt/OpenFOAM/OpenFOAM-5.0/etc/bashrc'` (bashrc works also on zsh) in your `.zshrc` and doing `of5` in the terminal, then on the right prompt it will show "OF:" (for OpenFOAM) or "F-X:" (for foam-extend) with its corresponding version number behind it. To activate this segment just use it with: `openfoam` as normal. + + ##### rbenv This segment shows the version of Ruby being used when using `rbenv` to change your current Ruby stack. From a62168b18968e26f050e710c9eed540cf39ae1a4 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Thu, 14 Dec 2017 16:32:06 -0500 Subject: [PATCH 22/39] README Cleanup --- README.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/README.md b/README.md index 4cba65ce..ca3a6809 100644 --- a/README.md +++ b/README.md @@ -149,7 +149,7 @@ The segments that are currently available are: * [`todo`](http://todotxt.com/) - Shows the number of tasks in your todo.txt tasks file. * `detect_virt` - Virtualization detection with systemd * `newline` - Continues the prompt on a new line. -* `openfoam` - Shows the current sourced [OpenFOAM](https://openfoam.org/) environment. +* `openfoam` - Shows the currently sourced [OpenFOAM](https://openfoam.org/) environment. --------------------------------------------------------------------------------- @@ -505,11 +505,6 @@ prompt itself. This only works on the left side. On the right side it does nothing. -##### openfoam - -This is for all simulation experts, which work with [OpenFOAM](https://openfoam.org/) or with the [foam-extend](https://sourceforge.net/projects/foam-extend/) project. It shows the current sourced environment. So, after specifying someting like `alias of5='source /opt/OpenFOAM/OpenFOAM-5.0/etc/bashrc'` (bashrc works also on zsh) in your `.zshrc` and doing `of5` in the terminal, then on the right prompt it will show "OF:" (for OpenFOAM) or "F-X:" (for foam-extend) with its corresponding version number behind it. To activate this segment just use it with: `openfoam` as normal. - - ##### rbenv This segment shows the version of Ruby being used when using `rbenv` to change your current Ruby stack. From 4d18fdc6e9252a5d93ab9e046b3d98421d1be715 Mon Sep 17 00:00:00 2001 From: Charles Peterson Date: Fri, 15 Dec 2017 15:42:35 -0600 Subject: [PATCH 23/39] fix for colors since the terminals so not always render named colors when using parameter expansion. --- README.md | 11 + functions/colors.zsh | 586 ++++++++++++++++++++++------------------- powerlevel9k.zsh-theme | 8 +- 3 files changed, 334 insertions(+), 271 deletions(-) diff --git a/README.md b/README.md index a30f3395..7c06d87c 100644 --- a/README.md +++ b/README.md @@ -258,6 +258,17 @@ Some example settings: |Normal Colors|(red3 darkorange3 darkgoldenrod gold3 yellow3 chartreuse2 mediumspringgreen green3 green3 green4 darkgreen)| |Subdued Colors|(darkred orange4 yellow4 yellow4 chartreuse3 green3 green4 darkgreen)| +###### test your terminal colors +Some terminals, like iTerm2, allow you to customize some of the colors via the interface. This is handy for themes and allowing the colors to change via the GUI. +Use this command to check how all the colors are rendering in your terminal. This is handy for choosing colors and wheter or not you want to use the static color code, or the dynamic named color. + +```zsh +# execute these in your shell to get a look at all 256 colors + +getColorCode background +getColorCode foreground +``` + ##### command_execution_time Display the time the previous command took to execute if the time is above diff --git a/functions/colors.zsh b/functions/colors.zsh index 8d75e670..3a7da27f 100644 --- a/functions/colors.zsh +++ b/functions/colors.zsh @@ -6,6 +6,46 @@ # https://github.com/bhilburn/powerlevel9k ################################################################ +# get the proper color code if it does not exist as a name. +function getColor() { + # no need to check numerical values + if [[ "$1" = <-> ]]; then + if [[ "$1" = <8-15> ]]; then + 1=$(($1 - 8)) + fi + else + # named color added to parameter expansion print -P to test if the name exists in terminal + named="%K{$1}" + # https://misc.flogisoft.com/bash/tip_colors_and_formatting + default="$'\033'\[49m" + # http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html + quoted=$(printf "%q" $(print -P "$named")) + if [[ $quoted = "$'\033'\[49m" && $1 != "black" ]]; then + # color not found, so try to get the code + 1=$(getColorCode $1) + fi + echo -n "$1" + fi +} + +# empty paramenter resets (stops) background color +function backgroundColor() { + if [[ -z $1 ]]; then + echo -n "%k" + else + echo -n "%K{$(getColor $1)}" + fi +} + +# empty paramenter resets (stops) foreground color +function foregroundColor() { + if [[ -z $1 ]]; then + echo -n "%f" + else + echo -n "%F{$(getColor $1)}" + fi +} + # Get numerical color codes. That way we translate ANSI codes # into ZSH-Style color codes. function getColorCode() { @@ -15,280 +55,292 @@ function getColorCode() { # and "background" colors. We don't need to do that, # as ZSH uses a 256 color space anyway. if [[ "$1" = <8-15> ]]; then - echo $(($1 - 8)) + echo -n $(($1 - 8)) else - echo "$1" + echo -n "$1" fi else typeset -A codes - codes=( # https://jonasjacek.github.io/colors/ # use color names by default to allow dark/light themes to adjust colors based on names - 'black' '000' - 'maroon' '001' - 'green' '002' - 'olive' '003' - 'navy' '004' - 'purple' '005' - 'teal' '006' - 'silver' '007' - 'grey' '008' - 'red' '009' - 'lime' '010' - 'yellow' '011' - 'blue' '012' - 'fuchsia' '013' - 'aqua' '014' - 'white' '015' - 'grey0' '016' - 'navyblue' '017' - 'darkblue' '018' - 'blue3' '019' - 'blue3' '020' - 'blue1' '021' - 'darkgreen' '022' - 'deepskyblue4' '023' - 'deepskyblue4' '024' - 'deepskyblue4' '025' - 'dodgerblue3' '026' - 'dodgerblue2' '027' - 'green4' '028' - 'springgreen4' '029' - 'turquoise4' '030' - 'deepskyblue3' '031' - 'deepskyblue3' '032' - 'dodgerblue1' '033' - 'green3' '034' - 'springgreen3' '035' - 'darkcyan' '036' - 'lightseagreen' '037' - 'deepskyblue2' '038' - 'deepskyblue1' '039' - 'green3' '040' - 'springgreen3' '041' - 'springgreen2' '042' - 'cyan3' '043' - 'darkturquoise' '044' - 'turquoise2' '045' - 'green1' '046' - 'springgreen2' '047' - 'springgreen1' '048' - 'mediumspringgreen' '049' - 'cyan2' '050' - 'cyan1' '051' - 'darkred' '052' - 'deeppink4' '053' - 'purple4' '054' - 'purple4' '055' - 'purple3' '056' - 'blueviolet' '057' - 'orange4' '058' - 'grey37' '059' - 'mediumpurple4' '060' - 'slateblue3' '061' - 'slateblue3' '062' - 'royalblue1' '063' - 'chartreuse4' '064' - 'darkseagreen4' '065' - 'paleturquoise4' '066' - 'steelblue' '067' - 'steelblue3' '068' - 'cornflowerblue' '069' - 'chartreuse3' '070' - 'darkseagreen4' '071' - 'cadetblue' '072' - 'cadetblue' '073' - 'skyblue3' '074' - 'steelblue1' '075' - 'chartreuse3' '076' - 'palegreen3' '077' - 'seagreen3' '078' - 'aquamarine3' '079' - 'mediumturquoise' '080' - 'steelblue1' '081' - 'chartreuse2' '082' - 'seagreen2' '083' - 'seagreen1' '084' - 'seagreen1' '085' - 'aquamarine1' '086' - 'darkslategray2' '087' - 'darkred' '088' - 'deeppink4' '089' - 'darkmagenta' '090' - 'darkmagenta' '091' - 'darkviolet' '092' - 'purple' '093' - 'orange4' '094' - 'lightpink4' '095' - 'plum4' '096' - 'mediumpurple3' '097' - 'mediumpurple3' '098' - 'slateblue1' '099' - 'yellow4' '100' - 'wheat4' '101' - 'grey53' '102' - 'lightslategrey' '103' - 'mediumpurple' '104' - 'lightslateblue' '105' - 'yellow4' '106' - 'darkolivegreen3' '107' - 'darkseagreen' '108' - 'lightskyblue3' '109' - 'lightskyblue3' '110' - 'skyblue2' '111' - 'chartreuse2' '112' - 'darkolivegreen3' '113' - 'palegreen3' '114' - 'darkseagreen3' '115' - 'darkslategray3' '116' - 'skyblue1' '117' - 'chartreuse1' '118' - 'lightgreen' '119' - 'lightgreen' '120' - 'palegreen1' '121' - 'aquamarine1' '122' - 'darkslategray1' '123' - 'red3' '124' - 'deeppink4' '125' - 'mediumvioletred' '126' - 'magenta3' '127' - 'darkviolet' '128' - 'purple' '129' - 'darkorange3' '130' - 'indianred' '131' - 'hotpink3' '132' - 'mediumorchid3' '133' - 'mediumorchid' '134' - 'mediumpurple2' '135' - 'darkgoldenrod' '136' - 'lightsalmon3' '137' - 'rosybrown' '138' - 'grey63' '139' - 'mediumpurple2' '140' - 'mediumpurple1' '141' - 'gold3' '142' - 'darkkhaki' '143' - 'navajowhite3' '144' - 'grey69' '145' - 'lightsteelblue3' '146' - 'lightsteelblue' '147' - 'yellow3' '148' - 'darkolivegreen3' '149' - 'darkseagreen3' '150' - 'darkseagreen2' '151' - 'lightcyan3' '152' - 'lightskyblue1' '153' - 'greenyellow' '154' - 'darkolivegreen2' '155' - 'palegreen1' '156' - 'darkseagreen2' '157' - 'darkseagreen1' '158' - 'paleturquoise1' '159' - 'red3' '160' - 'deeppink3' '161' - 'deeppink3' '162' - 'magenta3' '163' - 'magenta3' '164' - 'magenta2' '165' - 'darkorange3' '166' - 'indianred' '167' - 'hotpink3' '168' - 'hotpink2' '169' - 'orchid' '170' - 'mediumorchid1' '171' - 'orange3' '172' - 'lightsalmon3' '173' - 'lightpink3' '174' - 'pink3' '175' - 'plum3' '176' - 'violet' '177' - 'gold3' '178' - 'lightgoldenrod3' '179' - 'tan' '180' - 'mistyrose3' '181' - 'thistle3' '182' - 'plum2' '183' - 'yellow3' '184' - 'khaki3' '185' - 'lightgoldenrod2' '186' - 'lightyellow3' '187' - 'grey84' '188' - 'lightsteelblue1' '189' - 'yellow2' '190' - 'darkolivegreen1' '191' - 'darkolivegreen1' '192' - 'darkseagreen1' '193' - 'honeydew2' '194' - 'lightcyan1' '195' - 'red1' '196' - 'deeppink2' '197' - 'deeppink1' '198' - 'deeppink1' '199' - 'magenta2' '200' - 'magenta1' '201' - 'orangered1' '202' - 'indianred1' '203' - 'indianred1' '204' - 'hotpink' '205' - 'hotpink' '206' - 'mediumorchid1' '207' - 'darkorange' '208' - 'salmon1' '209' - 'lightcoral' '210' - 'palevioletred1' '211' - 'orchid2' '212' - 'orchid1' '213' - 'orange1' '214' - 'sandybrown' '215' - 'lightsalmon1' '216' - 'lightpink1' '217' - 'pink1' '218' - 'plum1' '219' - 'gold1' '220' - 'lightgoldenrod2' '221' - 'lightgoldenrod2' '222' - 'navajowhite1' '223' - 'mistyrose1' '224' - 'thistle1' '225' - 'yellow1' '226' - 'lightgoldenrod1' '227' - 'khaki1' '228' - 'wheat1' '229' - 'cornsilk1' '230' - 'grey100' '231' - 'grey3' '232' - 'grey7' '233' - 'grey11' '234' - 'grey15' '235' - 'grey19' '236' - 'grey23' '237' - 'grey27' '238' - 'grey30' '239' - 'grey35' '240' - 'grey39' '241' - 'grey42' '242' - 'grey46' '243' - 'grey50' '244' - 'grey54' '245' - 'grey58' '246' - 'grey62' '247' - 'grey66' '248' - 'grey70' '249' - 'grey74' '250' - 'grey78' '251' - 'grey82' '252' - 'grey85' '253' - 'grey89' '254' - 'grey93' '255' - ) + codes[black]=000 + codes[maroon]=001 + codes[green]=002 + codes[olive]=003 + codes[navy]=004 + codes[purple]=005 + codes[teal]=006 + codes[silver]=007 + codes[grey]=008 + codes[red]=009 + codes[lime]=010 + codes[yellow]=011 + codes[blue]=012 + codes[fuchsia]=013 + codes[aqua]=014 + codes[white]=015 + codes[grey0]=016 + codes[navyblue]=017 + codes[darkblue]=018 + codes[blue3]=019 + codes[blue3]=020 + codes[blue1]=021 + codes[darkgreen]=022 + codes[deepskyblue4]=023 + codes[deepskyblue4]=024 + codes[deepskyblue4]=025 + codes[dodgerblue3]=026 + codes[dodgerblue2]=027 + codes[green4]=028 + codes[springgreen4]=029 + codes[turquoise4]=030 + codes[deepskyblue3]=031 + codes[deepskyblue3]=032 + codes[dodgerblue1]=033 + codes[green3]=034 + codes[springgreen3]=035 + codes[darkcyan]=036 + codes[lightseagreen]=037 + codes[deepskyblue2]=038 + codes[deepskyblue1]=039 + codes[green3]=040 + codes[springgreen3]=041 + codes[springgreen2]=042 + codes[cyan3]=043 + codes[darkturquoise]=044 + codes[turquoise2]=045 + codes[green1]=046 + codes[springgreen2]=047 + codes[springgreen1]=048 + codes[mediumspringgreen]=049 + codes[cyan2]=050 + codes[cyan1]=051 + codes[darkred]=052 + codes[deeppink4]=053 + codes[purple4]=054 + codes[purple4]=055 + codes[purple3]=056 + codes[blueviolet]=057 + codes[orange4]=058 + codes[grey37]=059 + codes[mediumpurple4]=060 + codes[slateblue3]=061 + codes[slateblue3]=062 + codes[royalblue1]=063 + codes[chartreuse4]=064 + codes[darkseagreen4]=065 + codes[paleturquoise4]=066 + codes[steelblue]=067 + codes[steelblue3]=068 + codes[cornflowerblue]=069 + codes[chartreuse3]=070 + codes[darkseagreen4]=071 + codes[cadetblue]=072 + codes[cadetblue]=073 + codes[skyblue3]=074 + codes[steelblue1]=075 + codes[chartreuse3]=076 + codes[palegreen3]=077 + codes[seagreen3]=078 + codes[aquamarine3]=079 + codes[mediumturquoise]=080 + codes[steelblue1]=081 + codes[chartreuse2]=082 + codes[seagreen2]=083 + codes[seagreen1]=084 + codes[seagreen1]=085 + codes[aquamarine1]=086 + codes[darkslategray2]=087 + codes[darkred]=088 + codes[deeppink4]=089 + codes[darkmagenta]=090 + codes[darkmagenta]=091 + codes[darkviolet]=092 + codes[purple]=093 + codes[orange4]=094 + codes[lightpink4]=095 + codes[plum4]=096 + codes[mediumpurple3]=097 + codes[mediumpurple3]=098 + codes[slateblue1]=099 + codes[yellow4]=100 + codes[wheat4]=101 + codes[grey53]=102 + codes[lightslategrey]=103 + codes[mediumpurple]=104 + codes[lightslateblue]=105 + codes[yellow4]=106 + codes[darkolivegreen3]=107 + codes[darkseagreen]=108 + codes[lightskyblue3]=109 + codes[lightskyblue3]=110 + codes[skyblue2]=111 + codes[chartreuse2]=112 + codes[darkolivegreen3]=113 + codes[palegreen3]=114 + codes[darkseagreen3]=115 + codes[darkslategray3]=116 + codes[skyblue1]=117 + codes[chartreuse1]=118 + codes[lightgreen]=119 + codes[lightgreen]=120 + codes[palegreen1]=121 + codes[aquamarine1]=122 + codes[darkslategray1]=123 + codes[red3]=124 + codes[deeppink4]=125 + codes[mediumvioletred]=126 + codes[magenta3]=127 + codes[darkviolet]=128 + codes[purple]=129 + codes[darkorange3]=130 + codes[indianred]=131 + codes[hotpink3]=132 + codes[mediumorchid3]=133 + codes[mediumorchid]=134 + codes[mediumpurple2]=135 + codes[darkgoldenrod]=136 + codes[lightsalmon3]=137 + codes[rosybrown]=138 + codes[grey63]=139 + codes[mediumpurple2]=140 + codes[mediumpurple1]=141 + codes[gold3]=142 + codes[darkkhaki]=143 + codes[navajowhite3]=144 + codes[grey69]=145 + codes[lightsteelblue3]=146 + codes[lightsteelblue]=147 + codes[yellow3]=148 + codes[darkolivegreen3]=149 + codes[darkseagreen3]=150 + codes[darkseagreen2]=151 + codes[lightcyan3]=152 + codes[lightskyblue1]=153 + codes[greenyellow]=154 + codes[darkolivegreen2]=155 + codes[palegreen1]=156 + codes[darkseagreen2]=157 + codes[darkseagreen1]=158 + codes[paleturquoise1]=159 + codes[red3]=160 + codes[deeppink3]=161 + codes[deeppink3]=162 + codes[magenta3]=163 + codes[magenta3]=164 + codes[magenta2]=165 + codes[darkorange3]=166 + codes[indianred]=167 + codes[hotpink3]=168 + codes[hotpink2]=169 + codes[orchid]=170 + codes[mediumorchid1]=171 + codes[orange3]=172 + codes[lightsalmon3]=173 + codes[lightpink3]=174 + codes[pink3]=175 + codes[plum3]=176 + codes[violet]=177 + codes[gold3]=178 + codes[lightgoldenrod3]=179 + codes[tan]=180 + codes[mistyrose3]=181 + codes[thistle3]=182 + codes[plum2]=183 + codes[yellow3]=184 + codes[khaki3]=185 + codes[lightgoldenrod2]=186 + codes[lightyellow3]=187 + codes[grey84]=188 + codes[lightsteelblue1]=189 + codes[yellow2]=190 + codes[darkolivegreen1]=191 + codes[darkolivegreen1]=192 + codes[darkseagreen1]=193 + codes[honeydew2]=194 + codes[lightcyan1]=195 + codes[red1]=196 + codes[deeppink2]=197 + codes[deeppink1]=198 + codes[deeppink1]=199 + codes[magenta2]=200 + codes[magenta1]=201 + codes[orangered1]=202 + codes[indianred1]=203 + codes[indianred1]=204 + codes[hotpink]=205 + codes[hotpink]=206 + codes[mediumorchid1]=207 + codes[darkorange]=208 + codes[salmon1]=209 + codes[lightcoral]=210 + codes[palevioletred1]=211 + codes[orchid2]=212 + codes[orchid1]=213 + codes[orange1]=214 + codes[sandybrown]=215 + codes[lightsalmon1]=216 + codes[lightpink1]=217 + codes[pink1]=218 + codes[plum1]=219 + codes[gold1]=220 + codes[lightgoldenrod2]=221 + codes[lightgoldenrod2]=222 + codes[navajowhite1]=223 + codes[mistyrose1]=224 + codes[thistle1]=225 + codes[yellow1]=226 + codes[lightgoldenrod1]=227 + codes[khaki1]=228 + codes[wheat1]=229 + codes[cornsilk1]=230 + codes[grey100]=231 + codes[grey3]=232 + codes[grey7]=233 + codes[grey11]=234 + codes[grey15]=235 + codes[grey19]=236 + codes[grey23]=237 + codes[grey27]=238 + codes[grey30]=239 + codes[grey35]=240 + codes[grey39]=241 + codes[grey42]=242 + codes[grey46]=243 + codes[grey50]=244 + codes[grey54]=245 + codes[grey58]=246 + codes[grey62]=247 + codes[grey66]=248 + codes[grey70]=249 + codes[grey74]=250 + codes[grey78]=251 + codes[grey82]=252 + codes[grey85]=253 + codes[grey89]=254 + codes[grey93]=255 - # Strip eventual "bg-" prefixes - 1=${1#bg-} - # Strip eventual "fg-" prefixes - 1=${1#fg-} - # Strip eventual "br" prefixes ("bright" colors) - 1=${1#br} - echo $codes[$1] + # for testing purposes in terminal + if [[ "$1" == "foreground" ]]; then + # call via `getColorCode foreground` + for i in "${(k@)codes}"; do + print -P "$(foregroundColor $i)$(getColor $i) - $i$(foregroundColor)" + done + elif [[ "$1" == "background" ]]; then + # call via `getColorCode background` + for i in "${(k@)codes}"; do + print -P "$(backgroundColor $i)$(getColor $i) - $i$(backgroundColor)" + done + else + #[[ -n "$1" ]] bg="%K{$1}" || bg="%k" + # Strip eventual "bg-" prefixes + 1=${1#bg-} + # Strip eventual "fg-" prefixes + 1=${1#fg-} + # Strip eventual "br" prefixes ("bright" colors) + 1=${1#br} + echo -n $codes[$1] + fi fi } diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 831e81c5..c0668251 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -127,8 +127,8 @@ left_prompt_segment() { [[ -n $FG_COLOR_MODIFIER ]] && 4="$FG_COLOR_MODIFIER" local bg fg - [[ -n "$3" ]] && bg="%K{$3}" || bg="%k" - [[ -n "$4" ]] && fg="%F{$4}" || fg="%f" + [[ -n "$3" ]] && bg="$(backgroundColor $3)" || bg="$(backgroundColor)" + [[ -n "$4" ]] && fg="$(foregroundColor $4)" || fg="$(foregroundColor)" if [[ $CURRENT_BG != 'NONE' ]] && ! isSameColor "$3" "$CURRENT_BG"; then echo -n "$bg%F{$CURRENT_BG}" @@ -218,8 +218,8 @@ right_prompt_segment() { [[ -n $FG_COLOR_MODIFIER ]] && 4="$FG_COLOR_MODIFIER" local bg fg - [[ -n "$3" ]] && bg="%K{$3}" || bg="%k" - [[ -n "$4" ]] && fg="%F{$4}" || fg="%f" + [[ -n "$3" ]] && bg="$(backgroundColor $3)" || bg="$(backgroundColor)" + [[ -n "$4" ]] && fg="$(foregroundColor $4)" || fg="$(foregroundColor)" # If CURRENT_RIGHT_BG is "NONE", we are the first right segment. if [[ $joined == false ]] || [[ "$CURRENT_RIGHT_BG" == "NONE" ]]; then From 6bbff45bcebc7ff6538d24a2f77e35357cdef0b8 Mon Sep 17 00:00:00 2001 From: Charles Peterson Date: Fri, 15 Dec 2017 16:01:50 -0600 Subject: [PATCH 24/39] orange stuff -- 208 --- test/segments/rust_version.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/segments/rust_version.spec b/test/segments/rust_version.spec index 8eea31dc..a9668671 100755 --- a/test/segments/rust_version.spec +++ b/test/segments/rust_version.spec @@ -19,7 +19,7 @@ function testRust() { alias rustc=mockRust POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(rust_version) - assertEquals "%K{darkorange} %F{black}Rust 0.4.1a-alpha %k%F{darkorange}%f " "$(build_left_prompt)" + assertEquals "%K{208} %F{black}Rust 0.4.1a-alpha %k%F{darkorange}%f " "$(build_left_prompt)" unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS unalias rustc From 5d645e07bf93b5e29a9fb2fe9b01fa8f2c9b2f27 Mon Sep 17 00:00:00 2001 From: Richard Tippl Date: Sat, 23 Dec 2017 14:54:25 +0100 Subject: [PATCH 25/39] Add remote state to context prompt Adds REMOTE state to color prompt with in case of a shell over ssh. This state has lower priority than ROOT state to not lose the privilege warning. --- powerlevel9k.zsh-theme | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 831e81c5..5ff6291c 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -571,24 +571,25 @@ prompt_context() { context_states=( "ROOT" "yellow" "DEFAULT" "yellow" + "REMOTE" "yellow" ) local content="" if [[ "$POWERLEVEL9K_ALWAYS_SHOW_CONTEXT" == true ]] || [[ "$(whoami)" != "$DEFAULT_USER" ]] || [[ -n "$SSH_CLIENT" || -n "$SSH_TTY" ]]; then - - if [[ $(print -P "%#") == '#' ]]; then - current_state="ROOT" - fi - content="${POWERLEVEL9K_CONTEXT_TEMPLATE}" - elif [[ "$POWERLEVEL9K_ALWAYS_SHOW_USER" == true ]]; then content="$(whoami)" else return fi + if [[ $(print -P "%#") == '#' ]]; then + current_state="ROOT" + elif [[ -n "$SSH_CLIENT" || -n "$SSH_TTY" ]]; then + current_state="REMOTE" + fi + "$1_prompt_segment" "${0}_${current_state}" "$2" "$DEFAULT_COLOR" "${context_states[$current_state]}" "${content}" } From ef0f8f0ba4afb4e81cd931fea1fb81edf8c5633d Mon Sep 17 00:00:00 2001 From: Charles Peterson Date: Sun, 31 Dec 2017 00:54:58 -0600 Subject: [PATCH 26/39] make sure the default colors are encoded properly in case they are named... --- powerlevel9k.zsh-theme | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index c0668251..79f7208b 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -142,8 +142,8 @@ left_prompt_segment() { # subsegment (or the default color). This should have # enough contrast. local complement - [[ -n "$4" ]] && complement="$4" || complement=$DEFAULT_COLOR - echo -n "$bg%F{$complement}" + [[ -n "$4" ]] && complement="$fg" || complement="$(foregroundColor $DEFAULT_COLOR)" + echo -n "${bg}${complement}" if [[ $joined == false ]]; then echo -n "$(print_icon 'LEFT_SUBSEGMENT_SEPARATOR')$POWERLEVEL9K_WHITESPACE_BETWEEN_LEFT_SEGMENTS" fi @@ -229,10 +229,11 @@ right_prompt_segment() { # subsegment (or the default color). This should have # enough contrast. local complement - [[ -n "$4" ]] && complement="$4" || complement=$DEFAULT_COLOR - echo -n "%F{$complement}$(print_icon 'RIGHT_SUBSEGMENT_SEPARATOR')%f" + [[ -n "$4" ]] && complement="$fg" || complement="$(foregroundColor $DEFAULT_COLOR)" + echo -n "$complement$(print_icon 'RIGHT_SUBSEGMENT_SEPARATOR')%f" else - echo -n "%F{$3}$(print_icon 'RIGHT_SEGMENT_SEPARATOR')%f" + # Use the new BG color for the foreground with separator + echo -n "$(foregroundColor $3)$(print_icon 'RIGHT_SEGMENT_SEPARATOR')%f" fi fi From 42a0125f4cb38c781d9da1511b6d0042eea9dc84 Mon Sep 17 00:00:00 2001 From: lemaral Date: Sun, 31 Dec 2017 14:18:49 +0100 Subject: [PATCH 27/39] Fix newline issue --- powerlevel9k.zsh-theme | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 54528fc7..3f25d195 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -564,7 +564,8 @@ prompt_public_ip() { break done fi - $1_prompt_segment "$0" "$2" "$DEFAULT_COLOR" "$DEFAULT_COLOR_INVERTED" "${public_ip}" "$icon" fi + $1_prompt_segment "$0" "$2" "$DEFAULT_COLOR" "$DEFAULT_COLOR_INVERTED" "${public_ip}" "$icon" + fi } # Context: user@hostname (who am I and where am I) From 0c943ac6d5beebc381b3e49858a5ef6861289d29 Mon Sep 17 00:00:00 2001 From: Charles Peterson Date: Sun, 31 Dec 2017 14:34:01 -0600 Subject: [PATCH 28/39] colors checking optimized and added tput for check the colors moved to colors functions, because it makes sense. --- functions/colors.zsh | 16 ++++++++++++++++ powerlevel9k.zsh-theme | 9 +-------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/functions/colors.zsh b/functions/colors.zsh index 3a7da27f..253de7cb 100644 --- a/functions/colors.zsh +++ b/functions/colors.zsh @@ -6,6 +6,22 @@ # https://github.com/bhilburn/powerlevel9k ################################################################ +function termColors() { + local term_colors + + if which tput &>/dev/null; then + term_colors=$(tput colors) + else + term_colors=$(echotc Co) + fi + if (( ! $? && ${term_colors:-0} < 256 )); then + print -P "%F{red}WARNING!%f Your terminal appears to support fewer than 256 colors!" + print -P "If your terminal supports 256 colors, please export the appropriate environment variable" + print -P "_before_ loading this theme in your \~\/.zshrc. In most terminal emulators, putting" + print -P "%F{blue}export TERM=\"xterm-256color\"%f at the top of your \~\/.zshrc is sufficient." + fi +} + # get the proper color code if it does not exist as a name. function getColor() { # no need to check numerical values diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 79f7208b..b50ce64d 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -1572,14 +1572,7 @@ prompt_powerlevel9k_setup() { setopt noprompt{bang,cr,percent,sp,subst} "prompt${^prompt_opts[@]}" # Display a warning if the terminal does not support 256 colors - local term_colors - term_colors=$(echotc Co 2>/dev/null) - if (( ! $? && ${term_colors:-0} < 256 )); then - print -P "%F{red}WARNING!%f Your terminal appears to support fewer than 256 colors!" - print -P "If your terminal supports 256 colors, please export the appropriate environment variable" - print -P "_before_ loading this theme in your \~\/.zshrc. In most terminal emulators, putting" - print -P "%F{blue}export TERM=\"xterm-256color\"%f at the top of your \~\/.zshrc is sufficient." - fi + termColors # If the terminal `LANG` is set to `C`, this theme will not work at all. local term_lang From 6d116ab24b974cc8271eaf33c755a916a6f462e4 Mon Sep 17 00:00:00 2001 From: Christo Kotze Date: Fri, 5 Jan 2018 11:04:04 +0400 Subject: [PATCH 29/39] Added `prompt_date` and fixed segment comments Added separators for all segments (####) Added descriptions for missing ones --- powerlevel9k.zsh-theme | 114 ++++++++++++++++++++++++++++++++--------- 1 file changed, 91 insertions(+), 23 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 5ff6291c..725e726f 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -17,7 +17,7 @@ ################################################################ ## Turn on for Debugging -#PS4='%s%f%b%k%F{blue}%{λ%}%L %F{240}%N:%i%(?.. %F{red}%?) %1(_.%F{yellow}%-1_ .)%s%f%b%k ' +#PS4='%s%f%b%k%F{blue}%{λ%}%L %F{240}%N:%i%(?.. %F{red}%?) %1(_.%F{yellow}%-1_ .)%s%f%b%k ' #zstyle ':vcs_info:*+*:*' debug true #set -o xtrace @@ -272,6 +272,7 @@ right_prompt_segment() { # right-left but reads the opposite, this isn't necessary for the other side. CURRENT_BG='NONE' +################################################################ # Anaconda Environment prompt_anaconda() { # Depending on the conda version, either might be set. This @@ -285,6 +286,7 @@ prompt_anaconda() { fi } +################################################################ # AWS Profile prompt_aws() { local aws_profile="${AWS_PROFILE:-$AWS_DEFAULT_PROFILE}" @@ -294,6 +296,7 @@ prompt_aws() { fi } +################################################################ # Current Elastic Beanstalk environment prompt_aws_eb_env() { local eb_env=$(grep environment .elasticbeanstalk/config.yml 2> /dev/null | awk '{print $2}') @@ -303,6 +306,7 @@ prompt_aws_eb_env() { fi } +################################################################ # Segment to indicate background jobs with an icon. set_default POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE true set_default POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE_ALWAYS false @@ -321,6 +325,7 @@ prompt_background_jobs() { fi } +################################################################ # A newline in your prompt, so you can segments on multiple lines. prompt_newline() { local lws newline @@ -338,6 +343,7 @@ prompt_newline() { POWERLEVEL9K_WHITESPACE_BETWEEN_LEFT_SEGMENTS=$lws } +################################################################ # Segment that indicates usage level of current partition. set_default POWERLEVEL9K_DISK_USAGE_ONLY_WARNING false set_default POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL 90 @@ -380,6 +386,8 @@ prompt_disk_usage() { fi } +################################################################ +# Segment that displays the battery status in levels and colors prompt_battery() { # The battery can have four different states - default to 'unknown'. local current_state='unknown' @@ -490,6 +498,7 @@ prompt_battery() { fi } +################################################################ # Public IP segment # Parameters: # * $1 Alignment: string - left|right @@ -560,6 +569,7 @@ prompt_public_ip() { fi } +################################################################ # Context: user@hostname (who am I and where am I) # Note that if $DEFAULT_USER is not set, this prompt segment will always print set_default POWERLEVEL9K_ALWAYS_SHOW_CONTEXT false @@ -648,6 +658,7 @@ prompt_host() { "$1_prompt_segment" "$0_${host_state[STATE]}" "$2" "${host_state[BACKGROUND_COLOR]}" "${host_state[FOREGROUND_COLOR]}" "${host_state[CONTENT]}" "${host_state[VISUAL_IDENTIFIER]}" } +################################################################ # The 'custom` prompt provides a way for users to invoke commands and display # the output in a segment. prompt_custom() { @@ -659,6 +670,7 @@ prompt_custom() { fi } +################################################################ # Display the duration the command needed to run. prompt_command_execution_time() { set_default POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD 3 @@ -692,6 +704,7 @@ prompt_command_execution_time() { fi } +################################################################ # Dir: current working directory set_default POWERLEVEL9K_DIR_PATH_SEPARATOR "/" set_default POWERLEVEL9K_HOME_FOLDER_ABBREVIATION "~" @@ -850,6 +863,7 @@ prompt_dir() { "$1_prompt_segment" "$0_${current_state}" "$2" "blue" "$DEFAULT_COLOR" "${current_path}" "${dir_states[$current_state]}" } +################################################################ # Docker machine prompt_docker_machine() { local docker_machine="$DOCKER_MACHINE_NAME" @@ -859,6 +873,7 @@ prompt_docker_machine() { fi } +################################################################ # GO prompt prompt_go_version() { local go_version @@ -871,11 +886,13 @@ prompt_go_version() { fi } +################################################################ # Command number (in local history) prompt_history() { "$1_prompt_segment" "$0" "$2" "grey50" "$DEFAULT_COLOR" '%h' } +################################################################ # Detection for virtualization (systemd based systems only) prompt_detect_virt() { if ! command -v systemd-detect-virt > /dev/null; then @@ -894,7 +911,8 @@ prompt_detect_virt() { fi } - +################################################################ +# Test icons prompt_icons_test() { for key in ${(@k)icons}; do # The lower color spectrum in ZSH makes big steps. Choosing @@ -905,6 +923,8 @@ prompt_icons_test() { done } +################################################################ +# Segment to display the current IP address prompt_ip() { if [[ "$OS" == "OSX" ]]; then if defined POWERLEVEL9K_IP_INTERFACE; then @@ -935,6 +955,8 @@ prompt_ip() { "$1_prompt_segment" "$0" "$2" "cyan" "$DEFAULT_COLOR" "$ip" 'NETWORK_ICON' } +################################################################ +# Segment to display if VPN is active set_default POWERLEVEL9K_VPN_IP_INTERFACE "tun" # prompt if vpn active prompt_vpn_ip() { @@ -945,6 +967,8 @@ prompt_vpn_ip() { done } +################################################################ +# Segment to display load set_default POWERLEVEL9K_LOAD_WHICH 5 prompt_load() { # The load segment can have three different states @@ -1000,8 +1024,8 @@ prompt_load() { "$1_prompt_segment" "${0}_${current_state}" "$2" "${load_states[$current_state]}" "$DEFAULT_COLOR" "$load_avg" 'LOAD_ICON' } - -# Node version +################################################################ +# Segment to diplay Node version prompt_node_version() { local node_version=$(node -v 2>/dev/null) [[ -z "${node_version}" ]] && return @@ -1009,7 +1033,8 @@ prompt_node_version() { "$1_prompt_segment" "$0" "$2" "green" "white" "${node_version:1}" 'NODE_ICON' } -# Node version from NVM +################################################################ +# Segment to display Node version from NVM # Only prints the segment if different than the default value prompt_nvm() { local node_version nvm_default @@ -1024,7 +1049,8 @@ prompt_nvm() { $1_prompt_segment "$0" "$2" "magenta" "black" "${node_version:1}" 'NODE_ICON' } -# NodeEnv Prompt +################################################################ +# Segment to display NodeEnv prompt_nodeenv() { local nodeenv_path="$NODE_VIRTUAL_ENV" if [[ -n "$nodeenv_path" && "$NODE_VIRTUAL_ENV_DISABLE_PROMPT" != true ]]; then @@ -1033,12 +1059,14 @@ prompt_nodeenv() { fi } -# print a little OS icon +################################################################ +# Segment to print a little OS icon prompt_os_icon() { "$1_prompt_segment" "$0" "$2" "black" "white" "$OS_ICON" } -# print PHP version number +################################################################ +# Segment to display PHP version number prompt_php_version() { local php_version php_version=$(php -v 2>&1 | grep -oe "^PHP\s*[0-9.]*") @@ -1048,7 +1076,8 @@ prompt_php_version() { fi } -# Show free RAM and used Swap +################################################################ +# Segment to display free RAM and used Swap prompt_ram() { local base='' local ramfree=0 @@ -1071,7 +1100,8 @@ prompt_ram() { "$1_prompt_segment" "$0" "$2" "yellow" "$DEFAULT_COLOR" "$(printSizeHumanReadable "$ramfree" $base)" 'RAM_ICON' } -# rbenv information +################################################################ +# Segment to display rbenv information set_default POWERLEVEL9K_RBENV_ALWAYS false prompt_rbenv() { if which rbenv 2>/dev/null >&2; then @@ -1086,7 +1116,8 @@ prompt_rbenv() { fi } -# chruby information +################################################################ +# Segment to display chruby information # see https://github.com/postmodern/chruby/issues/245 for chruby_auto issue with ZSH prompt_chruby() { local chruby_env @@ -1097,14 +1128,16 @@ prompt_chruby() { fi } -# Print an icon if user is root. +################################################################ +# Segment to print an icon if user is root. prompt_root_indicator() { if [[ "$UID" -eq 0 ]]; then "$1_prompt_segment" "$0" "$2" "$DEFAULT_COLOR" "yellow" "" 'ROOT_ICON' fi } -# Print Rust version number +################################################################ +# Segment to display Rust version number prompt_rust_version() { local rust_version rust_version=$(rustc --version 2>&1 | grep -oe "^rustc\s*[^ ]*" | grep -o '[0-9.a-z\\\-]*$') @@ -1113,7 +1146,9 @@ prompt_rust_version() { "$1_prompt_segment" "$0" "$2" "darkorange" "$DEFAULT_COLOR" "Rust $rust_version" 'RUST_ICON' fi } -# RSpec test ratio + +################################################################ +# Segment to display RSpec test ratio prompt_rspec_stats() { if [[ (-d app && -d spec) ]]; then local code_amount tests_amount @@ -1124,7 +1159,8 @@ prompt_rspec_stats() { fi } -# Ruby Version Manager information +################################################################ +# Segment to display Ruby Version Manager information prompt_rvm() { local version_and_gemset=${rvm_env_string/ruby-} @@ -1133,12 +1169,15 @@ prompt_rvm() { fi } +################################################################ +# Segment to display SSH icon when connected prompt_ssh() { if [[ -n "$SSH_CLIENT" ]] || [[ -n "$SSH_TTY" ]]; then "$1_prompt_segment" "$0" "$2" "$DEFAULT_COLOR" "yellow" "" 'SSH_ICON' fi } +################################################################ # Status: When an error occur, return the error code, or a cross icon if option is set # Display an ok icon when no error occur, or hide the segment if option is set to false # @@ -1194,6 +1233,8 @@ prompt_status() { fi } +################################################################ +# Segment to display Swap information prompt_swap() { local swap_used=0 local base='' @@ -1218,6 +1259,7 @@ prompt_swap() { "$1_prompt_segment" "$0" "$2" "yellow" "$DEFAULT_COLOR" "$(printSizeHumanReadable "$swap_used" $base)" 'SWAP_ICON' } +################################################################ # Symfony2-PHPUnit test ratio prompt_symfony2_tests() { if [[ (-d src && -d app && -f app/AppKernel.php) ]]; then @@ -1229,7 +1271,8 @@ prompt_symfony2_tests() { fi } -# Symfony2-Version +################################################################ +# Segment to display Symfony2-Version prompt_symfony2_version() { if [[ -f app/bootstrap.php.cache ]]; then local symfony2_version @@ -1238,6 +1281,7 @@ prompt_symfony2_version() { fi } +################################################################ # Show a ratio of tests vs code build_test_stats() { local code_amount="$4" @@ -1253,6 +1297,7 @@ build_test_stats() { (( ratio < 50 )) && "$1_prompt_segment" "$2_BAD" "$3" "red" "$DEFAULT_COLOR" "$headline: $ratio%%" "$6" } +################################################################ # System time prompt_time() { local time_format="%D{%H:%M:%S}" @@ -1260,9 +1305,21 @@ prompt_time() { time_format="$POWERLEVEL9K_TIME_FORMAT" fi - "$1_prompt_segment" "$0" "$2" "$DEFAULT_COLOR_INVERTED" "$DEFAULT_COLOR" "$time_format" + "$1_prompt_segment" "$0" "$2" "$DEFAULT_COLOR_INVERTED" "$DEFAULT_COLOR" "$time_format" "TIME_ICON" } +################################################################ +# System date +prompt_date() { + local date_format="%D{%d.%m.%y}" + if [[ -n "$POWERLEVEL9K_DATE_FORMAT" ]]; then + time_format="$POWERLEVEL9K_DATE_FORMAT" + fi + + "$1_prompt_segment" "$0" "$2" "$DEFAULT_COLOR_INVERTED" "$DEFAULT_COLOR" "$date_format" "DATE_ICON" +} + +################################################################ # todo.sh: shows the number of tasks in your todo.sh file prompt_todo() { if $(hash todo.sh 2>&-); then @@ -1273,6 +1330,7 @@ prompt_todo() { fi } +################################################################ # VCS segment: shows the state of your repository, if you are in a folder under # version control set_default POWERLEVEL9K_VCS_ACTIONFORMAT_FOREGROUND "red" @@ -1338,6 +1396,8 @@ powerlevel9k_vcs_init() { fi } +################################################################ +# Segment to show VCS information prompt_vcs() { VCS_WORKDIR_DIRTY=false VCS_WORKDIR_HALF_DIRTY=false @@ -1363,6 +1423,7 @@ prompt_vcs() { fi } +################################################################ # Vi Mode: show editing mode (NORMAL|INSERT) set_default POWERLEVEL9K_VI_INSERT_MODE_STRING "INSERT" set_default POWERLEVEL9K_VI_COMMAND_MODE_STRING "NORMAL" @@ -1377,6 +1438,7 @@ prompt_vi_mode() { esac } +################################################################ # Virtualenv: current working virtualenv # More information on virtualenv (Python): # https://virtualenv.pypa.io/en/latest/ @@ -1387,6 +1449,7 @@ prompt_virtualenv() { fi } +################################################################ # pyenv: current active python version (with restrictions) # https://github.com/pyenv/pyenv#choosing-the-python-version prompt_pyenv() { @@ -1395,17 +1458,20 @@ prompt_pyenv() { fi } +################################################################ +# Display openfoam information prompt_openfoam() { local wm_project_version="$WM_PROJECT_VERSION" local wm_fork="$WM_FORK" if [[ -n "$wm_project_version" ]] && [[ -z "$wm_fork" ]] ; then - "$1_prompt_segment" "$0" "$2" "yellow" "$DEFAULT_COLOR" "OF: $(basename "$wm_project_version")" - elif [[ -n "$wm_project_version" ]] && [[ -n "$wm_fork" ]] ; then - "$1_prompt_segment" "$0" "$2" "yellow" "$DEFAULT_COLOR" "F-X: $(basename "$wm_project_version")" - fi + "$1_prompt_segment" "$0" "$2" "yellow" "$DEFAULT_COLOR" "OF: $(basename "$wm_project_version")" + elif [[ -n "$wm_project_version" ]] && [[ -n "$wm_fork" ]] ; then + "$1_prompt_segment" "$0" "$2" "yellow" "$DEFAULT_COLOR" "F-X: $(basename "$wm_project_version")" + fi } -# Swift version +################################################################ +# Segment to display Swift version prompt_swift_version() { # Get the first number as this is probably the "main" version number.. local swift_version=$(swift --version 2>/dev/null | grep -o -E "[0-9.]+" | head -n 1) @@ -1414,6 +1480,7 @@ prompt_swift_version() { "$1_prompt_segment" "$0" "$2" "magenta" "white" "${swift_version}" 'SWIFT_ICON' } +################################################################ # dir_writable: Display information about the user's permission to write in the current directory prompt_dir_writable() { if [[ ! -w "$PWD" ]]; then @@ -1421,6 +1488,7 @@ prompt_dir_writable() { fi } +################################################################ # Kubernetes Current Context/Namespace prompt_kubecontext() { local kubectl_version="$(kubectl version --client 2>/dev/null)" @@ -1447,6 +1515,7 @@ prompt_kubecontext() { fi } +################################################################ # Dropbox status prompt_dropbox() { # The first column is just the directory, so cut it @@ -1464,7 +1533,6 @@ prompt_dropbox() { } - ################################################################ # Prompt processing and drawing ################################################################ From 550db296de8c9ce93bb9b451c93efb43fe67db4d Mon Sep 17 00:00:00 2001 From: Christo Kotze Date: Fri, 5 Jan 2018 13:15:52 +0400 Subject: [PATCH 30/39] Updates to `prompt_date` and `prompt_time` Using `set_default` to set the defaults - makes the code shorter and more readable and bypasses errors. --- powerlevel9k.zsh-theme | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 725e726f..d38af031 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -1300,23 +1300,17 @@ build_test_stats() { ################################################################ # System time prompt_time() { - local time_format="%D{%H:%M:%S}" - if [[ -n "$POWERLEVEL9K_TIME_FORMAT" ]]; then - time_format="$POWERLEVEL9K_TIME_FORMAT" - fi + set_default POWERLEVEL9K_TIME_FORMAT "%D{%H:%M:%S}" - "$1_prompt_segment" "$0" "$2" "$DEFAULT_COLOR_INVERTED" "$DEFAULT_COLOR" "$time_format" "TIME_ICON" + "$1_prompt_segment" "$0" "$2" "$DEFAULT_COLOR_INVERTED" "$DEFAULT_COLOR" "$POWERLEVEL9K_TIME_FORMAT" "TIME_ICON" } ################################################################ # System date prompt_date() { - local date_format="%D{%d.%m.%y}" - if [[ -n "$POWERLEVEL9K_DATE_FORMAT" ]]; then - time_format="$POWERLEVEL9K_DATE_FORMAT" - fi + set_default POWERLEVEL9K_DATE_FORMAT "%D{%d.%m.%y}" - "$1_prompt_segment" "$0" "$2" "$DEFAULT_COLOR_INVERTED" "$DEFAULT_COLOR" "$date_format" "DATE_ICON" + "$1_prompt_segment" "$0" "$2" "$DEFAULT_COLOR_INVERTED" "$DEFAULT_COLOR" "$POWERLEVEL9K_DATE_FORMAT" "DATE_ICON" } ################################################################ From 2680eec848cc351001545dc25c67afdff58bc85e Mon Sep 17 00:00:00 2001 From: Christo Kotze Date: Fri, 5 Jan 2018 13:20:48 +0400 Subject: [PATCH 31/39] Updates to `functions/icons.zsh` Added date and time icons --- functions/icons.zsh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/functions/icons.zsh b/functions/icons.zsh index 6ec07379..e642da00 100644 --- a/functions/icons.zsh +++ b/functions/icons.zsh @@ -88,6 +88,8 @@ case $POWERLEVEL9K_MODE in VPN_ICON '(vpn)' KUBERNETES_ICON $'\U2388' # ⎈ DROPBOX_ICON $'\UF16B' #  + DATE_ICON $'\uE184' #  + TIME_ICON $'\uE12E' #  ) ;; 'awesome-fontconfig') @@ -160,6 +162,8 @@ case $POWERLEVEL9K_MODE in VPN_ICON $'\uF023' KUBERNETES_ICON $'\U2388' # ⎈ DROPBOX_ICON $'\UF16B' #  + DATE_ICON $'\uF073 ' #  + TIME_ICON $'\uF017 ' #  ) ;; 'awesome-mapped-fontconfig') @@ -237,6 +241,8 @@ case $POWERLEVEL9K_MODE in VPN_ICON '\u'$CODEPOINT_OF_AWESOME_LOCK KUBERNETES_ICON $'\U2388' # ⎈ DROPBOX_ICON '\u'$CODEPOINT_OF_AWESOME_DROPBOX #  + DATE_ICON $'\uF073 ' #  + TIME_ICON $'\uF017 ' #  ) ;; 'nerdfont-complete'|'nerdfont-fontconfig') @@ -309,6 +315,8 @@ case $POWERLEVEL9K_MODE in VPN_ICON '(vpn)' KUBERNETES_ICON $'\U2388' # ⎈ DROPBOX_ICON $'\UF16B' #  + DATE_ICON $'\uF073 ' #  + TIME_ICON $'\uF017 ' #  ) ;; *) @@ -381,6 +389,8 @@ case $POWERLEVEL9K_MODE in VPN_ICON '(vpn)' KUBERNETES_ICON $'\U2388' # ⎈ DROPBOX_ICON 'Dropbox' + DATE_ICON '' + TIME_ICON '' ) ;; esac From 289df8a781e2f0d6690ebf6181673ea285f7b27b Mon Sep 17 00:00:00 2001 From: Christo Kotze Date: Fri, 5 Jan 2018 13:25:28 +0400 Subject: [PATCH 32/39] Added `prompt_date` to `README.md` --- README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a30f3395..019fa0d8 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,7 @@ The segments that are currently available are: * [`background_jobs`](#background_jobs) - Indicator for background jobs. * [`battery`](#battery) - Current battery status. * [`context`](#context) - Your username and host, conditionalized based on $USER and SSH status. +* [`date`](#date) - System date. * [`dir`](#dir) - Your current working directory. * `dir_writable` - Displays a lock icon, if you do not have write permissions on the current folder. * [`disk_usage`](#disk_usage) - Disk usage of your current partition. @@ -337,6 +338,14 @@ end of the hostname. |`POWERLEVEL9K_ALWAYS_SHOW_USER`|false|Always show the username, but conditionalize the hostname.| |`POWERLEVEL9K_CONTEXT_TEMPLATE`|%n@%m|Default context prompt (username@machine). Refer to the [ZSH Documentation](http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html) for all possible expansions, including deeper host depths.| +##### date + +The `date` segment shows the current system date. + +| Variable | Default Value | Description | +|----------|---------------|-------------| +|`POWERLEVEL9K_DATE_FORMAT`|`%D{%d.%m.%y}`|[ZSH time format](http://zsh.sourceforge.net/Doc/Release Prompt-Expansion.html) to use in this segment.| + ##### dir The `dir` segment shows the current working directory. When using the "Awesome @@ -391,7 +400,7 @@ The `truncate_with_package_name` strategy gives your directory path relative to } ``` -the path shown would be `my-cool-project`. If you navigate to `$HOME/projects/my-project/src`, then the path shown would be `my-cool-project/src`. Please note that this currently looks for `.git` directory to determine the root of the project. +The path shown would be `my-cool-project`. If you navigate to `$HOME/projects/my-project/src`, then the path shown would be `my-cool-project/src`. Please note that this currently looks for `.git` directory to determine the root of the project. If you want to customize the directory separator, you could set: ```zsh From 28ff892a7136fa424c26fdcd822adf17409dcf8c Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Sat, 6 Jan 2018 15:30:16 -0500 Subject: [PATCH 33/39] Some README cleanups --- README.md | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 7c06d87c..515bbd2a 100644 --- a/README.md +++ b/README.md @@ -258,17 +258,6 @@ Some example settings: |Normal Colors|(red3 darkorange3 darkgoldenrod gold3 yellow3 chartreuse2 mediumspringgreen green3 green3 green4 darkgreen)| |Subdued Colors|(darkred orange4 yellow4 yellow4 chartreuse3 green3 green4 darkgreen)| -###### test your terminal colors -Some terminals, like iTerm2, allow you to customize some of the colors via the interface. This is handy for themes and allowing the colors to change via the GUI. -Use this command to check how all the colors are rendering in your terminal. This is handy for choosing colors and wheter or not you want to use the static color code, or the dynamic named color. - -```zsh -# execute these in your shell to get a look at all 256 colors - -getColorCode background -getColorCode foreground -``` - ##### command_execution_time Display the time the previous command took to execute if the time is above @@ -481,6 +470,8 @@ also specify which method you would like it to use. The methods available are di curl, or wget. The host used for wget and curl is http://ident.me by default but can be set to another host if you prefer. +If you activate a VPN, the icon for this segment will change to the defined VPN icon. + The public_ip segment will attempt to update your public IP address every 5 minutes by default(also configurable by the user). If you lose connection your cached IP address will be displayed until your timeout expires at which point every time your prompt is generated a new attempt will be made. From 4db2eb0e1607e6b4d8097a5feb178f25357cb1c9 Mon Sep 17 00:00:00 2001 From: Justus Flerlage Date: Sat, 25 Nov 2017 01:43:30 +0100 Subject: [PATCH 34/39] Added flag for checking the term colors --- functions/colors.zsh | 4 ++++ powerlevel9k.zsh-theme | 1 + 2 files changed, 5 insertions(+) diff --git a/functions/colors.zsh b/functions/colors.zsh index 253de7cb..8029c727 100644 --- a/functions/colors.zsh +++ b/functions/colors.zsh @@ -7,6 +7,10 @@ ################################################################ function termColors() { + if [[ $POWERLEVEL9K_CHECK_TERM_COLORS == false ]]; then + return + fi + local term_colors if which tput &>/dev/null; then diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index d5b3ef75..50735886 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -1563,6 +1563,7 @@ NEWLINE=' [[ $POWERLEVEL9K_PROMPT_ADD_NEWLINE == true ]] && PROMPT="$NEWLINE$PROMPT" } +set_default POWERLEVEL9K_CHECK_TERM_COLORS true prompt_powerlevel9k_setup() { # The value below was set to better support 32-bit CPUs. # It's the maximum _signed_ integer value on 32-bit CPUs. From 3a605c7f62437543dc76621a7de00796411da531 Mon Sep 17 00:00:00 2001 From: Justus Flerlage Date: Fri, 8 Dec 2017 00:41:33 +0100 Subject: [PATCH 35/39] renamed POWERLEVEL9K_CHECK_TERM_COLORS to POWERLEVEL9K_IGNORE_TERM_COLORS --- functions/colors.zsh | 2 +- powerlevel9k.zsh-theme | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/colors.zsh b/functions/colors.zsh index 8029c727..cf06ae43 100644 --- a/functions/colors.zsh +++ b/functions/colors.zsh @@ -7,7 +7,7 @@ ################################################################ function termColors() { - if [[ $POWERLEVEL9K_CHECK_TERM_COLORS == false ]]; then + if [[ $POWERLEVEL9K_IGNORE_TERM_COLORS == true ]]; then return fi diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 50735886..ef34be96 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -1563,7 +1563,7 @@ NEWLINE=' [[ $POWERLEVEL9K_PROMPT_ADD_NEWLINE == true ]] && PROMPT="$NEWLINE$PROMPT" } -set_default POWERLEVEL9K_CHECK_TERM_COLORS true +set_default POWERLEVEL9K_IGNORE_TERM_COLORS false prompt_powerlevel9k_setup() { # The value below was set to better support 32-bit CPUs. # It's the maximum _signed_ integer value on 32-bit CPUs. From f7aae86b78be0243c137a0e09a839f3c8406ff97 Mon Sep 17 00:00:00 2001 From: Justus Flerlage Date: Fri, 8 Dec 2017 01:00:55 +0100 Subject: [PATCH 36/39] added POWERLEVEL9K_IGNORE_TERM_LANG for disabling term_lang check --- powerlevel9k.zsh-theme | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index ef34be96..8488d9ac 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -12,7 +12,7 @@ # directory. For more detailed documentation, refer to the project wiki, hosted # on Github: https://github.com/bhilburn/powerlevel9k/wiki # -# There are a lot of easy ways you can customize your prompt segments and +# There aPOWERLEVEL9K_CHECK_TERM_COLORSre a lot of easy ways you can customize your prompt segments and # theming with simple variables defined in your `~/.zshrc`. ################################################################ @@ -1564,6 +1564,7 @@ NEWLINE=' } set_default POWERLEVEL9K_IGNORE_TERM_COLORS false +set_default POWERLEVEL9K_IGNORE_TERM_LANG false prompt_powerlevel9k_setup() { # The value below was set to better support 32-bit CPUs. # It's the maximum _signed_ integer value on 32-bit CPUs. @@ -1586,13 +1587,15 @@ prompt_powerlevel9k_setup() { termColors # If the terminal `LANG` is set to `C`, this theme will not work at all. - local term_lang - term_lang=$(echo $LANG) - if [[ $term_lang == 'C' ]]; then - print -P "\t%F{red}WARNING!%f Your terminal's 'LANG' is set to 'C', which breaks this theme!" - print -P "\t%F{red}WARNING!%f Please set your 'LANG' to a UTF-8 language, like 'en_US.UTF-8'" - print -P "\t%F{red}WARNING!%f _before_ loading this theme in your \~\.zshrc. Putting" - print -P "\t%F{red}WARNING!%f %F{blue}export LANG=\"en_US.UTF-8\"%f at the top of your \~\/.zshrc is sufficient." + if [[ $POWERLEVEL9K_IGNORE_TERM_LANG == false ]]; then + local term_lang + term_lang=$(echo $LANG) + if [[ $term_lang == 'C' ]]; then + print -P "\t%F{red}WARNING!%f Your terminal's 'LANG' is set to 'C', which breaks this theme!" + print -P "\t%F{red}WARNING!%f Please set your 'LANG' to a UTF-8 language, like 'en_US.UTF-8'" + print -P "\t%F{red}WARNING!%f _before_ loading this theme in your \~\.zshrc. Putting" + print -P "\t%F{red}WARNING!%f %F{blue}export LANG=\"en_US.UTF-8\"%f at the top of your \~\/.zshrc is sufficient." + fi fi defined POWERLEVEL9K_LEFT_PROMPT_ELEMENTS || POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir rbenv vcs) From 87988cea26253a7b9b7918e7bc6304550b3a5e6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20H=C3=B6ltje?= Date: Fri, 19 Jan 2018 22:06:01 -0500 Subject: [PATCH 37/39] getColor() must always print result This was causing colors specified as numbers to not be shown. --- functions/colors.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/colors.zsh b/functions/colors.zsh index 253de7cb..7a748ab3 100644 --- a/functions/colors.zsh +++ b/functions/colors.zsh @@ -40,8 +40,8 @@ function getColor() { # color not found, so try to get the code 1=$(getColorCode $1) fi - echo -n "$1" fi + echo -n "$1" } # empty paramenter resets (stops) background color From f994a7c3491487252070590b4e05ddaa17ef48f1 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Tue, 30 Jan 2018 16:41:34 -0500 Subject: [PATCH 38/39] Minor fix of copy/paste error --- powerlevel9k.zsh-theme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 8488d9ac..45a4920e 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -12,7 +12,7 @@ # directory. For more detailed documentation, refer to the project wiki, hosted # on Github: https://github.com/bhilburn/powerlevel9k/wiki # -# There aPOWERLEVEL9K_CHECK_TERM_COLORSre a lot of easy ways you can customize your prompt segments and +# There are a lot of easy ways you can customize your prompt segments and # theming with simple variables defined in your `~/.zshrc`. ################################################################ From cc4daa7698784ed6e135fe7661d13e5676f829bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Ho=CC=88ltje?= Date: Thu, 15 Feb 2018 10:21:30 -0500 Subject: [PATCH 39/39] Fix GIT and GITHUB nerdfont icon. VCS_GIT_ICON and VCS_GIT_GITHUB_ICON were wrong. --- functions/icons.zsh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/functions/icons.zsh b/functions/icons.zsh index e642da00..ae2c5383 100644 --- a/functions/icons.zsh +++ b/functions/icons.zsh @@ -248,6 +248,7 @@ case $POWERLEVEL9K_MODE in 'nerdfont-complete'|'nerdfont-fontconfig') # nerd-font patched (complete) font required! See # https://github.com/ryanoasis/nerd-fonts + # http://nerdfonts.com/#cheat-sheet # Set the right locale to protect special characters local LC_ALL="" LC_CTYPE="en_US.UTF-8" icons=( @@ -298,8 +299,8 @@ case $POWERLEVEL9K_MODE in VCS_COMMIT_ICON $'\uE729 ' #  VCS_BRANCH_ICON $'\uF126 ' #  VCS_REMOTE_BRANCH_ICON $'\uE728 ' #  - VCS_GIT_ICON $'\uF113 ' #  - VCS_GIT_GITHUB_ICON $'\uE709 ' #  + VCS_GIT_ICON $'\uF1D3 ' #  + VCS_GIT_GITHUB_ICON $'\uF113 ' #  VCS_GIT_BITBUCKET_ICON $'\uE703 ' #  VCS_GIT_GITLAB_ICON $'\uF296 ' #  VCS_HG_ICON $'\uF0C3 ' # 