Skip to content
MourtyPublic

Repository files navigation

Weir

A Voicemeeter-style audio mixer for Linux, built on PipeWire.

Weir's mixer window

Weir puts the sound on your computer on a mixing desk. Your microphone, your music, your browser and your game each get a strip with a fader. Your headphones, your speakers and a virtual microphone for Discord or OBS each get a bus. A row of buttons beside every fader decides who hears what.

So you hear the game and your friends. Your stream hears your voice and the music, a little quieter, and never the hum of your fan. And every level is one drag away, in one window.

A weir is a low dam across a river: it sets how high the water stands and lets the rest flow on.

What it does

  • As many strips and buses as you need. Each virtual strip is a playback device of its own that applications can choose, such as "Music (Weir)", and each virtual bus is a microphone other programs can record from.
  • A separate mix for every output. A strip can be louder in your headphones than on your stream, and the faders can switch to show any bus's mix.
  • Effects for voices: noise suppression, a noise gate, a compressor, and a 16-band equalizer with a live analyzer behind its curve. Ducking turns the music down while you talk, a safety limiter keeps every output from distorting, and a delay lines up an output that lags, such as a Bluetooth speaker.
  • External effects. For anything else, send a strip or bus through another program, such as Carla with your own plugins, and back.
  • Surround, up to 7.1, with the standard ways of fitting surround onto stereo and stereo onto surround.
  • Hotkeys for anything the mixer does: push to talk, mute, turn the music down, load a scene. They work with the window closed and in full-screen games, and on KDE Plasma they sit in System Settings beside your other shortcuts. A beep or a sound of your own, and the desktop's own volume popup, tell you a key worked, and your stream never hears the beep.
  • Recording. Record any strips and buses as you hear them in the mix, each on its own track, in WAV, FLAC, MP3, Opus or Ogg Vorbis: a folder of files ready for an audio editor, or one file holding every track. Start it from the window, the tray or a hotkey.
  • Meters you can read, with a dB scale beside them, a number for the level now or the highest peak, and colors of your choosing.
  • Setups and scenes. A setup keeps which strips and buses you have, a scene how they sound, and any setup loads with any scene. Rules put applications on the right strip as they start, and can be made for any app Weir has heard, playing or not. Every change can be undone.
  • Export and import your scenes, setups, hotkeys and their sounds, meter colors and preferences, to keep them safe or take them to another computer.
  • When something goes wrong, a crash report says what happened, ready to send with personal details hidden, and safe mode starts Weir with the likely culprits held back, to bring back one at a time.
  • Scriptable. weirctl does everything the window does from a terminal or a script, and a documented protocol lets any program, such as a Stream Deck plugin, do the same.
  • Made for the desktop it runs on. All the mixing happens in a single PipeWire node, adding nothing to PipeWire's own latency. Weir follows your light or dark theme, lives in the tray, and keeps running when its window is closed.

A strip's settings: noise gate, compressor and equalizer

The Hotkeys window: push to talk, mute and music keys, some in groups

Install

Download a package

The easiest way. On the latest release, under Assets, download the file for your system and open it: your software center installs it. Or install it from a terminal, in the folder you saved it to:

System File In a terminal
Fedora, Nobara the one ending in .x86_64.rpm sudo dnf install ./weir-*.rpm
Ubuntu 24.04 and newer, Linux Mint 22, Pop!_OS 24.04, Debian 13 the one ending in _amd64.deb sudo apt install ./weir_*.deb
Arch Linux, CachyOS, EndeavourOS the one ending in .pkg.tar.zst sudo pacman -U ./weir-*.pkg.tar.zst

On a 64-bit ARM computer, such as a Raspberry Pi 5, an Apple Silicon Mac running Fedora Asahi Remix, or an ARM laptop, take the .aarch64.rpm or the _arm64.deb instead. There is no ready-made ARM package for Arch; on Arch Linux ARM, build Weir with the Arch steps below. The ARM packages pass the same automatic tests as the others, but neither they nor an Arch Linux ARM build have been tried on an ARM computer yet, so if you try one, please report how it went. On a Raspberry Pi, Weir needs Raspberry Pi OS from late 2025 (based on Debian 13) or newer.

On any other distribution, or to try Weir without installing it, take the AppImage: Weir-…-x86_64.AppImage, or Weir-…-aarch64.AppImage on ARM (like the ARM packages, not yet tried on an ARM computer). Allow it to run (chmod +x Weir-*.AppImage) and open it. It needs PipeWire with WirePlumber and a system from 2024 or newer; the user guide has the rest.

GitHub builds the packages from the code here and signs a record of it. To check that a download is exactly what GitHub built, use the GitHub command-line tool, signed in with gh auth login: gh attestation verify weir_*.deb --repo Mourty/Weir (or whichever file you downloaded).

A downloaded package does not update itself, but Weir can tell you when a new version is out: it asks the first time it starts, and only ever tells you, never installs anything. Or choose Watch → Custom → Releases at the top of Weir's GitHub page.

After installing a new version, choose Restart Weir in Weir's tray menu, or log out and back in. Until then the old version keeps running, and a mixer window opened in between may not work with it.

