You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
373 lines
7.3 KiB
373 lines
7.3 KiB
# vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8 |
|
################################################################ |
|
# Color functions |
|
# This file holds some color-functions for |
|
# the powerlevel9k-ZSH-theme |
|
# https://github.com/bhilburn/powerlevel9k |
|
# Modified my jh |
|
################################################################ |
|
|
|
typeset -gAh __JH_COLORS |
|
# https://jonasjacek.github.io/colors/ |
|
# use color names by default to allow dark/light themes to adjust colors based on names |
|
__JH_COLORS=( |
|
black 000 |
|
red 001 |
|
green 002 |
|
yellow 003 |
|
blue 004 |
|
magenta 005 |
|
cyan 006 |
|
white 007 |
|
grey 008 |
|
maroon 009 |
|
lime 010 |
|
olive 011 |
|
navy 012 |
|
fuchsia 013 |
|
purple 013 |
|
aqua 014 |
|
teal 014 |
|
silver 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 |
|
) |
|
|
|
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() { |
|
# If Color is not numerical, try to get the color code. |
|
if [[ "$1" != <-> ]]; then |
|
1=$(getColorCode $1) |
|
fi |
|
echo -n "$1" |
|
} |
|
|
|
# empty paramenter resets (stops) background color |
|
function backgroundColor() { |
|
echo -n "%K{$(getColor $1)}" |
|
} |
|
|
|
# empty paramenter resets (stops) foreground color |
|
function foregroundColor() { |
|
echo -n "%F{$(getColor $1)}" |
|
} |
|
HASFOCUS="true" |
|
function focusBackgroundColor() { |
|
if [ "$HASFOCUS" = "true" ]; then |
|
backgroundColor "$@" |
|
fi |
|
} |
|
function focusForegroundColor() { |
|
if [ "$HASFOCUS" = "true" ]; then |
|
foregroundColor "$@" |
|
fi |
|
} |
|
|
|
# Get numerical color codes. That way we translate ANSI codes |
|
# into ZSH-Style color codes. |
|
function getColorCode() { |
|
# Early exit: Check if given value is already numerical |
|
if [[ "$1" == <-> ]]; then |
|
# Pad color with zeroes |
|
echo -n "${(l:3::0:)1}" |
|
return |
|
fi |
|
|
|
local colorName="${1}" |
|
# Check if value is none with any case. |
|
if [[ "${(L)colorName}" == "none" ]]; then |
|
echo -n 'none' |
|
elif [[ "${colorName}" == "foreground" ]]; then |
|
# for testing purposes in terminal |
|
# call via `getColorCode foreground` |
|
for i in "${(k@)__JH_COLORS}"; do |
|
print -P "$(foregroundColor $i)$(getColor $i) - $i%f" |
|
done |
|
elif [[ "${colorName}" == "background" ]]; then |
|
# call via `getColorCode background` |
|
for i in "${(k@)__JH_COLORS}"; do |
|
print -P "$(backgroundColor $i)$(getColor $i) - $i%k" |
|
done |
|
else |
|
# Strip eventual "bg-" prefixes |
|
colorName=${colorName#bg-} |
|
# Strip eventual "fg-" prefixes |
|
colorName=${colorName#fg-} |
|
# Strip eventual "br" prefixes ("bright" colors) |
|
colorName=${colorName#br} |
|
echo -n $__JH_COLORS[$colorName] |
|
fi |
|
} |
|
|
|
# Check if two colors are equal, even if one is specified as ANSI code. |
|
function isSameColor() { |
|
if [[ "$1" == "NONE" || "$2" == "NONE" ]]; then |
|
return 1 |
|
fi |
|
|
|
local color1=$(getColorCode "$1") |
|
local color2=$(getColorCode "$2") |
|
|
|
return $(( color1 != color2 )) |
|
} |
|
|
|
function resetColor(){ |
|
backgroundColor none |
|
foregroundColor white |
|
echo -n "%{$reset_color%}" |
|
}
|
|
|