diff --git a/.config/pipewire/pipewire-pulse.conf b/.config/pipewire/pipewire-pulse.conf new file mode 100644 index 0000000..05c2ef5 --- /dev/null +++ b/.config/pipewire/pipewire-pulse.conf @@ -0,0 +1,60 @@ +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 + } + } + } +]