diff options
Diffstat (limited to 'lib/theme.nix')
-rw-r--r-- | lib/theme.nix | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/theme.nix b/lib/theme.nix new file mode 100644 index 0000000..72e43bc --- /dev/null +++ b/lib/theme.nix | |||
@@ -0,0 +1,35 @@ | |||
1 | { lib, ... }: | ||
2 | |||
3 | with lib; | ||
4 | let | ||
5 | # Convert 2 consecutive characters from a string from hexadecimal to decimal | ||
6 | hex2dec = str: start: | ||
7 | let | ||
8 | conversionTable = { | ||
9 | "0" = 0; "1" = 1; "2" = 2; "3" = 3; "4" = 4; | ||
10 | "5" = 5; "6" = 6; "7" = 7; "8" = 8; "9" = 9; | ||
11 | "a" = 10; "b" = 11; "c" = 12; | ||
12 | "d" = 13; "e" = 14; "f" = 15; | ||
13 | }; | ||
14 | firstHexDigit = toLower (elemAt (stringToCharacters str) start); | ||
15 | secondHexDigit = toLower (elemAt (stringToCharacters str) (start + 1)); | ||
16 | in conversionTable.${firstHexDigit} * 16 + conversionTable.${secondHexDigit}; | ||
17 | |||
18 | makeColorCode = color: | ||
19 | let genComponent = hex2dec color; | ||
20 | in "${toString (genComponent 1)};${toString (genComponent 3)};${toString (genComponent 5)}"; | ||
21 | |||
22 | hex2RGB = color: | ||
23 | let genComponent = hex2dec color; | ||
24 | in { | ||
25 | red = genComponent 1; | ||
26 | green = genComponent 3; | ||
27 | blue = genComponent 5; | ||
28 | }; | ||
29 | |||
30 | fgEscapeCode = hexCode: "[38;2;${makeColorCode hexCode}m"; | ||
31 | bgEscapeCode = hexCode: "[48;2;${makeColorCode hexCode}m"; | ||
32 | in | ||
33 | { | ||
34 | inherit fgEscapeCode bgEscapeCode hex2RGB; | ||
35 | } | ||