Commit Graph

28 Commits

Author SHA1 Message Date
funman300 1bdc4b5165 spec: niri minimize/stash design
Mod+M and Mod+Shift+M reference a "minimized" named workspace that was never
declared, so both binds have always been silent no-ops. Design covers the
declaration plus a wofi restore picker.

Constraints verified against niri 26.04 in a nested instance: undeclared named
workspaces are no-ops, declared ones are pinned to index 1 and cannot be moved
(hence the +1 offset on Mod+1..9), and focus=false is required or focus follows
the window into the stash.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-16 09:15:02 -07:00
funman300 0ab08e8561 gamemode: global auto-trigger via niri window watch
Add scripts/gamemode-watch.py, launched at niri startup, which subscribes
to niri's event stream and toggles gamemode whenever a game window
(steam_app_*, RuneLite, gamescope) is open — so Steam games trigger
gamemode with zero per-game setup instead of needing gamemoderun %command%.

'winwatch' is a third reference-counted source alongside feral + manual.
Pure Watcher class is unit-tested; SIGTERM/finally guarantee cleanup so
the watcher stopping never leaves gamemode stuck on.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-15 21:51:52 -07:00
funman300 e0c12ff0c9 Plan: niri gamemode implementation (6 tasks, TDD)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-15 21:29:44 -07:00
funman300 5b24b21610 Spec: niri gamemode (idle inhibit, DND, perf profile, hide waybar)
Hybrid trigger (Feral gamemode hooks + Mod+G toggle), reference-counted
so overlapping sources apply once and revert once. Also removes three
dead VRR window-rules (panel has no VRR support).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-15 21:23:34 -07:00
funman300 1e3adbc842 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>
2026-06-07 16:45:01 -07:00
funman300 467be569fd docs: implementation plan for hyprlock migration
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 11:10:50 -07:00
funman300 d7ab4baf7e docs: spec for hyprlock migration (replaces gtklock)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 11:08:38 -07:00
funman300 ede1399853 docs: implementation plan for fingerprint reader
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 10:30:08 -07:00
funman300 2cd28edf52 docs: spec for Framework 13 fingerprint reader setup
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 10:28:50 -07:00
funman300 b57d134c2b docs: implementation plan for NetworkManager activation
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 14:44:57 -07:00
funman300 101accc26b docs: spec for NetworkManager activation with iwd backend
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 14:43:10 -07:00
funman300 cc17e7bab4 docs: implementation plan for volume notification
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 11:09:40 -07:00
funman300 a812715e46 docs: spec for volume change notification
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 10:36:47 -07:00
funman300 841ee432d6 docs: implementation plan for power-profile fan-trigger
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 17:54:44 -07:00
funman300 5f00fdc2be docs: spec for power-profile→fan sync trigger
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 17:52:28 -07:00
funman300 e3a6986f81 docs: align lid-hibernate spec with PARTUUID-based resume
Spec said `findmnt -no UUID /` and `resume=UUID=` but the script
correctly uses PARTUUID throughout (matches the system's existing
root=PARTUUID= convention).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 17:18:25 -07:00
funman300 4e69e155d7 docs: implementation plan for lid-close hibernate
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 17:05:26 -07:00
funman300 d2e9b47584 docs: spec for lid-close hibernate (suspend-then-hibernate)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 16:59:23 -07:00
funman300 7a5a276efd docs: track implementation plans for fan-profile auto and flameshot
Both plans were generated during their respective implementation
runs but never committed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 23:18:31 -07:00
funman300 c44ab1e266 docs: spec for flameshot screenshot tool swap
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 22:52:19 -07:00
funman300 ef4d8cb44d docs: spec for fan-profile auto mode
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 09:58:54 -07:00
funman300 c21a2834b7 revert tray drawer feature and remove mouse-battery module
The tray drawer added complexity (drawer config, custom chevron module,
state-feedback CSS) for what amounts to a small visual refinement.
Removed in favour of the original always-visible tray. The mouse-battery
indicator was also removed from the bar.

Deletes:
- waybar/mouse-battery.sh + symlink + install.sh entry
- group/tray-drawer + custom/mouse-battery blocks in config.jsonc
- #custom-tray-arrow rules from style.css
- docs/superpowers/{specs,plans} for the drawer feature

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 09:41:00 -07:00
funman300 1305b1cda1 docs: sync tray drawer plan with shipped color-shift implementation
Plan was originally written assuming `transform: rotate` would work
in GTK 3 CSS; it doesn't. Spec was already updated in 1646dfc; this
brings the plan in line so historical readers see the same approach
across spec, plan, and code.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 21:35:57 -07:00
funman300 67fbea93a4 waybar: drop unused children-class from tray drawer
No CSS rule targets .tray-drawer-child — speculative key with no
consumer. YAGNI cleanup.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 21:30:35 -07:00
funman300 1646dfcd90 waybar: drop unsupported CSS transform from tray drawer arrow
GTK 3 CSS (used by waybar) treats `transform` as a fatal parse error,
so the rotation approach killed waybar entirely. Use a color shift
from @tn-fg-muted to @tn-fg as the expanded-state feedback instead.
Matches the existing style.css convention (battery/cpu/temperature
states all use color shifts, not transforms).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 21:29:58 -07:00
funman300 412034ea9f docs: spec for waybar tray drawer (collapsible icons)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 21:14:13 -07:00
funman300 a6ed78846b docs: add interactive screenshot implementation plan
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 11:24:33 -07:00
funman300 5639219d9f docs: add interactive screenshot design spec
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 11:22:51 -07:00