libpipew...t-device(7)

๐Ÿ’… libpipew...t-device(7) โ€” Client Device ๐Ÿ’…

okay bestie, this one lives in the Miscellaneous Information Manual, and it's genuinely so fun. it's giving "let clients put their own devices on the daemon's radar." grab a strawberry ๐Ÿ“ and let's get into it.


๐ŸŒธ NAME ๐ŸŒธ

libpipewire-module-client-device โ€” Client Device. that's it, that's the name, slay.


โœจ DESCRIPTION โœจ

okay so the whole vibe here: this module lets clients export devices to the PipeWire daemon. ๐Ÿ’–

it creates an export type for the SPA_TYPE_INTERFACE_Device interface. no cap.

with pw_core_export(), objects of this type can be exported to the PipeWire server, and all actions performed on the device locally will be visible to connected clients. everything you do on your side, the other side sees. bestie telepathy. ๐Ÿ”ฎ

in some cases, it is possible to use this factory directly. calling pw_core_create_object() on the client-device factory will result in a SPA_TYPE_INTERFACE_Device proxy that can be used to control the server side created Device Impl. so you get a little handle to poke the server-side thing. ๐Ÿ‘‘

schematically, the client side Device is wrapped in the ClientDevice proxy and unwrapped by the server side resource, so that all actions on the client side device are reflected on the server side device and server side actions are reflected in the client. mirror mirror on the wall ๐Ÿชžโœจ

  client side proxy                            server side resource
.------------------------------.            .----------------------------------.
| SPA_TYPE_INTERFACE_Device    |            |  PW_TYPE_INTERFACE_Device        |
|                              |  IPC       |.--------------------------------.|
|                              | ----->     || SPA_TYPE_INTERFACE_Device      ||
|                              |            |'--------------------------------'|

๐ŸŽ€ MODULE NAME ๐ŸŽ€

libpipewire-module-client-device

yes, same as the name section. consistency icon behavior. ๐Ÿ’…


๐Ÿฆ‹ MODULE OPTIONS ๐Ÿฆ‹

This module has no options.

literally zero. not one. nothing to tweak, nothing to break. it's giving low-maintenance king. ๐Ÿ‘‘


๐ŸŒˆ PROPERTIES FOR THE CREATE_OBJECT CALL ๐ŸŒˆ

All properties are passed directly to the pw_context_create_device() call.

so whatever you hand over just goes straight through. no filter, no drama. ๐Ÿซถ


โญ EXAMPLE CONFIGURATION โญ

The module is usually added to the config file of the main PipeWire daemon and the clients.

like this:

context.modules = [
{ name = libpipewire-module-client-device }
]

that's the whole thing. copy, paste, done. periodt. ๐Ÿ’…โœจ


๐Ÿ‘‘ SEE ALSO ๐Ÿ‘‘

  • module-spa-device-factory โ€” make nodes from a factory

ngl bestie, if you export a device and it doesn't show up, it's not the module ghosting you โ€” go vibe check your properties. ๐Ÿ’€

๐ŸŒธ that's the whole page, and fr fr that's all of it โ€” this was PipeWire 1.6.11, the libpipew...t-device(7) entry from the Miscellaneous Information Manual. love you, bye, go export some devices ๐ŸŽ€๐Ÿ’–๐Ÿฆ‹

๐Ÿ“ฆ where this page comes from