stream.rules cannot match absent properties.
I had this in client.conf, client-rt.conf, and pipewire-pulse.conf
stream.rules = [
{
matches = [
{
media.class = Stream/Output/Audio
}
]
actions = { update-props = { target.object = default-sink } }
}
]
With this, applications cannot choose their own target.object because their chosen target.objects are overrideen by stream.rules.
I want to do this
stream.rules = [
{
matches = [
{
media.class = Stream/Output/Audio
target.object is-absent
}
]
actions = { update-props = { target.object = default-sink } }
}
]
Basically, if target.object is not specified by application, assign a default one.
A hacky workaround I employ now is
stream.rules = [
{
matches = [ { media.class = Stream/Output/Audio } ]
actions = { update-props = { target.object = default-sink } }
}
{
matches = [
{
media.class = Stream/Output/Audio
node.name = "node-that-wants-different-target"
}
]
actions = { update-props = { target.object = different-target } }
}
]