Route audio to multiple outputs simultaneously on Linux.
Play through your headphones and speakers at the same time. Patchwire watches the PipeWire graph and manages the links for you.
Every time you connect a Bluetooth device or want to route audio to multiple outputs, you'd normally have to manually wire ports in Helvum or qpwgraph. Patchwire does this automatically.
- Toggle any sink on or off as a secondary output
- Control volume per device
- Change your default output device from the UI
- State persists across reboots
- Daemon starts automatically on first launch
Patchwire runs a background daemon that connects directly to PipeWire via libpipewire. It watches the graph for new devices and manages pw::Link objects between your default sink's monitor ports and the playback ports of any enabled secondary sinks.
The GTK4 UI talks to the daemon over D-Bus (com.patchwire.Daemon). The CLI does the same.
yay -S patchwire # building from source
yay -S patchwire-bin # prebuilt binaryTo build from source, you will need the standard Rust toolchain and the GTK4 development libraries.
1. Install dependencies
Install rust toolchain via rustup
sudo pacman -S --needed pipewire pipewire-audio wireplumber gtk4 libadwaita2. Clone and Build
git clone https://github.com/mel-edo/patchwire
cd patchwire
make installLaunch Patchwire from your app menu. The daemon starts automatically.
If you installed the app via make install or the AUR, the daemon runs automatically in the background via systemd as a user service.
If you are running the project manually without systemd, you will need to run
patchwire daemonin a separate terminal first.
You can control it directly from your terminal:
patchwire list # show all sinks
patchwire toggle <sink> # toggle routing for a sink
patchwire volume <sink> 75 # set volume to 75%
patchwire help # show all commandsThe daemon runs as a systemd user service after make install and starts automatically on login.
cargo build --releaseBinaries in target/release/.
Contributions are welcome. Feel free to open an issue or a PR.
GPL-3.0 - see LICENSE