WPCTL(1)
π WPCTL(1) β WirePlumber Control CLI, bestie edition β¨
okay so this is wpctl, the command-line control tool from the WirePlumber fam (that's the PipeWire session manager, iykyk) π
πΈ SYNOPSIS πΈ
wpctl [COMMAND] [COMMAND_OPTIONS]
β¨ DESCRIPTION β¨
wpctl is literally a command-line control tool for WirePlumber, the PipeWire session manager. It gives you a whole interface to inspect, control, and configure audio and video devices, nodes, and their properties inside a PipeWire media server π¦
So like, WirePlumber handles the audio and video routing, the device configuration, and the session policies β all that backstage main-character work. And wpctl is your little front-row pass to talk to all of it: change volume levels, set default devices, peek at object properties, tweak settings. No cap, it's giving backstage access π
π COMMANDS π
π«Ά status
wpctl status [-k|--nick] [-n|--name]
Shows you the current state of everything in PipeWire β devices, sinks, sources, filters, and streams. You get a whole hierarchical view of the audio/video system. It's the vibe check for your entire setup οΏ½
Options:
-k,--nickβ display device and node nicknames instead of descriptions π·οΈ-n,--nameβ display device and node names instead of descriptions π·οΈ
π«Ά list
wpctl list [audio|video] [devices|sinks|sources]
Shows a machine-readable list of PipeWire objects, and you can filter by media type and object type if you want. Every line of output has tab-separated fields: the object ID, the name, the media type/object type, and a * marker if that node is the current default β
Arguments:
audio|video(optional) β filter by media type π§πΉdevices|sinks|sources(optional) β filter by object type (heads up: this one requires you to specify the media type first) π¨
π«Ά get-volume
wpctl get-volume ID
Shows volume info about the node you point at β the current volume level and the mute state π
Arguments:
IDβ node ID or a special identifier (go look at SPECIAL IDENTIFIERS below, bestie) π§
π«Ά inspect
wpctl inspect ID [-r|--referenced] [-a|--associated]
Shows you the detailed tea on the specified object β all the properties and metadata ββ¨
Arguments:
IDβ object ID or special identifier π
Options:
-r,--referencedβ show objects that are referenced in properties π-a,--associatedβ show associated objects π§©
π«Ά set-default
wpctl set-default ID
Sets the specified device node to be the default target of its kind (capture or playback) for new streams that need auto-connection π
The selection is remembered across restarts, in the default-nodes state file <#state-locations>, and it takes precedence over the automatic, priority-based selection that WirePlumber would otherwise make. Use clear-default to undo it π
Arguments:
IDβ sink or source node ID π―
π«Ά set-volume
wpctl set-volume ID VOL[%][-|+] [-p|--pid] [-l LIMIT|--limit LIMIT]
Sets the volume of the specified node π
Arguments:
IDβ node ID, special identifier, or PID (with--pid) πͺͺVOL[%][-|+]β the volume specification:VOLβ set volume to a specific value (1.0= 100%) π―VOL%β set volume to a percentage (50%=0.5) π°VOL+β increase volume by value β¬οΈVOL-β decrease volume by value β¬οΈVOL%+β increase volume by percentage πVOL%-β decrease volume by percentage π
Options:
-p,--pidβ treatIDas a process ID and affect all nodes associated with it π§¬-l LIMIT,--limit LIMITβ limit the final volume to below this value (floating point,1.0= 100%) π§
Examples:
Set volume to 50%: wpctl set-volume @DEFAULT_SINK@ 0.5
Increase volume by 10%: wpctl set-volume 42 10%+
Set volume for all nodes of PID 1234: wpctl set-volume --pid 1234 0.8
π«Ά set-mute
wpctl set-mute ID 1|0|toggle [-p|--pid]
Changes the mute state of the specified node π€«
Arguments:
IDβ node ID, special identifier, or PID (with--pid) πͺͺ1|0|toggleβ mute state:1(mute),0(unmute), or toggle the current state π
Options:
-p,--pidβ treatIDas a process ID and affect all nodes associated with it π§¬
π«Ά set-profile
wpctl set-profile ID INDEX
Sets the profile of the specified device to the index you give it ποΈ
Arguments:
IDβ device ID or special identifier πͺͺINDEXβ profile index (integer,0typically means'off') π«
π«Ά set-route
wpctl set-route ID INDEX
Sets the route of the specified device to the index you give it π€οΈ
Arguments:
IDβ device node ID or special identifier πͺͺINDEXβ route index (integer,0typically means'off') π«
π«Ά clear-default
wpctl clear-default [ID]
Clears the default configured node. If you don't give it an ID, it clears all the default nodes π§Ή
This forgets the current and all previous set-default selections of that kind, so WirePlumber goes back to choosing the default node automatically, based on the priority.session property of each node. It's needed whenever a configured priority appears to have no effect β because a saved selection outranks any priority. The saved selections are listed in the "Default Configured Devices" section of status π
Arguments:
ID(optional) β settings ID to clear (0-2for Audio/Sink, Audio/Source, Video/Source). If omitted, clears all defaults π
π«Ά settings
wpctl settings [KEY] [VAL] [-d|--delete] [-s|--save] [-r|--reset]
Shows, changes, or removes WirePlumber settings βοΈ
Arguments:
KEY(optional) β setting key name πVAL(optional) β setting value (JSON format) π¦
Options:
-d,--deleteβ delete the saved setting value (noKEYmeans delete all) ποΈ-s,--saveβ save the setting value (noKEYmeans save all, noVALmeans current value) πΎ-r,--resetβ reset the setting to its default value π
Behavior:
- No arguments: show all settings π
KEYonly: show specific setting value πKEYandVAL: set specific setting value βοΈ
π«Ά set-log-level
wpctl set-log-level [ID] LEVEL
Sets the log level of a client π
Arguments:
ID(optional) β client ID. If omitted, applies to WirePlumber. Use0for the PipeWire server. π₯οΈLEVELβ log level (e.g.,0,1,2,3,4,5,E,W,N,I,D,T). Use-to unset the log level. ποΈ
π«Ά reset
wpctl reset [-c|--wireplumber-config] [-p|--pipewire-config] [-a|--all]
[-n|--no-restart] [-d|--dry-run] [-y|--yes]
Resets WirePlumber (and optionally PipeWire) to defaults by removing state and configuration files π§Ό By default, only the WirePlumber state directory (~/.local/state/wireplumber) is removed. WirePlumber is automatically stopped before removal and restarted afterwards β unless you give --no-restart. A confirmation prompt is shown before any files are deleted, unless you give --yes β οΈ
This command does not require a running PipeWire session π«π§
Options:
-c,--wireplumber-configβ also remove WirePlumber user configuration files (~/.config/wireplumber) ποΈ-p,--pipewire-configβ also remove PipeWire user configuration files (~/.config/pipewire) and restart the PipeWire service π-a,--allβ remove all state and configuration files (equivalent to combining-cand-p) π₯-n,--no-restartβ do not stop or restart services after removing files π-d,--dry-runβ show which files would be deleted without actually deleting anything or restarting services π»-y,--yesβ proceed without prompting for confirmation β
π§ SPECIAL IDENTIFIERS π§
Instead of numeric IDs, wpctl accepts these special identifiers for commonly used defaults:
@DEFAULT_SINK@,@DEFAULT_AUDIO_SINK@β the current default audio sink (playback device) π@DEFAULT_SOURCE@,@DEFAULT_AUDIO_SOURCE@β the current default audio source (capture device) ποΈ@DEFAULT_VIDEO_SOURCE@β the current default video source (camera) πΉ
These identifiers get resolved at runtime to the appropriate node IDs β¨
π EXIT STATUS π
wpctl returns these exit codes, so you know what's up:
0β success π1β general error (e.g., invalid arguments, connection failure) π¬2β could not connect to PipeWire π3β command-specific error (e.g., object not found) π΅οΈ
π EXAMPLES π
Display system status:
wpctl status
Set default audio sink:
wpctl set-default 42
Set volume to 75% on default sink:
wpctl set-volume @DEFAULT_SINK@ 75%
Increase volume by 5% on a specific node:
wpctl set-volume 42 5%+
Mute the default source:
wpctl set-mute @DEFAULT_SOURCE@ 1
Toggle mute on default sink:
wpctl set-mute @DEFAULT_SINK@ toggle
Inspect a device with associated objects:
wpctl inspect --associated 30
Show all WirePlumber settings:
wpctl settings
Set a specific setting:
wpctl settings bluetooth.autoswitch true
Save all current settings:
wpctl settings --save
Set log level for WirePlumber to debug:
wpctl set-log-level D
Set log level for a specific client:
wpctl set-log-level 42 W
List all audio sinks:
wpctl list audio sinks
Reset WirePlumber state (dry run):
wpctl reset --dry-run
Reset WirePlumber state and config without prompting:
wpctl reset --wireplumber-config --yes
Reset everything (WirePlumber and PipeWire state and config):
wpctl reset --all
π NOTES π
Object IDs can be found using the status command β the hierarchical display shows IDs for devices, nodes, and other objects π
Volume values are floating-point numbers where 1.0 represents 100% volume. Values can exceed 1.0 to introduce volume amplification π₯ (yes bestie, that's how you go past 100%)
When using the --pid option, wpctl will find all audio nodes associated with the specified process ID and apply the operation to all of them π§¬π
π¦ SEE ALSO π¦
wireplumber(1), wpexec(1), pipewire(1), pw-cli(1), pw-dump(1)
WirePlumber Documentation: <https://pipewire.pages.freedesktop.org/wireplumber/>
Author
The WirePlumber Developers π
Copyright
2020-2025, Collabora & contributors Β©οΈ
and that's the whole page, bestie β version 0.5.18, dated Sep 30, 2026, brought to you by the WirePlumber girlies. go forth and slay your audio routing πβ¨π
π¦ 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