← Back
calmasacow

calmasacow/WaveSink

View on GitHub ↗
Stars
45
Forks
0
Watchers
45
Open issues
3
Contributors
8
Language
Rust
License
GNU General Public License v3.0
Default branch
main
Created Sep 27, 2026Updated Oct 1, 2026

Star growth

Today—
This week—
This month—

Star history will appear here once this repo has been tracked for a couple of days.

README

WaveSink

WaveSink

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.

WaveSink mixer

 inputs ──► independent route cells ──► Personal / Stream / Chat mixes
                                               ├──► headphones / speakers
                                               └──► WaveSink: <mix> for OBS/Discord

Features

  • 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.

Equalizer Apps

Install

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.sh

Ubuntu 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.sh

Fedora 43 / 44:

curl -fsSLO https://raw.githubusercontent.com/calmasacow/WaveSink/main/scripts/install/fedora.sh && bash fedora.sh

NixOS (user profile):

curl -fsSLO https://raw.githubusercontent.com/calmasacow/WaveSink/main/scripts/install/nixos.sh && bash nixos.sh

Other distros — portable AppImage, no root:

curl -fsSLO https://raw.githubusercontent.com/calmasacow/WaveSink/main/scripts/install/appimage.sh && bash appimage.sh

Run ~/.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).

Build

npm install
npm run tauri dev      # run
npm run tauri build    # package

Config 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.

Contact

For bugs, feature requests, or support, open a GitHub issue.

License

GPL-3.0

Bundled Omarchy color palettes are used under the MIT License; see third-party notices.

Credits

  • Sink by Nicholas Conn - original project and inherited codebase.
  • Omarchy - bundled stock color palettes.
  • Material Symbols - interface icon font.
  • Fira Code - bundled application font.
  • PipeWire - Linux audio graph foundation.
  • Tauri - desktop application framework.