I’ve set custom priority.session values for my sinks (e.g., dock > internal speakers). Auto-switching works — until I manually select a device from the KDE tray.
Once I pick something in the tray, it becomes the “configured default,” and priority-based switching stops. You can see this in wpctl status:
Settings
└─ Default Configured Devices:
0. Audio/Sink alsa_output.pci-0000_00_1f.3.analog-stereo
WirePlumber stores this in ~/.local/state/wireplumber/default-nodes. Clearing it with wpctl clear-default restores priority-based switching — but KDE can overwrite it again.
Question: How can I make WirePlumber always respect priority and ignore user-selected defaults, for fully automatic switching?
52-dock.conf
monitor.alsa.rules = [
{
matches = [
{ node.name = "alsa_output.usb-Lenovo_ThinkPad_Thunderbolt_3_Dock_USB_Audio_000000000000-00.analog-stereo" }
]
actions = {
update-props = {
node.description = "Dock Headphones"
node.nick = "Dock Headphones (nick)"
priority.driver = 1020
priority.session = 1020
}
}
},
{
matches = [
{ node.name = "alsa_input.usb-Lenovo_ThinkPad_Thunderbolt_3_Dock_USB_Audio_000000000000-00.mono-fallback" }
]
actions = {
update-props = {
node.description = "Dock Microphone"
node.nick = "Dock Microphone (nick)"
node.disabled = true
}
}
}
]
53-laptop.conf
# MANAGED BY ANSIBLE
monitor.alsa.rules = [
{
matches = [
{ node.name = "alsa_output.pci-0000_00_1f.3.analog-stereo" }
]
actions = {
update-props = {
node.description = "Internal Speakers"
node.nick = "Internal Speakers (nick)"
priority.driver = 1010
priority.session = 1010
}
}
},
{
matches = [
{ node.name = "alsa_input.pci-0000_00_1f.3.analog-stereo" }
]
actions = {
update-props = {
node.description = "Internal Microphone"
node.nick = "Internal Microphone (nick)"
node.disabled = true
}
}
}
]