Previously, the allocated height and width to a node on the graph was divided by the zoom factor, to account for the changed size from them being zoomed. To zoom each node, we `size_allocate` it with a GskTransform that scales it. However, using a scaling transform to allocate the node already takes care of scaling the height and width, so us also scaling the height and width manually means we were overcompensating. This resulted in the allocation becoming to big when zooming out, and to small when zooming in. This is observable as labels will become smaller when zooming in and ellipsize their content. The commit removes the extra manual scaling so nodes get allocated properly when zoomed.
Helvum is a GTK-based patchbay for pipewire, inspired by the JACK tool catia.
Features planned
- Volume control
- "Debug mode" that lets you view advanced information for nodes and ports
More suggestions are welcome!
Building
Via flatpak
If you don't have the flathub repo in your remote-list for flatpak you will need to add that first:
$ flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
Then install the required flatpak platform and SDK, if you dont have them already:
$ flatpak install org.gnome.{Platform,Sdk}//43 org.freedesktop.Sdk.Extension.rust-stable//22.08 org.freedesktop.Sdk.Extension.llvm14//22.08
To compile and install as a flatpak, clone the project, change to the project directory, and run:
$ flatpak-builder --install flatpak-build/ build-aux/org.pipewire.Helvum.json
You can then run the app via
$ flatpak run org.pipewire.Helvum
Manually
For compilation, you will need:
- Meson
- An up-to-date rust toolchain
libclang-3.7or highergtk-4.0andpipewire-0.3development headers
To compile and install, run
$ meson setup build && cd build
$ meson compile
$ meson install
in the repository root.
This will install the compiled project files into /usr/local.
License and Credits
Helvum is distributed under the terms of the GPL3 license. See LICENSE for more information.
Parts of the build system were taken from the gtk-rust-template project, which is provided under the terms of the MIT license.

