Native Linux soundboard with PipeWire virtual microphone, LUFS normalization, and global hotkeys for Wayland and X11.
Download · Install Guide · Feature Reference · Screenshots · Troubleshooting
Install with one command — no root required:
curl -fsSL https://raw.githubusercontent.com/germanua/Linux-SoundBoard/main/install.sh | bashSets up the runtime audio engine, desktop entry, and icons automatically.
Linux Soundboard routes sound effects into a runtime virtual microphone (Linux_Soundboard_Mic) that apps can use as their input device. By default it leaves EasyEffects or your real microphone as the system default, then routes movable recording apps to the soundboard mic while the engine is running.
Unlike browser-based or Electron wrappers, this is a native Rust + GTK4 + PipeWire application. The audio engine runs as a background systemd user service, creates the virtual microphone at runtime, and keeps audio active even when the UI is closed.
Full gallery → docs/SCREENSHOTS.md
The command at the top of this page is all you need.
install.sh detects your distro and does the right thing:
| Distro | What happens |
|---|---|
| Arch / CachyOS / EndeavourOS | Installs from the AUR via yay or paru |
| Debian / Ubuntu | Downloads and installs the .deb package |
| Fedora | Downloads and installs the .rpm package |
| Everything else | Downloads the release tarball and runs the user-space installer |
On Wayland, swhkd for global hotkeys is installed automatically.
After install, use install.sh for full repair/uninstall. The low-level
install-user.sh tool remains available when you only want to manage per-user
files:
install.sh repair # repair via the smart wrapper
install.sh uninstall --yes # remove user files and native package
install-user.sh repair # clean old audio configs, restart engine
install-user.sh remove # uninstall with interactive prompt
install-user.sh remove --yes # uninstall without prompts
install-user.sh status # show what is installed and service statuschmod +x linux-soundboard-x86_64.AppImage
./linux-soundboard-x86_64.AppImageThe AppImage creates the virtual mic only while its audio engine is running and does not install the engine service or desktop entry by itself. Run install-user.sh install linux-soundboard-x86_64.AppImage for a full install from the AppImage.
- Install using the method above. The engine creates
Linux_Soundboard_Micwhile it is running. - Launch
linux-soundboardfrom your application menu or terminal. - In Discord, OBS, Zoom, or your game — select
Linux_Soundboard_Micas the microphone input when the app has an input selector. - Keep Microphone Routing set to Default (recommended). The soundboard claims the system default mic so apps use it automatically. Switch to Manual only if you manage the default mic yourself via pavucontrol or similar.
- Add a sound folder or drag audio files into the window to build your library.
- On Wayland: if you see a hotkey warning, click Install in the banner to install
swhkdfor global hotkeys.
┌─────────────────────────────────────────────────────┐
│ GTK4 UI process │
│ - Sound library, tabs, search │
│ - Transport bar (play / pause / stop / scrub) │
│ - Settings, hotkey management │
│ - Communicates via Unix socket IPC │
└──────────────────────────┬──────────────────────────┘
│ IPC (Unix socket)
┌──────────────────────────▼──────────────────────────┐
│ Audio engine (linux-soundboard-engine.service) │
│ - PipeWire streams: local speakers + virtual mic │
│ - Mic passthrough mixing │
│ - Volume, LUFS normalization, seeking, looping │
│ - Stays running when the UI window is closed │
└─────────────────────────────────────────────────────┘
The engine is a separate systemd user service. This design keeps the runtime virtual microphone and mic passthrough active regardless of whether the UI is open, and means opening/closing the UI window has no audio interruption. Closing the UI window sends a StopAll command to the engine first so active sounds stop cleanly.
- LUFS normalization — per-sound gain so every clip plays at a consistent loudness regardless of how it was recorded
- Three play modes — Default (play once), Loop (repeat indefinitely), Continue (auto-advance to the next sound)
- Transport controls — play/pause, stop all, previous/next, scrub bar with seek
- Multiple output levels — independent sliders for local speakers and virtual microphone
- Runtime virtual mic —
Linux_Soundboard_Micis created by the active engine, uses low PipeWire priority, and is unmuted on registration - Mic passthrough — blends your real microphone into the virtual mic stream so your voice and sound effects go out on the same input device
- Default mode — the soundboard claims the system default mic so recording apps use
Linux_Soundboard_Micautomatically, with no per-app configuration needed - Manual mode — the soundboard never changes the default mic; use this if you manage the default source yourself via pavucontrol or a similar tool
- EasyEffects coexistence — captures processed mic audio from EasyEffects while using the soundboard mic as the default input
- Tabs — organize sounds into named tabs; the General tab shows all sounds
- Folder sync — point at a folder; files added or removed from disk are picked up on startup and manual refresh
- Drag and drop — drag files or folders from a file manager directly into the window
- Search — real-time search bar filters the visible list
- Hotkeys — assign a global key combination to any sound; Wayland uses
swhkd, X11 uses a native XInput2 backend
| Session | Backend | Notes |
|---|---|---|
| Wayland | swhkd |
In-app one-click install via PolicyKit |
| X11 | Native XInput2 | No extra software needed |
| XWayland | Native XInput2 | Works without swhkd |
~ pass-through prefix is applied automatically so hotkey combinations do not get consumed by the system.
| Document | Contents |
|---|---|
| Installation Guide | Full install, repair, and uninstall instructions including install-user.sh reference |
| Feature Reference | Every UI element, right-click menu, control hotkey, and setting |
| Screenshot Gallery | Interface screenshots |
| Troubleshooting Guide | PipeWire, renderer, hotkey, and packaging issues |
| Bug Reporting Guide | How to file a useful bug report |
| Changelog | Version history |
# Arch
sudo pacman -S cargo rust pkgconf imagemagick gtk4 libadwaita libpulse alsa-lib opus libx11 libxi pipewire wireplumber
# Debian / Ubuntu
sudo apt install build-essential cargo rustc pkg-config imagemagick \
libgtk-4-dev libadwaita-1-dev libpulse-dev libasound2-dev libopus-dev libx11-dev libxi-dev pipewire wireplumber
# Fedora
sudo dnf install cargo rust gcc gcc-c++ clang pkg-config ImageMagick \
gtk4-devel libadwaita-devel pulseaudio-libs-devel alsa-lib-devel opus-devel libX11-devel libXi-devel pipewire-devel pipewire wireplumbergit clone https://github.com/germanua/Linux-SoundBoard.git
cd Linux-SoundBoard/src
cargo build --release
cd ..
./packaging/linux/install-user.sh install ./target/release/linux-soundboardFull source-build notes are in docs/INSTALL.md.
- Issues: https://github.com/germanua/Linux-SoundBoard/issues
- Discussions: https://github.com/germanua/Linux-SoundBoard/discussions
- AUR package: https://aur.archlinux.org/packages/linux-soundboard-git
Linux Soundboard is licensed under the PolyForm Noncommercial 1.0.0 license. Commercial use requires a separate license.
Linux Soundboard is built on Rust, GTK4, Libadwaita, and the Linux audio ecosystem. Key components include Symphonia for audio decoding, PipeWire and WirePlumber for virtual mic routing, and swhkd for Wayland hotkey capture.
Full third-party license notices are in THIRDPARTY_LICENSES.md.



