SndBus is a Pipewire-native soundboard app for Linux.
Find a file
2026-05-12 22:23:06 +02:00
assets small fix to reduce built size, exclude repo assets from compilation qwq. also update README.md 2026-05-12 22:23:06 +02:00
qml restructure cmakelists.txt, move to building resources to embed while building (cmakelists.txt), modify icon picker so icons are smaller, include default_config (icons) in executable 2026-05-12 21:34:50 +02:00
src add assetdeployer to copy files to config dir if empty or missing 2026-05-12 22:12:17 +02:00
.gitignore add generate_icons_json.sh and add it to CMakeLists.txt; small restructuring of deafult_config/icons 2026-05-12 21:55:26 +02:00
CMakeLists.txt add assetdeployer to copy files to config dir if empty or missing 2026-05-12 22:12:17 +02:00
context.sh custom icons implementation. full move to the new uuid icon system from system icons 2026-05-12 13:20:55 +02:00
generate_icons_json.sh add generate_icons_json.sh and add it to CMakeLists.txt; small restructuring of deafult_config/icons 2026-05-12 21:55:26 +02:00
LICENSE Initial commit 2026-05-07 21:39:03 +02:00
Makefile basic grid ui in qml, headers for soundmodel and audioengine, actual project init 2026-05-07 22:16:40 +02:00
README.md small fix to reduce built size, exclude repo assets from compilation qwq. also update README.md 2026-05-12 22:23:06 +02:00
visualisation-graph.png small fix to reduce built size, exclude repo assets from compilation qwq. also update README.md 2026-05-12 22:23:06 +02:00

SndBus icon

SndBus

SndBus is a Pipewire-native soundboard app for Linux. Built with C++ and Qt/QML for native performance and a pretty UI. Whether you're trolling friends on Discord or adding "production value" to a livestream, SndBus handles the routing so you don't have to mess with graph tools.

Originally built because I couldn't find a better tool. I know it's not perfect and probably has some discrepencies and weird design decisions, but it's my first Qt app.

Features

  • Add samples via a file picker or just drag them directly onto the grid
  • Automatically mix your microphone with your sounds. Want a sound-only track for OBS? Just set the input to "None"
  • Set start and end points for audio files with a waveform preview
  • Zero latency monitoring thanks to the PipeWire routing only approach
  • Assign your own images for samples
  • Linux first - not a port, not a wrapper. Built for the modern Linux audio stack by someone who uses it every single day

How it works

SndBus acts as a high level manager for PipeWire. Instead of just playing an audio file to your speakers like a media player, or doing a lot of internal processing, it makes a "signal bus" (hence the name) using a few tricks.

When you start SndBus, it uses pw-loopback to spawn two virtual nodes: SndBus Sink and SndBus Virtual mic. Think of the Sink as a mixing deck; This is where the hardware mic and soundboard sounds combine into one stream. From there, the stream is routed to the SndBus Virtual mic - a node that apps like Discord or OBS see as a regular microphone.

qpwgraph visualisation

To actually get the sounds into that plumbing, SndBus uses miniaudio. SndBus inits two playback engines: virtual (for pushing samples to the sink) and monitor (for, well, monitoring :P)

Because the audio is only ROUTED rather than processed internally, SndBus stays lightweight and avoids large latency or CPU overhead.

Your mic audio is linked directly to the sink via PipeWire, meaning your voice never actually passes through the app.

It's also extremely flexible. If you prefer to mix your voice and sounds separately in OBS, you can just set the input in SndBus to "None" and use the virtual mic just for sound effects.

You also get full control of the monitoring - select any device, or disable it entirely.

Roadmap

  • Run in the background with QSystemTrayIcon
  • Hotkeys using Wayland's global shortcut protocols

Building from source

Dependencies:

  • Qt 6.x (Core, Gui, Qml, Quick, Widgets)
  • PipeWire and WirePlumber
  • CMake
git clone https://git.ignis621.net/ignis621/sndbus.git
cd sndbus
mkdir build && cd build
cmake ..
make
./sndbus

License

This project is licensed under the GNU General Public License v3.0 (GPLv3).

You are free to use, modify, and distribute this software, but any modified versions or derivative works must also be open-source and distributed under the same GPLv3 license.

See the LICENSE file for the full legal text.