#1103621 pipewire client config not applied

Package:
warzone2100
Source:
warzone2100
Description:
3D real time strategy game
Submitter:
David Mandelberg
Date:
2025-04-19 18:09:02 UTC
Severity:
normal
#1103621#5
Date:
2025-04-19 18:07:47 UTC
From:
To:
My ~/.config/pipewire/client-rt.conf.d/20-defaults.conf has this, which
should set node.loudness = -18 on warzone2100.real:

stream.rules = [
   # TODO: don't override node.loudness if the application set it?
   {
     matches = [{media.class = Stream/Output/Audio}]
     actions = {update-props = {node.loudness = -18}}
   }
   {
     matches = [
       {media.class = Stream/Output/Audio, application.name = "Quod Libet"}
     ]
     actions = {update-props = {node.loudness = -30}}
   }
]

However, `pw-dump warzone2100.real | grep loudness` does not show anything.

Looking at /usr/games/warzone2100, I'm guessing that warzone2100.real
can't read ~/.config/pipewire/client-rt.conf.d/20-defaults.conf because
there's no bind mount for it? From
https://manpages.debian.org/unstable/pipewire-bin/pipewire-client.conf.5.en.html
it looks like all the paths are bind mounted except for
$XDG_CONFIG_HOME/pipewire. (I think it makes more sense to bind the
entire user pipewire config dir instead of just client-rt.conf and
client-rt.conf.d? libopenal1 could reasonably choose to use a different
client config like client.conf instead of client-rt.conf, and I'm not
sure anything in ~/.config/pipewire is too sensitive.)

I didn't test this, but it also looks like libopenal1's config files
~/.config/alsoft.conf and ~/.alsoftrc aren't bind mounted, which I'm
guessing would prevent those from working for warzone2100 too.