context.properties = {} context.spa-libs = { audio.convert.* = audioconvert/libspa-audioconvert support.* = support/libspa-support } context.modules = [ { name = libpipewire-module-rt args = { nice.level = -11 } flags = [ ifexists nofail ] } { name = libpipewire-module-protocol-native } { name = libpipewire-module-client-node } { name = libpipewire-module-adapter } { name = libpipewire-module-metadata } { name = libpipewire-module-protocol-pulse args = { } } ] context.exec = [ { path = "pactl" args = "load-module module-always-sink" } # Automatically switch to (bluetooth) headphones { path = "pactl" args = "load-module module-switch-on-connect" } ] stream.properties = { } pulse.properties = { server.address = [ "unix:native" ] vm.overrides = { pulse.min.quantum = 1024/48000 } } pulse.rules = [ { matches = [ { } ] actions = { update-props = { } } } { matches = [ { application.process.binary = "teams" } { application.process.binary = "teams-insiders" } { application.process.binary = "skypeforlinux" } ] actions = { quirks = [ force-s16-info ] } } { matches = [ { application.process.binary = "firefox" } ] actions = { quirks = [ remove-capture-dont-move ] } } { matches = [ { application.name = "~speech-dispatcher*" } ] actions = { update-props = { pulse.min.req = 1024/48000 # 21ms pulse.min.quantum = 1024/48000 # 21ms } } } ]