- matugen/amane.colors: a matugen template (primary, on_primary,
primary_container, primary_fixed, on_surface, on_surface_variant,
outline_variant, surface_container high/normal/lowest) that skwd-wall
renders into ~/.config/amane/theme on every new wallpaper
- theme.rs: a Theme service reads that file and shell.conf twice a
second (matugen replaces its output, which a file watch can lose) and
fades all ten colours together on one Animation; without a theme file
the shell keeps its pink on purple
- the island, the idle pill and the workspace pill draw with the theme;
white overlays (chips, tracks, hover tints) stay as they are
- shell.conf: cover_colors (true: the open media card and equalizer take
the cover's gradient as background, accents stay the wallpaper's) and
transition_ms (0 switches instantly), both applied without a restart
- parse: settings() and rgb(), with a test (6 pass)
- checked on the desktop with a hand-written theme file: pill, workspace
pill and card recolour, cover_colors switches the card background live
the island is always there now: with no player it shows a pill with a
drawn music note and 'Nothing playing', in the cover gradient with the
pink glow. click-through, static (draws once). checked on all 4 monitors
- one window per monitor (namespace magic-workspaces, Overlay like the
island), showing that monitor's hyprland workspaces in the island's
look: cover gradient, pink glow
- focused workspace pink, shown-elsewhere soft pink, empty ones dim;
hover eases in (one at a time), a click switches workspace
- special workspaces are skipped; name-only ones show their first letter
- event-driven through Workspaces: redraws only on hyprland events and
hover
- play/pause flips its icon (card and pill) the moment it's clicked; the
clicked state is shown until the player has answered
- after play/pause, next or previous, Media is read again at 150 and
600 ms instead of waiting for its once-a-second poll, so title, time
and play state follow within a fraction of a second
- the cover loader checks 4 times a second instead of once
- ipc: island play-pause, the same path as a click (keybinds, tests)
- the card opens on the monitor that was clicked (keybinds: the focused
monitor); the others keep their pill. moving the card to another monitor
restarts its open animation there
- only the focused monitor's window (and the one with the card) reads
Spectrum, so the other pills show still bars and rest
- hover lights only the pill under the pointer
- measured with music on 3 monitors: pill 10.7% of a core (was 27.5%),
open card 20.7% (was 58%), ~62 frames a second in total, 0-1 slow
frames per open/close (was 7-14), back to one island's cost
- README: features, layout, requirements, install, IPC, runtime files, limits
- AGENTS.md: the user's ground rules (branch + approval, never touch real
players' sound), architecture, measured performance rules, type-check
and test loop, desktop test driver and its pitfalls, open threads
- tools/: amane-remote.sh and fake_mpris.py, so the test loop doesn't
depend on the Hermes skill
- .gitignore: the Cargo files amane generates