- bookworm-backports 1.2.5-1~bpo12+1
- testing 1.2.5-1
- unstable 1.2.6-1
pipewire-jack.conf(5) | File Formats Manual | pipewire-jack.conf(5) |
NAME¶
pipewire-jack.conf - jack.conf
DESCRIPTION¶
The PipeWire JACK client configuration file.
SYNOPSIS¶
$XDG_CONFIG_HOME/pipewire/jack.conf
/etc/pipewire/jack.conf
/usr/share/pipewire/jack.conf
/usr/share/pipewire/jack.conf.d/
/etc/pipewire/jack.conf.d/
$XDG_CONFIG_HOME/pipewire/jack.conf.d/
DESCRIPTION¶
Configuration for PipeWire JACK clients.
The configuration file format and lookup logic is the same as for pipewire.conf(5).
Drop-in configuration files jack.conf.d/*.conf can be used, and are recommended. See pipewire.conf(5).
CONFIGURATION FILE SECTIONS¶
jack.properties
jack.rules
In addition, the PipeWire context configuration sections may also be specified, see pipewire.conf(5).
JACK PROPERTIES¶
The configuration file can contain an extra JACK specific section called jack.properties like this:
# ~/.config/pipewire/jack.conf.d/custom.conf jack.properties = {
#rt.prio = 88
#node.latency = 1024/48000
#node.lock-quantum = true
#node.force-quantum = 0
#jack.show-monitor = true
#jack.merge-monitor = true
#jack.show-midi = true
#jack.short-name = false
#jack.filter-name = false
#jack.filter-char = " "
#
# allow: Don't restrict self connect requests
# fail-external: Fail self connect requests to external ports only
# ignore-external: Ignore self connect requests to external ports only
# fail-all: Fail all self connect requests
# ignore-all: Ignore all self connect requests
#jack.self-connect-mode = allow
#jack.locked-process = true
#jack.default-as-system = false
#jack.fix-midi-events = true
#jack.global-buffer-size = false
#jack.passive-links = false
#jack.max-client-ports = 768
#jack.fill-aliases = false
#jack.writable-input = false }
See stream.properties in pipewire-client.conf(5) for an explanation of the generic node properties.
It is also possible to have per-client settings, see Match Rules below.
rt.prio
node.latency
node.latency = 1024/48000
This configures a buffer-size of 1024 samples at 48KHz. If the graph is
running at a different sample rate, the buffer-size will be adjusted
accordingly.
node.lock-quantum
node.lock-quantum = true
The quantum can then only be changed by metadata or when an application is
started with node.force-quantum. JACK Applications will also be able to use
jack_set_buffersize() to override the quantum.
node.force-quantum
node.force-quantum = 1024
The quantum can then only be changed by metadata or when an application is
started with node.force-quantum (or JACK applications that use
jack_set_buffersize() to override the quantum).
jack.show-monitor
jack.merge-monitor
For example, this is (part of) the output of jack_lsp with the default setting (jack.merge-monitor = false):
Compare:
jack.merge-monitor = true jack.merge-monitor = false Built-in Audio Analog Stereo:playback_FL Built-in Audio Analog Stereo:playback_FL Built-in Audio Analog Stereo:monitor_FL Built-in Audio Analog Stereo Monitor:monitor_FL Built-in Audio Analog Stereo:playback_FR Built-in Audio Analog Stereo:playback_FR Built-in Audio Analog Stereo:monitor_FR Built-in Audio Analog Stereo Monitor:monitor_FR
jack.show-midi
jack.short-name
jack.short-name = true jack.short-name = false HDA Intel PCH:playback_FL Built-in Audio Analog Stereo:playback_FL HDA Intel PCH Monitor:monitor_FL Built-in Audio Analog Stereo Monitor:monitor_FL HDA Intel PCH:playback_FR Built-in Audio Analog Stereo:playback_FR HDA Intel PCH Monitor:monitor_FR Built-in Audio Analog Stereo Monitor:monitor_FR
jack.filter-name
jack.filter-char
jack.self-connect-mode
Value Behavior allow Don't restrict self connect requests. fail-external Fail self connect requests to external ports only. ignore-external Ignore self connect requests to external ports only. fail-all Fail all self connect requests. ignore-all Ignore all self connect requests.
jack.locked-process
jack.default-as-system
jack.default-as-system = false jack.default-as-system = true HDA Intel PCH:playback_FL system:playback_1 HDA Intel PCH Monitor:monitor_FL system:monitor_1 HDA Intel PCH:playback_FR system:playback_2 HDA Intel PCH Monitor:monitor_FR system:monitor_2
jack.fix-midi-events
jack.global-buffer-size
jack.passive-links
jack.max-client-ports
jack.fill-aliases
jack.writable-input
Set this to true to avoid buffer corruption if you are only dealing with non-buggy clients.
MATCH RULES¶
jack.rules provides an update-props action that takes an object with properties that are updated on the client and node object of the jack client.
Add a jack.rules section in the config file like this:
# ~/.config/pipewire/jack.conf.d/custom.conf jack.rules = [
{
matches = [
{
# all keys must match the value. ! negates. ~ starts regex.
application.process.binary = "jack_simple_client"
}
]
actions = {
update-props = {
node.latency = 512/48000
}
}
}
{
matches = [
{
client.name = "catia"
}
]
actions = {
update-props = {
jack.merge-monitor = true
}
}
} ]
Will set the latency of jack_simple_client to 512/48000 and makes Catia see
the monitor client merged with the playback client.
ENVIRONMENT VARIABLES¶
See pipewire(1) for common environment variables. Many of these also apply to JACK client applications.
Environment variables can be used to control the behavior of the PipeWire JACK client library.
PIPEWIRE_NOJACK
PIPEWIRE_INTERNAL
PIPEWIRE_PROPS
> PIPEWIRE_PROPS='{ jack.short-name=true jack.merge-monitor=true }' jack_lsp ... HDA Intel PCH:playback_FL HDA Intel PCH:monitor_FL HDA Intel PCH:playback_FR HDA Intel PCH:monitor_FR ...
PIPEWIRE_LATENCY
PIPEWIRE_LATENCY=<samples>/<rate> <application>
A quick way to configure the maximum buffer-size for a client. It will run
this client with the specified buffer-size (or smaller).
PIPEWIRE_LATENCY=256/48000 jack_lsp is equivalent to `PIPEWIRE_PROPS='{ node.latency=256/48000 }' jack_lsp`
A better way to start a jack session in a specific buffer-size is to force it with:
pw-metadata -n settings 0 clock.force-quantum <quantum>
This always works immediately and the buffer size will not change until the
quantum is changed back to 0.
PIPEWIRE_RATE
PIPEWIRE_RATE=1/<rate> <application>
A quick way to configure the rate of the graph. It will try to switch the samplerate of the graph. This can usually only be done with the graph is idle and the rate is part of the allowed sample rates.
PIPEWIRE_RATE=1/48000 jack_lsp is equivalent to `PIPEWIRE_PROPS='{ node.rate=1/48000 }' jack_lsp`
A better way to start a jack session in a specific rate is to force the rate with:
pw-metadata -n settings 0 clock.force-rate <rate>
This always works and the samplerate does not need to be in the allowed
rates. The rate will also not change until it is set back to 0.
PIPEWIRE_QUANTUM
PIPEWIRE_QUANTUM=<buffersize>/<rate> <application>
Is similar to using PIPEWIRE_LATENCY=<buffersize>/<rate> and PIPEWIRE_RATE=1/<rate> (see above), except that it is not just a suggestion but it actively forces the graph to change the rate and quantum. It can be used to set both a buffersize and samplerate at the same time.
When 2 applications force a quantum, the last one wins. When the winning app is stopped, the quantum of the previous app is restored.
PIPEWIRE_LINK_PASSIVE
PIPEWIRE_LINK_PASSIVE=true qjackctl
Make this client create passive links only. All links created by the client
will be marked passive and will not keep the sink/source busy.
You can use this to link filters to devices. When there is no client connected to the filter, only passive links remain between the filter and the device and the device will become idle and suspended.
PIPEWIRE_NODE
PIPEWIRE_NODE=<id> <application>
Will sort the ports so that only the ports of the node with <id> are
listed. You can use this to force an application to only deal with the ports
of a certain node, for example when auto connecting.
AUTHORS¶
The PipeWire Developers <https://gitlab.freedesktop.org/pipewire/pipewire/issues>; PipeWire is available from <https://pipewire.org>
SEE ALSO¶
1.2.6 | PipeWire |