Linux-native input/mix routing for PipeWire, inspired by the workflow of modern creator mixers.
Group unlimited apps into software inputs such as Game, Chat, and Music; then build independent Personal, Stream, Chat, and custom mixes for monitoring and capture. Hardware inputs join the same matrix with independent routing, levels, and visual identity.
inputs ──► independent route cells ──► Personal / Stream / Chat mixes
├──► headphones / speakers
└──► WaveSink: <mix> for OBS/Discord
- Inputs and mixes - software channels group unlimited apps under one source fader; mixes are independent destinations with per-cell send, mute, and master controls
- Apps - running apps appear automatically; assign once, remembered forever
- Mixes - recordable sources for OBS. Master Mix carries everything; custom mixes can carry "everything except music" and stay current as channels change. A mix can also carry your processed microphone, so one input device holds your voice plus app audio (Sonar-style Stream Mix), and each member gets its own send level and mute inside the mix - what recorders hear, independent of your own volume (pop out a mix's levels from its strip). In OBS, add a mix as an audio input - not Desktop Audio. A mix can also sit with the output devices instead, if you would rather keep your recording list short; it stays capturable through its monitor.
- Independent destinations - Personal, Stream, Chat, and custom mixes
keep separate balances. Monitor selection changes what you hear without
rewriting app assignments; every mix is capturable as
WaveSink: <name>. - Equalizer - per-input parametric EQ (up to 10 bands) with a draggable response curve, bundled community presets, and import/export including AutoEq text blocks
- Hardware inputs - add physical sources to the matrix, then route each independently to any mix. Audio FX settings are saved per input.
- Profiles - save and switch full layouts from the tray
- Themes - Original plus all 22 stock Omarchy palettes, available on every distro. Omarchy installs can also follow their live desktop palette.
Each script fetches the newest stable release, verifies its SHA256SUMS entry, and installs it. Packages are for x86_64. WaveSink does not publish to AUR or COPR.
Arch / Omarchy:
curl -fsSLO https://raw.githubusercontent.com/calmasacow/WaveSink/main/scripts/install/arch.sh && bash arch.shUbuntu 24.04 / 26.04 LTS, Linux Mint 22, Pop!_OS 24.04:
curl -fsSLO https://raw.githubusercontent.com/calmasacow/WaveSink/main/scripts/install/ubuntu.sh && bash ubuntu.shFedora 43 / 44:
curl -fsSLO https://raw.githubusercontent.com/calmasacow/WaveSink/main/scripts/install/fedora.sh && bash fedora.shNixOS (user profile):
curl -fsSLO https://raw.githubusercontent.com/calmasacow/WaveSink/main/scripts/install/nixos.sh && bash nixos.shOther distros — portable AppImage, no root:
curl -fsSLO https://raw.githubusercontent.com/calmasacow/WaveSink/main/scripts/install/appimage.sh && bash appimage.shRun ~/.local/share/AppImages/WaveSink.AppImage afterward. For a launcher entry,
use Gear Lever or AppImageLauncher.
For manual downloads, see Releases.
Requires PipeWire with pipewire-pulse and WirePlumber 0.5+ (the default
on most current distros).
npm install
npm run tauri dev # run
npm run tauri build # packageConfig lives in ~/.config/wavesink as plain JSON. Existing ~/.config/sink
state moves there automatically on first launch.
The routing contract is documented in docs/routing-model.md.
On first launch after upgrading, old JSON files are backed up beside the new
routing.json; see the migration notes there for the Sonar/old-sink mapping.
For bugs, feature requests, or support, open a GitHub issue.
Bundled Omarchy color palettes are used under the MIT License; see third-party notices.



