simutil 0.6.0
simutil: ^0.6.0 copied to clipboard
TUI application for launching Android Simulators / iOS Simulators and more ...
SimUtil
A terminal UI for launching Android Emulators / iOS Simulators
Launch, connect, manage your devices and more — all from the terminal
Browse your available emulators and simulators side-by-side, launch with custom options and connect to physical devices wirelessly.
Simutil is written with Nocterm, a terminal UI framework for Dart with similar syntax to Flutter.
Features #
- One-Key Launch — Start any device with
Enter, no need to open Android Studio or Xcode - Android Launch Options — Provide launch option for Android Emulators: Normal, Cold Boot, No Audio, or Cold Boot + No Audio,...
- Shutdown device — Shutdown simulators/emulators.
- Logcat — View logcat output of Android emulators / devices, support filtering.
- ADB Tools Built-in — Connect to physical Android devices wirelessly:
- Connect via IP address
- Pair with 6-digit code (Android 11+)
- QR code pairing (Android 11+)
- Custom Plugins — Add your own external tools (scrcpy, Maestro, etc.) via a YAML file, no code changes needed. Press
pto pick a plugin and a command to run on the selected device. - Edit Config — Press
eto open~/.simutil/settings.yamlin your default editor (macOS, Linux, Windows).
Custom Plugins #
SimUtil can run external shell-command tools (scrcpy, Maestro, custom scripts, …)
defined in the plugins: section of ~/.simutil/settings.yaml — no code changes
needed. A default file (with theme, last_selected_device_id, and scrcpy) is
created automatically on first launch.
Each plugin groups one or more commands. In the app, press p on a selected
device to choose a plugin, then a command. Press e to edit the config file.
A command can also define a single-key shortcut to run it directly. Commands are
filtered to the selected device, and args support template variables like
{device.id} and {device.name}.
# ~/.simutil/settings.yaml
theme: dark
last_selected_device_id: ~
plugins:
- id: scrcpy
label: scrcpy
description: Screen mirroring and control for Android
availability:
command: scrcpy
args: [--version]
commands:
- id: mirror
label: Screen Mirror
command: scrcpy
args: [-s, "{device.id}"]
platforms: [android] # android | ios; empty = any
requires_running: true # only show when the device is running
mode: detached # detached (default) | inherit
shortcut: s # optional single key to run directly
See the full reference — all fields, template variables, run modes, availability probes, shortcuts, examples, and troubleshooting — in docs/plugins.md.
Installation #
Binary Install #
curl -fsSL https://raw.githubusercontent.com/dungngminh/simutil/main/install.sh | bash
Binary Install (Windows PowerShell) #
powershell -ExecutionPolicy Bypass -Command "iwr -useb https://raw.githubusercontent.com/dungngminh/simutil/main/install.ps1 | iex"
Using Homebrew (macOS/Linux) #
brew tap dungngminh/simutil
brew install simutil
From pub.dev #
dart pub global activate simutil
From source #
git clone https://github.com/dungngminh/simutil.git
cd simutil
dart pub get
dart pub global activate --source path .
Then run:
simutil
Supported platforms #
- ✅ macOS
- ✅ Linux
- ✅ Windows
Contributing #
git clone https://github.com/dungngminh/simutil.git
cd simutil
dart pub get
dart run bin/simutil.dart # Run locally
dart --enable-vm-service bin/simutil.dart # Run with hot reload
- Fork this repository
- Create a branch and make your changes
- Open a Pull Request
License #
MIT — see LICENSE