phosphor-service-pipewire

Native PipeWire mixer for sinks, sources, and streams.

Owns the PipeWire main loop on a dedicated thread, walks the registry, and surfaces sinks, sources, and per-app streams as Qt and QML types with default-node switching, volume, and mute. All cross-thread plumbing hides behind queued signals, so consumers see a pure GUI-thread API. The public headers are libpipewire-free through a pimpl, so a shell links only Qt to render a volume mixer, OSD, or sound page.

Full API →

Key types

PipeWireConnection
Lifecycle owner: holds the loop thread, context, and core; routes writes onto the loop thread.
PwNode
One audio node (sink, source, stream): name, mediaClass, volumes, muted, async setters.
PwNodeModel
QAbstractListModel filtering nodes by mediaClasses (sink / source / stream subclasses).
PipeWireHost
QML singleton owning the process-wide connection and forwarding its signals.

Dependencies

See also

References