8000 GitHub - AROICE-HQ/omarchy-audio: Better Audio for Omarchy: everything the built-in mixer does, plus per-app input (mic) routing · GitHub
[go: up one dir, main page]

Skip to content

About

Better Audio for Omarchy: everything the built-in mixer does, plus per-app input (mic) routing

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

Repository files navigation

Better Audio for Omarchy

An enhanced audio bar widget for Omarchy — everything the built-in widget does, plus per-app input (mic) routing.

License: MIT Version Omarchy plugin

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.

Better Audio panel — output/input sliders and device pickers, per-app SOURCES mixer

Contents

Features

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.

Install

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).

Usage

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.

How it works

  • Detecting capture streams: reads pactl -f json list source-outputs and pactl -f json list sources directly, 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.

External dependencies

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.

Settings storage

Only the per-app input-route preferences, inline in this widget's own entry in ~/.config/omarchy/shell.json — no separate state file.

Uninstalling

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.

Changelog

See CHANGELOG.md.

License

MIT — see LICENSE.

Author

Aryan Techie (Aryan Jangra)


Made with ❤️ by AROICE

Clear tools for a clear mind.

About

Better Audio for Omarchy: everything the built-in mixer does, plus per-app input (mic) routing

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

0