- control.rs: Menu::Ethernet; the panel morphs into the card's details
(gathered off the drawing thread first) instead of a separate popup;
prompt::copy now takes a callback so both use wl-copy the same way
- prompt.rs: the Details popup is gone
- map.rs: 920x460, at most 8 nodes, lighter nearness pull (simulated:
no label overlaps up to 8 nodes while drifting)
- workspaces.rs: a peek on a workspace change shows the workspaces alone
- tray.rs: the shell serves org.kde.StatusNotifierWatcher (only when no other
watcher runs) and is its host; icons from the theme or from IconPixmap
(png.rs, a stdlib png writer); left/middle/right click and scroll; dbusmenu
menus drawn in the island's look; tray IPC verbs for testing
- edge.rs: the bar hides only on monitors showing a fullscreen window, driven
by Hyprland's event socket; peeks of the workspaces (with the disc sliding)
and the island (song change, new player), with a pop on the island
- prompt.rs: Ethernet details popup (addresses, gateway, DNS, MAC copyable)
- map.rs: 1100x560 maps, every other node a ring further in
- tools/fake_tray.py: a fake tray app, by bus name or by path
- prompt.rs: popup for Wi-Fi passwords, Bluetooth PINs/passkeys/codes, saved
passwords (Copy through wl-copy on stdin) and failure reasons; joins through
iwctl, pairs through a bluetoothctl session; only popups with a field take
the keyboard (an exclusive grab let stray keystrokes close failure popups)
- menus: the panel is the only shape; the menu window fades its content in
once the panel has taken the menu's size
- maps: clicking the bubble searches again (iwctl scan, bluetoothctl scan)
with rings running out from the click
- Ethernet tile and pill icon from sysfs; link speed badges (Ethernet speed,
Wi-Fi RxBitrate from iwd diagnostics, at most once a minute)
- edge.rs: bar hidden until the pointer rests on the top edge; nothing is
read or drawn while hidden
- IPC: control wifi join|password|search, bluetooth pair|connect|search,
prompt answer|cancel, status prompt=
- 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
- workspace pill: clicks did nothing. amane's Workspaces::focus sends
'dispatch workspace N', which hyprland 0.56 with a lua config turns into
hl.dispatch(workspace N) and rejects. dispatch the lua form the user's
keybinds use, hl.dsp.focus({ workspace = N }), through hyprctl on its own
thread (named workspaces with negative ids are left out)
- island: 'magic-island has no child to draw' at startup without a player,
and the island then never appeared. hyprland 0.56 configures a layer
surface before its first commit (seen with WAYLAND_DEBUG), so a window
that starts visible(false) gets a size, amane runs the empty view, logs,
and waits for frame callbacks an undrawn surface never gets. with no
player the island is now an empty click-through window instead
- verified on the desktop: 0 'no child' lines, island draws at startup and
shows on all 4 monitors when a player starts
- 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