An enhanced audio bar widget for Omarchy — everything the built-in widget does, plus per-app input (mic) routing.
Part of OMARCHY100 — a 100-plugin suite for Omarchy.
Features • Install • Usage • How it works
Omarchy's built-in Audio widget is already comprehensive: output and input sliders, device pickers, a full per-app output mixer with MPRIS-aware labels, mute toggles, a live mic peak meter. This plugin clones that code as-is and adds the one thing it doesn't have: routing a specific app's microphone input to a different device than whatever everything else is using.
It installs as its own independent plugin — both it and the built-in widget can be enabled at once, so you can compare them side by side before deciding which stays on your bar.
- Features
- Install
- Usage
- How it works
- External dependencies
- Settings storage
- Uninstalling
- Changelog
- License
- Author
Everything the built-in omarchy.audio already has:
- Output and input volume sliders with mute toggles.
- Output and input device pickers, with headphone/Bluetooth/HDMI-aware icons.
- Per-app output mixer ("SOURCES") — individual volume per playing app, with MPRIS-aware labels.
- A live mic peak meter under the input slider.
New in this plugin:
- Per-app input routing — a new "INPUT ROUTING" section listing every app currently capturing audio (a voice call, a browser tab, Voxtype dictation, whatever's actually using the mic right now), each with its own device picker independent of the global input device. Pick a different mic for one app without touching what everything else uses. Stays out of the way entirely when nothing's capturing.
- Remembered per app — the choice you make for an app is saved and reapplied automatically the next time that app starts a new capture stream (a call reconnects, the app restarts), without needing to pick it again.
omarchy plugin add https://github.com/AROICE-HQ/omarchy-audio.git --enable
Or, to develop/inspect it locally first:
omarchy plugin clone io.github.aryan-techie.audio --edit
(swap in this repo's contents, or copy this folder to
~/.config/omarchy/plugins/io.github.aryan-techie.audio/ directly and run
omarchy-shell shell rescanPlugins if it doesn't pick up right away).
Everything from the built-in widget works the same way — click the bar pill to open the panel, drag the sliders, click a device to make it default, click a SOURCES row's app to adjust its volume.
- Input routing: open the panel while an app is using your microphone. An "INPUT ROUTING" section appears below SOURCES, one row per app, each with a small pill per available input device — click one to move just that app to it.
- Nothing to configure ahead of time; the section only appears when there's something to route.
- Detecting capture streams: reads
pactl -f json list source-outputsandpactl -f json list sourcesdirectly, rather than reusing Quickshell's own Pipewire node list —pactl move-source-output(the command that actually does the routing) expects pactl's own numeric indices, and mixing those with a separately-numbered id space would be a silent bug waiting to happen. - Routing:
pactl move-source-output <stream-index> <source-name>, the standard PipeWire/PulseAudio-compat mechanism for moving one capture stream without touching the system default. - The widget's own mic peak meter is filtered out of the list — it
opens its own capture stream to read levels (
Quickshell Peak Detect), which isn't a real app to route and would otherwise always be present whenever the section could even show. - Remembering a choice: keyed by a lowercased, trimmed version of the
app's label, stored inline in the widget's own entry in
~/.config/omarchy/shell.json(the same mechanism every other bar widget's settings already use), and reapplied automatically whenever a stream from that app reappears on a different source than requested.
Runs pactl via Quickshell's Process — standard on any PipeWire-based
Omarchy install (PipeWire's pipewire-pulse compatibility layer, which
pactl talks to, is what the built-in Audio widget itself already relies
on). Nothing here touches the network or needs elevated privileges.
Only the per-app input-route preferences, inline in this widget's own
entry in ~/.config/omarchy/shell.json — no separate state file.
omarchy plugin remove io.github.aryan-techie.audio
This removes the plugin and its bar entry. The built-in Audio widget (if you still have it enabled) is unaffected.
See CHANGELOG.md.
MIT — see LICENSE.
Aryan Techie (Aryan Jangra)
- 🌐 Website: aryan.aroice.in
- 📧 Email: aryan@aroice.in
- 🐙 GitHub: @Aryan-Techie
- 🏢 Organization: AROICE
Made with ❤️ by AROICE
Clear tools for a clear mind.