# wireplumber(1)

## SYNOPSIS

wireplumber [-c|--config-file=FILE] [-p|--profile=PROFILE] [-v|--version]

## DESCRIPTION

wireplumber is the WirePlumber daemon, a modular session and policy manager for PipeWire. By itself it does nothing except load the components listed in the selected profile; all the actual management logic — bringing up devices, linking streams, granting permissions to clients — is implemented in those components.

It is normally started as a systemd user service rather than by hand:

    $ systemctl --user status wireplumber

## OPTIONS

-c, --config-file=FILE

  Use FILE as the main configuration file instead of `wireplumber.conf`. The corresponding `FILE.d/` fragment directory is loaded as well.

-p, --profile=PROFILE

  Load PROFILE instead of the default `main` profile. This is how a second instance is started with only part of the functionality; see Running multiple instances.

-v, --version

  Print the version and exit.

## ENVIRONMENT

WIREPLUMBER_DEBUG

  Sets the log level and per-topic log levels. See Debug Logging.

WIREPLUMBER_CONFIG_DIR

  Overrides the directory that is searched first for configuration files.

WIREPLUMBER_DATA_DIR

  Overrides the directory that is searched first for data files, such as scripts.

WIREPLUMBER_MODULE_DIR

  Overrides the directory that is searched first for modules.

See Locations of WirePlumber's files for the full search order of each of these.

## FILES

Configuration files are looked up in the following directories, listed here from the highest to the lowest priority:

$XDG_CONFIG_HOME`/wireplumber/`

  User configuration; `~/.config/wireplumber/` unless $XDG_CONFIG_HOME is set.

$XDG_CONFIG_DIRS`/wireplumber/`

  Host-specific configuration; `/etc/xdg/wireplumber/` unless $XDG_CONFIG_DIRS is set.

`/etc/wireplumber/`

  Host-specific configuration, in the compile-time $sysconfdir.

$XDG_DATA_DIRS`/wireplumber/`

  Distribution-provided configuration; `/usr/local/share/wireplumber/` and `/usr/share/wireplumber/` unless $XDG_DATA_DIRS is set.

`/usr/share/wireplumber/`

  Configuration that ships with WirePlumber, in the compile-time $datadir.

In each of these directories, `wireplumber.conf` is the main configuration file and `wireplumber.conf.d/*.conf` are fragments that are merged into it. Only the first `wireplumber.conf` that is found is loaded, but fragments are loaded from all the directories, in reverse order of priority, so that a fragment in a higher priority directory overrides the ones below it.

Scripts and other data files are looked up in a `scripts` subdirectory of the following directories, again from the highest to the lowest priority:

$XDG_DATA_HOME`/wireplumber/`

  User-provided scripts; `~/.local/share/wireplumber/` unless $XDG_DATA_HOME is set.

$XDG_DATA_DIRS`/wireplumber/`

  Host-specific scripts; `/usr/local/share/wireplumber/` and `/usr/share/wireplumber/` unless $XDG_DATA_DIRS is set.

`/usr/share/wireplumber/`

  The scripts that ship with WirePlumber, in the compile-time $datadir.

The remaining locations are not searched in any order:

`/usr/lib/wireplumber-0.5/`

  WirePlumber modules, in the compile-time $libdir. On multiarch systems this is `/usr/lib/`<arch-triplet>`/wireplumber-0.5/`. PipeWire and SPA modules are loaded from PipeWire's own module directories instead.

$XDG_STATE_HOME`/wireplumber/`

  Saved state: default nodes, device profiles and routes, stream properties and settings that were changed at runtime. This is `~/.local/state/wireplumber/` unless $XDG_STATE_HOME is set.

## EXIT STATUS

Exit codes follow the conventions of sysexits.h(3head):

0 (EX_OK)

  Success.

64 (EX_USAGE)

  Command line usage error.

69 (EX_UNAVAILABLE)

  A required service was unavailable; typically WirePlumber could not connect to PipeWire.

70 (EX_SOFTWARE)

  Internal software error.

78 (EX_CONFIG)

  Configuration error.

## SEE ALSO

wpctl(1), wpexec(1), pipewire(1), pw-cli(1), pw-dump(1), sysexits.h(3head)

WirePlumber Documentation: https://pipewire.pages.freedesktop.org/wireplumber/