osfeed.dev
Projects/tsowell / wiremix

wiremix

A terminal audio mixer for PipeWire

Get it on GitHub
Unclaimed

This page was written by @iluxav from public sources, last updated for v0.11.0 (2026-06-04), and may lag behind new releases.

Are you @tsowell?Claim this page to keep it up to date
v0.11.0 · 9 things you can do 3 changes to know before upgrading
Follow GitHub

Adjust volumes, mute, route audio between apps and devices, and pick device ports and profiles for PipeWire from the terminal.

What you can do with wiremix

Change and mute the volume of each playing app, recording stream and audio device.

Since v0.2.0
Good to know

PipeWire only.

Set the default audio output or input device.

Since v0.2.0

Choose input and output ports and profiles for audio devices.

Since v0.2.0

See live audio levels for each stream and device.

Since v0.2.0

See all key bindings in a help menu inside the mixer.

Since v0.6.2

Start wiremix from a desktop application launcher.

Since v0.8.0
Good to know

The desktop entry has to be installed by your package or by hand.

Hide streams and devices from the lists with match rules on their PipeWire properties.

Since v0.10.0

Before you upgrade wiremix

Newest first
wiremix release history 9
v0.11.0

Choose which tabs the mixer shows and in what order.

Details

New tabs setting and -T/--tabs flag listing playback, recording, output, input and configuration in the order you want. Release builds no longer exit on PipeWire errors.

v0.11.0.

Improved: Change key bindings, colors, characters and how str…Behavior changed

Seeded by @iluxav with Claude Code (canido)

Read the evidence
v0.10.0

Hide streams and devices you never touch from the mixer's lists.

Details

New [[filters]] blocks with PipeWire-style match rules (regex with ~, negation with !, null checks). Name overrides now take matches = [...] instead of property and value; the old form still loads. Tags no longer need a node:/device:/client: prefix.

Also: AirPods and other endpoints with media.name now get the proper names; --version no longer includes git describe information.

v0.10.0; wiremix.toml can use TOML 1.1.

Added: Hide streams and devices from the lists with match…Improved: Change key bindings, colors, characters and how str…

Seeded by @iluxav with Claude Code (canido)

Read the evidence
v0.9.0

Use less CPU by measuring audio levels only for the streams on screen.

Details

New lazy_capture setting and --lazy-capture flag (off by default). The default fps is now 60 instead of unlimited.

v0.9.0.

Improved: See live audio levels for each stream and device.Behavior changed

Seeded by @iluxav with Claude Code (canido)

Read the evidence
v0.8.0

Start wiremix from your application launcher.

Details

Ships wiremix.desktop. wiremix no longer exits on the non-fatal PipeWire error "Buffer allocation failed".

v0.8.0.

Added: Start wiremix from a desktop application launcher.Now works: Change and mute the volume of each playing app, rec…

Seeded by @iluxav with Claude Code (canido)

Read the evidence
v0.7.0

Name streams and devices with any PipeWire property, not only a fixed list.

Details

Any PipeWire object property can be used in name templates and overrides; pw-dump shows the available ones.

v0.7.0.

Improved: Change key bindings, colors, characters and how str…

Seeded by @iluxav with Claude Code (canido)

Read the evidence
v0.6.2

Cap volume sliders at a level you choose so nothing gets turned up too loud.

Details

New max_volume_percent (default 150) and enforce_max_volume (default false) settings and flags; a key binding help menu on ?. Groups v0.6.0 to v0.6.2.

Also: --version shows git describe information; help text wraps to the terminal width.

v0.6.2.

Improved: Change and mute the volume of each playing app, rec…Added: See all key bindings in a help menu inside the mixe…

Seeded by @iluxav with Claude Code (canido)

Read the evidence
v0.5.0

Name streams by the application that plays them.

Details

Name templates can use client:application.name and client:application.process.binary, for example "Application {client:application.name} playing {node:media.name}".

v0.5.0.

Improved: Change key bindings, colors, characters and how str…

Seeded by @iluxav with Claude Code (canido)

Read the evidence
v0.4.0

Open wiremix straight on the tab you use most.

Details

New -v/--tab option and tab setting in wiremix.toml for the initial tab (v0.3.0). In v0.4.0 the OpenDropdown and SelectDropdown key actions became one ActivateDropdown action, bound to c and Enter.

v0.4.0; also packaged in flake.nix for Nix.

Improved: Change key bindings, colors, characters and how str…Action required / inferred: Change key bindings, colors, characters and how str…

Seeded by @iluxav with Claude Code (canido)

Read the evidence
v0.2.0
First release

Change the volume of each app and audio device in PipeWire from a terminal.

Details

First releases (v0.1.0 to v0.2.0). Tabs for playback, recording, output devices, input devices and configuration; arrow keys or hjkl adjust volume, m mutes, c opens a dropdown to route audio, d sets the default device. Options for config path (-c), remote (-r), fps (-f), character set (-s), theme (-t), peak meters (-p) and mouse.

Also: Shift+Tab moves to the previous tab (v0.2.0).

cargo install wiremix; needs PipeWire, and Rust, libpipewire, pkg-config and clang to build.

Added: Change and mute the volume of each playing app, rec…Added: Send an app's audio to a different output or take i…Added: Set the default audio output or input device.Added: Choose input and output ports and profiles for audi…Added: See live audio levels for each stream and device.Added: Change key bindings, colors, characters and how str…

Seeded by @iluxav with Claude Code (canido)

Read the evidence