DashNix/home/themes/kdeglobals.nix

252 lines
8 KiB
Nix

# This is ABSOLUTE GARGABE, KDE srsly, remove this!
# props to catppuccin mocha for sparing me from doing this manually: https://github.com/catppuccin/kde/blob/main/Resources/Base.colors
{
pkgs,
config,
lib,
inputs,
...
}: let
base16 = pkgs.callPackage inputs.base16.lib {};
baseScheme = base16.mkSchemeAttrs config.stylix.base16Scheme;
power = number: powerIndex:
if powerIndex == 1
then number
else if powerIndex == 0
then 1
else number * power number (powerIndex - 1);
lookupTable = powerIndex: {
"0" = 0 * (power 16 powerIndex);
"1" = 1 * (power 16 powerIndex);
"2" = 2 * (power 16 powerIndex);
"3" = 3 * (power 16 powerIndex);
"4" = 4 * (power 16 powerIndex);
"5" = 5 * (power 16 powerIndex);
"6" = 6 * (power 16 powerIndex);
"7" = 7 * (power 16 powerIndex);
"8" = 8 * (power 16 powerIndex);
"9" = 9 * (power 16 powerIndex);
"a" = 10 * (power 16 powerIndex);
"b" = 11 * (power 16 powerIndex);
"c" = 12 * (power 16 powerIndex);
"d" = 13 * (power 16 powerIndex);
"e" = 14 * (power 16 powerIndex);
"f" = 15 * (power 16 powerIndex);
};
convertHex = hexChars:
recombineColors [
(convertColor (lib.lists.take 2 hexChars))
(convertColor (lib.lists.take 2 (lib.lists.drop 2 hexChars)))
(convertColor (lib.lists.take 2 (lib.lists.drop 4 hexChars)))
];
convertColor = color: (lookupTable 1).${(lib.lists.head color)} + (lookupTable 0).${(lib.lists.last color)};
recombineColors = colors: lib.lists.foldr (a: b: (toString a) + "," + (toString b)) "end" colors;
scheme = {
base00 = lib.strings.removeSuffix ",end" (
convertHex (lib.strings.stringToCharacters baseScheme.base00)
);
base01 = lib.strings.removeSuffix ",end" (
convertHex (lib.strings.stringToCharacters baseScheme.base01)
);
base02 = lib.strings.removeSuffix ",end" (
convertHex (lib.strings.stringToCharacters baseScheme.base02)
);
base03 = lib.strings.removeSuffix ",end" (
convertHex (lib.strings.stringToCharacters baseScheme.base03)
);
base04 = lib.strings.removeSuffix ",end" (
convertHex (lib.strings.stringToCharacters baseScheme.base04)
);
base05 = lib.strings.removeSuffix ",end" (
convertHex (lib.strings.stringToCharacters baseScheme.base05)
);
base06 = lib.strings.removeSuffix ",end" (
convertHex (lib.strings.stringToCharacters baseScheme.base06)
);
base07 = lib.strings.removeSuffix ",end" (
convertHex (lib.strings.stringToCharacters baseScheme.base07)
);
base08 = lib.strings.removeSuffix ",end" (
convertHex (lib.strings.stringToCharacters baseScheme.base08)
);
base09 = lib.strings.removeSuffix ",end" (
convertHex (lib.strings.stringToCharacters baseScheme.base09)
);
base0A = lib.strings.removeSuffix ",end" (
convertHex (lib.strings.stringToCharacters baseScheme.base0A)
);
base0B = lib.strings.removeSuffix ",end" (
convertHex (lib.strings.stringToCharacters baseScheme.base0B)
);
base0C = lib.strings.removeSuffix ",end" (
convertHex (lib.strings.stringToCharacters baseScheme.base0C)
);
base0D = lib.strings.removeSuffix ",end" (
convertHex (lib.strings.stringToCharacters baseScheme.base0D)
);
base0E = lib.strings.removeSuffix ",end" (
convertHex (lib.strings.stringToCharacters baseScheme.base0E)
);
base0F = lib.strings.removeSuffix ",end" (
convertHex (lib.strings.stringToCharacters baseScheme.base0F)
);
};
in {
# temp
# crust -> surface1
# subtext0 -> surface2
# accentColor -> lavender
xdg.configFile."kdeglobals" = {
text = ''
[ColorEffects:Disabled]
Color=${scheme.base01}
ColorAmount=0.30000000000000004
ColorEffect=2
ContrastAmount=0.1
ContrastEffect=0
IntensityAmount=-1
IntensityEffect=0
[ColorEffects:Inactive]
ChangeSelectionColor=true
Color=${scheme.base01}
ColorAmount=0.5
ColorEffect=3
ContrastAmount=0
ContrastEffect=0
Enable=true
IntensityAmount=0
IntensityEffect=0
[Colors:Button]
BackgroundAlternate=${scheme.base07}
BackgroundNormal=${scheme.base02}
DecorationFocus=${scheme.base07}
DecorationHover=${scheme.base02}
ForegroundActive=${scheme.base09}
ForegroundInactive=${scheme.base04}
ForegroundLink=${scheme.base07}
ForegroundNegative=${scheme.base08}
ForegroundNeutral=${scheme.base0A}
ForegroundNormal=${scheme.base05}
ForegroundPositive=${scheme.base0B}
ForegroundVisited=${scheme.base0E}
[Colors:Complementary]
BackgroundAlternate=${scheme.base03}
BackgroundNormal=${scheme.base00}
DecorationFocus=${scheme.base07}
DecorationHover=${scheme.base02}
ForegroundActive=${scheme.base09}
ForegroundInactive=${scheme.base04}
ForegroundLink=${scheme.base07}
ForegroundNegative=${scheme.base08}
ForegroundNeutral=${scheme.base0A}
ForegroundNormal=${scheme.base05}
ForegroundPositive=${scheme.base0B}
ForegroundVisited=${scheme.base0E}
[Colors:Header]
BackgroundAlternate=${scheme.base03}
BackgroundNormal=${scheme.base00}
DecorationFocus=${scheme.base07}
DecorationHover=${scheme.base02}
ForegroundActive=${scheme.base09}
ForegroundInactive=${scheme.base04}
ForegroundLink=${scheme.base07}
ForegroundNegative=${scheme.base08}
ForegroundNeutral=${scheme.base0A}
ForegroundNormal=${scheme.base05}
ForegroundPositive=${scheme.base0B}
ForegroundVisited=${scheme.base0E}
[Colors:Selection]
BackgroundAlternate=${scheme.base07}
BackgroundNormal=${scheme.base07}
DecorationFocus=${scheme.base07}
DecorationHover=${scheme.base02}
ForegroundLink=${scheme.base07}
ForegroundInactive=${scheme.base00}
ForegroundActive=${scheme.base09}
ForegroundLink=${scheme.base07}
ForegroundNegative=${scheme.base08}
ForegroundNeutral=${scheme.base0A}
ForegroundNormal=${scheme.base03}
ForegroundPositive=${scheme.base0B}
ForegroundVisited=${scheme.base0E}
[Colors:Tooltip]
BackgroundAlternate=27,25,35
BackgroundNormal=${scheme.base01}
DecorationFocus=${scheme.base07}
DecorationHover=${scheme.base02}
ForegroundActive=${scheme.base09}
ForegroundInactive=${scheme.base04}
ForegroundLink=${scheme.base07}
ForegroundNegative=${scheme.base08}
ForegroundNeutral=${scheme.base0A}
ForegroundNormal=${scheme.base05}
ForegroundPositive=${scheme.base0B}
ForegroundVisited=${scheme.base0E}
[Colors:View]
BackgroundAlternate=${scheme.base00}
BackgroundNormal=${scheme.base01}
DecorationFocus=${scheme.base07}
DecorationHover=${scheme.base02}
ForegroundActive=${scheme.base09}
ForegroundInactive=${scheme.base04}
ForegroundLink=${scheme.base07}
ForegroundNegative=${scheme.base08}
ForegroundNeutral=${scheme.base0A}
ForegroundNormal=${scheme.base05}
ForegroundPositive=${scheme.base0B}
ForegroundVisited=${scheme.base0E}
[Colors:Window]
BackgroundAlternate=${scheme.base03}
BackgroundNormal=${scheme.base00}
DecorationFocus=${scheme.base07}
DecorationHover=${scheme.base02}
ForegroundActive=${scheme.base09}
ForegroundInactive=${scheme.base04}
ForegroundLink=${scheme.base07}
ForegroundNegative=${scheme.base08}
ForegroundNeutral=${scheme.base0A}
ForegroundNormal=${scheme.base05}
ForegroundPositive=${scheme.base0B}
ForegroundVisited=${scheme.base0E}
[General]
ColorScheme=CustomBase16Nix
Name=CustomBase16Nix
accentActiveTitlebar=false
shadeSortColumn=true
[KDE]
contrast=4
[WM]
activeBackground=${scheme.base01}
activeBlend=${scheme.base05}
activeForeground=${scheme.base05}
inactiveBackground=${scheme.base03}
inactiveBlend=${scheme.base04}
inactiveForeground=${scheme.base04}
'';
};
}