@ -6,6 +6,46 @@
# https://github.com/bhilburn/powerlevel9k
# 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
# Get numerical color codes. That way we translate ANSI codes
# into ZSH-Style color codes.
# into ZSH-Style color codes.
function getColorCode( ) {
function getColorCode( ) {
@ -15,280 +55,292 @@ function getColorCode() {
# and "background" colors. We don't need to do that,
# and "background" colors. We don't need to do that,
# as ZSH uses a 256 color space anyway.
# as ZSH uses a 256 color space anyway.
if [ [ " $1 " = <8-15> ] ] ; then
if [ [ " $1 " = <8-15> ] ] ; then
echo $(( $1 - 8 ))
echo -n $(( $1 - 8 ))
else
else
echo " $1 "
echo -n " $1 "
fi
fi
else
else
typeset -A codes
typeset -A codes
codes = (
# https://jonasjacek.github.io/colors/
# https://jonasjacek.github.io/colors/
# use color names by default to allow dark/light themes to adjust colors based on names
# use color names by default to allow dark/light themes to adjust colors based on names
'black' '000'
codes[ black] = 000
'maroon' '001'
codes[ maroon] = 001
'green' '002'
codes[ green] = 002
'olive' '003'
codes[ olive] = 003
'navy' '004'
codes[ navy] = 004
'purple' '005'
codes[ purple] = 005
'teal' '006'
codes[ teal] = 006
'silver' '007'
codes[ silver] = 007
'grey' '008'
codes[ grey] = 008
'red' '009'
codes[ red] = 009
'lime' '010'
codes[ lime] = 010
'yellow' '011'
codes[ yellow] = 011
'blue' '012'
codes[ blue] = 012
'fuchsia' '013'
codes[ fuchsia] = 013
'aqua' '014'
codes[ aqua] = 014
'white' '015'
codes[ white] = 015
'grey0' '016'
codes[ grey0] = 016
'navyblue' '017'
codes[ navyblue] = 017
'darkblue' '018'
codes[ darkblue] = 018
'blue3' '019'
codes[ blue3] = 019
'blue3' '020'
codes[ blue3] = 020
'blue1' '021'
codes[ blue1] = 021
'darkgreen' '022'
codes[ darkgreen] = 022
'deepskyblue4' '023'
codes[ deepskyblue4] = 023
'deepskyblue4' '024'
codes[ deepskyblue4] = 024
'deepskyblue4' '025'
codes[ deepskyblue4] = 025
'dodgerblue3' '026'
codes[ dodgerblue3] = 026
'dodgerblue2' '027'
codes[ dodgerblue2] = 027
'green4' '028'
codes[ green4] = 028
'springgreen4' '029'
codes[ springgreen4] = 029
'turquoise4' '030'
codes[ turquoise4] = 030
'deepskyblue3' '031'
codes[ deepskyblue3] = 031
'deepskyblue3' '032'
codes[ deepskyblue3] = 032
'dodgerblue1' '033'
codes[ dodgerblue1] = 033
'green3' '034'
codes[ green3] = 034
'springgreen3' '035'
codes[ springgreen3] = 035
'darkcyan' '036'
codes[ darkcyan] = 036
'lightseagreen' '037'
codes[ lightseagreen] = 037
'deepskyblue2' '038'
codes[ deepskyblue2] = 038
'deepskyblue1' '039'
codes[ deepskyblue1] = 039
'green3' '040'
codes[ green3] = 040
'springgreen3' '041'
codes[ springgreen3] = 041
'springgreen2' '042'
codes[ springgreen2] = 042
'cyan3' '043'
codes[ cyan3] = 043
'darkturquoise' '044'
codes[ darkturquoise] = 044
'turquoise2' '045'
codes[ turquoise2] = 045
'green1' '046'
codes[ green1] = 046
'springgreen2' '047'
codes[ springgreen2] = 047
'springgreen1' '048'
codes[ springgreen1] = 048
'mediumspringgreen' '049'
codes[ mediumspringgreen] = 049
'cyan2' '050'
codes[ cyan2] = 050
'cyan1' '051'
codes[ cyan1] = 051
'darkred' '052'
codes[ darkred] = 052
'deeppink4' '053'
codes[ deeppink4] = 053
'purple4' '054'
codes[ purple4] = 054
'purple4' '055'
codes[ purple4] = 055
'purple3' '056'
codes[ purple3] = 056
'blueviolet' '057'
codes[ blueviolet] = 057
'orange4' '058'
codes[ orange4] = 058
'grey37' '059'
codes[ grey37] = 059
'mediumpurple4' '060'
codes[ mediumpurple4] = 060
'slateblue3' '061'
codes[ slateblue3] = 061
'slateblue3' '062'
codes[ slateblue3] = 062
'royalblue1' '063'
codes[ royalblue1] = 063
'chartreuse4' '064'
codes[ chartreuse4] = 064
'darkseagreen4' '065'
codes[ darkseagreen4] = 065
'paleturquoise4' '066'
codes[ paleturquoise4] = 066
'steelblue' '067'
codes[ steelblue] = 067
'steelblue3' '068'
codes[ steelblue3] = 068
'cornflowerblue' '069'
codes[ cornflowerblue] = 069
'chartreuse3' '070'
codes[ chartreuse3] = 070
'darkseagreen4' '071'
codes[ darkseagreen4] = 071
'cadetblue' '072'
codes[ cadetblue] = 072
'cadetblue' '073'
codes[ cadetblue] = 073
'skyblue3' '074'
codes[ skyblue3] = 074
'steelblue1' '075'
codes[ steelblue1] = 075
'chartreuse3' '076'
codes[ chartreuse3] = 076
'palegreen3' '077'
codes[ palegreen3] = 077
'seagreen3' '078'
codes[ seagreen3] = 078
'aquamarine3' '079'
codes[ aquamarine3] = 079
'mediumturquoise' '080'
codes[ mediumturquoise] = 080
'steelblue1' '081'
codes[ steelblue1] = 081
'chartreuse2' '082'
codes[ chartreuse2] = 082
'seagreen2' '083'
codes[ seagreen2] = 083
'seagreen1' '084'
codes[ seagreen1] = 084
'seagreen1' '085'
codes[ seagreen1] = 085
'aquamarine1' '086'
codes[ aquamarine1] = 086
'darkslategray2' '087'
codes[ darkslategray2] = 087
'darkred' '088'
codes[ darkred] = 088
'deeppink4' '089'
codes[ deeppink4] = 089
'darkmagenta' '090'
codes[ darkmagenta] = 090
'darkmagenta' '091'
codes[ darkmagenta] = 091
'darkviolet' '092'
codes[ darkviolet] = 092
'purple' '093'
codes[ purple] = 093
'orange4' '094'
codes[ orange4] = 094
'lightpink4' '095'
codes[ lightpink4] = 095
'plum4' '096'
codes[ plum4] = 096
'mediumpurple3' '097'
codes[ mediumpurple3] = 097
'mediumpurple3' '098'
codes[ mediumpurple3] = 098
'slateblue1' '099'
codes[ slateblue1] = 099
'yellow4' '100'
codes[ yellow4] = 100
'wheat4' '101'
codes[ wheat4] = 101
'grey53' '102'
codes[ grey53] = 102
'lightslategrey' '103'
codes[ lightslategrey] = 103
'mediumpurple' '104'
codes[ mediumpurple] = 104
'lightslateblue' '105'
codes[ lightslateblue] = 105
'yellow4' '106'
codes[ yellow4] = 106
'darkolivegreen3' '107'
codes[ darkolivegreen3] = 107
'darkseagreen' '108'
codes[ darkseagreen] = 108
'lightskyblue3' '109'
codes[ lightskyblue3] = 109
'lightskyblue3' '110'
codes[ lightskyblue3] = 110
'skyblue2' '111'
codes[ skyblue2] = 111
'chartreuse2' '112'
codes[ chartreuse2] = 112
'darkolivegreen3' '113'
codes[ darkolivegreen3] = 113
'palegreen3' '114'
codes[ palegreen3] = 114
'darkseagreen3' '115'
codes[ darkseagreen3] = 115
'darkslategray3' '116'
codes[ darkslategray3] = 116
'skyblue1' '117'
codes[ skyblue1] = 117
'chartreuse1' '118'
codes[ chartreuse1] = 118
'lightgreen' '119'
codes[ lightgreen] = 119
'lightgreen' '120'
codes[ lightgreen] = 120
'palegreen1' '121'
codes[ palegreen1] = 121
'aquamarine1' '122'
codes[ aquamarine1] = 122
'darkslategray1' '123'
codes[ darkslategray1] = 123
'red3' '124'
codes[ red3] = 124
'deeppink4' '125'
codes[ deeppink4] = 125
'mediumvioletred' '126'
codes[ mediumvioletred] = 126
'magenta3' '127'
codes[ magenta3] = 127
'darkviolet' '128'
codes[ darkviolet] = 128
'purple' '129'
codes[ purple] = 129
'darkorange3' '130'
codes[ darkorange3] = 130
'indianred' '131'
codes[ indianred] = 131
'hotpink3' '132'
codes[ hotpink3] = 132
'mediumorchid3' '133'
codes[ mediumorchid3] = 133
'mediumorchid' '134'
codes[ mediumorchid] = 134
'mediumpurple2' '135'
codes[ mediumpurple2] = 135
'darkgoldenrod' '136'
codes[ darkgoldenrod] = 136
'lightsalmon3' '137'
codes[ lightsalmon3] = 137
'rosybrown' '138'
codes[ rosybrown] = 138
'grey63' '139'
codes[ grey63] = 139
'mediumpurple2' '140'
codes[ mediumpurple2] = 140
'mediumpurple1' '141'
codes[ mediumpurple1] = 141
'gold3' '142'
codes[ gold3] = 142
'darkkhaki' '143'
codes[ darkkhaki] = 143
'navajowhite3' '144'
codes[ navajowhite3] = 144
'grey69' '145'
codes[ grey69] = 145
'lightsteelblue3' '146'
codes[ lightsteelblue3] = 146
'lightsteelblue' '147'
codes[ lightsteelblue] = 147
'yellow3' '148'
codes[ yellow3] = 148
'darkolivegreen3' '149'
codes[ darkolivegreen3] = 149
'darkseagreen3' '150'
codes[ darkseagreen3] = 150
'darkseagreen2' '151'
codes[ darkseagreen2] = 151
'lightcyan3' '152'
codes[ lightcyan3] = 152
'lightskyblue1' '153'
codes[ lightskyblue1] = 153
'greenyellow' '154'
codes[ greenyellow] = 154
'darkolivegreen2' '155'
codes[ darkolivegreen2] = 155
'palegreen1' '156'
codes[ palegreen1] = 156
'darkseagreen2' '157'
codes[ darkseagreen2] = 157
'darkseagreen1' '158'
codes[ darkseagreen1] = 158
'paleturquoise1' '159'
codes[ paleturquoise1] = 159
'red3' '160'
codes[ red3] = 160
'deeppink3' '161'
codes[ deeppink3] = 161
'deeppink3' '162'
codes[ deeppink3] = 162
'magenta3' '163'
codes[ magenta3] = 163
'magenta3' '164'
codes[ magenta3] = 164
'magenta2' '165'
codes[ magenta2] = 165
'darkorange3' '166'
codes[ darkorange3] = 166
'indianred' '167'
codes[ indianred] = 167
'hotpink3' '168'
codes[ hotpink3] = 168
'hotpink2' '169'
codes[ hotpink2] = 169
'orchid' '170'
codes[ orchid] = 170
'mediumorchid1' '171'
codes[ mediumorchid1] = 171
'orange3' '172'
codes[ orange3] = 172
'lightsalmon3' '173'
codes[ lightsalmon3] = 173
'lightpink3' '174'
codes[ lightpink3] = 174
'pink3' '175'
codes[ pink3] = 175
'plum3' '176'
codes[ plum3] = 176
'violet' '177'
codes[ violet] = 177
'gold3' '178'
codes[ gold3] = 178
'lightgoldenrod3' '179'
codes[ lightgoldenrod3] = 179
'tan' '180'
codes[ tan] = 180
'mistyrose3' '181'
codes[ mistyrose3] = 181
'thistle3' '182'
codes[ thistle3] = 182
'plum2' '183'
codes[ plum2] = 183
'yellow3' '184'
codes[ yellow3] = 184
'khaki3' '185'
codes[ khaki3] = 185
'lightgoldenrod2' '186'
codes[ lightgoldenrod2] = 186
'lightyellow3' '187'
codes[ lightyellow3] = 187
'grey84' '188'
codes[ grey84] = 188
'lightsteelblue1' '189'
codes[ lightsteelblue1] = 189
'yellow2' '190'
codes[ yellow2] = 190
'darkolivegreen1' '191'
codes[ darkolivegreen1] = 191
'darkolivegreen1' '192'
codes[ darkolivegreen1] = 192
'darkseagreen1' '193'
codes[ darkseagreen1] = 193
'honeydew2' '194'
codes[ honeydew2] = 194
'lightcyan1' '195'
codes[ lightcyan1] = 195
'red1' '196'
codes[ red1] = 196
'deeppink2' '197'
codes[ deeppink2] = 197
'deeppink1' '198'
codes[ deeppink1] = 198
'deeppink1' '199'
codes[ deeppink1] = 199
'magenta2' '200'
codes[ magenta2] = 200
'magenta1' '201'
codes[ magenta1] = 201
'orangered1' '202'
codes[ orangered1] = 202
'indianred1' '203'
codes[ indianred1] = 203
'indianred1' '204'
codes[ indianred1] = 204
'hotpink' '205'
codes[ hotpink] = 205
'hotpink' '206'
codes[ hotpink] = 206
'mediumorchid1' '207'
codes[ mediumorchid1] = 207
'darkorange' '208'
codes[ darkorange] = 208
'salmon1' '209'
codes[ salmon1] = 209
'lightcoral' '210'
codes[ lightcoral] = 210
'palevioletred1' '211'
codes[ palevioletred1] = 211
'orchid2' '212'
codes[ orchid2] = 212
'orchid1' '213'
codes[ orchid1] = 213
'orange1' '214'
codes[ orange1] = 214
'sandybrown' '215'
codes[ sandybrown] = 215
'lightsalmon1' '216'
codes[ lightsalmon1] = 216
'lightpink1' '217'
codes[ lightpink1] = 217
'pink1' '218'
codes[ pink1] = 218
'plum1' '219'
codes[ plum1] = 219
'gold1' '220'
codes[ gold1] = 220
'lightgoldenrod2' '221'
codes[ lightgoldenrod2] = 221
'lightgoldenrod2' '222'
codes[ lightgoldenrod2] = 222
'navajowhite1' '223'
codes[ navajowhite1] = 223
'mistyrose1' '224'
codes[ mistyrose1] = 224
'thistle1' '225'
codes[ thistle1] = 225
'yellow1' '226'
codes[ yellow1] = 226
'lightgoldenrod1' '227'
codes[ lightgoldenrod1] = 227
'khaki1' '228'
codes[ khaki1] = 228
'wheat1' '229'
codes[ wheat1] = 229
'cornsilk1' '230'
codes[ cornsilk1] = 230
'grey100' '231'
codes[ grey100] = 231
'grey3' '232'
codes[ grey3] = 232
'grey7' '233'
codes[ grey7] = 233
'grey11' '234'
codes[ grey11] = 234
'grey15' '235'
codes[ grey15] = 235
'grey19' '236'
codes[ grey19] = 236
'grey23' '237'
codes[ grey23] = 237
'grey27' '238'
codes[ grey27] = 238
'grey30' '239'
codes[ grey30] = 239
'grey35' '240'
codes[ grey35] = 240
'grey39' '241'
codes[ grey39] = 241
'grey42' '242'
codes[ grey42] = 242
'grey46' '243'
codes[ grey46] = 243
'grey50' '244'
codes[ grey50] = 244
'grey54' '245'
codes[ grey54] = 245
'grey58' '246'
codes[ grey58] = 246
'grey62' '247'
codes[ grey62] = 247
'grey66' '248'
codes[ grey66] = 248
'grey70' '249'
codes[ grey70] = 249
'grey74' '250'
codes[ grey74] = 250
'grey78' '251'
codes[ grey78] = 251
'grey82' '252'
codes[ grey82] = 252
'grey85' '253'
codes[ grey85] = 253
'grey89' '254'
codes[ grey89] = 254
'grey93' '255'
codes[ grey93] = 255
)
# 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
# Strip eventual "bg-" prefixes
1 = ${ 1 #bg- }
1 = ${ 1 #bg- }
# Strip eventual "fg-" prefixes
# Strip eventual "fg-" prefixes
1 = ${ 1 #fg- }
1 = ${ 1 #fg- }
# Strip eventual "br" prefixes ("bright" colors)
# Strip eventual "br" prefixes ("bright" colors)
1 = ${ 1 #br }
1 = ${ 1 #br }
echo $codes [ $1 ]
echo -n $codes [ $1 ]
fi
fi
fi
}
}