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
- fedora 44: pipewire-libs 1.6.11-1.fc44 ยท MIT AND GPL-2.0-or-later AND BSD-2-Clause AND LGPL-2.0-or-later
- fedora 44: pipewire-libs 1.6.11-1.fc44 ยท MIT AND GPL-2.0-or-later AND BSD-2-Clause AND LGPL-2.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms