mirror of
https://gitlab.freedesktop.org/pipewire/wireplumber.git
synced 2025-12-20 04:10:03 +01:00
docs: add wpctl man page and Tools documentation section
Add comprehensive wpctl documentation that generates both HTML docs and an installable man page from a single RST source. Closes: #825 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
1bde4f2cdf
commit
a5e58536dd
6 changed files with 349 additions and 0 deletions
|
|
@ -6,6 +6,10 @@ author = 'Collabora'
|
||||||
release = '@VERSION@'
|
release = '@VERSION@'
|
||||||
version = '@VERSION@'
|
version = '@VERSION@'
|
||||||
|
|
||||||
|
# -- General configuration ---------------------------------------------------
|
||||||
|
|
||||||
|
smartquotes = False
|
||||||
|
|
||||||
# -- Breathe configuration ---------------------------------------------------
|
# -- Breathe configuration ---------------------------------------------------
|
||||||
|
|
||||||
extensions = [
|
extensions = [
|
||||||
|
|
@ -43,3 +47,9 @@ html_css_files = ['custom.css']
|
||||||
graphviz_output_format = "svg"
|
graphviz_output_format = "svg"
|
||||||
|
|
||||||
pygments_style = "friendly"
|
pygments_style = "friendly"
|
||||||
|
|
||||||
|
# -- Options for manual page output -----------------------------------------
|
||||||
|
|
||||||
|
man_pages = [
|
||||||
|
('tools/wpctl', 'wpctl', 'WirePlumber Control CLI', ['The WirePlumber Developers'], 1)
|
||||||
|
]
|
||||||
|
|
|
||||||
|
|
@ -102,6 +102,26 @@ if build_doc
|
||||||
install_dir: wireplumber_doc_dir,
|
install_dir: wireplumber_doc_dir,
|
||||||
build_by_default: true,
|
build_by_default: true,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Generate man pages directory with sphinx
|
||||||
|
custom_target('manpages',
|
||||||
|
command: [sphinx_p,
|
||||||
|
'-q', # quiet
|
||||||
|
'-E', # rebuild from scratch
|
||||||
|
'-b', 'man', # man page builder
|
||||||
|
'-d', '@PRIVATE_DIR@', # doctrees dir
|
||||||
|
'-c', '@OUTDIR@', # conf.py dir
|
||||||
|
'@CURRENT_SOURCE_DIR@/rst', # source dir
|
||||||
|
'@OUTDIR@', # output directory
|
||||||
|
],
|
||||||
|
depend_files: [
|
||||||
|
sphinx_conf, sphinx_files,
|
||||||
|
],
|
||||||
|
output: ['wpctl.1'],
|
||||||
|
install: true,
|
||||||
|
install_dir: get_option('mandir') / 'man1',
|
||||||
|
build_by_default: true,
|
||||||
|
)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Build GObject introspection
|
# Build GObject introspection
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,12 @@ Table of Contents
|
||||||
scripting/existing_scripts.rst
|
scripting/existing_scripts.rst
|
||||||
scripting/custom_scripts.rst
|
scripting/custom_scripts.rst
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
:caption: Tools
|
||||||
|
|
||||||
|
tools/wpctl.rst
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
:caption: Resources
|
:caption: Resources
|
||||||
|
|
|
||||||
|
|
@ -8,4 +8,5 @@ subdir('design')
|
||||||
subdir('policies')
|
subdir('policies')
|
||||||
subdir('library')
|
subdir('library')
|
||||||
subdir('scripting')
|
subdir('scripting')
|
||||||
|
subdir('tools')
|
||||||
subdir('resources')
|
subdir('resources')
|
||||||
|
|
|
||||||
3
docs/rst/tools/meson.build
Normal file
3
docs/rst/tools/meson.build
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
sphinx_files += files(
|
||||||
|
'wpctl.rst',
|
||||||
|
)
|
||||||
309
docs/rst/tools/wpctl.rst
Normal file
309
docs/rst/tools/wpctl.rst
Normal file
|
|
@ -0,0 +1,309 @@
|
||||||
|
wpctl(1)
|
||||||
|
========
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
--------
|
||||||
|
|
||||||
|
**wpctl** [*COMMAND*] [*COMMAND_OPTIONS*]
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
|
||||||
|
**wpctl** is a command-line control tool for WirePlumber, the PipeWire session
|
||||||
|
manager. It provides an interface to inspect, control, and configure audio and
|
||||||
|
video devices, nodes, and their properties within a PipeWire media server.
|
||||||
|
|
||||||
|
WirePlumber manages audio and video routing, device configuration, and session
|
||||||
|
policies. **wpctl** allows users to interact with these components, change
|
||||||
|
volume levels, set default devices, inspect object properties, and modify
|
||||||
|
settings.
|
||||||
|
|
||||||
|
COMMANDS
|
||||||
|
--------
|
||||||
|
|
||||||
|
status
|
||||||
|
^^^^^^
|
||||||
|
|
||||||
|
**wpctl status** [**-k**\|\ **--nick**] [**-n**\|\ **--name**]
|
||||||
|
|
||||||
|
Displays the current state of objects in PipeWire, including devices, sinks,
|
||||||
|
sources, filters, and streams. Shows a hierarchical view of the audio/video
|
||||||
|
system.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
**-k**, **--nick**
|
||||||
|
Display device and node nicknames instead of descriptions
|
||||||
|
**-n**, **--name**
|
||||||
|
Display device and node names instead of descriptions
|
||||||
|
|
||||||
|
get-volume
|
||||||
|
^^^^^^^^^^
|
||||||
|
|
||||||
|
**wpctl get-volume** *ID*
|
||||||
|
|
||||||
|
Displays volume information about the specified node, including current volume
|
||||||
|
level and mute state.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
*ID*
|
||||||
|
Node ID or special identifier (see `SPECIAL IDENTIFIERS`_)
|
||||||
|
|
||||||
|
inspect
|
||||||
|
^^^^^^^
|
||||||
|
|
||||||
|
**wpctl inspect** *ID* [**-r**\|\ **--referenced**] [**-a**\|\ **--associated**]
|
||||||
|
|
||||||
|
Displays detailed information about the specified object, including all
|
||||||
|
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 require auto-connection.
|
||||||
|
|
||||||
|
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*\ [**%**]\ [**-**\|\ **+**]
|
||||||
|
Volume specification:
|
||||||
|
|
||||||
|
- *VOL* - Set volume to specific value (1.0 = 100%)
|
||||||
|
- *VOL*\ **%** - Set volume to 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**
|
||||||
|
Treat ID as a process ID and affect all nodes associated with it
|
||||||
|
**-l** *LIMIT*, **--limit** *LIMIT*
|
||||||
|
Limit 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 current state
|
||||||
|
|
||||||
|
Options:
|
||||||
|
**-p**, **--pid**
|
||||||
|
Treat ID as 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 given index.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
*ID*
|
||||||
|
Device ID or special identifier
|
||||||
|
*INDEX*
|
||||||
|
Profile index (integer, 0 typically means 'off')
|
||||||
|
|
||||||
|
set-route
|
||||||
|
^^^^^^^^^
|
||||||
|
|
||||||
|
**wpctl set-route** *ID* *INDEX*
|
||||||
|
|
||||||
|
Sets the route of the specified device to the given index.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
*ID*
|
||||||
|
Device node ID or special identifier
|
||||||
|
*INDEX*
|
||||||
|
Route index (integer, 0 typically means 'off')
|
||||||
|
|
||||||
|
clear-default
|
||||||
|
^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
**wpctl clear-default** [*ID*]
|
||||||
|
|
||||||
|
Clears the default configured node. If no ID is specified, clears all default
|
||||||
|
nodes.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
*ID* (optional)
|
||||||
|
Settings ID to clear (0-2 for 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 (no KEY means delete all)
|
||||||
|
**-s**, **--save**
|
||||||
|
Save the setting value (no KEY means save all, no VAL means current value)
|
||||||
|
**-r**, **--reset**
|
||||||
|
Reset the setting to its default value
|
||||||
|
|
||||||
|
Behavior:
|
||||||
|
- No arguments: Show all settings
|
||||||
|
- KEY only: Show specific setting value
|
||||||
|
- KEY and VAL: 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. Use 0 for 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.
|
||||||
|
|
||||||
|
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 are resolved at runtime to the appropriate node IDs.
|
||||||
|
|
||||||
|
EXIT STATUS
|
||||||
|
-----------
|
||||||
|
|
||||||
|
**wpctl** returns the following exit codes:
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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
|
||||||
|
--------
|
||||||
|
|
||||||
|
**pipewire**\ (1), **pw-cli**\ (1), **pw-dump**\ (1), **wireplumber**\ (1)
|
||||||
|
|
||||||
|
WirePlumber Documentation: https://pipewire.pages.freedesktop.org/wireplumber/
|
||||||
Loading…
Add table
Reference in a new issue