Omahub
← All plugins
N

ADB Devices

by nacchofer31

List connected ADB devices and emulators, see their state, and start or stop AVDs.

Security review

Review recommended · 1 finding

Deterministic scan — not a security guarantee

Low
Risk level
Low
Analyzed commit
4f62bc1
Scanned
1 month ago

Flagged patterns appear only in documentation files (README / docs) — descriptive examples, not executable code.

  • Docs external_hosts README.md:50

    Downloads or connects to an external HTTP(S) host.

    git clone https://github.com/Nacchofer31/omarchy-adb-devices.git ~/.config/omarchy/plugins/nacchofer31.adb-devices

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
4f62bc1
Reviewed
1 month ago

The plugin is a straightforward ADB/emulator status-bar widget. It only invokes local adb/emulator binaries, caps output sizes, and contains no install-time or hidden destructive behavior; the only deterministic finding is a README install command, which is documentation only.

  • The plugin can start/stop Android emulators and run `adb emu kill` on connected emulators, which is expected functionality but does control local processes.
  • collector.sh executes `adb -s <serial> emu avd name` on each emulator serial; serials come from `adb devices -l` output and are not shell-injected (passed as arguments), so risk is minimal.
  • No obfuscation, credential access, persistence, or destructive commands were found in the sampled executable 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/Nacchofer31/omarchy-adb-devices --enable
Developer Tools #quickshell #system
<div align="center">

adb-devices

ADB devices & emulator manager for Omarchy

Omarchy Plugin Hyprland License: MIT

See what is connected to ADB, inspect device state, and start or stop your Android emulators straight from the Omarchy status bar.

</div>

Overview

ADB Devices is a status bar widget and popup panel for Omarchy Linux. It talks to your local adb server and Android SDK to show physical devices and emulators in one place, without leaving the bar.

Highlights

  • Live status bar pill: Android icon with the number of connected devices. Just the icon when nothing is attached; turns red only on real problems (offline/unauthorized device or adb errors).
  • Device states at a glance: Connected, Offline, or Unauthorized for physical devices and running emulators, with model and serial.
  • Start & stop AVDs: Boot any AVD straight from the panel and shut running emulators down with a click.
  • Zero configuration: Reads paths from ANDROID_HOME / ANDROID_SDK_ROOT (falls back to ~/Android/Sdk) and resolves adb and emulator automatically.
  • Theme-reactive: Inherits your active Omarchy color palette, borders, and radiuses automatically.

Prerequisites

  • An Android SDK with the emulator package installed (e.g. Android Studio's SDK).
  • adb on PATH or under $ANDROID_HOME/platform-tools/.
  • One or more AVDs (create them with Android Studio's Device Manager or avdmanager).

Installation

Install via the Omarchy plugin manager:

omarchy plugin add https://github.com/Nacchofer31/omarchy-adb-devices.git --enable --yes

Manual Install

git clone https://github.com/Nacchofer31/omarchy-adb-devices.git ~/.config/omarchy/plugins/nacchofer31.adb-devices
omarchy-shell shell rescanPlugins
omarchy plugin enable nacchofer31.adb-devices

The widget lands in the right section of the bar by default. Move it with omarchy bar move nacchofer31.adb-devices --section left.

Note: If you edit the plugin files by hand, changes hot-reload the source but do not rebuild the live widget. Run omarchy restart shell afterwards to see them applied.

Removal

omarchy plugin disable nacchofer31.adb-devices   # remove widget from the bar
omarchy plugin remove nacchofer31.adb-devices    # remove plugin files
omarchy-shell shell rescanPlugins                # rescan plugin directories

To also remove the emulator floating-window rule added for Hyprland, delete the o.window("Emulator", ...) line from ~/.config/hypr/hyprland.lua and run hyprctl reload.


Screenshots

Panel showing a running emulator and a physical device.

Emulator + physical device

Bar indicator showing 1 when only a physical device is connected.

Physical device only


Usage

Click the Android icon in the bar to open the panel. The panel shows two sections:

CONNECTED

Every device adb currently reports, physical or emulator:

Field Meaning
Icon Smartphone for physical devices, Android robot for emulators
Label Model name for physical devices, AVD name for emulators
Sub-label Serial number (emulator-5554, or the device serial)
Status Connected, Offline, or Unauthorized (red)
⏹ Stop button, shown only on running emulators

EMULATORS

Every AVD found via emulator -list-avds, with its current state:

Field Meaning
Icon Android robot (dimmed while stopped)
Label AVD name (Medium_Phone, 10inch_Tablet, …)
Status Running or Stopped
▶ Start button, shown only on stopped AVDs

Keyboard

When the popup is open:

Key Action
r Force refresh ADB data
Tab / Shift+Tab Cycle to the previous/next popup panel
Esc Close popup
Left click on bar icon Open / close popup
Middle / right click on bar icon Force refresh

Configuration

Customize the widget in ~/.config/omarchy/shell.json under bar.layout:

{
  "id": "nacchofer31.adb-devices",
  "refreshIntervalSec": 15   // Polling interval in seconds (default: 15, range 5-600)
}
Setting Type Default Range Meaning
refreshIntervalSec integer 15 5–600 How often the widget re-queries adb and emulator

You can also edit the setting visually in Omarchy Settings → Plugins → ADB Devices when the widget is enabled.


Opening Emulators as Floating Windows

Emulator windows tile like any other window by default. To have them open floating and centered on your Hyprland setup, add a window rule to ~/.config/hypr/hyprland.lua:

-- Android emulators: open floating and centered
o.window("Emulator", { float = true, center = true })

Then reload Hyprland:

hyprctl reload

The rule matches the emulator's window class (Emulator), so it applies whether you launch from this plugin, Android Studio, or the command line.

Why not built into the plugin? Floating is a compositor concern, not an app or shell one. There is no reliable way to force a window floating from inside the plugin, so this stays as a one-line, per-user Hyprland rule.


IPC Interface

Control the widget from scripts, hooks, or the terminal:

omarchy-shell shell toggle nacchofer31.adb-devices '{}'      # open / close panel

Troubleshooting

Symptom Cause / fix
Panel shows "no adb" adb was not found. Install android-tools or set ADB_PATH to its location.
"Emulator binary not found" on start The SDK's emulator package is missing. Install it via Android Studio's SDK Manager.
AVD list is empty ANDROID_AVD_HOME (default ~/.android/avd) has no AVDs, or emulator -list-avds fails. Create AVDs in Android Studio's Device Manager.
Start does nothing The emulator is launching in the background; AVDs can take 30–60s to appear. Click r or wait for the next poll.
Stop does nothing adb -s <serial> emu kill only works on emulators. Physical devices have no stop button.
Widget shows stale data after editing files Run omarchy restart shell — hot-reload updates source, not the live widget instance.

Project Layout

nacchofer31.adb-devices/
├── manifest.json      # Plugin manifest (bar-widget, settings schema)
├── collector.sh       # Queries `adb devices -l` + `emulator -list-avds`, emits JSON
├── Model.js           # Parsing + display helpers for device/AVD state
├── Service.qml        # Polls the collector, exposes state, start/stop actions
└── Panel.qml          # Bar pill + popup panel UI

License

MIT © Ignacio Ferrer