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.
powerlevel10k/functions/colors.zsh

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 ))
}