Commit Graph

2 Commits (37da84422a52fd945fed91f2cf129da2d4f8cabb)

Author SHA1 Message Date
Amir Alexander Abdelbaki f500dd550e feat(hyprdrive,hyprlua): vertical mixer meters with the live peak column inside the fill
The per-channel volume meters are now vertical faders (Gtk.Scale, inverted so
loud is up) instead of horizontal sliders, and the live peak indicator moved
out of its own bar above the card into the meter itself: a narrow violet
column Cairo-drawn inside the trough, so one glance reads both "what the
volume is set to" (the fill) and "what is actually reaching the mix" (the
column inside it).

  - ui/peakbar.py is a DrawingArea rather than a Gtk.LevelBar: it has to grow
    bottom-to-top over the same span as the scale's highlight, minus the
    half-slider inset, and it sits in a Gtk.Overlay with can_target=False so
    the scale underneath still gets every click and drag.
  - ui/meter.py draws the value as its own label and drops the 100% mark;
    either one would push the trough off-centre under the overlaid column.
    The channel label is always appended (empty for mono) so a lone meter and
    a split L/R pair keep the same trough height inside the card's stack.
  - ui/card_base.py fans one peak monitor out to every meter of the card —
    parec reports one mixed level per target, not a per-channel one.
  - The trough's empty portion is transparent now (an idle meter and a silent
    monitor both read as "nothing here"), and supersonic-booster's fill gets
    the suite's emitted-magenta glow. Both stylesheets re-assert the
    transparent background at class specificity: the CyberQueer theme's
    `* { background-color: #1a1a1a }` was otherwise painting a dark stripe
    straight through the fill where the peak column sits.

hyprlua's audio-panel is regenerated via regen-audio-panel.sh; its plain
stylesheet stays flat and glow-free by design, with @accent as the fill.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 18:22:52 +02:00
Amir Alexander Abdelbaki bda4640b54 feat(hyprdrive,hyprlua): add supersonic-booster/audio-panel PipeWire mixer panel
A new layer-shell mixer panel with four tabs (Applications / Input Devices /
Output Devices / General Settings): per-app and per-device volume meters with
an independent left/right toggle, mute, live parec-based amplitude bars (so a
silent stream is visually distinct from a quiet one), output-device routing,
card profile switching (pro-audio vs stereo duplex etc.), and default-device
pickers. Backed by pactl -f json + pactl subscribe over pipewire-pulse
(verified against this box's real pactl; wpctl was dropped for lacking
per-channel volume and profile verbs).

hyprdrive gets the hologram-styled original (supersonic-booster); hyprlua's
plain-themed audio-panel is generated by a new
desktopenvs/hyprlua/scripts/regen-audio-panel.sh, extending the existing
regen-beacon.sh derivation pattern rather than hand-duplicating the app.

Wired into both DEs: Super+Shift+S keybind, autostart, config-updater,
apply-theme.sh, and the respective bars (station-bar's volume badge now opens
the panel; eww/eww-touch/eww-nobattery's volume slider does too, replacing
the old pavucontrol launch).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TkkH9eiCBfpWysUXAD9bDG
2026-07-29 15:41:57 +02:00