Fun-In-Progress GUI for PipeWire
- Display Nodes, Ports and Links
- Create and destroy Links
- Set channel volume (for ALSA and PulseAudio)
- Move Nodes (but will be reset after model changes!)
- for wireplumber things wait for v0.5, has big changes?
- user change node/port label
- user set auto/default links/nodes!
- how to best auto layout?
- can we set all (audio) nodes channelVolume?
- seems we can for alsa and pulse. what about jack?
- what is softVolume?
- show live audio levels?
- un/lock channel volume sliders
- can we use https://gitlab.com/matpi/pipewire-py ?
- i guess we would look
pw-dumpcode for howto?
- i guess we would look
- find them polish loops... (and why does it still work, or what is not working?!)
theme.ini file is loaded from these dirs in this order:
- Next to program
- User:
$XDG_CONFIG_HOME/pipeflow(default$HOME/.config/pipeflow) - System:
pipeflowdir in$XDG_CONFIG_DIRS(default/etc/xdg/)
pyside6- https://doc.qt.io/qtforpython-6/python3- https://www.python.org/qt6-declarative- https://doc.qt.io/qt-6/qtqml-index.html
pw-dump,pw-linkandpw-cli- https://pipewire.org/
- Copy dir
libpipeflowto Pythons system include dir - Copy dir
PipeFlowto QMLs system include dir - Copy file
pipeflowto system bin dir - Copy file
main.qmlto/usr/lib/pipeflow/main.qml - Copy file
theme.inito/etc/xdg/pipeflow/theme.ini
see
distro/archlinux/PKGBUILDfor an example
The python code provides following things to QML:
| thing | description |
|---|---|
NodeModel |
List Model of PipeWire Nodes |
LinkModel |
List Model of PipeWire Links |
PwLink |
Functions to call pw-link |
PwCli |
Functions to call pw-cli |
Theme |
Theme properties |
And the QML UI "simply" builds around these models, and calls functions to request changes to PipeWire...
If you have entr installed, you can start pipeflow in "hot reloading" way with:
$ make hot
restart this if you add files
- TODO: any thips? https://github.com/dyegoaurelio/simple-wireplumber-gui
- https://docs.pipewire.org/page_objects_design.html
- https://doc.qt.io/qtforpython-6/examples/example_qml_editingmodel.html
- volume infos https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3351
MIT
