Omahub
← All plugins
J

Devices

by Jonas Bove

USB icon in the bar with a popup listing connected USB and Bluetooth devices, each with an accurate type icon.

Security review

No obvious issues detected

Deterministic scan — not a security guarantee

None
Risk level
None
Analyzed commit
b78a903
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

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

The plugin is a straightforward bar widget that reads sysfs and bluetoothctl to list devices, with no network access, no persistence, and no destructive operations. The only external command executed is a guarded wl-copy for clipboard copying, which is safe and clearly documented. The deterministic scan found no issues, and my review agrees with that assessment.

  • The plugin executes `bluetoothctl` and reads sysfs, which is expected for its functionality and poses minimal risk.
  • The clipboard copy uses a shell command with `wl-copy`, but it is guarded by `command -v wl-copy` and only copies device name/detail strings, which are sanitized and not interpreted as shell.
  • No obfuscation, hidden persistence, credential theft, or destructive commands were found in the sampled files.
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/jonasbove/omarchy-devices --enable
Hardware #bar #quickshell

Devices — Omarchy bar plugin

A USB icon (󰕓) in the Omarchy bar. Click it for a popup of everything connected — USB and Bluetooth — each with an icon that actually matches what it is.

Devices popup

(Preview rendered by the plugin with devices-list --demo sample data.)

Keyboard, mouse, webcam, microphone, speaker / headphones / headset, game controller, storage, USB drive, printer, phone, network adapter, serial device, wireless receiver, Bluetooth adapter, Zigbee coordinator (with a Home Assistant icon for Nabu Casa sticks). Anything unknown shows a generic USB icon.

Install

omarchy plugin add https://github.com/jonasbove/omarchy-devices.git --enable

Or via the marketplace at omarchyplugins.com. Remove with omarchy plugin remove jonasbove.devices.

Use

Action Result
Left-click icon Open / close the popup
Right-click icon Refresh the list now
j / k (or arrows) Move between devices
Enter / click row Copy "name — details" to the clipboard (needs wl-copy; silently skipped otherwise)
Esc Close
Tab / Shift+Tab Switch to the neighbouring bar panel

IPC: omarchy-shell jonasbove.devices open|close|toggle

Settings

Set on the widget entry in ~/.config/omarchy/shell.json:

{ "id": "jonasbove.devices", "refreshIntervalSec": 5, "showBluetooth": true }
  • refreshIntervalSec — how often the list re-scans while the popup is open (1–60 s). Nothing runs while it's closed.
  • showBluetooth — include connected Bluetooth devices (needs bluetoothctl).

How devices are classified

devices-list reads sysfs only (no lsusb), and decides the type in layers, most reliable first:

  1. Kernel subsystem bound to the device — bluetooth, video4linux, sound, net, block, tty.
  2. Product/vendor name hints for things interface classes can't tell apart — microphone vs. speaker (both USB Audio), receivers vs. keyboards (both HID), Zigbee sticks vs. generic serial, controllers.
  3. USB interface class and HID protocol (keyboard vs. mouse).

Bluetooth devices come from bluetoothctl devices Connected + BlueZ's icon class, with battery level when reported. Nothing is hard-coded to particular hardware; add a hint to classify() if your device lands on the generic icon.

Requirements

  • Omarchy shell (Quattro) — bar-widget plugin API
  • python3 (always present on Arch)
  • Optional: bluetoothctl (Bluetooth section), wl-copy (copy to clipboard)

Development

Symlink the checkout into your plugins directory and enable it:

ln -s "$PWD" ~/.config/omarchy/plugins/jonasbove.devices
omarchy plugin enable jonasbove.devices --section right

Code under ~/.config/omarchy/plugins/ hot-reloads on save. Note that a bar widget whose root has no implicitWidth/implicitHeight gets a zero-width slot and never appears — and a hot-reload does not re-mount it once that has happened; omarchy restart shell does.

devices-list --demo prints a sample inventory (used for the preview image); point listProc.command at it to work on the UI without real hardware.

Validate before publishing: omarchy plugin validate .

License

MIT