Omahub
← All plugins
V

GoXLR

by Vladimir Cotric

GoXLR mixer control in the Omarchy bar: channel volumes, fader mutes, and profile switching via goxlr-daemon.

Security review

No obvious issues detected

Deterministic scan — not a security guarantee

None
Risk level
None
Analyzed commit
b3f0022
Scanned
1 month ago

No potentially dangerous behavior detected in the analyzed commit.

Automated analysis only — not a security guarantee.

AI advisory review

No obvious issues detected

Language-model assessment · ~deepseek/deepseek-v4-flash-latest — advisory only

None
AI risk level
None
Recommendation
install
Model
~deepseek/deepseek-v4-flash-latest
Analyzed commit
b3f0022
Reviewed
1 month ago

The plugin is a straightforward bar widget that reads and writes GoXLR mixer state through the local goxlr-client daemon. All commands are executed as argument arrays (no shell), inputs are validated and mapped to fixed channel names, and there is no install-time code, persistence, or network activity. The deterministic scan found no issues, and manual review confirms no dangerous behavior.

How this check works

This review combines the deterministic scan (the rule-based results above) with an independent look at the plugin's code by a language model. The model reads a trimmed sample of the repository's files, the manifest, and the README, then gives a plain-language risk level and a recommendation: install (no notable danger), review (look closer first), or avoid (clearly dangerous).

It runs on the same analyzed commit as the deterministic scan and is strictly advisory — it is not a security guarantee and never blocks a plugin by itself. A human moderator still reviews plugins before they are listed.

AI advisory only — automated analysis, not a security guarantee.

Install
$ omarchy plugin add https://github.com/thedarkcr0w/omarchy-goxlr --enable
System #quickshell

GoXLR

Mixer control for a TC-Helicon GoXLR, in the Omarchy bar.

TC-Helicon never shipped Linux software for these. goxlr-utility does the hard part — it talks to the device and exposes a daemon — but its UI is a web page, and opening a browser tab to mute your microphone mid-call is not a good arrangement. This puts the controls you actually reach for during a call one click away, and shows mic state in the bar so you can see you are muted without opening anything at all.

The mixer panel: headphone master, every channel the device reports, and profiles.

Requirements

  • Omarchy 4 (Quattro shell)
  • goxlr-utility 1.x, with goxlr-daemon running (yay -S goxlr-utility, then systemctl --user enable --now goxlr-daemon)
  • A GoXLR or GoXLR Mini

The widget reports the specific reason when any of that is missing rather than drawing a dead mixer, so it is safe to install before the hardware arrives.

Install

omarchy plugin add https://github.com/thedarkcr0w/omarchy-goxlr --enable

Using it

Interaction Result
Left click Open the mixer panel
Right click Mute / unmute the mic
Middle click Force a refresh
Scroll on icon Headphone volume ±4%
m (panel open) Mute / unmute the mic
Esc Close

The bar icon is a set of mixer faders normally, and a struck-through microphone in the theme's urgent colour while the mic is muted — so mic state is readable at a glance without opening anything.

Panel

  • Headphones master at the top.
  • Mixer — every channel the device reports. Channels bound to a physical fader show their fader letter (A–D) and a mute toggle; unassigned channels are volume-only, because the device has no mute for them.
  • Profiles — every profile the daemon knows about; the active one is outlined in the theme accent. Clicking one loads it.

How it works

bin/goxlr-state wraps goxlr-client --status-json (a local IPC call to the daemon, ~4ms) and reshapes its very large payload into just what the panel draws. Writes go out as ordinary goxlr-client calls:

goxlr-client volume <channel> <0-100>
goxlr-client faders mute-state <a|b|c|d> <unmuted|muted-to-x|muted-to-all>
goxlr-client profiles device load "<name>"

The device reports volumes as 0–255 but goxlr-client volume takes a percentage, so the helper normalises everything to percent.

Slider drags are applied optimistically and pushed to the device on a 60ms throttle, so a fast drag doesn't spawn a goxlr-client per pixel. The poll (700ms while open, 4s while closed) skips overwriting a slider mid-drag, so the panel also tracks the physical faders when you move them by hand.

Muted channels

Muting a fader to All makes the device report that channel's volume as 0 and restore it on unmute. The panel shows that honestly, and disables the slider while muted — otherwise you would be dragging a real level against a reading that isn't the real one. Unmute from the channel icon.

If the device is unplugged

The panel says so rather than showing a dead mixer, and the helper reports the specific reason (goxlr-client not installed, goxlr-daemon not responding, no GoXLR connected). The widget recovers on its own when the device returns.

Configuration

None. Everything the widget shows is read from the device through the daemon, including which channels exist and which faders they are bound to, so a GoXLR and a GoXLR Mini both come up correct with no setup.

Removing it

omarchy plugin remove io.github.thedarkcr0w.goxlr --yes

Nothing is written outside the plugin folder — the device keeps its own state, so your volumes and profiles are exactly where you left them.

License

MIT. See LICENSE.