summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md4
-rw-r--r--functions/colors.zsh602
-rwxr-xr-xpowerlevel9k.zsh-theme39
-rwxr-xr-xtest/segments/rust_version.spec2
4 files changed, 360 insertions, 287 deletions
diff --git a/README.md b/README.md
index 019fa0d8..74edc446 100644
--- a/README.md
+++ b/README.md
@@ -95,7 +95,7 @@ The segments that are currently available are:
* `history` - The command number for the current line.
* [`host`](#host) - Your current host name
* [`ip`](#ip) - Shows the current IP address.
-* [`vpn`](#vpn) - Shows the current VPN IP address.
+* [`vpn_ip`](#vpn_ip) - Shows the current VPN IP address.
* [`public_ip`](#public_ip) - Shows your public IP address.
* [`load`](#load) - Your machine's load averages.
* `os_icon` - Display a nice little icon, depending on your operating system.
@@ -479,6 +479,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.
diff --git a/functions/colors.zsh b/functions/colors.zsh
index 8d75e670..7a748ab3 100644
--- a/functions/colors.zsh
+++ b/functions/colors.zsh
@@ -6,6 +6,62 @@
# 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
+ 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
+ fi
+ echo -n "$1"
+}
+
+# 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 +71,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 d38af031..3edc5cca 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}"
@@ -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
@@ -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
@@ -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
@@ -565,7 +566,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'
+ 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
}
@@ -1634,14 +1644,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
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