From 802af322ff3c0541cb89dac30362e576ff1f81a2 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Mon, 16 Jul 2018 20:48:27 +0200 Subject: Add tests for battery segment Additionally - Add a fourth parameter to prompt_battery for better testability. This parameter is the root prefix, so we can use our own test batteries. --- powerlevel9k.zsh-theme | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'powerlevel9k.zsh-theme') diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index c1ea754f..eefcedde 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -409,12 +409,13 @@ prompt_battery() { 'charged' 'green' 'disconnected' "$DEFAULT_COLOR_INVERTED" ) + local ROOT_PREFIX="${4}" # Set default values if the user did not configure them set_default POWERLEVEL9K_BATTERY_LOW_THRESHOLD 10 - if [[ $OS =~ OSX && -f /usr/bin/pmset && -x /usr/bin/pmset ]]; then + if [[ $OS =~ OSX && -f "${ROOT_PREFIX}"/usr/bin/pmset && -x "${ROOT_PREFIX}"/usr/bin/pmset ]]; then # obtain battery information from system - local raw_data="$(pmset -g batt | awk 'FNR==2{print}')" + local raw_data="$(${ROOT_PREFIX}/usr/bin/pmset -g batt | awk 'FNR==2{print}')" # return if there is no battery on system [[ -z $(echo $raw_data | grep "InternalBattery") ]] && return @@ -446,7 +447,7 @@ prompt_battery() { fi if [[ "$OS" == 'Linux' ]] || [[ "$OS" == 'Android' ]]; then - local sysp="/sys/class/power_supply" + local sysp="${ROOT_PREFIX}/sys/class/power_supply" # Reported BAT0 or BAT1 depending on kernel version [[ -a $sysp/BAT0 ]] && local bat=$sysp/BAT0 @@ -468,8 +469,8 @@ prompt_battery() { [[ $bat_percent =~ 100 ]] && current_state="charged" [[ $bat_percent -lt 100 ]] && current_state="charging" fi - if [[ -f /usr/bin/acpi ]]; then - local time_remaining=$(acpi | awk '{ print $5 }') + if [[ -f ${ROOT_PREFIX}/usr/bin/acpi ]]; then + local time_remaining=$(${ROOT_PREFIX}/usr/bin/acpi | awk '{ print $5 }') if [[ $time_remaining =~ rate ]]; then local tstring="..." elif [[ $time_remaining =~ "[[:digit:]]+" ]]; then -- cgit v1.2.3 From 629d52a7d548f055b27e79d60651f21a19aed684 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Wed, 18 Jul 2018 22:13:25 +0200 Subject: Add visual identifier to custom segments --- powerlevel9k.zsh-theme | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'powerlevel9k.zsh-theme') diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index eefcedde..144b4df4 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -703,11 +703,13 @@ prompt_host() { # The 'custom` prompt provides a way for users to invoke commands and display # the output in a segment. prompt_custom() { - local command=POWERLEVEL9K_CUSTOM_$3:u + local segment_name="${3:u}" + # Get content of custom segment + local command="POWERLEVEL9K_CUSTOM_${segment_name}" local segment_content="$(eval ${(P)command})" if [[ -n $segment_content ]]; then - "$1_prompt_segment" "${0}_${3:u}" "$2" $DEFAULT_COLOR_INVERTED $DEFAULT_COLOR "$segment_content" + "$1_prompt_segment" "${0}_${3:u}" "$2" $DEFAULT_COLOR_INVERTED $DEFAULT_COLOR "$segment_content" "CUSTOM_${segment_name}_ICON" fi } -- cgit v1.2.3 From b61d021abdf0987960022ca6999549ef33ce9681 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Wed, 18 Jul 2018 22:15:35 +0200 Subject: Simplify detect_virt segment --- powerlevel9k.zsh-theme | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'powerlevel9k.zsh-theme') diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 144b4df4..2e645f0a 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -1046,18 +1046,14 @@ prompt_history() { ################################################################ # Detection for virtualization (systemd based systems only) prompt_detect_virt() { - if ! command -v systemd-detect-virt > /dev/null; then - return - fi - local virt=$(systemd-detect-virt) + local virt=$(systemd-detect-virt 2> /dev/null) if [[ "$virt" == "none" ]]; then if [[ "$(ls -di / | grep -o 2)" != "2" ]]; then virt="chroot" - "$1_prompt_segment" "$0" "$2" "$DEFAULT_COLOR" "yellow" "$virt" - else - ; fi - else + fi + + if [[ -n "${virt}" ]]; then "$1_prompt_segment" "$0" "$2" "$DEFAULT_COLOR" "yellow" "$virt" fi } -- cgit v1.2.3 From 43272410c90e41affd20afa3110c519e1bd8bada Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Wed, 18 Jul 2018 22:17:54 +0200 Subject: Change ip segment so that the tests can be executed on OSX as well Change regular expressions to a more compatible format. --- powerlevel9k.zsh-theme | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'powerlevel9k.zsh-theme') diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 2e645f0a..1c9194f7 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -1088,18 +1088,20 @@ prompt_ip() { else if defined POWERLEVEL9K_IP_INTERFACE; then # Get the IP address of the specified interface. - ip=$(ip -4 a show "$POWERLEVEL9K_IP_INTERFACE" | grep -o "inet\s*[0-9.]*" | grep -o "[0-9.]*") + ip=$(ip -4 a show "$POWERLEVEL9K_IP_INTERFACE" | grep -o "inet\s*[0-9.]*" | grep -o -E "[0-9.]+") else local interfaces callback # Get all network interface names that are up - interfaces=$(ip link ls up | grep -o -E ":\s+[a-z0-9]+:" | grep -v "lo" | grep -o "[a-z0-9]*") - callback='ip -4 a show $item | grep -o "inet\s*[0-9.]*" | grep -o "[0-9.]*"' + interfaces=$(ip link ls up | grep -o -E ":\s+[a-z0-9]+:" | grep -v "lo" | grep -o -E "[a-z0-9]+") + callback='ip -4 a show $item | grep -o "inet\s*[0-9.]*" | grep -o -E "[0-9.]+"' ip=$(getRelevantItem "$interfaces" "$callback") fi fi - "$1_prompt_segment" "$0" "$2" "cyan" "$DEFAULT_COLOR" "$ip" 'NETWORK_ICON' + if [[ -n "$ip" ]]; then + "$1_prompt_segment" "$0" "$2" "cyan" "$DEFAULT_COLOR" "$ip" 'NETWORK_ICON' + fi } ################################################################ -- cgit v1.2.3 From 04168cc5c012f9ca5759bf277a2e0d44a145c520 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Wed, 18 Jul 2018 22:20:16 +0200 Subject: Change load segment to accept an optional root prefix for testability --- powerlevel9k.zsh-theme | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'powerlevel9k.zsh-theme') diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 1c9194f7..1983b031 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -1132,6 +1132,7 @@ prompt_laravel_version() { # Segment to display load set_default POWERLEVEL9K_LOAD_WHICH 5 prompt_load() { + local ROOT_PREFIX="${4}" # The load segment can have three different states local current_state="unknown" local load_select=2 @@ -1167,7 +1168,7 @@ prompt_load() { fi ;; *) - load_avg=$(cut -d" " -f${load_select} /proc/loadavg) + load_avg=$(cut -d" " -f${load_select} ${ROOT_PREFIX}/proc/loadavg) cores=$(nproc) esac -- cgit v1.2.3 From e99c7549fb330aa36f2912e1f0ace0081c26efd7 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Wed, 18 Jul 2018 22:24:25 +0200 Subject: Change ram segment to take an optional root prefix for testability --- powerlevel9k.zsh-theme | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'powerlevel9k.zsh-theme') diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 1983b031..2b68b6a4 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -1241,6 +1241,7 @@ prompt_php_version() { ################################################################ # Segment to display free RAM and used Swap prompt_ram() { + local ROOT_PREFIX="${4}" local base='' local ramfree=0 if [[ "$OS" == "OSX" ]]; then @@ -1252,9 +1253,9 @@ prompt_ram() { ramfree=$(( ramfree * 4096 )) else if [[ "$OS" == "BSD" ]]; then - ramfree=$(grep 'avail memory' /var/run/dmesg.boot | awk '{print $4}') + ramfree=$(grep 'avail memory' ${ROOT_PREFIX}/var/run/dmesg.boot | awk '{print $4}') else - ramfree=$(grep -o -E "MemAvailable:\s+[0-9]+" /proc/meminfo | grep -o "[0-9]*") + ramfree=$(grep -o -E "MemAvailable:\s+[0-9]+" ${ROOT_PREFIX}/proc/meminfo | grep -o -E "[0-9]+") base='K' fi fi -- cgit v1.2.3 From 7a3aa9d3d1955f6a884705a690647cc8aaf96255 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Wed, 18 Jul 2018 22:26:08 +0200 Subject: Change swap segment to take an optional root prefix for testability --- powerlevel9k.zsh-theme | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'powerlevel9k.zsh-theme') diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 2b68b6a4..16051839 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -1422,6 +1422,7 @@ prompt_status() { ################################################################ # Segment to display Swap information prompt_swap() { + local ROOT_PREFIX="${4}" local swap_used=0 local base='' @@ -1436,8 +1437,8 @@ prompt_swap() { base=$(echo "$raw_swap_used" | grep -o "[A-Z]*$") else - swap_total=$(grep -o -E "SwapTotal:\s+[0-9]+" /proc/meminfo | grep -o "[0-9]*") - swap_free=$(grep -o -E "SwapFree:\s+[0-9]+" /proc/meminfo | grep -o "[0-9]*") + swap_total=$(grep -o -E "SwapTotal:\s+[0-9]+" ${ROOT_PREFIX}/proc/meminfo | grep -o -E "[0-9]+") + swap_free=$(grep -o -E "SwapFree:\s+[0-9]+" ${ROOT_PREFIX}/proc/meminfo | grep -o -E "[0-9]+") swap_used=$(( swap_total - swap_free )) base='K' fi -- cgit v1.2.3 From 671f826a4087ee35a399475712fe9cea4d4fc337 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Thu, 19 Jul 2018 07:42:09 +0200 Subject: Set background color of vi_mode segment to white in insert mode --- powerlevel9k.zsh-theme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'powerlevel9k.zsh-theme') diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 16051839..ee744799 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -1611,7 +1611,7 @@ set_default POWERLEVEL9K_VI_COMMAND_MODE_STRING "NORMAL" prompt_vi_mode() { case ${KEYMAP} in vicmd) - "$1_prompt_segment" "$0_NORMAL" "$2" "$DEFAULT_COLOR" "default" "$POWERLEVEL9K_VI_COMMAND_MODE_STRING" + "$1_prompt_segment" "$0_NORMAL" "$2" "$DEFAULT_COLOR" "white" "$POWERLEVEL9K_VI_COMMAND_MODE_STRING" ;; main|viins|*) if [[ -z $POWERLEVEL9K_VI_INSERT_MODE_STRING ]]; then return; fi -- cgit v1.2.3 From 7f6ac8dbaca1ff1139a1eb2bef1f234cf4a72099 Mon Sep 17 00:00:00 2001 From: Christian Höltje Date: Tue, 31 Jul 2018 16:22:26 -0400 Subject: Use SUDO_COMMAND to check for sudo `sudo -n true` only checks that we _could_ use `sudo`, not if we are in a sudo session. closes #852 --- powerlevel9k.zsh-theme | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'powerlevel9k.zsh-theme') diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 3e425c48..0b9dc708 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -623,12 +623,12 @@ prompt_context() { if [[ $(print -P "%#") == '#' ]]; then current_state="ROOT" elif [[ -n "$SSH_CLIENT" || -n "$SSH_TTY" ]]; then - if sudo -n true 2>/dev/null; then + if [[ -n "$SUDO_COMMAND" ]]; then current_state="REMOTE_SUDO" else current_state="REMOTE" fi - elif sudo -n true 2>/dev/null; then + elif [[ -n "$SUDO_COMMAND" ]]; then current_state="SUDO" fi -- cgit v1.2.3 From ebbdb3c1c011a1f024e80b50c6b8b4a4fa5c46e2 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Tue, 7 Aug 2018 21:21:15 +0200 Subject: Make purpose clear of backgroundColor and foregroundColor functions The functions just start the colors, they do not end them. It seems too much to have a function that terminates a color. --- functions/colors.zsh | 16 ++++------------ powerlevel9k.zsh-theme | 8 ++++---- 2 files changed, 8 insertions(+), 16 deletions(-) (limited to 'powerlevel9k.zsh-theme') diff --git a/functions/colors.zsh b/functions/colors.zsh index 9309a225..b94258a5 100755 --- a/functions/colors.zsh +++ b/functions/colors.zsh @@ -50,20 +50,12 @@ function getColor() { # empty paramenter resets (stops) background color function backgroundColor() { - if [[ -z $1 ]]; then - echo -n "%k" - else - echo -n "%K{$(getColor $1)}" - fi + echo -n "%K{$(getColor $1)}" } # empty paramenter resets (stops) foreground color function foregroundColor() { - if [[ -z $1 ]]; then - echo -n "%f" - else - echo -n "%F{$(getColor $1)}" - fi + echo -n "%F{$(getColor $1)}" } # Get numerical color codes. That way we translate ANSI codes @@ -346,12 +338,12 @@ function getColorCode() { if [[ "$1" == "foreground" ]]; then # call via `getColorCode foreground` for i in "${(k@)codes}"; do - print -P "$(foregroundColor $i)$(getColor $i) - $i$(foregroundColor)" + print -P "$(foregroundColor $i)$(getColor $i) - $i%f" done elif [[ "$1" == "background" ]]; then # call via `getColorCode background` for i in "${(k@)codes}"; do - print -P "$(backgroundColor $i)$(getColor $i) - $i$(backgroundColor)" + print -P "$(backgroundColor $i)$(getColor $i) - $i%k" done else #[[ -n "$1" ]] bg="%K{$1}" || bg="%k" diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 3e425c48..97bddc30 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="$(backgroundColor $3)" || bg="$(backgroundColor)" - [[ -n "$4" ]] && fg="$(foregroundColor $4)" || fg="$(foregroundColor)" + [[ -n "$3" ]] && bg="$(backgroundColor $3)" || bg="%k" + [[ -n "$4" ]] && fg="$(foregroundColor $4)" || fg="%f" if [[ $CURRENT_BG != 'NONE' ]] && ! isSameColor "$3" "$CURRENT_BG"; then echo -n "$bg%F{$CURRENT_BG}" @@ -220,8 +220,8 @@ right_prompt_segment() { [[ -n $FG_COLOR_MODIFIER ]] && 4="$FG_COLOR_MODIFIER" local bg fg - [[ -n "$3" ]] && bg="$(backgroundColor $3)" || bg="$(backgroundColor)" - [[ -n "$4" ]] && fg="$(foregroundColor $4)" || fg="$(foregroundColor)" + [[ -n "$3" ]] && bg="$(backgroundColor $3)" || bg="%k" + [[ -n "$4" ]] && fg="$(foregroundColor $4)" || fg="%f" # If CURRENT_RIGHT_BG is "NONE", we are the first right segment. -- cgit v1.2.3 From bf9082bea9f8912a028b660db5084e659d9973a8 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Tue, 7 Aug 2018 21:25:06 +0200 Subject: Fix bug so that the segment separator of left middle has the right color In short: the current background color was the unfiltered color and is used to print the next segment separator. If the user set a color like "purple3" that would result in a white segment separator as Terminal Emulators do not understand the color "purple3". --- powerlevel9k.zsh-theme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'powerlevel9k.zsh-theme') diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 97bddc30..92917345 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -173,7 +173,7 @@ left_prompt_segment() { [[ -n "$5" ]] && echo -n "${fg}${5}" echo -n "${POWERLEVEL9K_WHITESPACE_BETWEEN_LEFT_SEGMENTS}" - CURRENT_BG=$3 + CURRENT_BG="$(getColorCode ${3})" last_left_element_index=$current_index } -- cgit v1.2.3 From 02506893a92f3861c3f62e5aedf4876dd1b9672f Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Tue, 7 Aug 2018 21:58:32 +0200 Subject: Remove duplicate variable --- powerlevel9k.zsh-theme | 5 ----- 1 file changed, 5 deletions(-) (limited to 'powerlevel9k.zsh-theme') diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 92917345..27f5dc4e 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -278,11 +278,6 @@ right_prompt_segment() { # Prompt Segment Definitions ################################################################ -# The `CURRENT_BG` variable is used to remember what the last BG color used was -# when building the left-hand prompt. Because the RPROMPT is created from -# right-left but reads the opposite, this isn't necessary for the other side. -CURRENT_BG='NONE' - ################################################################ # Anaconda Environment prompt_anaconda() { -- cgit v1.2.3 From 93324c0600e57e5c3b6b4c10be972e83f3c88526 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Tue, 7 Aug 2018 22:00:11 +0200 Subject: Improve naming of variables As a side effect this should improve the performance slightly, as we get the fore- and background color codes as early as possible, and store the result, so that we don't have to recalculate the color code all over. --- powerlevel9k.zsh-theme | 80 +++++++++++++++++++++++++++++++------------------- 1 file changed, 49 insertions(+), 31 deletions(-) (limited to 'powerlevel9k.zsh-theme') diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 27f5dc4e..6fef6a26 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -111,45 +111,54 @@ CURRENT_BG='NONE' set_default last_left_element_index 1 set_default POWERLEVEL9K_WHITESPACE_BETWEEN_LEFT_SEGMENTS " " left_prompt_segment() { + local segment_name="${1}" local current_index=$2 # Check if the segment should be joined with the previous one local joined segmentShouldBeJoined $current_index $last_left_element_index "$POWERLEVEL9K_LEFT_PROMPT_ELEMENTS" && joined=true || joined=false + # Colors + local backgroundColor="${3}" + local foregroundColor="${4}" + # Overwrite given background-color by user defined variable for this segment. - local BACKGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)1#prompt_}_BACKGROUND + local BACKGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)${segment_name}#prompt_}_BACKGROUND local BG_COLOR_MODIFIER=${(P)BACKGROUND_USER_VARIABLE} - [[ -n $BG_COLOR_MODIFIER ]] && 3="$BG_COLOR_MODIFIER" + [[ -n $BG_COLOR_MODIFIER ]] && backgroundColor="$BG_COLOR_MODIFIER" # Overwrite given foreground-color by user defined variable for this segment. - local FOREGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)1#prompt_}_FOREGROUND + local FOREGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)${segment_name}#prompt_}_FOREGROUND local FG_COLOR_MODIFIER=${(P)FOREGROUND_USER_VARIABLE} - [[ -n $FG_COLOR_MODIFIER ]] && 4="$FG_COLOR_MODIFIER" + [[ -n $FG_COLOR_MODIFIER ]] && foregroundColor="$FG_COLOR_MODIFIER" + + # Get color codes here to save some calls later on + backgroundColor="$(getColorCode ${backgroundColor})" + foregroundColor="$(getColorCode ${foregroundColor})" - local bg fg - [[ -n "$3" ]] && bg="$(backgroundColor $3)" || bg="%k" - [[ -n "$4" ]] && fg="$(foregroundColor $4)" || fg="%f" + local background foreground + [[ -n "${backgroundColor}" ]] && background="$(backgroundColor ${backgroundColor})" || background="%k" + [[ -n "${foregroundColor}" ]] && foreground="$(foregroundColor ${foregroundColor})" || foreground="%f" - if [[ $CURRENT_BG != 'NONE' ]] && ! isSameColor "$3" "$CURRENT_BG"; then - echo -n "$bg%F{$CURRENT_BG}" + if [[ $CURRENT_BG != 'NONE' ]] && ! isSameColor "${backgroundColor}" "$CURRENT_BG"; then + echo -n "${background}%F{$CURRENT_BG}" if [[ $joined == false ]]; then # Middle segment echo -n "$(print_icon 'LEFT_SEGMENT_SEPARATOR')$POWERLEVEL9K_WHITESPACE_BETWEEN_LEFT_SEGMENTS" fi - elif isSameColor "$CURRENT_BG" "$3"; then + elif isSameColor "$CURRENT_BG" "${backgroundColor}"; then # Middle segment with same color as previous segment # We take the current foreground color as color for our # subsegment (or the default color). This should have # enough contrast. local complement - [[ -n "$4" ]] && complement="$fg" || complement="$(foregroundColor $DEFAULT_COLOR)" - echo -n "${bg}${complement}" + [[ -n "${foregroundColor}" ]] && complement="${foreground}" || complement="$(foregroundColor $DEFAULT_COLOR)" + echo -n "${background}${complement}" if [[ $joined == false ]]; then echo -n "$(print_icon 'LEFT_SUBSEGMENT_SEPARATOR')$POWERLEVEL9K_WHITESPACE_BETWEEN_LEFT_SEGMENTS" fi else # First segment - echo -n "${bg}$POWERLEVEL9K_WHITESPACE_BETWEEN_LEFT_SEGMENTS" + echo -n "${background}$POWERLEVEL9K_WHITESPACE_BETWEEN_LEFT_SEGMENTS" fi local visual_identifier @@ -161,8 +170,8 @@ left_prompt_segment() { # we need to color both the visual identifier and the whitespace. [[ -n "$5" ]] && visual_identifier="$visual_identifier " # Allow users to overwrite the color for the visual identifier only. - local visual_identifier_color_variable=POWERLEVEL9K_${(U)1#prompt_}_VISUAL_IDENTIFIER_COLOR - set_default $visual_identifier_color_variable $4 + local visual_identifier_color_variable=POWERLEVEL9K_${(U)${segment_name}#prompt_}_VISUAL_IDENTIFIER_COLOR + set_default $visual_identifier_color_variable "${foregroundColor}" visual_identifier="%F{${(P)visual_identifier_color_variable}%}$visual_identifier%f" fi fi @@ -170,10 +179,10 @@ left_prompt_segment() { # Print the visual identifier echo -n "${visual_identifier}" # Print the content of the segment, if there is any - [[ -n "$5" ]] && echo -n "${fg}${5}" + [[ -n "$5" ]] && echo -n "${foreground}${5}" echo -n "${POWERLEVEL9K_WHITESPACE_BETWEEN_LEFT_SEGMENTS}" - CURRENT_BG="$(getColorCode ${3})" + CURRENT_BG="${backgroundColor}" last_left_element_index=$current_index } @@ -203,25 +212,34 @@ CURRENT_RIGHT_BG='NONE' set_default last_right_element_index 1 set_default POWERLEVEL9K_WHITESPACE_BETWEEN_RIGHT_SEGMENTS " " right_prompt_segment() { + local segment_name="${1}" local current_index=$2 # Check if the segment should be joined with the previous one local joined segmentShouldBeJoined $current_index $last_right_element_index "$POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS" && joined=true || joined=false + # Colors + local backgroundColor="${3}" + local foregroundColor="${4}" + # Overwrite given background-color by user defined variable for this segment. - local BACKGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)1#prompt_}_BACKGROUND + local BACKGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)${segment_name}#prompt_}_BACKGROUND local BG_COLOR_MODIFIER=${(P)BACKGROUND_USER_VARIABLE} - [[ -n $BG_COLOR_MODIFIER ]] && 3="$BG_COLOR_MODIFIER" + [[ -n $BG_COLOR_MODIFIER ]] && backgroundColor="$BG_COLOR_MODIFIER" # Overwrite given foreground-color by user defined variable for this segment. - local FOREGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)1#prompt_}_FOREGROUND + local FOREGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)${segment_name}#prompt_}_FOREGROUND local FG_COLOR_MODIFIER=${(P)FOREGROUND_USER_VARIABLE} [[ -n $FG_COLOR_MODIFIER ]] && 4="$FG_COLOR_MODIFIER" - local bg fg - [[ -n "$3" ]] && bg="$(backgroundColor $3)" || bg="%k" - [[ -n "$4" ]] && fg="$(foregroundColor $4)" || fg="%f" + # Get color codes here to save some calls later on + backgroundColor="$(getColorCode ${backgroundColor})" + foregroundColor="$(getColorCode ${foregroundColor})" + + local background foreground + [[ -n "${backgroundColor}" ]] && background="$(backgroundColor ${backgroundColor})" || background="%k" + [[ -n "${foregroundColor}" ]] && foreground="$(foregroundColor ${foregroundColor})" || foreground="%f" # If CURRENT_RIGHT_BG is "NONE", we are the first right segment. @@ -231,17 +249,17 @@ right_prompt_segment() { fi if [[ $joined == false ]] || [[ "$CURRENT_RIGHT_BG" == "NONE" ]]; then - if isSameColor "$CURRENT_RIGHT_BG" "$3"; then + if isSameColor "$CURRENT_RIGHT_BG" "${backgroundColor}"; then # Middle segment with same color as previous segment # We take the current foreground color as color for our # subsegment (or the default color). This should have # enough contrast. local complement - [[ -n "$4" ]] && complement="$fg" || complement="$(foregroundColor $DEFAULT_COLOR)" + [[ -n "${foregroundColor}" ]] && complement="${foreground}" || complement="$(foregroundColor $DEFAULT_COLOR)" echo -n "$complement$(print_icon 'RIGHT_SUBSEGMENT_SEPARATOR')%f" else - # Use the new BG color for the foreground with separator - echo -n "$(foregroundColor $3)$(print_icon 'RIGHT_SEGMENT_SEPARATOR')%f" + # Use the new Background Color as the foreground of the segment separator + echo -n "$(foregroundColor ${backgroundColor})$(print_icon 'RIGHT_SEGMENT_SEPARATOR')%f" fi fi @@ -254,13 +272,13 @@ right_prompt_segment() { # we need to color both the visual identifier and the whitespace. [[ -n "$5" ]] && visual_identifier=" $visual_identifier" # Allow users to overwrite the color for the visual identifier only. - local visual_identifier_color_variable=POWERLEVEL9K_${(U)1#prompt_}_VISUAL_IDENTIFIER_COLOR - set_default $visual_identifier_color_variable $4 + local visual_identifier_color_variable=POWERLEVEL9K_${(U)${segment_name}#prompt_}_VISUAL_IDENTIFIER_COLOR + set_default $visual_identifier_color_variable "${foregroundColor}" visual_identifier="%F{${(P)visual_identifier_color_variable}%}$visual_identifier%f" fi fi - echo -n "${bg}${fg}" + echo -n "${background}${foreground}" # Print whitespace only if segment is not joined or first right segment [[ $joined == false ]] || [[ "$CURRENT_RIGHT_BG" == "NONE" ]] && echo -n "${POWERLEVEL9K_WHITESPACE_BETWEEN_RIGHT_SEGMENTS}" @@ -270,7 +288,7 @@ right_prompt_segment() { # Print the visual identifier echo -n "${visual_identifier}" - CURRENT_RIGHT_BG=$3 + CURRENT_RIGHT_BG="${backgroundColor}" last_right_element_index=$current_index } -- cgit v1.2.3 From 6f5827009fa3a39cc04ab205da2da44965d9a00c Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Wed, 8 Aug 2018 23:18:36 +0200 Subject: Fix colors for visual identifiers Make the visual identifier color use numerical color codes as well. This way colors like "purple3" work as visual identifier color. --- powerlevel9k.zsh-theme | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'powerlevel9k.zsh-theme') diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 6fef6a26..a9b2d1ff 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -172,7 +172,7 @@ left_prompt_segment() { # Allow users to overwrite the color for the visual identifier only. local visual_identifier_color_variable=POWERLEVEL9K_${(U)${segment_name}#prompt_}_VISUAL_IDENTIFIER_COLOR set_default $visual_identifier_color_variable "${foregroundColor}" - visual_identifier="%F{${(P)visual_identifier_color_variable}%}$visual_identifier%f" + visual_identifier="$(foregroundColor ${(P)visual_identifier_color_variable})${visual_identifier}%f" fi fi @@ -274,7 +274,7 @@ right_prompt_segment() { # Allow users to overwrite the color for the visual identifier only. local visual_identifier_color_variable=POWERLEVEL9K_${(U)${segment_name}#prompt_}_VISUAL_IDENTIFIER_COLOR set_default $visual_identifier_color_variable "${foregroundColor}" - visual_identifier="%F{${(P)visual_identifier_color_variable}%}$visual_identifier%f" + visual_identifier="$(foregroundColor ${(P)visual_identifier_color_variable})${visual_identifier}%f" fi fi -- cgit v1.2.3 From 27fe2c65712a092c8e652fe2c58ac310f69a8e36 Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Wed, 8 Aug 2018 23:36:40 +0200 Subject: Make use of helper function in left_end_segment --- powerlevel9k.zsh-theme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'powerlevel9k.zsh-theme') diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index a9b2d1ff..781813e7 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -189,7 +189,7 @@ left_prompt_segment() { # End the left prompt, closes the final segment. left_prompt_end() { if [[ -n $CURRENT_BG ]]; then - echo -n "%k%F{$CURRENT_BG}$(print_icon 'LEFT_SEGMENT_SEPARATOR')" + echo -n "%k$(foregroundColor ${CURRENT_BG})$(print_icon 'LEFT_SEGMENT_SEPARATOR')" else echo -n "%k" fi -- cgit v1.2.3 From 52ce9930bbb2971c7d3a20330928d3206f03c5ae Mon Sep 17 00:00:00 2001 From: Dominik Ritter Date: Thu, 9 Aug 2018 23:20:48 +0200 Subject: Fix foreground colors in right prompt segments --- powerlevel9k.zsh-theme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'powerlevel9k.zsh-theme') diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 781813e7..74caeb2d 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -231,7 +231,7 @@ right_prompt_segment() { # Overwrite given foreground-color by user defined variable for this segment. local FOREGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)${segment_name}#prompt_}_FOREGROUND local FG_COLOR_MODIFIER=${(P)FOREGROUND_USER_VARIABLE} - [[ -n $FG_COLOR_MODIFIER ]] && 4="$FG_COLOR_MODIFIER" + [[ -n $FG_COLOR_MODIFIER ]] && foregroundColor="$FG_COLOR_MODIFIER" # Get color codes here to save some calls later on backgroundColor="$(getColorCode ${backgroundColor})" -- cgit v1.2.3 From 3fb0383956d78d898520d58b99e1814a6670f140 Mon Sep 17 00:00:00 2001 From: Christian Höltje Date: Tue, 31 Jul 2018 16:22:26 -0400 Subject: Use SUDO_COMMAND to check for sudo `sudo -n true` only checks that we _could_ use `sudo`, not if we are in a sudo session. closes #852 --- powerlevel9k.zsh-theme | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'powerlevel9k.zsh-theme') diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 0b2287ef..1cd49db0 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -623,12 +623,12 @@ prompt_context() { if [[ $(print -P "%#") == '#' ]]; then current_state="ROOT" elif [[ -n "$SSH_CLIENT" || -n "$SSH_TTY" ]]; then - if sudo -n true 2>/dev/null; then + if [[ -n "$SUDO_COMMAND" ]]; then current_state="REMOTE_SUDO" else current_state="REMOTE" fi - elif sudo -n true 2>/dev/null; then + elif [[ -n "$SUDO_COMMAND" ]]; then current_state="SUDO" fi @@ -651,7 +651,7 @@ prompt_user() { "FOREGROUND_COLOR" "yellow" "VISUAL_IDENTIFIER" "ROOT_ICON" ) - elif sudo -n true 2>/dev/null; then + elif [[ -n "$SUDO_COMMAND" ]]; then user_state=( "STATE" "SUDO" "CONTENT" "${POWERLEVEL9K_USER_TEMPLATE}" -- cgit v1.2.3 From 572b7a1299331fa3e191f11e527e8da0c7711567 Mon Sep 17 00:00:00 2001 From: Ben Hilburn Date: Thu, 6 Sep 2018 09:38:34 -0400 Subject: Removing `rbenv` from default LPROMPT list. --- CHANGELOG.md | 1 + README.md | 2 +- powerlevel9k.zsh-theme | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) (limited to 'powerlevel9k.zsh-theme') diff --git a/CHANGELOG.md b/CHANGELOG.md index 4902d1ef..b40ce50b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## v0.6.6 +- The `rbenv` segment is no longer a default segment in the LPROMPT. - PR #959 - Fixing issue in v0.6.5 where we changed some color codes. - PR #934 - Add Tests - PR #884 - test-in-docker: fix with newer ZSH versions diff --git a/README.md b/README.md index 756b9794..5b228857 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ variables to your `~/.zshrc`. | Variable | Default Value | Description | |----------|---------------|-------------| -|`POWERLEVEL9K_LEFT_PROMPT_ELEMENTS`|`(context dir rbenv vcs)`|Segment list for left prompt| +|`POWERLEVEL9K_LEFT_PROMPT_ELEMENTS`|`(context dir vcs)`|Segment list for left prompt| |`POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS`|`(status root_indicator background_jobs history time)`|Segment list for right prompt| diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index a7a3de35..3c3303fa 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -1911,7 +1911,7 @@ prompt_powerlevel9k_setup() { fi fi - defined POWERLEVEL9K_LEFT_PROMPT_ELEMENTS || POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir rbenv vcs) + defined POWERLEVEL9K_LEFT_PROMPT_ELEMENTS || POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir vcs) defined POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS || POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status root_indicator background_jobs history time) # Display a warning if deprecated segments are in use. -- cgit v1.2.3