---
name: "wireplumber"
section: "1"
platform: "linux"
package: "wireplumber"
version: "0.5.18-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/wireplumber"
---

# wireplumber(1)

PipeWire Session Manager

## NAME

wireplumber - PipeWire Session Manager

## 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 \<#daemon-multi-instance\>.

- **-v**, **--version**

  Print the version and exit.

## ENVIRONMENT

- **WIREPLUMBER\_DEBUG**

  Sets the log level and per-topic log levels. See Debug Logging \<#daemon-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 \<#daemon-file-locations\> 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)](/sysexits.h/3head.md):

- **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)](/wpctl/1.md), [**wpexec**(1)](/wpexec/1.md), [**pipewire**(1)](/pipewire/1.md), [**pw-cli**(1)](/pw-cli/1.md), [**pw-dump**(1)](/pw-dump/1.md), [**sysexits.h**(3head)](/sysexits.h/3head.md)

WirePlumber Documentation: \<https://pipewire.pages.freedesktop.org/wireplumber/\>

## Author

The WirePlumber Developers

## Copyright

2020-2025, Collabora & contributors
