Fun-In-Progress GUI for PipeWire, originally by Oskude
Now working on a rewrite at https://github.com/stuin/PipeflowIm, hopefully planning to keep the features comparable
- Display Nodes, Ports and Links
- Create and destroy Links
- Set channel volume (for ALSA and PulseAudio)
- Lock channel volumes together
- Configurable max volume > 1
- Configure hidden nodes
- Mute nodes
- Move Nodes (but will be reset after model changes!)
- Auto layout based on different groupings
- for wireplumber things wait for v0.5, has big changes?
- user change node/port label
- user set auto/default links/nodes!
- can we set all (audio) nodes channelVolume?
- seems we can for alsa and pulse. what about jack?
- what is softVolume?
- show live audio levels?
- 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
