aboutsummaryrefslogtreecommitdiffstats
path: root/deckit
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-11-09 19:19:58 +0100
committerDanilo M. <danix@danix.xyz>2026-11-09 19:19:58 +0100
commit04bd03db72c7165debb79d1858f39121757ca358 (patch)
tree1cf8f6d7be63731cf5ddedcecfabdd29670c1d6e /deckit
parent67e64e964a85562300b463378f0e260d6978867f (diff)
downloaddeck-it-04bd03db72c7165debb79d1858f39121757ca358.tar.gz
deck-it-04bd03db72c7165debb79d1858f39121757ca358.zip
feat: animate the UDT border gradient on the cards
Diffstat (limited to 'deckit')
-rw-r--r--deckit/theme.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/deckit/theme.py b/deckit/theme.py
index 7aa347b..5603d5b 100644
--- a/deckit/theme.py
+++ b/deckit/theme.py
@@ -10,9 +10,11 @@ from pathlib import Path
PALETTE_LINE = re.compile(r"^\s*([a-z0-9]+)\s*:\s*(#[0-9a-fA-F]{6,8});", re.M)
ACCENT = re.compile(r"accent:\s*(#[0-9a-fA-F]{6,8})")
+BORDER = re.compile(r"rgb\(\s*([0-9a-fA-F]{6})\s*\)")
PALETTE_PATH = Path.home() / ".config" / "rofi" / "udt" / "palette.rasi"
ACCENT_PATH = Path.home() / ".cache" / "udt" / "udt-accent.rasi"
+BORDER_PATH = Path.home() / ".cache" / "udt" / "udt-border.lua"
# Catppuccin Macchiato, used before UDT has ever generated its files.
FALLBACK = {
@@ -35,10 +37,19 @@ def parse_accent(text: str) -> str | None:
return m[1] if m else None
-def css(colors: dict, accent: str | None) -> str:
+def parse_border(text: str) -> list[str]:
+ """The three hues Hyprland rotates in the window border, as hex."""
+ return ["#" + value.lower() for value in BORDER.findall(text)]
+
+
+def css(colors: dict, accent: str | None, border: list[str] | None = None) -> str:
lines = [":root {"]
lines += [f" --udt-{name}: {value};" for name, value in colors.items()]
lines.append(f" --udt-accent: {accent or FALLBACK['accent']};")
+ stops = border if border and len(border) >= 3 else [
+ FALLBACK["mauve"], FALLBACK["lavender"], FALLBACK["blue"]]
+ for index, value in enumerate(stops[:3], 1):
+ lines.append(f" --udt-border-{index}: {value};")
lines.append("}")
return "\n".join(lines) + "\n"
@@ -55,4 +66,8 @@ def load() -> str:
accent = parse_accent(ACCENT_PATH.read_text())
except OSError:
accent = None
- return css(colors, accent)
+ try:
+ border = parse_border(BORDER_PATH.read_text())
+ except OSError:
+ border = None
+ return css(colors, accent, border)