pipewire-pulse.conf(5)
π NAME π
pipewire-pulse.conf β it's the config file for PipeWire's PulseAudio-compatible server, and yeah it lives in the File Formats Manual corner of your system (that's the (5), bestie).
β¨ DESCRIPTION β¨
It is the PipeWire Pulseaudio server configuration file. That's the whole vibe. π
π¦ SYNOPSIS π¦
The places it looks, in order-ish, no cap:
$XDG_CONFIG_HOME/pipewire/pipewire-pulse.conf
/etc/pipewire/pipewire-pulse.conf
/usr/share/pipewire/pipewire-pulse.conf
/usr/share/pipewire/pipewire-pulse.conf.d/
/etc/pipewire/pipewire-pulse.conf.d/
$XDG_CONFIG_HOME/pipewire/pipewire-pulse.conf.d/
π DESCRIPTION π (yes, again, the manpage really does this)
So this is the configuration for PipeWire's PulseAudio-compatible daemon π«Ά.
Important bit: the file format and the lookup logic are the exact same as for pipewire.conf(5). Same brain, different file.
Drop-in configuration files β pipewire-pulse.conf.d/*.conf β can be used, and honestly they're recommended. Go read pipewire.conf(5) for the deets on how that works. β¨
πΈ CONFIGURATION FILE SECTIONS πΈ
Here's the whole menu, and yes every single one is here, I'm not skipping anything:
stream.propertiesβ Dictionary. These properties configure the PipeWire Pulseaudio server properties.stream.rulesβ Dictionary. These properties configure the PipeWire Pulseaudio server properties.pulse.propertiesβ Dictionary. These properties configure the PipeWire Pulseaudio server properties.pulse.cmdβ Array of dictionaries. A set of commands to be executed on startup.pulse.rulesβ Array of dictionaries. A set of match rules and actions to apply to clients.
π The detailed description of all of this lives in libpipewire-module-protocol-pulse(7). Go look, it's giving thorough.
Also, plot twist: the PipeWire context configuration sections may also be specified here. See pipewire.conf(5). π
π STREAM PROPERTIES π
The stream.properties section holds the properties for streams created by the pipewire-pulse server. π
All the available options are described in pipewire-client.conf(5) under stream.properties. Not repeating them here, go check.
Some of these properties map to the PulseAudio /etc/pulse/default.pa config entries, like this:
remixing-use-all-sink-channelsβchannelmix.upmixremixing-produce-lfeβchannelmix.lfe-cutoffβ Notes: Set to > 0 to enableremixing-consume-lfeβchannelmix.mix-lfelfe-crossover-freqβchannelmix.lfe-cutoff
π Example
# ~/.config/pipewire/pipewire-pulse.conf.d/custom.conf
stream.properties = {
#node.latency = 1024/48000
#node.autoconnect = true
#resample.disable = false
#resample.quality = 4
#monitor.channel-volumes = false
#channelmix.disable = false
#channelmix.min-volume = 0.0
#channelmix.max-volume = 10.0
#channelmix.normalize = false
#channelmix.mix-lfe = true
#channelmix.upmix = true
#channelmix.upmix-method = psd # none, simple
#channelmix.lfe-cutoff = 150.0
#channelmix.fc-cutoff = 12000.0
#channelmix.rear-delay = 12.0
#channelmix.stereo-widen = 0.0
#channelmix.hilbert-taps = 0
#dither.noise = 0
#dither.method = none # rectangular, triangular, triangular-hf, wannamaker3, shaped5
#debug.wav-path = ""
}
π STREAM RULES π
The stream.rules section works the same as pipewire-client.conf(5) stream.rules. Same energy, same rules, literally. π¦
π PULSEAUDIO PROPERTIES π
For the pulse.properties section, go see libpipewire-module-protocol-pulse(7) for the available options. That's where they live. π
π₯ PULSEAUDIO RULES π₯
For each client, you can write a set of rules in the pulse.rules section to configure quirks of the client, or to force some pulse-specific stream configuration. Very main character of you, honestly. β¨
The general look of this section follows the layout of match rules, see pipewire(1).
See libpipewire-module-protocol-pulse(7) for available options.
πΈ Example
# ~/.config/pipewire/pipewire-pulse.conf.d/custom.conf
pulse.rules = [
{
# skype does not want to use devices that don't have an S16 sample format.
matches = [
{ application.process.binary = "teams" }
{ application.process.binary = "teams-insiders" }
{ application.process.binary = "skypeforlinux" }
]
actions = { quirks = [ force-s16-info ] }
}
{
# 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
}
}
}
]
π«Ά PULSEAUDIO COMMANDS π«Ά
As part of the server startup procedure you can execute some additional commands with the pulse.cmd section in pipewire-pulse.conf. Little startup to-do list, slay. π
# ~/.config/pipewire/pipewire-pulse.conf.d/custom.conf
pulse.cmd = [
{ cmd = "load-module" args = "module-always-sink" flags = [ ] }
{ cmd = "load-module" args = "module-switch-on-connect" }
{ cmd = "load-module" args = "module-gsettings" flags = [ "nofail" ] }
]
...
Additional commands can also be run via the context.exec section β see pipewire.conf(5).
Supported commands, the whole list:
load-moduleβ Load the specified Pulseaudio module on startup, as if you were usingpactl(1)to load the module. Periodt.
π§ PULSEAUDIO MODULES π§
For the contents of the pulse.modules section, see pipewire-pulse-modules(7). π
β AUTHORS β
The PipeWire Developers <https://gitlab.freedesktop.org/pipewire/pipewire/issues>; PipeWire is available from <https://pipewire.org>
π¦ SEE ALSO π¦
libpipewire-module-protocol-pulse(7), pipewire.conf(5), pipewire-pulse(1), pipewire-pulse-modules(7)
okay bestie that's the whole page, no skips, no crumbs left behind π this was PipeWire version 1.6.11 dropping pipewire-pulse.conf(5) β go configure something iconic, ily, bye πβ¨
π¦ where this page comes from
- fedora 44: pipewire-pulseaudio 1.6.11-1.fc44 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms