feat: centralize theme palette + add waybar bluetooth module

Theme centralization:
- theme/colors.json is now the single source of truth for the palette.
- New theme/generate-theme.py renders, at install time, the three derived
  artifacts into ~/.config: colors.css (waybar/wofi @import), mako config,
  and hyprlock-colors.conf (hyprlang $tn_* variables).
- theme/colors.css removed from the repo (now generated); install.sh calls
  the generator instead of the old inline mako snippet.
- hyprlock.conf sources the generated color file and uses $tn_* variables
  instead of hardcoded rgba() values.
- Generator covered by theme/test_generate_theme.py.

Bluetooth:
- Added waybar built-in bluetooth module (config.jsonc + style.css), with
  bluez/bluez-utils in packages.txt.

Includes design spec and implementation plan under docs/superpowers/.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
funman300
2026-06-07 16:45:01 -07:00
parent 5305bb78c6
commit 1e3adbc842
11 changed files with 888 additions and 39 deletions
+9 -7
View File
@@ -1,3 +1,5 @@
source = ~/.config/theme/hyprlock-colors.conf
general {
grace = 0
hide_cursor = true
@@ -24,7 +26,7 @@ label {
text = cmd[update:1000] date +"%-I:%M %p"
font_family = JetBrains Mono Nerd Font
font_size = 96
color = rgba(c5c8c6ff)
color = $tn_fg
position = 0, 150
halign = center
valign = center
@@ -35,7 +37,7 @@ label {
text = cmd[update:60000] date +"%A, %B %-d"
font_family = JetBrains Mono Nerd Font
font_size = 24
color = rgba(969896ff)
color = $tn_fg_dim
position = 0, 40
halign = center
valign = center
@@ -47,11 +49,11 @@ input-field {
outline_thickness = 2
dots_size = 0.25
dots_spacing = 0.4
inner_color = rgba(282a2eff)
outer_color = rgba(81a2beff)
font_color = rgba(c5c8c6ff)
fail_color = rgba(cc6666ff)
check_color = rgba(b5bd68ff)
inner_color = $tn_bg_alt
outer_color = $tn_blue
font_color = $tn_fg
fail_color = $tn_red
check_color = $tn_green
placeholder_text = <i>Touch fingerprint or type password</i>
fail_text = <i>$FAIL</i>
fade_on_empty = false