Files

90 lines
2.4 KiB
Nix

# Shared color palette for the "sci-fi dark glass + vivid neon" desktop.
# Single source of truth: every consumer (QuickShell QML theme, kitty,
# wvkbd, wofi, hyprlock, Hyprland borders/shadows, matugen fallback) reads
# its colors from here instead of hardcoding hex literals.
#
# Colors are stored as raw hex WITHOUT the leading '#'. Use the helpers below
# to format for each consumer:
# palette.hash "#rrggbb" (QML, kitty, wofi borders)
# palette.cssRgba "rgba(r, g, b, a)" (wofi)
# palette.lockRgba "rgba(r, g, b, a)" (hyprlock)
# palette.hyprRgba "rgba(rrggbbaa)" (Hyprland, compact hex+alpha)
# palette.rgb [ r g b ] decimals
rec {
# ---- Surfaces (translucent over the Hyprland layer blur) ----
# glass/glassPanel are 8-digit AARRGGBB for QML only.
glass = "8c0f111c";
glassPanel = "c2141627";
surface = "24283b";
panel = "141627"; # wofi / hyprlock solid panel
line = "394b70";
# ---- Text ----
text = "c0caf5";
muted = "a9b1d6";
ink = "0b0e14";
# ---- Neon accents ----
neon = "00e5ff";
magenta = "ff2e97";
violet = "7c4dff";
cyan = "7dcfff";
blue = "7aa2f7";
green = "9ece6a";
yellow = "e0af68";
purple = "bb9af7";
teal = "73daca"; # kitty url_color
danger = "f7768e";
# ---- kitty extras (Tokyo Night inspired) ----
bgDark = "1a1b26";
color0 = "15161e";
color8 = "414868";
selection = "33467c";
tabBg = "292e42";
tabFg = "545c7e";
tabFgBright = "16161e";
# ---- wvkbd ----
wvkbdBg = "1b1e2d";
wvkbdFgSp = "1f2740";
# ---- helpers ----
hexToInt =
h:
let
m = {
"0" = 0;
"1" = 1;
"2" = 2;
"3" = 3;
"4" = 4;
"5" = 5;
"6" = 6;
"7" = 7;
"8" = 8;
"9" = 9;
a = 10;
b = 11;
c = 12;
d = 13;
e = 14;
f = 15;
};
len = builtins.stringLength h;
chars = builtins.genList (i: builtins.substring i 1 h) len;
in
builtins.foldl' (acc: c: acc * 16 + m.${c}) 0 chars;
rgb = h: [
(hexToInt (builtins.substring 0 2 h))
(hexToInt (builtins.substring 2 2 h))
(hexToInt (builtins.substring 4 2 h))
];
hash = c: "#${c}";
cssRgba = c: a: "rgba(${builtins.concatStringsSep ", " (map toString (rgb c))}, ${a})";
lockRgba = c: a: "rgba(${builtins.concatStringsSep ", " (map toString (rgb c))}, ${a})";
hyprRgba = c: a: "rgba(${c}${a})";
}