To remove Weir, run sudo dnf remove weir, sudo apt remove weir or sudo pacman -R weir.

Or build it yourself

For other systems, or the newest changes. It takes five to fifteen minutes, and has been tested on each of the systems below. Open a terminal and follow the steps for yours:

Fedora and Nobara
sudo dnf install git-core cargo rust clang cmake make pipewire-devel pkgconf-pkg-config rpm-build rpmdevtools desktop-file-utils libappstream-glib
git clone https://github.com/Mourty/Weir
cd Weir
make rpm-install

This installs Weir as a package, which dnf updates and removes like any other.

Ubuntu, Linux Mint, Pop!_OS and Debian

If sudo says you are not in the sudoers file (Debian leaves it off your account when a root password is chosen during installation), run su - -c "usermod -aG sudo $USER", give the root password, and restart the computer.

These systems' own Rust is too old to build Weir, so this gets a current one from rustup, the Rust project's installer, which keeps it in your home folder. If it says Rust is already installed (the system's own, from an earlier build), type y and press Enter: pressing Enter alone cancels. Both can stay installed.

sudo apt update
sudo apt install git curl build-essential clang cmake pkg-config libpipewire-0.3-dev
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh     # press Enter to accept the default
. "$HOME/.cargo/env"
git clone https://github.com/Mourty/Weir
cd Weir
make install
Arch, CachyOS and other Arch-based systems
sudo pacman -Syu --needed base-devel clang cmake rust git
git clone https://github.com/Mourty/Weir
cd Weir
make install

On another system, Weir needs PipeWire 0.3.77 or newer with WirePlumber. Install Rust 1.95 or newer, clang, a C compiler, make, CMake, pkg-config and PipeWire's development files, then run make install from the Weir folder.

After make install, the weirctl command works from your next login. To update, run git pull in the Weir folder, then the last line you installed with again, then choose Restart Weir in Weir's tray menu (the same goes the first time, if an older Weir was already running). To remove it, sudo dnf remove weir on Fedora and Nobara, or make uninstall in the Weir folder elsewhere.

Then

Open Weir from your application menu. To have it ready whenever you log in, tick Start Weir when I log in on the General page of Preferences, in the … menu at the top right. Your settings stay in ~/.config/weir, even if you remove Weir, until you delete that folder.

First steps

A new install has a microphone strip, three strips for applications (Music, Browser, Soundboard), Headset and Speakers buses for what you hear, and a Stream Mic bus for what others hear.

  1. On the Mic strip, pick your microphone.
  2. On the Headset bus, pick your headphones or speakers.
  3. In your applications' sound settings, choose "Music (Weir)" or "Browser (Weir)" as the output, or move them from the Apps menu.
  4. In Discord, OBS or your browser, choose Stream Mic (Weir) as the microphone.

You now hear everything but yourself, and others hear you with everything you sent them.

Learn more

User guide Everything in the window: routing, effects, surround, setups and scenes, hotkeys, export and import, preferences, and what to do when something is wrong.
weirctl The command line, for scripts and anything else that can run a command.
Control protocol For Stream Deck plugins, scripts and anything else, with examples in the shell, Python and JavaScript. Ready-made clients are in examples.
How Weir works The design, for the curious and for contributors.
Contributing Building, testing without a sound card, and the rules the code follows.

Weir and Voicemeeter

Weir is inspired by Voicemeeter from VB-Audio and borrows its layout: input strips on the left, output buses on the right, and a column of routing buttons on every strip. The user guide shows where Voicemeeter's bus modes are in Weir. It is an independent project, not affiliated with or endorsed by VB-Audio, and shares no code with Voicemeeter, which is a trademark of VB-Audio Software. On Windows, use Voicemeeter itself; Weir exists because it does not run on Linux.

Status

Weir is stable and in everyday use, and each release is tried on KDE Plasma before it comes out. There are packages for Fedora and Nobara, for Ubuntu, Debian, Linux Mint and Pop!_OS, and for Arch, and Weir has been built and run on Fedora, Nobara, Ubuntu, Linux Mint, Pop!_OS, Debian and CachyOS. Your settings carry over to every new version: when one keeps them differently, it updates them the first time it starts, and keeps a copy of the old ones in ~/.config/weir/backups.

Plasma is where Weir is used most. The mixer itself works the same on any desktop, but hotkeys, their popups and the tray have seen less use elsewhere, and GNOME shows the tray icon only with its AppIndicator extension.

Sound hardware varies endlessly, so reports of how Weir does with yours, good or bad, are very welcome. Report a problem… in Weir's About window, in the … menu, opens a report on GitHub with the details it needs already filled in; see also Contributing.

AI Notice

I want to make it very clear that this entire project was coded by AI.  Specifically, Anthropic’s Claude Code using Opus 5.5. None of this code was written by a human. In fact, the only part of this project written by a human is this AI usage notice. I simply wanted a piece of software that could route audio in this way, and I used AI to make that happen.

License

Weir is released under the MIT license. Its noise suppression comes from nnnoiseless, a Rust port of RNNoise, under the BSD 3-clause license. Recordings in MP3 are made with LAME, built into Weir under the GNU LGPL, whose license is installed beside Weir's as LAME-COPYING.txt.