summaryrefslogtreecommitdiffstats
path: root/man
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:28:17 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:28:17 +0000
commit7a46c07230b8d8108c0e8e80df4522d0ac116538 (patch)
treed483300dab478b994fe199a5d19d18d74153718a /man
parentInitial commit. (diff)
downloadpipewire-upstream/0.3.65.tar.xz
pipewire-upstream/0.3.65.zip
Adding upstream version 0.3.65.upstream/0.3.65upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--man/meson.build44
-rw-r--r--man/pipewire-pulse.1.rst.in48
-rw-r--r--man/pipewire.1.rst.in54
-rw-r--r--man/pipewire.conf.5.rst.in113
-rw-r--r--man/pw-cat.1.rst.in174
-rw-r--r--man/pw-cli.1.rst.in190
-rw-r--r--man/pw-dot.1.rst.in65
-rw-r--r--man/pw-jack.1.rst.in65
-rw-r--r--man/pw-link.1.rst.in139
-rw-r--r--man/pw-metadata.1.rst.in67
-rw-r--r--man/pw-mididump.1.rst.in49
-rw-r--r--man/pw-mon.1.rst.in46
-rw-r--r--man/pw-profiler.1.rst.in57
-rw-r--r--man/pw-top.1.rst.in178
14 files changed, 1289 insertions, 0 deletions
diff --git a/man/meson.build b/man/meson.build
new file mode 100644
index 0000000..a262fb8
--- /dev/null
+++ b/man/meson.build
@@ -0,0 +1,44 @@
+manpage_conf = configuration_data()
+manpage_conf.set('PACKAGE_NAME', meson.project_name())
+manpage_conf.set('PACKAGE_VERSION', meson.project_version())
+manpage_conf.set('PACKAGE_URL', 'https://pipewire.org')
+manpage_conf.set('PACKAGE_BUGREPORT', 'https://gitlab.freedesktop.org/pipewire/pipewire/issues')
+manpage_conf.set('PIPEWIRE_CONFIG_DIR', pipewire_configdir)
+manpage_conf.set('PIPEWIRE_CONFDATADIR', pipewire_confdatadir)
+
+manpages = [
+ 'pipewire.1.rst.in',
+ 'pipewire-pulse.1.rst.in',
+ 'pipewire.conf.5.rst.in',
+ 'pw-cat.1.rst.in',
+ 'pw-cli.1.rst.in',
+ 'pw-dot.1.rst.in',
+ 'pw-link.1.rst.in',
+ 'pw-metadata.1.rst.in',
+ 'pw-mididump.1.rst.in',
+ 'pw-mon.1.rst.in',
+ 'pw-profiler.1.rst.in',
+ 'pw-top.1.rst.in',
+]
+
+if get_option('pipewire-jack').allowed()
+ manpages += 'pw-jack.1.rst.in'
+endif
+
+if not generate_manpages
+ subdir_done()
+endif
+
+foreach m : manpages
+ file = m.split('.rst.in').get(0)
+ rst = configure_file(input : m,
+ output : file + '.rst',
+ configuration : manpage_conf)
+ section = file.split('.').get(-1)
+ custom_target(file + '.target',
+ output : file,
+ input : rst,
+ command : [rst2man, '@INPUT@', '@OUTPUT@'],
+ install : true,
+ install_dir : get_option('mandir') / 'man' + section)
+endforeach
diff --git a/man/pipewire-pulse.1.rst.in b/man/pipewire-pulse.1.rst.in
new file mode 100644
index 0000000..eed994b
--- /dev/null
+++ b/man/pipewire-pulse.1.rst.in
@@ -0,0 +1,48 @@
+pipewire-pulse
+##############
+
+-----------------------------------
+The PipeWire PulseAudio replacement
+-----------------------------------
+
+:Manual section: 1
+:Manual group: General Commands Manual
+
+SYNOPSIS
+========
+
+| **pipewire-pulse** [*options*]
+
+DESCRIPTION
+===========
+
+**pipewire-pulse** starts a PulseAudio-compatible daemon that integrates with
+the PipeWire media server. This daemon is a drop-in replacement for the
+PulseAudio daemon.
+
+OPTIONS
+=======
+
+-h | --help
+ Show help.
+
+-v | --verbose
+ Increase the verbosity by one level. This option may be specified multiple
+ times.
+
+--version
+ Show version information.
+
+-c | --config=FILE
+ Load the given config file (Default: pipewire-pulse.conf).
+
+AUTHORS
+=======
+
+The PipeWire Developers <@PACKAGE_BUGREPORT@>;
+PipeWire is available from @PACKAGE_URL@
+
+SEE ALSO
+========
+
+``pipewire(1)``
diff --git a/man/pipewire.1.rst.in b/man/pipewire.1.rst.in
new file mode 100644
index 0000000..8b63839
--- /dev/null
+++ b/man/pipewire.1.rst.in
@@ -0,0 +1,54 @@
+pipewire
+########
+
+-------------------------
+The PipeWire media server
+-------------------------
+
+:Manual section: 1
+:Manual group: General Commands Manual
+
+SYNOPSIS
+========
+
+| **pipewire** [*options*]
+
+DESCRIPTION
+===========
+
+PipeWire is a service that facilitates sharing of multimedia content
+between devices and applications.
+
+The **pipewire** daemon reads a config file that is further documented in
+``pipewire.conf(5)`` manual page.
+
+OPTIONS
+=======
+
+-h | --help
+ Show help.
+
+-v | --verbose
+ Increase the verbosity by one level. This option may be specified multiple
+ times.
+
+--version
+ Show version information.
+
+-c | --config=FILE
+ Load the given config file (Default: pipewire.conf).
+
+AUTHORS
+=======
+
+The PipeWire Developers <@PACKAGE_BUGREPORT@>;
+PipeWire is available from @PACKAGE_URL@
+
+SEE ALSO
+========
+
+``pw-top(1)``,
+``pw-dump(1)``,
+``pw-mon(1)``,
+``pw-cat(1)``,
+``pw-cli(1)``,
diff --git a/man/pipewire.conf.5.rst.in b/man/pipewire.conf.5.rst.in
new file mode 100644
index 0000000..3e3a954
--- /dev/null
+++ b/man/pipewire.conf.5.rst.in
@@ -0,0 +1,113 @@
+pipewire.conf
+#############
+
+--------------------------------------
+The PipeWire server configuration file
+--------------------------------------
+
+:Manual section: 5
+:Manual group: File Formats Manual
+
+.. _synopsis:
+
+SYNOPSIS
+========
+
+*$XDG_CONFIG_HOME/pipewire/pipewire.conf*
+
+*@PIPEWIRE_CONFIG_DIR@/pipewire.conf*
+
+*@PIPEWIRE_CONFDATADIR@/pipewire.conf*
+
+*@PIPEWIRE_CONFDATADIR@/pipewire.conf.d/*
+
+*@PIPEWIRE_CONFIG_DIR@/pipewire.conf.d/*
+
+*$XDG_CONFIG_HOME/pipewire/pipewire.conf.d/*
+
+DESCRIPTION
+===========
+
+PipeWire is a service that facilitates sharing of multimedia content
+between devices and applications.
+
+On startup, the daemon reads a main configuration file to configure
+itself. It executes a series of commands listed in the config
+file.
+
+The config files are loaded in the order listed in the SYNOPSIS_.
+The environment variables ``PIPEWIRE_CONFIG_DIR``, ``PIPEWIRE_CONFIG_PREFIX``
+and ``PIPEWIRE_CONFIG_NAME`` can be used to specify an alternative config
+directory, subdirectory and file respectively.
+
+Next to the configuration file can be a directory with the same name as
+the file with a ``.d/`` suffix. All directories in the SYNOPSIS_ directory
+search paths are traversed in the listed order and the contents of the
+``*.conf`` files inside them are appended to the main configuration file
+as overrides. Object sections are merged and array sections are appended.
+
+
+CONFIGURATION FILE FORMAT
+=========================
+
+The configuration file format is grouped into sections. A section
+is either a dictionary, {}, or an array, []. Dictionary and array
+entries are separated by whitespace and may be simple value
+assignment, an array or a dictionary. For example:
+
+name = value # simple assignment
+
+name = { key1 = value1 key2 = value2 } # a dictionary with two
+entries
+
+name = [ value1 value2 ] # an array with two entries
+
+name = [ { k = v1 } { k = v2 } ] # an array of dictionaries
+
+
+The configuration files can be expressed in full JSON syntax but for ease
+of use, a relaxed format may be used where:
+
+ * ``:`` to delimit keys and values can be substuted by ``=`` or a space.
+ * ``"`` around keys and string can be omited as long as no special characters
+ are used in the strings.
+ * ``,`` to separate objects can be replaced with a whitespace character.
+ * ``#`` can be used to start a comment until the line end
+
+
+CONFIGURATION FILE SECTIONS
+===========================
+
+context.properties
+ Dictionary. These properties configure the PipeWire instance.
+
+context.spa-libs
+ Dictionary. Maps plugin features with globs to a spa library.
+
+context.modules
+ Array of dictionaries. Each entry in the array is a dictionary with the *name* of the module to load,
+ including optional *args* and *flags*. Most modules support being loaded
+ multiple times.
+
+context.objects
+ Array of dictionaries. Each entry in the array is a dictionary containing the *factory* to create an
+ object from and optional extra arguments specific to that factory.
+
+context.exec
+ Array of dictionaries. Each entry in the array is dictionary containing the *path* of a program to
+ execute on startup and optional *args*.
+
+ This array used to contain an entry to start the session manager but this mode
+ of operation has since been demoted to development aid. Avoid starting a
+ session manager in this way in production environment.
+
+AUTHORS
+=======
+
+The PipeWire Developers <@PACKAGE_BUGREPORT@>; PipeWire is available from @PACKAGE_URL@
+
+SEE ALSO
+========
+
+``pipewire(1)``,
+``pw-mon(1)``,
diff --git a/man/pw-cat.1.rst.in b/man/pw-cat.1.rst.in
new file mode 100644
index 0000000..f8df95d
--- /dev/null
+++ b/man/pw-cat.1.rst.in
@@ -0,0 +1,174 @@
+pw-cat
+######
+
+-----------------------------------
+Play and record media with PipeWire
+-----------------------------------
+
+:Manual section: 1
+:Manual group: General Commands Manual
+
+SYNOPSIS
+========
+
+| **pw-cat** [*options*] [*FILE* \| -]
+| **pw-play** [*options*] [*FILE* \| -]
+| **pw-record** [*options*] [*FILE* \| -]
+| **pw-midiplay** [*options*] [*FILE* \| -]
+| **pw-midirecord** [*options*] [*FILE* \| -]
+| **pw-dsdplay** [*options*] [*FILE* \| -]
+
+DESCRIPTION
+===========
+
+**pw-cat** is a simple tool for playing back or
+capturing raw or encoded media files on a PipeWire
+server. It understands all audio file formats supported by
+``libsndfile`` for PCM capture and playback.
+
+It understands standard MIDI files for playback and recording. This tool
+will not render MIDI files, it will simply make the MIDI events available
+to the graph. You need a MIDI renderer such as qsynth, timidity or a hardware
+MIDI rendered to hear the MIDI.
+
+DSD playback is supported with the DSF file format. This tool will only work
+with native DSD capable hardware and will produce an error when no such
+hardware was found.
+
+When the *FILE* is - input and output will be from STDIN and
+STDOUT respectively.
+
+OPTIONS
+=======
+
+-h | --help
+ Show help.
+
+--version
+ Show version information.
+
+-v | --verbose
+ Verbose operation.
+
+-R | --remote=NAME
+ The name the *remote* instance to connect to. If left unspecified,
+ a connection is made to the default PipeWire instance.
+
+-p | --playback
+ Playback mode. Read data from the specified file, and play it back. If the tool
+ is called under the name **pw-play** or **pw-midiplay** this is the default.
+
+-r | --record
+ Recording mode. Capture data and write it to the specified file. If the tool is
+ called under the name **pw-record** or **pw-midirecord** this is the default.
+
+-m | --midi
+ MIDI mode. *FILE* is a MIDI file. If the tool is called under the name
+ **pw-midiplay** or **pw-midirecord** this is the default.
+ Note that this program will *not* render the MIDI events into audible samples,
+ it will simply provide the MIDI events in the graph. You need a separate
+ MIDI renderer such as qsynth, timidity or a hardware renderer to hear the MIDI.
+
+-d | --dsd
+ DSD mode. *FILE* is a DSF file. If the tool is called under the name
+ **pw-dsdplay** this is the default.
+ Note that this program will *not* render the DSD audio. You need a DSD capable
+ device to play DSD content or this program will exit with an error.
+
+--media-type=VALUE
+ Set the media type property (default Audio/Midi depending on mode).
+ The media type is used by the session manager to select a suitable target
+ to link to.
+
+--media-category=VALUE
+ Set the media category property (default Playback/Capture depending on mode).
+ The media type is used by the session manager to select a suitable target
+ to link to.
+
+--media-role=VALUE
+ Set the media role property (default Music).
+ The media type is used by the session manager to select a suitable target
+ to link to.
+
+--target=VALUE
+ Set a node target (default auto). The value can be:
+
+ auto
+ Automatically select (Default)
+
+ 0
+ Don't try to link this node
+
+ <id>
+ The object.serial or the node.name of a target node
+
+--latency=VALUE[*units*]
+ Set the node latency (default 100ms)
+
+ The latency determines the minimum amount of time it takes
+ for a sample to travel from application to device (playback) and
+ from device to application (capture).
+
+ The latency determines the size of the buffers that the
+ application will be able to fill. Lower latency means smaller
+ buffers but higher overhead. Higher latency means larger buffers
+ and lower overhead.
+
+ Units can be **s** for seconds, **ms** for milliseconds,
+ **us** for microseconds, **ns** for nanoseconds.
+ If no units are given, the latency value is samples with the samplerate
+ of the file.
+
+-P | --properties=VALUE
+ Set extra stream properties as a JSON object.
+
+-q | --quality=VALUE
+ Resampler quality. When the samplerate of the source or
+ destination file does not match the samplerate of the server, the
+ data will be resampled. Higher quality uses more CPU. Values between 0 and 15 are
+ allowed, the default quality is 4.
+
+--rate=VALUE
+ The sample rate, default 48000.
+
+--channels=VALUE
+ The number of channels, default 2.
+
+--channel-map=VALUE
+ The channelmap. Possible values include:
+ **mono**, **stereo**, **surround-21**,
+ **quad**, **surround-22**, **surround-40**,
+ **surround-31**, **surround-41**,
+ **surround-50**, **surround-51**,
+ **surround-51r**, **surround-70**,
+ **surround-71** or a comma separated list of channel names:
+ **FL**, **FR**, **FC**, **LFE**,
+ **SL**, **SR**, **FLC**, **FRC**,
+ **RC**, **RL**, **RR**, **TC**,
+ **TFL**, **TFC**, **TFR**, **TRL**,
+ **TRC**, **TRR**, **RLC**, **RRC**,
+ **FLW**, **FRW**, **LFE2**, **FLH**,
+ **FCH**, **FRH**, **TFLC**, **TFRC**,
+ **TSL**, **TSR**, **LLFR**, **RLFE**,
+ **BC**, **BLC**, **BRC**
+
+--format=VALUE
+ The sample format to use. One of:
+ **u8**, **s8**, **s16** (default), **s24**, **s32**,
+ **f32**, **f64**.
+
+--volume=VALUE
+ The stream volume, default 1.000.
+ Depending on the locale you have configured, "," or "." may be
+ used as a decimal separator. Check with **locale** command.
+
+AUTHORS
+=======
+
+The PipeWire Developers <@PACKAGE_BUGREPORT@>; PipeWire is available from @PACKAGE_URL@
+
+SEE ALSO
+========
+
+``PipeWire(1)``,
+``pw-mon(1)``,
diff --git a/man/pw-cli.1.rst.in b/man/pw-cli.1.rst.in
new file mode 100644
index 0000000..ca0a2e8
--- /dev/null
+++ b/man/pw-cli.1.rst.in
@@ -0,0 +1,190 @@
+pw-cli
+######
+
+-----------------------------------
+The PipeWire Command Line Interface
+-----------------------------------
+
+:Manual section: 1
+:Manual group: General Commands Manual
+
+SYNOPSIS
+========
+
+| **pw-cli** [*command*]
+
+DESCRIPTION
+===========
+
+Interact with a PipeWire instance.
+
+When a command is given, **pw-cli**
+will execute the command and exit
+
+When no command is given, **pw-cli**
+starts an interactive session with the default PipeWire instance
+*pipewire-0*.
+
+Connections to other, remote instances can be made. The current instance
+name is displayed at the prompt. Some commands operate on the current
+instance and some on the local instance.
+
+Use the 'help' command to list the available commands.
+
+GENERAL COMMANDS
+================
+
+help | h
+ Show a quick help on the commands available. It also lists the aliases
+ for many commands.
+
+quit | q
+ Exit from **pw-cli**
+
+MODULE MANAGEMENT
+=================
+
+| Modules are loaded and unloaded in the local instance, thus the pw-cli
+| binary itself and can add functionality or objects to the local
+| instance. It is not possible in PipeWire to load modules in another
+| instance.
+
+load-module *name* [*arguments...*]
+ Load a module specified by its name and arguments. For most
+ modules it is OK to be loaded more than once.
+
+ This command returns a module variable that can be used
+ to unload the module.
+
+unload-module *module-var*
+ Unload a module, specified either by its variable.
+
+OBJECT INTROSPECTION
+====================
+
+list-objects
+ List the objects of the current instance.
+
+ Objects are listed with their *id*, *type* and *version*.
+
+info *id* | *all*
+ Get information about a specific object or *all* objects.
+
+ Requesting info about an object will also notify you of changes.
+
+WORKING WITH REMOTES
+====================
+
+connect [*remote-name*]
+ Connect to a remote instance and make this the new current
+ instance.
+
+ If no remote name is specified, a connection is made to
+ the default remote instance, usually *pipewire-0*.
+
+ This command returns a remote var that can be used to disconnect or
+ switch remotes.
+
+disconnect [*remote-var*]
+ Disconnect from a *remote instance*.
+
+ If no remote name is specified, the current instance is disconnected.
+
+list-remotes
+ List all *remote instances*.
+
+switch-remote [*remote-var*]
+ Make the specified *remote* the current instance.
+
+ If no remote name is specified, the local instance is made current.
+
+NODE MANAGEMENT
+===============
+
+create-node *factory-name* [*properties...*]
+ Create a node from a factory in the current instance.
+
+ Properties are key=value pairs separated by whitespace.
+
+ This command returns a *node variable*.
+
+export-node *node-id* [*remote-var*]
+ Export a node from the local instance to the specified instance.
+ When no instance is specified, the node will be exported to the current
+ instance.
+
+DEVICE MANAGEMENT
+=================
+
+create-device *factory-name* [*properties...*]
+ Create a device from a factory in the current instance.
+
+ Properties are key=value pairs separated by whitespace.
+
+ This command returns a *device variable*.
+
+
+LINK MANAGEMENT
+===============
+
+create-link *node-id* *port-id* *node-id* *port-id* [*properties...*]
+ Create a link between 2 nodes and ports.
+
+ Port *ids* can be *-1* to automatically select an available port.
+
+ Properties are key=value pairs separated by whitespace.
+
+ This command returns a *link variable*.
+
+GLOBALS MANAGEMENT
+==================
+
+destroy *object-id*
+ Destroy a global object.
+
+
+PARAMETER MANAGEMENT
+====================
+
+enum-params *object-id* *param-id*
+ Enumerate params of an object.
+
+ *param-id* can also be given as the param short name.
+
+set-param *object-id* *param-id* *param-json*
+ Set param of an object.
+
+ *param-id* can also be given as the param short name.
+
+PERMISSION MANAGEMENT
+=====================
+
+permissions *client-id* *object-id* *permission*
+ Set permissions for a client.
+
+ *object-id* can be *-1* to set the default permissions.
+
+get-permissions *client-id*
+ Get permissions of a client.
+
+
+COMMAND MANAGEMENT
+==================
+
+send-command *object-id*
+ Send a command to an object.
+
+
+EXAMPLES
+========
+
+AUTHORS
+=======
+
+The PipeWire Developers <@PACKAGE_BUGREPORT@>; PipeWire is available from @PACKAGE_URL@
+
+SEE ALSO
+========
+
+``pipewire(1)``,
+``pw-mon(1)``,
diff --git a/man/pw-dot.1.rst.in b/man/pw-dot.1.rst.in
new file mode 100644
index 0000000..4599539
--- /dev/null
+++ b/man/pw-dot.1.rst.in
@@ -0,0 +1,65 @@
+pw-dot
+######
+
+---------------------------
+The PipeWire dot graph dump
+---------------------------
+
+:Manual section: 1
+:Manual group: General Commands Manual
+
+SYNOPSIS
+========
+
+| **pw-dot** [*options*]
+
+DESCRIPTION
+===========
+
+Create a .dot file of the PipeWire graph.
+
+The .dot file can then be visualized with a tool like **dotty**
+or rendered to a PNG file with ``dot -Tpng pw.dot -o pw.png``.
+
+OPTIONS
+=======
+
+-r | --remote=NAME
+ The name the remote instance to connect to. If left unspecified,
+ a connection is made to the default PipeWire instance.
+
+-h | --help
+ Show help.
+
+--version
+ Show version information.
+
+-a | --all
+ Show all object types.
+
+-s | --smart
+ Show linked objects only.
+
+-d | --detail
+ Show all object properties.
+
+-o FILE | --output=FILE
+ Output file name (Default pw.dot). Use - for stdout.
+
+-L | --lr
+ Lay the graph from left to right, instead of dot's default top to bottom.
+
+-9 | --90
+ Lay the graph using 90-degree angles in edges.
+
+AUTHORS
+=======
+
+The PipeWire Developers <@PACKAGE_BUGREPORT@>; PipeWire is available from @PACKAGE_URL@
+
+SEE ALSO
+========
+
+``pipewire(1)``,
+``pw-cli(1)``,
+``pw-mon(1)``,
diff --git a/man/pw-jack.1.rst.in b/man/pw-jack.1.rst.in
new file mode 100644
index 0000000..0781b3d
--- /dev/null
+++ b/man/pw-jack.1.rst.in
@@ -0,0 +1,65 @@
+pw-jack
+#######
+
+----------------------------
+Use PipeWire instead of JACK
+----------------------------
+
+:Manual section: 1
+:Manual group: General Commands Manual
+
+SYNOPSIS
+========
+
+| **pw-jack** [*options*] *COMMAND* [*FILE*]
+
+DESCRIPTION
+===========
+
+**pw-jack** modifies the ``LD_LIBRARY_PATH`` environment
+variable so that applications will load PipeWire's reimplementation
+of the JACK client libraries instead of JACK's own
+libraries. This results in JACK clients being redirected to
+PipeWire.
+
+If PipeWire's reimplementation of the JACK client libraries
+has been installed as a system-wide replacement for JACK's
+own libraries, then the whole system already behaves in that way,
+in which case **pw-jack** has no practical effect.
+
+OPTIONS
+=======
+
+-h
+ Show help.
+
+-r NAME
+ The name of the remote instance to connect to. If left
+ unspecified, a connection is made to the default PipeWire
+ instance.
+
+-v
+ Verbose operation.
+
+EXAMPLES
+========
+
+| **pw-jack** sndfile-jackplay /usr/share/sounds/freedesktop/stereo/bell.oga
+
+NOTES
+=====
+
+Using PipeWire for audio is currently considered to be
+experimental.
+
+AUTHORS
+=======
+
+The PipeWire Developers <@PACKAGE_BUGREPORT@>;
+PipeWire is available from @PACKAGE_URL@
+
+SEE ALSO
+========
+
+``pipewire(1)``,
+``jackd(1)``,
diff --git a/man/pw-link.1.rst.in b/man/pw-link.1.rst.in
new file mode 100644
index 0000000..7d1001c
--- /dev/null
+++ b/man/pw-link.1.rst.in
@@ -0,0 +1,139 @@
+pw-link
+#######
+
+-------------------------
+The PipeWire Link Command
+-------------------------
+
+:Manual section: 1
+:Manual group: General Commands Manual
+
+SYNOPSIS
+========
+
+| **pw-link** [*options*] -o|-i|-l [*out-pattern*] [*in-pattern*]
+
+| **pw-link** [*options*] *output* *input*
+
+| **pw-link** [*options*] -d *output* *input*
+
+| **pw-link** [*options*] -d *link-id*
+
+DESCRIPTION
+===========
+
+List, create and destroy links between PipeWire ports.
+
+COMMON OPTIONS
+==============
+
+-r | --remote=NAME
+ The name the *remote* instance to monitor. If left unspecified,
+ a connection is made to the default PipeWire instance.
+
+-h | --help
+ Show help.
+
+--version
+ Show version information.
+
+LISTING PORTS AND LINKS
+=======================
+
+Specify one of -o, -i or -l to list the matching optional input and
+output ports and their links.
+
+-o | --output
+ List output ports
+
+-i | --input
+ List output ports
+
+-l | --links
+ List links
+
+-m | --monitor
+ Monitor links and ports. **pw-link** will not exit but monitor and
+ print new and destroyed ports or links.
+
+-I | --id
+ List IDs. Also list the unique link and port ids.
+
+-v | --verbose
+ Verbose port properties. Also list the port-object-path and the port-alias.
+
+CONNECTING PORTS
+================
+
+Without any list option (-i, -o or -l), the given ports will be linked.
+Valid port specifications are:
+
+*port-id*
+ As obtained with the -I option when listing ports.
+
+*node-name:port-name*
+ As obtained when listing ports.
+
+*port-object-path*
+ As obtained from the first alternative name for the port when listing
+ them with the -v option.
+
+*port-alias*
+ As obtained from the second alternative name for the ports when listing
+ them with the -v option.
+
+Extra options when linking can be given:
+
+-L | --linger
+ Linger. Will create a link that exists after **pw-link** is destroyed.
+ This is the default behaviour, unless the -m option is given.
+
+-P | --passive
+ Passive link. A passive link will keep both nodes it links inactive
+ unless another non-passive link is activating the nodes. You can use this
+ to link a sink to a filter and have them both suspended when nothing else
+ is linked to either of them.
+
+-p | --props=PROPS
+ Properties as JSON object. Give extra properties when creaing the link.
+
+DISCONNECTING PORTS
+===================
+
+When the -d option is given, an existing link between port is destroyed.
+
+To disconnect port, a single *link-id*, as obtained when listing links with
+the -I option, or two port specifications can be given. See the connecting
+ports section for valid port specifications.
+
+-d | --disconnect
+ Disconnect ports
+
+EXAMPLES
+========
+
+**pw-link** -iol
+ List all port and their links.
+
+**pw-link** -lm
+ List all links and monitor changes until **pw-link** is stopped.
+
+**pw-link** paplay:output_FL alsa_output.pci-0000_00_1b.0.analog-stereo:playback_FL
+ Link the given output port to the input port.
+
+**pw-link** -lI
+ List links and their Id.
+
+**pw-link** -d 89
+ Destroy the link with id 89.
+
+AUTHORS
+=======
+
+The PipeWire Developers <@PACKAGE_BUGREPORT@>; PipeWire is available from @PACKAGE_URL@
+
+SEE ALSO
+========
+
+``pipewire(1)``,
+``pw-cli(1)``,
diff --git a/man/pw-metadata.1.rst.in b/man/pw-metadata.1.rst.in
new file mode 100644
index 0000000..f83618b
--- /dev/null
+++ b/man/pw-metadata.1.rst.in
@@ -0,0 +1,67 @@
+pw-metadata
+###########
+
+---------------------
+The PipeWire metadata
+---------------------
+
+:Manual section: 1
+:Manual group: General Commands Manual
+
+SYNOPSIS
+========
+
+| **pw-metadata** [*options*] [*id* [*key* [*value* [*type* ] ] ] ]
+
+DESCRIPTION
+===========
+
+Monitor, set and delete metadata on PipeWire objects.
+
+Metadata are key/type/value triplets attached to objects identified
+by *id*. The metadata is shared between all applications
+binding to the same metadata object. When an object is destroyed, all its
+metadata is automatically removed.
+
+When no *value* is given, **pw-metadata** will query and
+log the metadata matching the optional arguments *id*
+and *key*. Without any arguments, all metadata is displayed.
+
+When *value* is given, **pw-metadata** will set the
+metadata for *id* and *key* to *value* and
+an optional *type*.
+
+OPTIONS
+=======
+
+-r | --remote=NAME
+ The name the remote instance to use. If left unspecified,
+ a connection is made to the default PipeWire instance.
+
+-h | --help
+ Show help.
+
+--version
+ Show version information.
+
+-m | --monitor
+ Keeps running and log the changes to the metadata.
+
+-d | --delete
+
+ Delete all metadata for *id* or for the
+ specified *key* of object *id*
+
+ Without any option, all metadata is removed
+
+AUTHORS
+=======
+
+The PipeWire Developers <@PACKAGE_BUGREPORT@>; PipeWire is available from @PACKAGE_URL@
+
+SEE ALSO
+========
+
+``pipewire(1)``,
+``pw-mon(1)``,
+``pw-cli(1)``,
diff --git a/man/pw-mididump.1.rst.in b/man/pw-mididump.1.rst.in
new file mode 100644
index 0000000..bb56ec6
--- /dev/null
+++ b/man/pw-mididump.1.rst.in
@@ -0,0 +1,49 @@
+pw-mididump
+###########
+
+----------------------
+The PipeWire MIDI dump
+----------------------
+
+:Manual section: 1
+:Manual group: General Commands Manual
+
+SYNOPSIS
+========
+
+| **pw-mididump** [*options*] [*FILE*]
+
+DESCRIPTION
+===========
+
+Dump MIDI messages to stdout.
+
+When a MIDI file is given, the events inside the file are printed.
+
+When no file is given, **pw-mididump** creates a PipeWire
+MIDI input stream and will print all MIDI events received on the port to
+stdout.
+
+OPTIONS
+=======
+
+-r | --remote=NAME
+ The name the remote instance to monitor. If left unspecified,
+ a connection is made to the default PipeWire instance.
+
+-h | --help
+ Show help.
+
+--version
+ Show version information.
+
+AUTHORS
+=======
+
+The PipeWire Developers <@PACKAGE_BUGREPORT@>; PipeWire is available from @PACKAGE_URL@
+
+SEE ALSO
+========
+
+``pipewire(1)``,
+``pw-cat(1)``,
diff --git a/man/pw-mon.1.rst.in b/man/pw-mon.1.rst.in
new file mode 100644
index 0000000..775de0a
--- /dev/null
+++ b/man/pw-mon.1.rst.in
@@ -0,0 +1,46 @@
+pw-mon
+######
+
+--------------------
+The PipeWire monitor
+--------------------
+
+:Manual section: 1
+:Manual group: General Commands Manual
+
+SYNOPSIS
+========
+
+| **pw-mon** [*options*]
+
+DESCRIPTION
+===========
+
+Monitor objects on the PipeWire instance.
+
+OPTIONS
+=======
+
+-r | --remote=NAME
+ The name the *remote* instance to monitor. If left unspecified,
+ a connection is made to the default PipeWire instance.
+
+-h | --help
+ Show help.
+
+--version
+ Show version information.
+
+-N | --color=WHEN
+ Whether to use color, one of 'never', 'always', or 'auto'. The
+ default is 'auto'. **-N** is equivalent to **--color=never**.
+
+AUTHORS
+=======
+
+The PipeWire Developers <@PACKAGE_BUGREPORT@>; PipeWire is available from @PACKAGE_URL@
+
+SEE ALSO
+========
+
+``pipewire(1)``,
diff --git a/man/pw-profiler.1.rst.in b/man/pw-profiler.1.rst.in
new file mode 100644
index 0000000..6fb57c8
--- /dev/null
+++ b/man/pw-profiler.1.rst.in
@@ -0,0 +1,57 @@
+pw-profiler
+###########
+
+---------------------
+The PipeWire profiler
+---------------------
+
+:Manual section: 1
+:Manual group: General Commands Manual
+
+SYNOPSIS
+========
+
+| **pw-profiler** [*options*]
+
+DESCRIPTION
+===========
+
+Start profiling a PipeWire instance.
+
+If the server has the profiler module loaded, this program will
+connect to it and log the profiler data. Profiler data contains
+times and durations when processing nodes and devices started and
+completed.
+
+When this program is stopped, a set of **gnuplot** files and a script to generate
+SVG files from the .plot files is generated, along with a .html file to
+visualize the profiling results in a browser.
+
+This function uses the same data used by *pw-top*.
+
+OPTIONS
+=======
+
+-r | --remote=NAME
+ The name the remote instance to monitor. If left unspecified,
+ a connection is made to the default PipeWire instance.
+
+-h | --help
+ Show help.
+
+--version
+ Show version information.
+
+-o | --output=FILE
+ Profiler output name (default "profiler.log").
+
+AUTHORS
+=======
+
+The PipeWire Developers <@PACKAGE_BUGREPORT@>; PipeWire is available from @PACKAGE_URL@
+
+SEE ALSO
+========
+
+``pipewire(1)``,
+``pw-top(1)``,
diff --git a/man/pw-top.1.rst.in b/man/pw-top.1.rst.in
new file mode 100644
index 0000000..ab8569b
--- /dev/null
+++ b/man/pw-top.1.rst.in
@@ -0,0 +1,178 @@
+pw-top
+######
+
+---------------------------
+The PipeWire process viewer
+---------------------------
+
+:Manual section: 1
+:Manual group: General Commands Manual
+
+SYNOPSIS
+========
+
+| **pw-top** [*options*]
+
+DESCRIPTION
+===========
+
+The *pw-top* program provides a dynamic real-time view of the pipewire
+node and device statistics.
+
+A hierarchical view is shown of Driver nodes and follower nodes. The Driver
+nodes are actively using a timer to schedule dataflow in the followers. The
+followers of a driver node as shown below their driver with a + sign in
+a tree-like representation.
+
+The columns presented are as follows:
+
+S
+ Node status.
+ E = ERROR
+ C = CREATING
+ S = SUSPENDED
+ I = IDLE
+ R = RUNNING
+
+ID
+ The ID of the pipewire node/device, as found in *pw-dump* and *pw-cli*
+
+QUANT
+ The current quantum (for drivers) and the suggested quantum for follower
+ nodes.
+
+ The quantum by itself needs to be divided by the RATE column to calculate
+ the duration of a scheduling period in fractions of a second.
+
+ For a QUANT of 1024 and a RATE of 48000, the duration of one period in the
+ graph is 1024/48000 or 21.3 milliseconds.
+
+ Follower nodes can have a 0 QUANT field, which means that the node does not
+ have a suggestion for the quantum and thus uses what the driver selected.
+
+ The driver will use the lowest quantum of any of the followers. If none of
+ the followers select a quantum, the default quantum in the pipewire configuration
+ file will be used.
+
+ The QUANT on the drivers usually translates directly into the number of audio
+ samples processed per processing cycle of the graph.
+
+ See also https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/FAQ#pipewire-buffering-explained
+
+RATE
+ The current rate (for drivers) and the suggested rate for follower
+ nodes.
+
+ This is the rate at which the *graph* processes data and needs to be combined with
+ the QUANT value to derive the duration of a processing cycle in the graph.
+
+ Some nodes can have a 0 RATE, which means that they don't have any rate
+ suggestion for the graph. Nodes that suggest a rate can make the graph switch
+ rates if the graph is otherwise idle and the new rate is allowed as
+ a possible graph rate (see the pipewire configuration file).
+
+ The RATE on (audio) driver nodes usually also translates directly to the
+ samplerate used by the device. Although some devices might not be able to
+ operate at the given samplerate, in which case resampling will need to be
+ done. The negotiated samplerate with the device and stream can be found in
+ the FORMAT column.
+
+WAIT
+ The waiting time of a node is the elapsed time between when the node
+ is ready to start processing and when it actually started processing.
+
+ For Driver nodes, this is the time between when the node wakes up to
+ start processing the graph and when the driver (and thus also the graph)
+ completes a cycle. The WAIT time for driver is thus the elapsed time
+ processing the graph.
+
+ For follower nodes, it is the time spent between being woken up (when all
+ dependencies of the node are satisfied) and when processing starts. The
+ WAIT time for follower nodes is thus mostly caused by context switching.
+
+ A value of --- means that the node was not signaled. A value of +++
+ means that the node was signaled but not awake.
+
+BUSY
+ The processing time is started when the node starts processing until it
+ completes and wakes up the next nodes in the graph.
+
+ A value of --- means that the node was not started. A value of +++
+ means that the node was started but did not complete.
+
+W/Q
+ Ratio of WAIT / QUANT.
+
+ The W/Q time of the driver node is a good measure of the graph
+ load. The running averages of the driver W/Q ratios are used as the DSP
+ load in other (JACK) tools.
+
+ Values of --- and +++ are copied from the WAIT column.
+
+B/Q
+ Ratio of BUSY / QUANT
+
+ This is a good measure of the load of a particular driver or follower
+ node.
+
+ Values of --- and +++ are copied from the BUSY column.
+
+ERR
+ Total of Xruns and Errors
+
+ Xruns for drivers are when the graph did not complete a cycle. This can
+ be because a node in the graph also has an Xrun. It can also be caused when
+ scheduling delays cause a deadline to be missed, causing a hardware
+ Xrun.
+
+ Xruns for followers are incremented when the node started processing but
+ did not complete before the end of the graph cycle deadline.
+
+FORMAT
+ The format used by the driver node or the stream. This is the hardware format
+ negotiated with the device or stream.
+
+ If the stream of driver has a different rate than the graph, resampling will
+ be done.
+
+ For raw audio formats, the layout is <sampleformat> <channels> <samplerate>.
+
+ For IEC958 passthrough audio formats, the layout is IEC958 <codec> <samplerate>.
+
+ For DSD formats, the layout is <dsd-rate> <channels>.
+
+ For Video formats, the layout is <pixelformat> <width>x<height>.
+
+NAME
+ Name assigned to the device/node, as found in *pw-dump* node.name
+
+ Names are prefixed by *+* when they are linked to a driver (entry above with no +)
+
+
+OPTIONS
+=======
+
+-h | --help
+ Show help.
+
+-r | --remote=NAME
+ The name the *remote* instance to monitor. If left unspecified,
+ a connection is made to the default PipeWire instance.
+
+--version
+ Show version information.
+
+
+AUTHORS
+=======
+
+The PipeWire Developers <@PACKAGE_BUGREPORT@>; PipeWire is available from @PACKAGE_URL@
+
+SEE ALSO
+========
+
+``pipewire(1)``,
+``pw-dump(1)``,
+``pw-cli(1)``,
+``pw-profiler(1)``,
+