Bug 507447 - When using virtual output device as the default output, volume hotkeys control the physical device instead, but only when the Audio Volume widget is visible
Summary: When using virtual output device as the default output, volume hotkeys contro...
Status: REPORTED
Alias: None
Product: plasmashell
Classification: Plasma
Component: Audio Volume widget (other bugs)
Version First Reported In: 6.4.3
Platform: Arch Linux Linux
: NOR minor
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-07-24 14:49 UTC by ba212908
Modified: 2025-08-07 17:32 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments
Screenshot: EQ Sink active, but volume of Analog Stereo output gets changed by hotkeys. (44.52 KB, image/png)
2025-07-24 14:49 UTC, ba212908
Details

Note You need to log in before you can comment on or make changes to this bug.
Description ba212908 2025-07-24 14:49:45 UTC
Created attachment 183492 [details]
Screenshot: EQ Sink active, but volume of Analog Stereo output gets changed by hotkeys.

SUMMARY

While the Audio Volume Widget is active, and the user has set a virtual ouput (like an EQ Sink) to be the active pipewire output device, the "Volume Up", "Volume Down" hotkeys will not adjust the volume of that chosen output device, but instead that of the underlying hardware device.

While the Audio Volume Widget is not active, the volume hotkeys show the supposedly expected (?) behaviour of controlling the actually chosen (virtual sink) audio device's volume.

STEPS TO REPRODUCE
1. Create a virtual device, for example in
> ~/.config/pipewire/pipewire.conf.d/EQ.conf
with
> context.modules = [
>   { name = libpipewire-module-filter-chain
>     args = {
>       node.description = "EQ Sink"
>       media.name     = "EQ Sink"
>       filter.graph = {
>         nodes = [
>           {
>             type  = builtin
>             name  = eq_band_1
>             label = bq_peaking
>             control = { "Freq" = 8000.0 "Q" = 2.0 "Gain" = -3.0 }
>           }
>           {
>             type  = builtin
>             name  = eq_band_2
>             label = bq_highshelf
>             control = { "Freq" = 10000.0 "Q" = 1.0 "Gain" = -11.0 }
>           }
>         ]
>         links = [
>           { output = "eq_band_1:Out" input = "eq_band_2:In" }
>         ]
>       }
> 	  audio.channels = 2
> 	  audio.position = [ FL FR ]
>       capture.props = {
>         node.name   = "effect_input.headphone_eq"
>         media.class = Audio/Sink
>       }
>       playback.props = {
>         node.name   = "effect_output.headphone_eq"
>         node.passive = true
>       }
>     }
>   }
> ]

2. Reboot

3. In the Audio Volume Widget, select the "EQ Sink" as the output device and manually set the values to of the virtual and the physical outputs to different values, so it's easier to tell them apart when changing volume via hotkeys. Say, set to "100" for the EQ Sink and to "40" for the physical device.

4. Use volume hotkeys to increase/decrease volume, once with the "Audio Volume Widget" visible, once with it hidden.

OBSERVED RESULT
When the Audio Volume Widget is hidden, the volume hotkeys correctly control the active/selected EQ Sink device's volume, starting out at the 100 we left it at in the previous step.

When the Audio Volume Widget is visible, the volume hotkeys control the physical device's volume starting out at the 40 we left it at in the previous step.

EXPECTED RESULT
The volume hotkeys should always control the volume of the active/selected device, even if that device is a virtual sink.

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: Arch x86_64 on 6.15.7 Kernel
KDE Plasma Version: 6.4.3
KDE Frameworks Version: 6.16.0
Qt Version: 6.9.1
Wayland, Pipewire