PipeWire
To use PipeWire, install the pipewire
package.
pipewire(1) should be started as a user. Run the pipewire command in a terminal emulator in your session.
$ pipewire
When pipewire works as expected, use the autostarting mechanism of your desktop
environment or startx. The pipewire
package ships Desktop
Entry files
for pipewire
and pipewire-pulse
in /usr/share/applications
. If your
environment supports the Desktop Application Autostart
Specification,
you can enable pipewire by symlinking the desktop files to the autostart
directory:
# ln -s /usr/share/applications/pipewire.desktop /etc/xdg/autostart/pipewire.desktop
Session Management
In PipeWire, a session manager assumes responsibility for interconnecting media
sources and sinks as well as enforcing routing policy. Without a session
manager, PipeWire will not function. The reference
pipewire-media-session
was originally provided in the Void pipewire
package and configured to run by
default to satisfy this requirement. However, pipewire-media-session
is
deprecated and the authors recommend using
WirePlumber in its place.
Install the wireplumber
package to use this session manager with PipeWire.
If you have installed an earlier version of the Void
pipewire
package, make sure to update your system to eliminate any stale system configuration that may attempt to launchpipewire-media-session
. Users who previously overrode the system configuration to usewireplumber
, e.g. by placing a custompipewire.conf
file in/etc/pipewire
or${XDG_CONFIG_HOME}/pipewire
, may wish to reconcile these overrides with/usr/share/pipewire/pipewire.conf
installed by the most recentpipewire
package. If the sole purpose of a prior override was to disablepipewire-media-session
, deleting the custom configuration may be sufficient.
There are several methods for starting wireplumber
alongside pipewire
. If
your window manager or desktop environment auto-start mechanism is used to start
pipewire
, it is recommended to use the same mechanism for starting
wireplumber
. The wireplumber
package includes a wireplumber.desktop
Desktop Entry file that may be useful in this situation.
Be aware that
wireplumber
must launch after thepipewire
executable. The Desktop Application Autostart Specification makes no provision for ordering of services started via Desktop Entry files. When relying on these files to launchpipewire
andwireplumber
, consult the documentation for your window manager or desktop environment to determine whether proper ordering of services can be achieved.
If proper ordering of separate pipewire
and wireplumber
services is
infeasible, it is possible to configure pipewire
to launch the session manager
directly. This can be accomplished by running
# mkdir -p /etc/pipewire/pipewire.conf.d
# ln -s /usr/share/examples/wireplumber/10-wireplumber.conf /etc/pipewire/pipewire.conf.d/
for system configurations or, for per-user configurations, running
$ true "${XDG_CONFIG_HOME:=${HOME}/.config}"
$ mkdir -p "${XDG_CONFIG_HOME}/pipewire/pipewire.conf.d"
# ln -s /usr/share/examples/wireplumber/10-wireplumber.conf "${XDG_CONFIG_HOME}/pipewire/pipewire.conf.d/"
With either of these configurations, launching pipewire
should be sufficient
to establish a working PipeWire session that uses wireplumber
for session
management.
In its default configuration, WirePlumber requires an active D-Bus
session. If your desktop environment or window
manager is configured to provide a D-Bus session as well as launch pipewire
and wireplumber
, no further configuration should be required. Users wishing to
launch pipewire
on its own, e.g., in a .xinitrc
script, may find it
necessary to configure pipewire
to launch wireplumber
directly and wrap the
pipewire
invocation as
dbus-run-session pipewire
PulseAudio replacement
Before starting pipewire-pulse
, make sure that the PulseAudio service is
disabled and that no other PulseAudio
server instance is running.
Start the PulseAudio server by running pipewire-pulse
in a terminal emulator.
To check if the replacement is working correctly, use
pactl(1) (provided by the
pulseaudio-utils
package):
$ pactl info
[...]
Server Name: PulseAudio (on PipeWire 0.3.18)
[...]
Once you confirmed that pipewire-pulse
works as expected, it's recommended to
autostart it from the same place where you start PipeWire. Alternatively, the
pipewire
configuration can be modified to launch pipewire-pulse
directly:
# mkdir -p /etc/pipewire/pipewire.conf.d
# ln -s /usr/share/examples/pipewire/20-pipewire-pulse.conf /etc/pipewire/pipewire.conf.d/
for system configurations, or
$ true "${XDG_CONFIG_HOME:=${HOME}/.config}"
$ mkdir -p "${XDG_CONFIG_HOME}/pipewire/pipewire.conf.d"
# ln -s /usr/share/examples/pipewire/20-pipewire-pulse.conf "${XDG_CONFIG_HOME}/pipewire/pipewire.conf.d/"
for per-user configurations.
Bluetooth audio
For bluetooth audio to work, install the libspa-bluetooth
package.
ALSA integration
Install alsa-pipewire
, then enable the PipeWire ALSA device and make it the
default:
# mkdir -p /etc/alsa/conf.d
# ln -s /usr/share/alsa/alsa.conf.d/50-pipewire.conf /etc/alsa/conf.d
# ln -s /usr/share/alsa/alsa.conf.d/99-pipewire-default.conf /etc/alsa/conf.d
JACK replacement
Install libjack-pipewire
.
Use pw-jack(1) to launch JACK clients manually:
$ pw-jack <application>
Alternatively, override the library provided by libjack
(see
ld.so(8)). The following approach will work
on glibc-based systems:
# echo "/usr/lib/pipewire-0.3/jack" > /etc/ld.so.conf.d/pipewire-jack.conf
# ldconfig
Troubleshooting
The PulseAudio replacement requires the
XDG_RUNTIME_DIR
environment
variable to work correctly.