diff options
| author | Danilo M. <danix@danix.xyz> | 2026-10-15 13:06:36 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-10-15 13:06:36 +0200 |
| commit | e242147340994dbb48ded3273a34079a841af25b (patch) | |
| tree | d10b7db1855a90477c2a6ed8df860c478dcaedab /desktop/modules/mail | |
| parent | 8079f68fef0a0aa007f99625295cd330947ec1e1 (diff) | |
| download | quickshell-e242147340994dbb48ded3273a34079a841af25b.tar.gz quickshell-e242147340994dbb48ded3273a34079a841af25b.zip | |
feat(sound): per-app volume on the drawer page, output to 150%
The island spec put per-app volume on the drawer page, and it was never
built. Each application playing audio now gets a row with its name, what it
is playing (two browser tabs are otherwise identical rows), a click-to-mute
level and its own slider.
Streams are matched on PwNodeType.AudioOutStream. Quickshell reports isSink
true for a playback stream, so the obvious isStream && !isSink filter found
nothing while Firefox played. Their properties are empty until bound, so the
page carries a PwObjectTracker for them, which stops with the drawer.
speech-dispatcher-dummy is always present and never audible, and is hidden.
The output slider runs to 150%, the ceiling the volume keybind already uses
(wpctl -l 1.5), with a tick at 100%. Input and apps stop at 100%: a boosted
microphone only clips. The meter became an inline component shared by both,
and wheel-up never lowers a level already past its maximum.
Now playing is dropped from the page: the OSD already carries it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'desktop/modules/mail')
0 files changed, 0 insertions, 0 deletions
