Microphone management and noise suppression for Omarchy Linux.
Uses DeepFilterNet — a deep neural network for real-time noise suppression via PipeWire. Optionally configures Shure MV7 hardware DSP over USB HID.
- DeepFilterNet noise suppression — better than RNNoise for keyboard clicks, background noise, and voice naturalness
- Shure MV7 hardware DSP — configure compressor, high-pass, presence filter, limiter, and gain directly on the mic via USB HID
- MV7 auto-setup — automatically selects MV7 and applies voice preset on plug-in (udev)
- Waybar integration — mic icon with noise toggle (click) and mic picker (right-click)
- Instant mic switching — select input mic via walker menu, no PipeWire restart needed
- Toggle without restart — enable/disable noise suppression by switching default source, no audio interruption
- Arch Linux with PipeWire + WirePlumber
walker(for mic picker UI)hidapi(for MV7 USB HID, optional)
git clone https://github.com/DominicBoettger/omarchy-mic.git ~/Development/omarchy-mic
cd ~/Development/omarchy-mic
./install.shThe install script will:
- Install dependencies (
noise-suppression-for-voice,hidapi) - Download DeepFilterNet LADSPA plugin (~50MB, includes neural network model)
- Download the pre-built
omarchy-micbinary from GitHub releases - Install PipeWire filter-chain config
- Install WirePlumber mic priority rules
- Install udev rules for Shure MV7 hotplug (requires sudo)
- Install systemd user service for MV7 auto-setup
- Apply Framework Laptop 13 AMD audio fixes (if detected)
After install, restart PipeWire once:
systemctl --user restart pipewire pipewire-pulse
omarchy-mic noise onomarchy-mic status Show mic, noise suppression, and MV7 status
omarchy-mic status --json JSON output
omarchy-mic noise on Enable noise suppression (set DeepFilterNet as default source)
omarchy-mic noise off Disable noise suppression (set real mic as default source)
omarchy-mic toggle Toggle noise suppression on/off
omarchy-mic select Pick input mic via walker menu
omarchy-mic mv7 status Show MV7 DSP settings (firmware, gain, compressor, etc.)
omarchy-mic mv7 voice Apply voice preset (high-pass, presence, light compressor, limiter)
omarchy-mic mv7 compressor off Set compressor (off/light/medium/heavy)
omarchy-mic mv7 high-pass on Toggle high-pass filter
omarchy-mic mv7 presence on Toggle presence filter
omarchy-mic mv7 limiter on Toggle limiter
omarchy-mic mv7 gain 24.0 Set input gain in dB (0-36)
omarchy-mic mv7 identify Blink MV7 LEDs
omarchy-mic waybar JSON output for Waybar custom module
omarchy-mic setup Auto-detect MV7, apply voice preset, select as input
Add to ~/.config/waybar/config.jsonc:
Add to ~/.config/waybar/style.css:
#custom-mic {
min-width: 12px;
margin: 0 0 0 7.5px;
}
#custom-mic.inactive {
color: #666666;
}DeepFilterNet runs as a PipeWire filter-chain module. It creates a virtual microphone (deepfilter_source) that captures from your physical mic and outputs noise-suppressed audio. The attenuation limit is set to 12 dB for natural voice with moderate noise reduction.
Physical Mic → DeepFilterNet (LADSPA) → deepfilter_source → Apps
Toggling noise suppression switches the default PipeWire source between deepfilter_source (filtered) and the physical mic (raw) — no PipeWire restart needed.
The MV7 has an onboard DSP accessible via USB HID (vendor 0x14ED, product 0x1012, interface 3). The tool sends text commands over 64-byte HID reports to configure:
- High-pass filter — cuts low-frequency rumble
- Presence filter — boosts voice clarity
- Compressor — evens out volume (off/light/medium/heavy)
- Limiter — prevents clipping
- Input gain — 0-36 dB
The voice preset enables high-pass + presence + light compressor + limiter.
A udev rule triggers omarchy-mic setup when the MV7 is plugged in. This:
- Detects the MV7 via PipeWire
- Selects it as the DeepFilterNet input (via
pw-link) - Applies the voice DSP preset via USB HID
When unplugged, PipeWire automatically falls back to the next available mic.
| File | Purpose |
|---|---|
~/.local/share/omarchy/bin/omarchy-mic |
Binary |
~/.ladspa/libdeep_filter_ladspa.so |
DeepFilterNet LADSPA plugin |
~/.config/pipewire/pipewire.conf.d/99-noise-suppression.conf |
PipeWire filter config |
~/.config/wireplumber/wireplumber.conf.d/50-default-mic.conf |
Mic priority rules |
~/.config/omarchy-mic/noise-enabled |
Noise suppression state |
~/.config/omarchy-mic/selected-mic |
Selected physical mic |
~/.config/systemd/user/omarchy-mic-setup.service |
MV7 hotplug service |
/etc/udev/rules.d/99-shure-mv7.rules |
MV7 udev rules |
To contribute this as an Omarchy addon, it would follow the Omarchy distribution pattern:
- Package list: Add
hidapitoinstall/omarchy-base.packages - Binary: Ship pre-built binary or add build step to install
- Configs: Add default configs to
config/pipewire/andconfig/wireplumber/ - Refresh script: Create
bin/omarchy-refresh-micto deploy configs - Migration: Add a migration script to install DeepFilterNet LADSPA plugin on update
cd ~/Development/omarchy-mic
./uninstall.sh
systemctl --user restart pipewire pipewire-pulse- DeepFilterNet by Hendrik Schroeter — deep neural network noise suppression
- mv7config by Matteo Delabre — Shure MV7 USB HID protocol reference
- noise-suppression-for-voice — RNNoise LADSPA plugin (fallback)
MIT License — see LICENSE