WIREPLUMBER(1)
π NAME
okay so bestie, meet wireplumber β the PipeWire Session Manager β¨ (yes that's the whole name, and yes this is the WirePlumber(1) page, hi, welcome, come in π«Ά)
π SYNOPSIS
wireplumber [-c|--config-file=FILE] [-p|--profile=PROFILE]
[-v|--version]
πΈ DESCRIPTION
So wireplumber is the WirePlumber daemon, right? It's a modular session and policy manager for PipeWire. And here's the iconic plot twist: by itself it does literally nothing except load the components listed in the selected profile π Like, that's it. That's the whole job. All the actual management logic β bringing up devices, linking streams, granting permissions to clients β is implemented in those components. The daemon is giving main character energy, but the components are the ones doing the work. iykyk π
And ngl, you're normally not supposed to start it by hand at all β it's started as a systemd user service. So do this instead:
$ systemctl --user status wireplumber
β¨ OPTIONS
-c,--config-file=FILEβ use FILE as the main configuration file instead ofwireplumber.conf. And bestie, the correspondingFILE.d/fragment directory gets loaded too π-p,--profile=PROFILEβ load PROFILE instead of the defaultmainprofile. This is how a second instance gets started with only part of the functionality; check out Running multiple instances <#daemon-multi-instance> π-v,--versionβ print the version and exit. that's it, that's the whole flag π
π¦ 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, bestie β there's a whole lore drop there π
π FILES
okay so configuration files are looked up in these directories, listed here from the highest to the lowest priority:
$XDG_CONFIG_HOME/wireplumber/β user configuration;~/.config/wireplumber/unless$XDG_CONFIG_HOMEis set π$XDG_CONFIG_DIRS/wireplumber/β host-specific configuration;/etc/xdg/wireplumber/unless$XDG_CONFIG_DIRSis 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_DIRSis 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. Careful though π 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. slay, hierarchy π
π scripts & data files
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_HOMEis set π«Ά$XDG_DATA_DIRS/wireplumber/β host-specific scripts;/usr/local/share/wireplumber/and/usr/share/wireplumber/unless$XDG_DATA_DIRSis set/usr/share/wireplumber/β the scripts that ship with WirePlumber, in the compile-time$datadirπΈ
π the remaining locations
heads up, these ones are not searched in any order, bestie. no ranking, no priority, just vibes:
/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_HOMEis set π
π₯ EXIT STATUS
Exit codes follow the conventions of sysexits.h(3head), so here's the whole roster:
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/> β¨
π Author
The WirePlumber Developers π«Ά
π Copyright
2020-2025, Collabora & contributors
okay that's the whole page, no cap π
this was WIREPLUMBER(1), version 0.5.18, dated Sep 30, 2026 β go forth and manage those sessions, bestie, you're literally gonna slay πβ
π¦ where this page comes from
- arch rolling: wireplumber 0.5.18-1 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms