.TH "pw-cli" 1 "1.6.4" "PipeWire" \" -*- nroff -*-
.ad l
.nh
.SH NAME
pw-cli \- The PipeWire Command Line Interface

.PP
.SH "SYNOPSIS"
.PP

.PP
\fBpw-cli\fP [\fIcommand\fP]

.PP
.SH "DESCRIPTION"
.PP

.PP
Interact with a PipeWire instance\&.

.PP
When a command is given, \fBpw-cli\fP will execute the command and exit

.PP
When no command is given, \fBpw-cli\fP starts an interactive session with the default PipeWire instance \fIpipewire-0\fP\&.

.PP
Connections to other, remote instances can be made\&. The current instance name is displayed at the prompt\&.

.PP
Note that \fBpw-cli\fP also creates a local PipeWire instance\&. Some commands operate on the current (remote) instance and some on the local instance, such as module loading\&.

.PP
Use the 'help' command to list the available commands\&.

.PP
.SH "GENERAL COMMANDS"
.PP

.PP
\fBhelp | h\fP
.RS 4
Show a quick help on the commands available\&. It also lists the aliases for many commands\&.
.RE
.PP
\fBquit | q\fP
.RS 4
Exit from \fBpw-cli\fP
.RE
.PP
\fBlist-vars\fP
.RS 4
List all currently known variables and their type\&. Some commands create objects that are identified with a variable\&.
.RE
.PP
.SH "MODULE MANAGEMENT"
.PP

.PP
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\&.

.PP
\fBload-module \fIname\fP [\fIarguments\&.\&.\&.\fP]\fP
.RS 4
Load a module specified by its name and arguments in the local instance\&. For most modules it is OK to be loaded more than once\&.

.PP
This command returns a module variable that can be used to unload the module\&.

.PP
The local module is \fInot\fP visible in the remote instance\&. It is not possible in PipeWire to load modules in a remote instance\&. 
.RE
.PP

.PP
\fBunload-module \fImodule-var\fP\fP
.RS 4
Unload a module, specified by its variable\&.
.RE
.PP
.SH "OBJECT INTROSPECTION"
.PP

.PP
\fBlist-objects\fP
.RS 4
List the objects of the current instance\&.
.RE
.PP
Objects are listed with their \fIid\fP, \fItype\fP and \fIversion\fP\&.

.PP
\fBinfo \fIid\fP | \fIall\fP\fP
.RS 4
Get information about a specific object or \fIall\fP objects\&.
.RE
.PP
Requesting info about an object will also notify you of changes\&.

.PP
.SH "WORKING WITH REMOTES"
.PP

.PP
\fBconnect [\fIremote-name\fP]\fP
.RS 4
Connect to a remote instance and make this the new current instance\&.

.PP
If no remote name is specified, a connection is made to the default remote instance, usually \fIpipewire-0\fP\&.

.PP
The special remote name called \fIinternal\fP can be used to connect to the local \fBpw-cli\fP PipeWire instance\&.

.PP
This command returns a remote var that can be used to disconnect or switch remotes\&. 
.RE
.PP

.PP
\fBdisconnect [\fIremote-var\fP]\fP
.RS 4
Disconnect from a \fIremote instance\fP\&.

.PP
If no remote name is specified, the current instance is disconnected\&. 
.RE
.PP

.PP
\fBlist-remotes\fP
.RS 4
List all \fIremote instances\fP\&.
.RE
.PP
\fBswitch-remote [\fIremote-var\fP]\fP
.RS 4
Make the specified \fIremote\fP the current instance\&.

.PP
If no remote name is specified, the first instance is made current\&. 
.RE
.PP

.PP
.SH "NODE MANAGEMENT"
.PP

.PP
\fBcreate-node \fIfactory-name\fP [\fIproperties\&.\&.\&.\fP]\fP
.RS 4
Create a node from a factory in the current instance\&.

.PP
Properties are key=value pairs separated by whitespace\&.

.PP
This command returns a \fInode variable\fP\&. 
.RE
.PP

.PP
\fBexport-node \fInode-id\fP [\fIremote-var\fP]\fP
.RS 4
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\&.
.RE
.PP
.SH "DEVICE MANAGEMENT"
.PP

.PP
\fBcreate-device \fIfactory-name\fP [\fIproperties\&.\&.\&.\fP]\fP
.RS 4
Create a device from a factory in the current instance\&.

.PP
Properties are key=value pairs separated by whitespace\&.

.PP
This command returns a \fIdevice variable\fP\&. 
.RE
.PP

.PP
.SH "LINK MANAGEMENT"
.PP

.PP
\fBcreate-link \fInode-id\fP \fIport-id\fP \fInode-id\fP \fIport-id\fP [\fIproperties\&.\&.\&.\fP]\fP
.RS 4
Create a link between 2 nodes and ports\&.

.PP
Port \fIids\fP and Node \fIids\fP can be set to \fR-\fP to automatically select a node or a port\&.

.PP
Port \fIids\fP can be \fR*\fP to automatically link matching ports ids in the nodes\&.

.PP
Properties are key=value pairs separated by whitespace\&.

.PP
This command returns one or more \fIlink variables\fP\&. 
.RE
.PP

.PP
.SH "GLOBALS MANAGEMENT"
.PP

.PP
\fBdestroy \fIobject-id\fP\fP
.RS 4
Destroy a global object\&.
.RE
.PP
.SH "PARAMETER MANAGEMENT"
.PP

.PP
\fBenum-params \fIobject-id\fP \fIparam-id\fP\fP
.RS 4
Enumerate params of an object\&.

.PP
\fIparam-id\fP can also be given as the param short name\&. 
.RE
.PP

.PP
\fBset-param \fIobject-id\fP \fIparam-id\fP \fIparam-json\fP\fP
.RS 4
Set param of an object\&.

.PP
\fIparam-id\fP can also be given as the param short name\&. 
.RE
.PP

.PP
.SH "PERMISSION MANAGEMENT"
.PP

.PP
\fBpermissions \fIclient-id\fP \fIobject-id\fP \fIpermission\fP\fP
.RS 4
Set permissions for a client\&.

.PP
\fIobject-id\fP can be \fI-1\fP to set the default permissions\&. 
.RE
.PP

.PP
\fBget-permissions \fIclient-id\fP\fP
.RS 4
Get permissions of a client\&.
.RE
.PP
.SH "COMMAND MANAGEMENT"
.PP

.PP
\fBsend-command \fIobject-id\fP\fP
.RS 4
Send a command to an object\&.
.RE
.PP
.SH "AUTHORS"
.PP

.PP
The PipeWire Developers <https://gitlab.freedesktop.org/pipewire/pipewire/issues>; PipeWire is available from <https://pipewire.org>

.PP
.SH "SEE ALSO"
.PP

.PP
\fBpipewire(1)\fP, \fBpw-mon(1)\fP, 

