droidkraft
The DroidKraft desktop GUI — an Android device monitor built with
Zed GPUI, on top of the shared
droidkraft-core library.
Features
- Dashboard — live device status: model, Android version, battery, RAM, CPU load, and a list of all attached devices with online/authorised indicators.
- Live Logs — realtime logcat streaming (via the core
LogcatStreamengine) with a log-level filter, start/stop, and clear. - Commands — one-click device commands grouped by category (Device, System, Packages, Screen, Power); output is shown in a scrollable pane.
- Flash & Root — reboot targets (system / bootloader / recovery / sideload / fastbootd), root detection, remount, and fastboot operations (unlock / lock / wipe / reboot / getvar) with destructive-action styling.
- Screen — live screen mirroring: a background thread captures
screencapPNG frames which are rendered in the window, with an fps / frame counter. - Custom ROM flasher — device-aware ROM catalog (LineageOS live API + seed catalog for others), verified downloads (SHA-256, progress), and a consent-gated flash orchestrator (unlock → wipe → flash recovery → sideload → reboot). Destructive steps require an explicit "⚠ Confirm & run" click.
All device I/O runs on background threads (a command worker + the logcat and screen capture threads), so the UI thread never blocks.
Install
Build prerequisites. GPUI renders with the GPU, so building requires the platform graphics toolchain:
- macOS — the full Xcode toolchain with the Metal compiler (
xcodebuild -downloadComponent MetalToolchain), not just the Command Line Tools.- Linux — the usual GPUI system libraries (Wayland/X11,
libxkbcommon, Vulkan,fontconfig, …).The GUI is an opt-in workspace member, so the repo's default
cargo build/cargo test(core + TUI) don't require this toolchain.
Run
Architecture
| Module | Responsibility |
|---|---|
app |
The root gpui Render view, panels, and per-tick data pump |
worker |
Background thread owning an AdbManager; request/response channels |
screen |
Background screen-capture backend (framework-free, unit-tested) |
commands |
Framework-free catalogue of button commands (unit-tested) |
theme |
Colour palette (log-level / tag colours shared via droidkraft-core) |
commands and screen have no gpui dependency and are covered by unit tests;
worker depends only on droidkraft-core.
License
MIT