Linux: web media (CEF) ignores the mute button and media volume #497

Closed
opened 2026-10-06 16:44:25 +00:00 by sky_line · 0 comments
Owner

Found by the owner: with the master mute (top right) on, media on a prim and web pages still play sound.

Cause: the Linux CEF plugin only applies volume through a "volume catcher" (PipeWire or PulseAudio), and only creates one when the viewer sends enable_pipewire_volume_catcher. The viewer never sends that message, so no catcher existed and every volume change was dropped: the master mute, the Media mute and the Media volume slider. This has been broken since the CEF plugin was ported, not only in a recent build.

Fix: the plugin now picks a backend on its own the first time a volume is set:

  • PipeWire, if libpipewire-0.3 loads and a PipeWire server socket exists (not in Flatpak);
  • otherwise PulseAudio, which also covers pipewire-pulse setups and the Flatpak sandbox.

An explicit message from the viewer still overrides the choice. The backend chosen is logged in the plugin log as "volume catcher using ...".

Test:

  • Play a YouTube video on a prim and toggle the master mute, the Media mute and the Media volume slider.
  • Try it on PipeWire, on PulseAudio-only, and in Flatpak.
  • Windows uses its own catcher; check it there too.
Found by the owner: with the master mute (top right) on, media on a prim and web pages still play sound. **Cause:** the Linux CEF plugin only applies volume through a "volume catcher" (PipeWire or PulseAudio), and only creates one when the viewer sends `enable_pipewire_volume_catcher`. The viewer never sends that message, so no catcher existed and every volume change was dropped: the master mute, the Media mute and the Media volume slider. This has been broken since the CEF plugin was ported, not only in a recent build. **Fix:** the plugin now picks a backend on its own the first time a volume is set: - PipeWire, if `libpipewire-0.3` loads and a PipeWire server socket exists (not in Flatpak); - otherwise PulseAudio, which also covers pipewire-pulse setups and the Flatpak sandbox. An explicit message from the viewer still overrides the choice. The backend chosen is logged in the plugin log as "volume catcher using ...". **Test:** - Play a YouTube video on a prim and toggle the master mute, the Media mute and the Media volume slider. - Try it on PipeWire, on PulseAudio-only, and in Flatpak. - Windows uses its own catcher; check it there too.
sky_line added this to the Slipstream project 2026-10-06 16:44:25 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#497
No description provided.