PipeWire Proxies

Proxy

Lua objects that bind a WpProxy contain the following methods:

Proxy.get_interface_type(self)

Binds wp_proxy_get_interface_type()

Parameters:

self – the proxy

Returns:

the proxy type, the proxy type version

Return type:

string, integer

PipeWire Object

Lua objects that bind a WpPipewireObject contain the following methods:

PipewireObject.iterate_params(self, param_name)

Binds wp_pipewire_object_enum_params_sync()

Parameters:
  • self – the proxy

  • param_name (string) – the PipeWire param name to enumerate, ex “Props”, “Route”

Returns:

the available parameters

Return type:

Iterator; the iteration items are Spa Pod objects

PipewireObject.set_param(self, param_name, pod)

Binds wp_pipewire_object_set_param()

Parameters:
  • self – the proxy

  • param_name (string) – The PipeWire param name to set, ex “Props”, “Route”

  • pod (Pod) – A Spa Pod object containing the new params

Global Proxy

Lua objects that bind a WpGlobalProxy contain the following methods:

GlobalProxy.request_destroy(self)

Binds wp_global_proxy_request_destroy()

Parameters:

self – the proxy

PipeWire Node

Lua objects that bind a WpNode contain the following methods:

Node.get_state(self)

Binds wp_node_get_state()

Parameters:

self – the proxy

Returns:

the current state of the node and an error message, if any

Return type:

string (WpNodeState), string (error message)

Since:

0.4.2

Node.get_n_input_ports(self)

Binds wp_node_get_n_input_ports()

Parameters:

self – the proxy

Returns:

the current and max numbers of input ports on the node

Return type:

integer (current), integer (max)

Since:

0.4.2

Node.get_n_output_ports(self)

Binds wp_node_get_n_output_ports()

Parameters:

self – the proxy

Returns:

the current and max numbers of output ports on the node

Return type:

integer (current), integer (max)

Since:

0.4.2

Node.get_n_ports(self)

Binds wp_node_get_n_ports()

Parameters:

self – the proxy

Returns:

the number of ports on the node

Since:

0.4.2

Node.iterate_ports(self, interest)

Binds wp_node_iterate_ports()

Parameters:
  • self – the proxy

  • interest (Interest or nil or none) – an interest to filter objects

Returns:

all the ports of this node that that match the interest

Return type:

Iterator; the iteration items are of type WpPort

Since:

0.4.2

Node.lookup_port(self, interest)

Binds wp_node_lookup_port()

Parameters:
  • self – the proxy

  • interest (Interest or nil or none) – the interest to use for the lookup

Returns:

the first port of this node that matches the interest

Return type:

WpPort

Since:

0.4.2

Node.send_command(self, command)

Binds wp_node_send_command()

Parameters:
  • self – the proxy

  • command (string) – the command to send to the node (ex “Suspend”)

PipeWire Port

Lua objects that bind a WpPort contain the following methods:

Port.get_direction(self)

Binds wp_port_get_direction()

Parameters:

self – the port

Returns:

the direction of the Port

Return type:

string (WpDirection)

Since:

0.4.2

PipeWire Client

Lua objects that bind a WpClient contain the following methods:

Client.update_permissions(self, perms)

Binds wp_client_update_permissions()

Takes a table where the keys are object identifiers and the values are permission strings.

Valid object identifiers are:

  • A number, meaning the bound ID of a proxy

  • The string “any” or the string “all”, which sets the default permissions for this client

The permission strings have a chmod-like syntax (ex. “rwx” or “r-xm”), where:

  • “r” means permission to read the object

  • “w” means permission to write data to the object

  • “x” means permission to call methods on the object

  • “m” means permission to set metadata for the object

  • “-” is ignored and can be used to make the string more readable when a permission flag is omitted

Example:

client:update_permissions {
  ["all"] = "r-x",
  [35] = "rwxm",
}
Parameters:
  • self – the proxy

  • perms (table) – the permissions to update for this client

PipeWire Metadata

Lua objects that bind a WpMetadata contain the following methods:

Metadata.iterate(self, subject)

Binds wp_metadata_new_iterator()

Parameters:
  • self – the proxy

  • subject (integer) – the subject id

Returns:

an iterator

Metadata.find(self, subject, key)

Binds wp_metadata_find()

Parameters:
  • self – the proxy

  • subject (string) – the subject id

  • key (string) – the metadata key to find

Returns:

the value for this metadata key, the type of the value

Return type:

string, string