- A workspace Hyprland makes for a switch (createworkspacev2) grows into the row
over the slide instead of appearing at full size; the window keeps the full
room meanwhile.
- Every config.toml save restarted the colour Animation, and Animation::new
runs its clock even from a colour to itself, so every window redrew for 0.4 s
per save. The colours now only fade when they change.
- The file watch could read config.toml halfway through the shell's own save
and reset settings to their defaults. Saves and rereads share one lock, the
file is written to a new file and renamed over, and the shell's own saves
are skipped by the watch.
- A song change or new player only pops the island when the focused window
isn't that player's app (parse::same_app, tested).
All tunable values (sizes, timings, text sizes, colours, polls, equalizer
presets and bands, hotspot, extra output) are settings declared once in
config.rs, read from ~/.config/amane/config.toml, applied live on save.
shell.conf's four values move over on first start.
settings.rs: a normal window (control centre gear, or ipc config) with a
page per part, a page per Hyprland category, search and reset per row.
hypr.rs: Hyprland's options from hyprctl descriptions/getoption, applied
with hl.config and kept in ~/.config/hypr/amane.lua.
The tile or block grows into its menu; the panel fades its content and takes the
menu's size underneath. Wi-Fi lists networks (join saved/open, disconnect, stop
iwd), Bluetooth lists devices, VPN has a switch per openvpn service, Sound has
every output with its own slider and a default picker. A second Sound slider for
the output named by extra_output in shell.conf (NR515). Screen and keyboard light
are written to sysfs directly: logind refuses a shell without a seat.
Wi-Fi and hotspot (iwd, never D-Bus-activated by a read), VPN (openrc openvpn.*),
Bluetooth (bluez), battery, volume, screen and keyboard light, performance mode
(platform profile + governor + EPP through doas -n), and the external GPU with the
programs using it (drm fdinfo). Icons move to glyph.rs.
the Theme service waits on amane::watch_file (inotify on the folder, so
matugen's rename-over saves count) for both ~/.config/amane/theme and
shell.conf, settles 50 ms for multi-write saves, and skips writes that
change nothing. measured on the desktop: rename-over, in-place and sed -i
writes picked up in 55-68 ms (was up to 500 ms), identical rewrites
ignored, no activity while idle (was 4 reads a second). deleting the
theme file takes effect at the next start
- 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