# PulseAudio config file for PipeWire version "0.3.45" # # # Copy and edit this file in /etc/pipewire for system-wide changes # or in ~/.config/pipewire for local changes. # # It is also possible to place a file with an updated section in # /etc/pipewire/pipewire-pulse.conf.d/ for system-wide changes or in # ~/.config/pipewire/pipewire-pulse.conf.d/ for local changes. # context.properties = { ## Configure properties in the system. #mem.warn-mlock = false #mem.allow-mlock = true #mem.mlock-all = false #log.level = 2 #default.clock.quantum-limit = 8192 } context.spa-libs = { audio.convert.* = audioconvert/libspa-audioconvert support.* = support/libspa-support } context.modules = [ { name = libpipewire-module-rt args = { nice.level = -11 #rt.prio = 88 #rt.time.soft = -1 #rt.time.hard = -1 } 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 = { # the addresses this server listens on server.address = [ "unix:native" #"unix:/tmp/something" # absolute paths may be used #"tcp:4713" # IPv4 and IPv6 on all addresses #"tcp:[::]:9999" # IPv6 on all addresses #"tcp:127.0.0.1:8888" # IPv4 on a single address # #{ address = "tcp:4713" # address # max-clients = 64 # maximum number of clients # listen-backlog = 32 # backlog in the server listen queue # client.access = "restricted" # permissions for clients #} ] #pulse.min.req = 256/48000 # 5ms #pulse.default.req = 960/48000 # 20 milliseconds #pulse.min.frag = 256/48000 # 5ms #pulse.default.frag = 96000/48000 # 2 seconds #pulse.default.tlength = 96000/48000 # 2 seconds pulse.min.quantum = 2048/42048 #pulse.default.format = F32 #pulse.default.position = [ FL FR ] # These overrides are only applied when running in a vm. vm.overrides = { pulse.min.quantum = 1024/48000 # 22ms } } } ] # Extra modules can be loaded here. Setup in default.pa can be moved here context.exec = [ #{ path = "pactl" args = "load-module module-switch-on-connect" } #{ path = "/usr/bin/sh" args = "~/.config/pipewire/default.pw" } ] stream.properties = { #node.latency = 1024/48000 #node.autoconnect = true #resample.quality = 4 #channelmix.normalize = true #channelmix.mix-lfe = false #channelmix.upmix = false #channelmix.lfe-cutoff = 0 } # client/stream specific properties pulse.rules = [ { matches = [ { # all keys must match the value. ~ starts regex. #client.name = "Firefox" #application.process.binary = "teams" #application.name = "~speech-dispatcher.*" } ] actions = { update-props = { #node.latency = 512/48000 } # Possible quirks:" # force-s16-info forces sink and source info as S16 format # remove-capture-dont-move removes the capture DONT_MOVE flag #quirks = [ ] } } { # skype does not want to use devices that don't have an S16 sample format. matches = [ { application.process.binary = "teams" } { application.process.binary = "skypeforlinux" } ] actions = { quirks = [ force-s16-info ] } } { # firefox marks the capture streams as don't move and then they # can't be moved with pavucontrol or other tools. matches = [ { application.process.binary = "firefox" } ] actions = { quirks = [ remove-capture-dont-move ] } } { # speech dispatcher asks for too small latency and then underruns. matches = [ { application.name = "~speech-dispatcher*" } ] actions = { update-props = { pulse.min.req = 1024/48000 # 21ms pulse.min.quantum = 1024/48000 # 21ms } } } ] Share: