A modern media routing application for PipeWire built with Rust and libcosmic.
Switchbox provides an intuitive graphical interface for managing audio, video, and MIDI connections between PipeWire nodes — with the goal of surpassing existing tools.
Note: the project is in the early stages of development.
- Visual patchbay for PipeWire source and sink connections (WIP)
- Color-coded ports by media type (Audio, Video, MIDI)
- Filterable view by media type and device class (WIP)
- Node inspector with detailed information and internal routing (WIP)
- Bezier curve link visualization
- Hover and selection highlighting
- COSMIC desktop integration (context drawers, theming, localization)
| Version | Focus |
|---|---|
| v1.0 | Non-persistent media routing; applet functionality (system tray, launch at start, right-click menu) |
| v2.0 | Advanced and persistent audio routing via inspector and busses, that remembers connected devices |
| v3.0 | Audio plugin support (CLAP, VST3, LV2) |
| v4.0 | Advanced MIDI/Video routing; internal controller routing |
A justfile is included by default for the casey/just command runner.
justbuilds the application with the defaultjust build-releaserecipejust runbuilds and runs the applicationjust installinstalls the project into the systemjust vendorcreates a vendored tarballjust build-vendoredcompiles with vendored dependencies from that tarballjust checkruns clippy on the project to check for linter warningsjust check-jsoncan be used by IDEs that support LSP
Fluent is used for localization of the software. Fluent's translation files are found in the i18n directory. New translations may copy the English (en) localization of the project, rename en to the desired ISO 639-1 language code, and then translations can be provided for each message identifier. If no translation is necessary, the message may be omitted.
If packaging for a Linux distribution, vendor dependencies locally with the vendor rule, and build with the vendored sources using the build-vendored rule. When installing files, use the rootdir and prefix variables to change installation paths.
just vendor
just build-vendored
just rootdir=debian/switchbox prefix=/usr installIt is recommended to build a source tarball with the vendored dependencies, which can typically be done by running just vendor on the host system before it enters the build environment.
Developers should install rustup and configure their editor to use rust-analyzer. To improve compilation times, disable LTO in the release profile, install the mold linker, and configure sccache for use with Rust. The mold linker will only improve link times if LTO is disabled.
This project is licensed under the Mozilla Public License 2.0 (MPL-2.0).
