You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
306 lines
9.9 KiB
Bash
306 lines
9.9 KiB
Bash
# 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
|
|
################################################################
|
|
|
|
# Get numerical color codes. That way we translate ANSI codes
|
|
# into ZSH-Style color codes.
|
|
function getColorCode() {
|
|
# Check if given value is already numerical
|
|
if [[ "$1" = <-> ]]; then
|
|
# ANSI color codes distinguish between "foreground"
|
|
# 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))
|
|
else
|
|
echo "$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'
|
|
)
|
|
|
|
# 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]
|
|
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 ))
|
|
}
|