The ultimate all-in-one terminal toolkit for Waydroid power users.
Start, stop, manage apps, transfer files, capture screenshots, record screens, view logs β and much more β all from a beautiful, organized CLI with safety checks and graphical dialog support.
Getting Started Β· Features Β· CLI Flags Β· FAQ Β· Contributing
- Features at a Glance
- Requirements
- Quick Start
- Menu Overview
- CLI Flags (Non-Interactive)
- Logging
- Copy/Paste to Android
- Frequently Asked Questions
- Changelog & Releases
- Contributing
- License
- File Transfer GUI (Option 13): Added a graphical file/folder picker for both host and device paths using
zenityso you no longer need to type full Android paths. Falls back to manual input ifzenityisn't available. - remote_browse() helper: New helper to browse the Android filesystem over ADB; used by push/pull flows.
- Fix: Resolved a scoping bug where
remote_browse()was accidentally defined nested; moved it to top-level.
| Feature | Description |
|---|---|
| Start / Restart | Launch Waydroid stack + Weston with automatic Wayland socket detection |
| Stop | Gracefully stop Waydroid and Weston compositor |
| ADB Shell Access | Drop into an interactive ADB shell with auto-reconnect if device is offline |
| Auto-detect Sessions | On launch, detects running Waydroid / ADB devices and offers to connect |
| APK Install | Install from local files, URLs (curl/wget), or batch from a directory |
| Waydroid Script | One-click access to GApps, Magisk, and more via casualsnek/waydroid_script |
| Feature | Description |
|---|---|
| ADB Auto-Handshake | Automatic connection and reconnect logic for reliable operations |
| List Devices | View all connected ADB devices |
| Reconnect ADB | Quick re-establish connection if it drops |
| Feature | Description |
|---|---|
| Display Settings | Change resolution & density; tablet/ultra-wide presets; restore defaults |
| App Management | Search, uninstall, batch uninstall, export installed app lists |
| Copy / Paste | Send terminal text into Android input fields β special characters supported |
| Theme Toggle | Light/dark terminal theme with persistence to config file |
| Feature | Description |
|---|---|
| πΈ Screenshot | Capture Android screen β ~/Pictures/Waydroid/ |
| π¬ Screen Recording | Record up to 180s β ~/Videos/Waydroid/ |
| π File Transfer | Push/pull files and folders between host β Android |
| π Logcat Viewer | Live logcat, filter by tag, errors-only, save to file |
| βοΈ Freeze / Disable Apps | Disable bloatware without uninstalling; re-enable anytime |
| π Clear App Data | Wipe all data or just cache for any app |
| π Quick Launch | Launch any installed app by package name |
| βΉοΈ Device Info | Android version, display, storage, memory, network, uptime |
| οΏ½ APK Downloader | Search APKMirror by name or download from direct URL; optional instant install |
| π¨ Theme Customization | 6 color schemes: Light, Dark, Ocean, Forest, Sunset, Neon β persisted |
| βΏ Accessibility Tools | Large Text mode, Text-to-Speech status, High-Contrast mode |
| π’ Realtime Resource Monitor | Live CPU/RAM/Disk usage updates in-place every second |
| Feature | Description |
|---|---|
| Zenity Dialogs | Optional graphical prompts (always-on-top with --modal) |
| Weston Focus | APK install dialogs auto-focus the compositor window via xdotool |
| Confirmations | Destructive actions require confirmation; bypass with --yes |
| Batch Operations | Batch APK install/uninstall from files or directories |
| Logging | Separate install/uninstall logs with auto-rotation at 1 MB |
| Update Check | Compares local version against GitHub; offers to open release page |
| Dependency | Purpose | Required |
|---|---|---|
waydroid |
Android container | β |
weston |
Wayland compositor | β |
adb |
Android Debug Bridge | β |
git |
Version control / self-update | β |
curl or wget |
APK downloads & update checks | β |
python3 |
Waydroid script support | β |
zenity |
Graphical dialogs (file picker, app selector) | Optional |
wl-clipboard |
Wayland clipboard (wl-copy / wl-paste) |
Optional |
xdotool |
Window focus for modal dialogs | Optional |
espeak-ng or spd-say |
Text-to-Speech for accessibility | Optional |
sudo apt update && sudo apt install -y \
waydroid weston adb zenity curl wget git \
python3 python3-pip wl-clipboard xdotool espeak-ngsudo pacman -S waydroid weston android-tools zenity curl wget git python wl-clipboard xdotool espeak-ng# 1. Clone the repository
git clone https://github.com/Nigel1992/Waydroid-Advanced-Manager.git
# 2. Enter the directory
cd Waydroid-Advanced-Manager
# 3. Make executable
chmod +x waydroid-manager.sh
# 4. Launch!
./waydroid-manager.shπ‘ Tip: Run
./waydroid-manager.sh --versionto check the installed version and release date.
The interactive menu is organized into 5 sections with 25 options:
ββ CORE ββ
1) START/RESTART Waydroid
2) STOP Waydroid & Weston
3) ADB SHELL ACCESS (Direct)
4) INSTALL APK File
5) WAYDROID SCRIPT (GApps, Magisk, etc.)
ββ ADB ββ
6) LIST ADB Devices
7) RECONNECT ADB
ββ SETTINGS & APPS ββ
8) DISPLAY SETTINGS (Resolution, Density)
9) APP MANAGEMENT (Install/Uninstall)
10) COPY/PASTE to Android
ββ TOOLS ββ
11) πΈ SCREENSHOT
12) π¬ SCREEN RECORDING
13) π FILE TRANSFER (Push/Pull)
14) π LOGCAT VIEWER
15) βοΈ FREEZE/DISABLE Apps
16) π CLEAR APP DATA/Cache
17) π QUICK LAUNCH App
18) βΉοΈ DEVICE INFO
19) π¦ APK DOWNLOADER
20) π¨ THEME CUSTOMIZATION
21) βΏ ACCESSIBILITY TOOLS
ββ SYSTEM ββ
22) STATUS
23) RESOURCE MONITOR (CPU/RAM/Disk)
24) CHECK FOR UPDATES
25) EXIT
Run any action directly from the command line without entering the interactive menu:
| Flag | Description |
|---|---|
--version, -v |
Show version and exit |
--help, -h |
Show help and exit |
--debug |
Enable debug logging |
--restart |
Restart Waydroid stack |
--stop |
Stop Waydroid and Weston |
--status |
Show system status |
--install-apk <path|url> |
Install APK from file or URL |
--install-apks-dir <dir> |
Batch install all APKs from a directory |
--uninstall-list <file> |
Uninstall packages from a newline-delimited file |
--yes, -y |
Auto-confirm destructive actions (scripting) |
--set-dpi <dpi> |
Set display density |
--set-res <WxH> |
Set display resolution |
--list-apps-export [file] |
Export installed apps list |
--theme <dark|light> |
Set and persist terminal theme |
--self-update |
Update script from git |
Examples:
# Install an APK from URL
./waydroid-manager.sh --install-apk https://example.com/app.apk
# Batch install a folder of APKs, auto-confirm
./waydroid-manager.sh --install-apks-dir ~/apks/ --yes
# Set resolution to tablet mode
./waydroid-manager.sh --set-res 1200x1920 --set-dpi 240All actions are logged to ~/.cache/waydroid-manager/:
| Log File | Contents |
|---|---|
waydroid-manager.log |
General operations, errors, session events |
install.log |
Per-APK install results and batch summaries |
uninstall.log |
Per-app uninstall results |
Log files are automatically rotated when they exceed 1 MB.
| Details | |
|---|---|
| How to use | Focus an input field in Waydroid β select Option 9 β type or paste text β press Enter |
| Supported | All plain text including special characters: & | ; < > $ \ ` |
| Not supported | Multi-line text, files, or binary data |
| How it works | Uses adb shell input text with proper escaping for shell metacharacters |
πΉ How do I install Waydroid in the first place?
Waydroid requires a Wayland-based desktop session (GNOME on Wayland, Sway, etc.) and a compatible Linux kernel.
# Ubuntu/Debian
sudo apt install waydroid
# Initialize Waydroid (first-time only)
sudo waydroid initFor detailed instructions, see the official Waydroid documentation.
πΉ Waydroid won't start β "Session is already running"
This happens when a previous Waydroid session wasn't cleanly shut down. Fix it with:
# Stop the container
sudo waydroid container stop
# Kill any leftover sessions
waydroid session stop
# Now start fresh with the manager
./waydroid-manager.shThe manager's auto-detect feature (on launch) will also notice an existing session and offer to reconnect.
πΉ ADB won't connect β "Connection refused" or device not found
- Make sure Waydroid is running β use Option 1 to start it first.
- Check the IP β Waydroid typically uses
192.168.240.112. The manager auto-detects this. - Restart ADB β try Option 6 (Reconnect ADB) or manually:
adb kill-server && adb start-server adb connect 192.168.240.112:5555 - Firewall β ensure your firewall isn't blocking local connections on port 5555.
πΉ APK installation fails β "INSTALL_FAILED_..."
| Error | Cause | Fix |
|---|---|---|
INSTALL_FAILED_OLDER_SDK |
APK requires a newer Android version | Find a compatible APK version |
INSTALL_FAILED_NO_MATCHING_ABIS |
APK is built for wrong architecture (e.g., ARM on x86) | Use an x86/x86_64 build or enable ARM translation via Waydroid Script (Option 4) |
INSTALL_FAILED_ALREADY_EXISTS |
App already installed | Uninstall first via Option 8, then retry |
INSTALL_FAILED_INSUFFICIENT_STORAGE |
Not enough space in the container | Clear app caches (Option 15) or resize the Waydroid image |
πΉ How do I get Google Play Store / GApps?
Use Option 4 (Waydroid Script) which integrates casualsnek/waydroid_script:
- Start Waydroid (Option 1)
- Select Option 4
- Choose "Install GApps"
After installation, reboot Waydroid. You'll need to sign in with your Google account. Some apps may require device certification β the Waydroid Script can register your device ID with Google.
πΉ How do I install Magisk / root Waydroid?
Also via Option 4 (Waydroid Script):
- Start Waydroid (Option 1)
- Select Option 4
- Choose "Install Magisk"
This patches the Waydroid system image with Magisk for root access. Useful for apps that need superuser privileges.
πΉ Screenshot / screen recording doesn't work
- Ensure ADB is connected β the "ACTIVE" indicator at the bottom of the menu should show a device.
- Screenshots use
adb shell screencapβ if this fails, it typically means the container's display isn't rendering properly. Try restarting Waydroid. - Screen recording uses
adb shell screenrecordβ some Waydroid builds may have limited support for this. Make sure the container is fully booted (wait 10-15 seconds after start). - Output folders are auto-created:
- Screenshots:
~/Pictures/Waydroid/ - Recordings:
~/Videos/Waydroid/
- Screenshots:
πΉ File transfer fails β "Permission denied"
Android's /sdcard/ is the safest target for file operations:
# Push to Android
adb push myfile.txt /sdcard/
# Pull from Android
adb pull /sdcard/myfile.txt ~/Downloads/If pushing to system paths (e.g., /system/), you'll need root (Magisk). For most use cases, stick to /sdcard/ β this is what the File Transfer tool (Option 12) uses by default.
πΉ How do I change the screen resolution / DPI?
Interactive: Use Option 7 (Display Settings) β choose from presets or enter custom values:
| Preset | Resolution | Use Case |
|---|---|---|
| Phone | 720Γ1280 | Mobile apps |
| Tablet | 1200Γ1920 | Tablet-optimized apps |
| Desktop | 1920Γ1080 | Landscape / productivity |
| Ultra-wide | 3440Γ1440 | Ultra-wide monitors |
CLI:
./waydroid-manager.sh --set-res 1920x1080 --set-dpi 160Changes take effect immediately. Use the "Reset to defaults" option to revert.
πΉ Can I disable bloatware / pre-installed apps?
Yes! Use Option 14 (Freeze/Disable Apps):
- Select "Disable (freeze) an app"
- Pick the app from the list (uses zenity picker if available)
- The app is disabled without being uninstalled β no data is lost
To re-enable: select "Enable (unfreeze) an app" and pick from the disabled list.
This is the safest way to deal with bloatware since you can always re-enable the app if needed.
πΉ The zenity dialog appears behind other windows
All zenity dialogs should use --modal to stay on top. If you're still experiencing issues:
- Make sure
xdotoolis installed:sudo apt install xdotool - The manager uses
xdotoolto focus the Weston compositor before opening dialogs - If a dialog still hides, click the taskbar/panel to bring it forward
πΉ Logcat shows too much output β how do I filter?
Use Option 13 (Logcat Viewer) which offers four modes:
| Mode | What it shows |
|---|---|
| Live logcat | Everything (Ctrl+C to stop) |
| Save to file | Dumps last 500 lines for offline analysis |
| Filter by tag | Only messages from a specific Android component (e.g., ActivityManager) |
| Errors only | Only ERROR-level messages (*:E filter) |
From CLI (outside the manager):
# Filter by tag
adb logcat -s ActivityManager
# Errors only
adb logcat *:E
# Save to file
adb logcat -d -t 1000 > ~/logcat_dump.txtπΉ How do I update the manager?
Option A β From the menu: Select Option 25 (Check for Updates). If a new version is available, the manager shows the GitHub URL and offers to open it in your browser.
Option B β CLI:
./waydroid-manager.sh --self-updateOption C β Manual:
cd Waydroid-Advanced-Manager
git pull origin mainπΉ Can I run this on X11 instead of Wayland?
Waydroid requires Wayland. The manager uses Weston as a nested Wayland compositor, which means it works even if your desktop session is X11. Weston creates a Wayland environment inside an X11 window.
If you're on X11, the manager handles Weston for you automatically β just use Option 1 to start.
πΉ How do I use CLI flags for scripting / automation?
Combine flags for headless operation:
# Install APK without prompts
./waydroid-manager.sh --install-apk ~/Downloads/app.apk --yes
# Batch install + auto-confirm
./waydroid-manager.sh --install-apks-dir ~/apks/ --yes
# Set display and exit
./waydroid-manager.sh --set-res 1920x1080 --set-dpi 240
# Export app list to file
./waydroid-manager.sh --list-apps-export ~/apps.txtUse --yes / -y to skip all confirmation prompts β ideal for scripts and CI pipelines.
πΉ Where are config and cache files stored?
| Path | Contents |
|---|---|
~/.config/waydroid-manager.conf |
Theme preference and settings |
~/.cache/waydroid-manager/ |
Logs directory |
~/.cache/waydroid-manager/waydroid-manager.log |
General log |
~/.cache/waydroid-manager/install.log |
APK install history |
~/.cache/waydroid-manager/uninstall.log |
Uninstall history |
~/Pictures/Waydroid/ |
Saved screenshots |
~/Videos/Waydroid/ |
Saved screen recordings |
πΉ The "Quick Launch" feature doesn't work for my app
Quick Launch (Option 16) uses am start to resolve and launch an app's main activity. If it fails:
- App may not have a launcher activity β some background services or system apps can't be launched this way.
- Try the full package name β make sure you're using the complete package (e.g.,
com.example.app, not justapp). - App might be disabled β check Option 14 to see if it's in the disabled list.
- Check logcat β use Option 13 to see what error Android reports when trying to launch.
πΉ How do I completely reset Waydroid?
If Waydroid is in a broken state:
# 1. Stop everything
waydroid session stop
sudo waydroid container stop
# 2. Reset the Waydroid data (WARNING: deletes all Android apps and data!)
sudo rm -rf /var/lib/waydroid /home/$USER/.local/share/waydroid
# 3. Re-initialize
sudo waydroid init
# 4. Start fresh
./waydroid-manager.sh
β οΈ Warning: This removes ALL Android apps, data, and settings. Back up important files first using the File Transfer tool (Option 12).
See CHANGELOG.md for the full release history.
Latest release: v0.8.1 (2026-03-13)
All donations go towards your chosen charity. You can pick any charity you'd like, and 5% is retained due to Ko-Fi fees. As a thank you, your name will be listed as a supporter/donor in a GitHub project. Feel free to email me at thedjskywalker@gmail.com for proof! :)
Contributions are welcome! Here's how you can help:
- π Report bugs β Open an issue with details and reproduction steps
- π‘ Suggest features β Describe your idea in an issue or start a discussion
- π§ Submit a PR β Fork the repo, make your changes, and open a pull request
- β Star the repo β It helps others discover the project!
Please join our for discussions, support, and updates.
This project is licensed under the MIT License. See the LICENSE file for the full text.
Copyright Β© 2026 Nigel Hagen
Built with care for the Waydroid community π
