PipeWire: pipewire-pulse.conf

PipeWire 1.2.6

Loading...
Searching...
No Matches
pipewire-pulse.conf

The PipeWire Pulseaudio server configuration file

# SYNOPSIS

$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

Configuration for PipeWire's PulseAudio-compatible daemon.

The configuration file format and lookup logic is the same as for pipewire.conf(5).

Drop-in configuration files `pipewire-pulse.conf.d/*.conf` can be used, and are recommended. See pipewire.conf(5).

# CONFIGURATION FILE SECTIONS

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.

See libpipewire-module-protocol-pulse(7) for the detailed description.

In addition, the PipeWire context configuration sections may also be specified, see pipewire.conf(5).

# STREAM PROPERTIES

The `stream.properties` section contains properties for streams created by the pipewire-pulse server.

Available options are described in pipewire-client.conf(5) stream.properties.

Some of these properties map to the PulseAudio `/etc/pulse/default.pa` config entries as follows:

PulseAudio | PipeWire | Notes
--- | --- | ---
remixing-use-all-sink-channels | channelmix.upmix |
remixing-produce-lfe | channelmix.lfe-cutoff | Set to > 0 to enable
remixing-consume-lfe | channelmix.mix-lfe |
lfe-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.

# PULSEAUDIO PROPERTIES

For `pulse.properties` section, see libpipewire-module-protocol-pulse(7) for available options.

# PULSEAUDIO RULES

For each client, a set of rules can be written in `pulse.rules` section to configure quirks of the client or to force some pulse specific stream configuration.

The general look of this section is as follows and 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`.

# ~/.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:

load-module
  Load the specified Pulseaudio module on startup, as if using pactl(1) to load the module.

# PULSEAUDIO MODULES

For contents of section `pulse.modules`, 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)