wireplumber/docs/rst/daemon/running.rst
Guido Günther 6398bf1bce docs: Switch to build directory for run invocation
There's no `Makefile` in the top level build directory so
switch to the build dir.

Signed-off-by: Guido Günther <agx@sigxcpu.org>
2025-11-24 23:23:51 +01:00

152 lines
4.7 KiB
ReStructuredText

.. _daemon_running:
Running the WirePlumber daemon
==============================
Systemd
-------
WirePlumber comes with a systemd unit, ``wireplumber.service``, which should
be enabled on your user session:
.. code:: console
$ systemctl --user --now enable wireplumber
.. note::
On non-systemd systems, you just need to ensure that wireplumber is started
after pipewire.
Run from the PipeWire source tree
---------------------------------
PipeWire's build system comes with an option to build WirePlumber together
with PipeWire and allows executing them together without installing either of
them.
To make this work, configure PipeWire with the
``-Dsession-managers="[ 'wireplumber' ]"`` option on the meson command line.
When compiling PipeWire, the build system will now also clone and compile
WirePlumber as a subproject.
To execute the whole stack without installing, simply execute ``make run``
after compiling.
Synopsis:
.. code:: console
$ meson -Dsession-managers="[ 'wireplumber' ]" build
$ ninja -C build
$ make -C build run
Run independently or without installing
---------------------------------------
If you wish to debug WirePlumber, it may be useful to run it separately from
PipeWire or run it directly from the source tree without installing.
To do so:
1. Ensure that neither *WirePlumber* nor *pipewire-media-session*
are running or started together with PipeWire
- If any of those is started by systemd,
- Stop the relevant systemd service, ``wireplumber.service``
or ``pipewire-media-session.service``
- Disable that service as well if you intend to restart PipeWire
(so that the session manager is not restarted with it)
- If any of those is started from pipewire.conf,
- Kill it, in order to stop it temporarily: ``killall wireplumber``
or ``killall pipewire-media-session``
- Comment out with ``#`` the relevant ``{ path = "..." args = "" }``
line from the ``context.exec`` section in ``pipewire.conf``,
if you intend to restart PipeWire
2. Ensure that PipeWire is running
3. Without stopping PipeWire, run WirePlumber.
- if it is installed, execute ``wireplumber``
- if it is **not** installed, execute ``make run`` in the source tree,
or use the ``wp-uninstalled.sh`` script:
.. code:: console
$ ./wp-uninstalled.sh wireplumber
Replacing pipewire-media-session
--------------------------------
Older versions of PipeWire used to be distributed with an example session
manager (pipewire-media-session) that you needed to disable and replace with
WirePlumber.
.. warning::
These instructions are only relevant to older versions of PipeWire
systemd
^^^^^^^
In most cases, ``pipewire-media-session`` is started by a systemd service unit,
``pipewire-media-session.service``.
To switch to WirePlumber, you will first need to disable that service:
.. code:: console
$ systemctl --user --now disable pipewire-media-session
... and then, enable and use ``wireplumber.service`` in its place:
.. code:: console
$ systemctl --user --now enable wireplumber
pipewire.conf
^^^^^^^^^^^^^
On some systems, ``pipewire-media-session`` is not started by systemd, but it
is started by pipewire itself via a configuration option in ``pipewire.conf``
To switch to wireplumber, you will need to edit
**/etc/pipewire/pipewire.conf** in an existing installation or
**src/daemon/pipewire.conf.in** in the PipeWire git tree
and change the appropriate line in the ``exec`` section:
.. code:: diff
--- /etc/pipewire/pipewire.conf.bak
+++ /etc/pipewire/pipewire.conf
@@ -204,7 +204,7 @@ context.exec = [
# but it is better to start it as a systemd service.
# Run the session manager with -h for options.
#
- #{ path = "/usr/bin/pipewire-media-session" args = "" }
+ { path = "wireplumber" args = "" }
#
# You can optionally start the pulseaudio-server here as well
# but it is better to start it as a systemd service.
.. code:: diff
diff --git a/src/daemon/pipewire.conf.in b/src/daemon/pipewire.conf.in
index bbafa134..16ef687b 100644
--- a/src/daemon/pipewire.conf.in
+++ b/src/daemon/pipewire.conf.in
@@ -220,7 +220,7 @@ context.exec = [
# but it is better to start it as a systemd service.
# Run the session manager with -h for options.
#
- @comment@{ path = "@media_session_path@" args = "" }
+ { path = "wireplumber" args = "" }
#
# You can optionally start the pulseaudio-server here as well
# but it is better to start it as a systemd service.
This setup assumes that WirePlumber is *installed* on the target system.