KDE specific themeing because fun

This commit is contained in:
DashieTM 2024-09-21 14:11:35 +02:00
parent f2055e0d10
commit 531e37fbe3
6 changed files with 347 additions and 0 deletions

View file

@ -1,6 +1,7 @@
{
imports = [
./qt.nix
./kdeglobals.nix
./oxiced.nix
];
}

259
home/themes/kdeglobals.nix Normal file
View file

@ -0,0 +1,259 @@
# 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}
'';
};
}

View file

@ -27,6 +27,31 @@ let
border: none;
}
'';
## test
#cfg = config.stylix.targets.qt;
kvconfig = config.lib.stylix.colors {
template = ./kvconfig.mustache;
extension = ".kvconfig";
};
svg = config.lib.stylix.colors {
template = ./kvantum-svg.mustache;
extension = "svg";
};
kvantumPackage = pkgs.runCommandLocal "base16-kvantum" { } ''
directory="$out/share/Kvantum/Base16Kvantum"
mkdir --parents "$directory"
cat ${kvconfig} >>"$directory/Base16Kvantum.kvconfig"
cat ${svg} >>"$directory/Base16Kvantum.svg"
'';
xdg.configFile."Kvantum/kvantum.kvconfig".source =
(pkgs.formats.ini { }).generate "kvantum.kvconfig"
{
General.theme = "Base16Kvantum";
};
xdg.configFile."Kvantum/Base16Kvantum".source = "${kvantumPackage}/share/Kvantum/Base16Kvantum";
in
{
xdg.configFile."qt5ct/colors/tokyonight.conf" = {
@ -38,6 +63,32 @@ in
xdg.configFile."qt5ct/qss/tab.qss" = {
text = "${qss}";
};
qt = {
enable = true;
style.package = pkgs.libsForQt5.breeze-qt5;
style.name = "breeze-dark";
};
# ## test
# xdg.configFile."Kvantum/kvantum.kvconfig".source = (pkgs.formats.ini {}).generate "kvantum.kvconfig" {
# General.theme = "Base16Kvantum";
# };
# xdg.configFile."Kvantum/Base16Kvantum".source = "${kvantumPackage}/share/Kvantum/Base16Kvantum";
# xdg.configFile."qt5ct/qt5ct.conf".text = ''
# [Appearance]
# style=kvantum
# '';
# #icon_theme=${cfg.iconThemeName}
# xdg.configFile."qt6ct/qt6ct.conf".text = ''
# [Appearance]
# style=kvantum
# '';
# #icon_theme=${cfg.iconThemeName}
xdg.configFile."qt5ct/qt5ct.conf" = {
text = ''
[Appearance]