Loading...
Searching...
No Matches
pw-cli

The PipeWire Command Line Interface

# 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.

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

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

list-vars
  List all currently known variables and their type. Some commands create objects that are identified with a variable.

# 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 in the local instance. 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.

  The local module is not visible in the remote instance. It is not possible in PipeWire to load modules in a remote instance.

unload-module module-var
  Unload a module, specified 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.

  The special remote name called internal can be used to connect to the local pw-cli PipeWire instance.

  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 first 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 and Node ids can be set to - to automatically select a node or a port.

  Port ids can be * to automatically link matching ports ids in the nodes.

  Properties are key=value pairs separated by whitespace.

  This command returns one or more link variables.

# 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.

# AUTHORS

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

# SEE ALSO

pipewire(1), pw-mon(1),