.TH "pipewire-client.conf" 5 "1.6.7" "PipeWire" \" -*- nroff -*- .ad l .nh .SH NAME pipewire-client.conf \- client\&.conf .SH DESCRIPTION .PP The PipeWire client configuration file\&. .PP .SH "SYNOPSIS" .PP .PP \fI$XDG_CONFIG_HOME/pipewire/client\&.conf\fP .PP \fI/etc/pipewire/client\&.conf\fP .PP \fI/usr/share/pipewire/client\&.conf\fP .PP \fI/usr/share/pipewire/client\&.conf\&.d/\fP .PP \fI/etc/pipewire/client\&.conf\&.d/\fP .PP \fI$XDG_CONFIG_HOME/pipewire/client\&.conf\&.d/\fP .PP .SH "DESCRIPTION" .PP .PP Configuration for PipeWire native clients, and for PipeWire's ALSA plugin\&. .PP A PipeWire native client program selects the default config to load, and if nothing is specified, it usually loads \fRclient\&.conf\fP\&. .PP The configuration file format and lookup logic is the same as for \fBpipewire\&.conf(5)\fP\&. .PP Drop-in configuration files \fRclient\&.conf\&.d/*\&.conf\fP can be used, and are recommended\&. See \fBpipewire\&.conf(5)\fP\&. .SH "CONFIGURATION FILE SECTIONS" .PP \fBstream\&.properties\fP .RS 4 Configures options for native client streams\&. .RE .PP \fBstream\&.rules\fP .RS 4 Configures rules for native client streams\&. .RE .PP \fBalsa\&.properties\fP .RS 4 ALSA client configuration\&. .RE .PP \fBalsa\&.rules\fP .RS 4 ALSA client match rules\&. .RE .PP In addition, the PipeWire context configuration sections may also be specified, see \fBpipewire\&.conf(5)\fP\&. .SH "STREAM PROPERTIES" .PP The client configuration files contain a stream\&.properties section that configures the options for client streams: .PP .nf # ~/\&.config/pipewire/client\&.conf\&.d/custom\&.conf stream\&.properties = { #node\&.latency = 1024/48000 #node\&.autoconnect = true #resample\&.disable = false #resample\&.quality = 4 #resample\&.window = exp # blackman kaiser #resample\&.cutoff = 0\&.0 #resample\&.n\-taps = 0 #resample\&.param\&.exp\&.A = 0\&.0 #resample\&.param\&.blackman\&.alpha = 0\&.0 #resample\&.param\&.kaiser\&.alpha = 0\&.0 #resample\&.param\&.kaiser\&.stopband\-attenuation = 0\&.0 #resample\&.param\&.kaiser\&.transition\-bandwidth = 0\&.0 #monitor\&.channel\-volumes = false #channelmix\&.disable = false #channelmix\&.min\-volume = 0\&.0 #channelmix\&.max\-volume = 10\&.0 #channelmix\&.normalize = false #channelmix\&.lock\-volume = 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 = "" } .fi .PP .PP Some of the properties refer to different aspects of the stream: .PP .IP "\(bu" 2 General stream properties to identify the stream\&. .IP "\(bu" 2 General stream properties to classify the stream\&. .IP "\(bu" 2 How it is going to be scheduled by the graph\&. .IP "\(bu" 2 How it is going to be linked by the session manager\&. .IP "\(bu" 2 How the internal processing will be done\&. .IP "\(bu" 2 Properties to configure the media format\&. .PP .PP A list of object properties that can be applied to streams can be found in \fBpipewire-props(7) Common Node Properties\fP and \fBpipewire-props(7) Audio Adapter Properties\fP .SH "STREAM RULES" .PP You can add \fBmatch rules, see pipewire(1)\fP to set properties for certain streams and filters\&. .PP \fRstream\&.rules\fP and \fRfilter\&.rules\fP provides an \fRupdate-props\fP action that takes an object with properties that are updated on the node object of the stream and filter\&. .PP Add a \fRstream\&.rules\fP or \fRfilter\&.rules\fP section in the config file like this: .PP .PP .nf # ~/\&.config/pipewire/client\&.conf\&.d/custom\&.conf stream\&.rules = [ { matches = [ { # all keys must match the value\&. ! negates\&. ~ starts regex\&. application\&.process\&.binary = "firefox" } ] actions = { update\-props = { node\&.name = "My Name" } } } ] .fi .PP .PP Will set the node\&.name of Firefox to "My Name"\&. .SH "ALSA CLIENT PROPERTIES" .PP An \fRalsa\&.properties\fP section can be added to configure client applications that connect via the PipeWire ALSA plugin\&. .PP .PP .nf # ~/\&.config/pipewire/client\&.conf\&.d/custom\&.conf alsa\&.properties = { #alsa\&.deny = false #alsa\&.format = 0 #alsa\&.rate = 0 #alsa\&.channels = 0 #alsa\&.period\-bytes = 0 #alsa\&.buffer\-bytes = 0 #alsa\&.volume\-method = cubic # linear, cubic } .fi .PP .PP \fBalsa\&.deny \fP .RS 4 Denies ALSA access for the client\&. Useful in rules or PIPEWIRE_ALSA environment variable\&. .RE .PP \fBalsa\&.format \fP .RS 4 The ALSA format to use for the client\&. This is an ALSA format name\&. default 0, which is to allow all formats\&. .RE .PP \fBalsa\&.rate \fP .RS 4 The samplerate to use for the client\&. The default is 0, which is to allow all rates\&. .RE .PP \fBalsa\&.channels \fP .RS 4 The number of channels for the client\&. The default is 0, which is to allow any number of channels\&. .RE .PP \fBalsa\&.period-bytes \fP .RS 4 The number of bytes per period\&. The default is 0 which is to allow any number of period bytes\&. .RE .PP \fBalsa\&.buffer-bytes \fP .RS 4 The number of bytes in the alsa buffer\&. The default is 0, which is to allow any number of bytes\&. .RE .PP \fBalsa\&.volume-method = cubic | linear\fP .RS 4 This controls the volume curve used on the ALSA mixer\&. Possible values are \fRcubic\fP and \fRlinear\fP\&. The default is to use \fRcubic\fP\&. .RE .PP .SH "ALSA CLIENT RULES" .PP It is possible to set ALSA client specific properties by using \fBMatch rules, see pipewire(1)\fP\&. You can set any of the above ALSA properties or any of the \fRstream\&.properties\fP\&. .PP .SS "Example" .PP .PP .nf # ~/\&.config/pipewire/client\&.conf\&.d/custom\&.conf alsa\&.rules = [ { matches = [ { application\&.process\&.binary = "resolve" } ] actions = { update\-props = { alsa\&.buffer\-bytes = 131072 } } } ] .fi .PP .SH "ENVIRONMENT VARIABLES" .PP See \fBpipewire(1)\fP for common environment variables\&. Many of these also apply to client applications\&. .PP The environment variables also influence ALSA applications that are using PipeWire's ALSA plugin\&. .PP \fBPIPEWIRE_ALSA \fP .RS 4 This can be an object with properties from \fRalsa\&.properties\fP or \fRstream\&.properties\fP that will be used to construct the client and streams\&. .PP For example: .PP .nf PIPEWIRE_ALSA='{ alsa\&.buffer\-bytes=16384 node\&.name=foo }' aplay \&.\&.\&. .fi .PP Starts aplay with custom properties\&. .RE .PP .PP \fBPIPEWIRE_NODE \fP .RS 4 Instructs the ALSA client to link to a particular sink or source \fRobject\&.serial\fP or \fRnode\&.name\fP\&. .PP For example: .PP .nf PIPEWIRE_NODE=alsa_output\&.pci\-0000_00_1b\&.0\&.analog\-stereo aplay \&.\&.\&. .fi .PP Makes aplay play on the give audio sink\&. .RE .PP .PP .SH "AUTHORS" .PP .PP The PipeWire Developers ; PipeWire is available from .PP .SH "SEE ALSO" .PP .PP \fBlibpipewire-module-protocol-pulse(7)\fP, \fBpipewire\&.conf(5)\fP, \fBpipewire-pulse(1)\fP, \fBpipewire-pulse-modules(7)\fP