2.1 KiB
2.1 KiB
Changelog
All notable changes to this project are documented in this file.
[Unreleased]
Added
active_window_volumeknob action — controls the volume of whatever application currently has window focus. Notargetis needed; the focused window is resolved dynamically on every turn.mute_active_windowbutton action — toggles mute for whatever application currently has window focus.mute_groupbutton action — toggles mute for multiple applications at once (targets = ["app1", "app2"]), syncing every matched stream to the same mute state so repeated presses can't leave the group half-muted.binary:<name>needle syntax forapp_volume/group_volume/app-matching button targets. Some applications (generic Electron apps that don't set their own PipeWire identity, e.g. Feishin) report the sameapplication.nameas an unrelated app and are only distinguishable byapplication.process.binary. Abinary:-prefixed needle matches that field exactly instead of substring-matching name-or-binary, avoiding cross-talk between knobs/groups that would otherwise both match the generic name.- New dependency:
kdotool(AUR), required for focused-window detection under KWin/Wayland.
Changed
PulseController.set_app_volume()/get_app_volume_norm()now share a singlestream_matches()helper (inaudio.py) instead of duplicating the name/binary substring check inline, and skip the MPRIS/playerctllookup forbinary:-prefixed needles (no meaningful player name in that case).reapply_app_volumes()'s periodic PA-correction loop uses the samestream_matches()helper, fixing a bug where two knobs/groups whose needles both matched a generic app name (e.g. "chromium" matching both the real browser and a bare-Electron app reporting as "Chromium") would fight over that stream's volume every ~1s.- Web UI's TOML serializer (
ui/server.py) now writestargets = [...]formute_groupbuttons, mirroring how knobs already serializegroup_volume.
[2.2.2] - previous release
See git history prior to this file's introduction.