That does sound frustrating!
Assuming you’re using wireplumber alongside pipewire, you may want to try editing suspend-node.lua in /usr/share/wireplumber/scripts/node -
-- Add a timeout source if idle for at least 5 seconds
if new_state == "idle" or new_state == "error" then
-- honor "session.suspend-timeout-seconds" if specified
local timeout =
tonumber(node.properties["session.suspend-timeout-seconds"]) or 5
if timeout == 0 then
return
end
Change the 5 to 0, then restart the service and see if the issue persists?