Run a full XFCE desktop with VSCode, Chromium/Firefox, Chrome if on compatible chipset, development tools, media editors, network utilities, Wine, and cloud storage (Google Drive & Dropbox) on Android — no root required.
Runs on majority of Android hardware - including this tiny phone!
Uses proot-distro to install Ubuntu, then applies sandbox/GPU/keyring mods that Electron, Chromium, and Wine need to function inside proot.
Proot-Dev-Mods is built and maintained by one developer with the help of AI tools. There is no corporate sponsor, no VC funding — just late nights, community feedback, and a passion for open-source software.
If Proot-Dev-Mods has been useful to you — please consider making a donation. Every contribution, no matter the size, directly fuels continued development, bug fixes, and keeping this project free and open-source for everyone.
Click here to donate via PayPal
| Category | Apps & Features |
|---|---|
| OS | Ubuntu 22.04 LTS or latest (as of writing - 25.10) (user choice) via proot-distro |
| Desktop | XFCE4 — dark theme, Humanity icons, bottom dock panel, solid black wallpaper |
| Display | TigerVNC (preferred) or Termux:X11 — interactive resolution presets |
| Browsers | Chromium v89 and/or Firefox (user choice) + Google Chrome — all with proot flags |
| Code Editor | Visual Studio Code with --no-sandbox, password-store=basic |
| Office | LibreOffice (Writer, Calc, Impress, Draw, Base) |
| Graphics | GIMP, Blender (software rendering) |
| Video | Kdenlive, Shotcut, OBS Studio |
| Thunderbird | |
| Music | Spotify (official client on amd64, spotifyd + spotify-tui on arm64) |
| App Store | GNOME Software (or GNOME PackageKit fallback) — graphical package manager |
| VPN | WireGuard (wg, wg-quick) |
| System Monitor | Conky desktop widgets (CPU, RAM, Storage, Network, Top Processes) |
| Network | nmap, traceroute, whois, dig, Angry IP Scanner |
| Windows | Wine (+ box64 on arm64), Notepad++ |
| Cloud | Google Drive & Dropbox via rclone WebDAV — browse on-demand in Thunar, nothing stored locally |
| Dev Tools | Android SDK (full: cmdline-tools, sdkmanager, platform-tools, build-tools), ADB, Node.js, Arduino CLI + IDE, cmake, gdb, clang, make, tmux, jq, sqlite3, Java JDK, Ruby, Python 3 |
| Sound | PulseAudio over TCP (plays through Android speakers) |
| USB | OTG devices via bind-mounted /dev/bus/usb |
| SSH | OpenSSH server on port 2222 (optional, configured during setup) |
| Hostname | Custom hostname configured during setup (with proot-compatible env export) |
| Panel | Applications | Settings | Terminal | Thunar | Chromium/Firefox | Chrome | Thunderbird | VSCode | LibreOffice | GIMP | Blender | Spotify | Tasklist | Volume | Clock (LCD) |
| Architecture | arm64 primary, amd64/armhf fallback |
| File | Where to Run | Purpose |
|---|---|---|
setup-termux.sh |
Termux | Installs proot-distro, Ubuntu, creates VNC/X11 launchers |
setup-proot.sh |
Inside proot | Installs ~30 apps + XFCE desktop customization + SSH + hostname |
chromium-repair.sh |
Inside proot | Reinstalls Chromium v89 + Firefox with proot wrappers |
vscode-repair.sh |
Inside proot | Restores proot wrapper after VSCode auto-updates |
gdrive-mount.sh |
Inside proot | Google Drive access via rclone WebDAV (browse in Thunar) |
dropbox-mount.sh |
Inside proot | Dropbox access via rclone WebDAV (browse in Thunar) |
proot-backup.sh |
Termux | Backup & restore the entire proot environment |
instructions.md |
— | Comprehensive step-by-step guide |
All scripts are idempotent — safe to re-run. They detect existing installs and skip what's already present.
First, install F-Droid (open-source app store):
- Go to https://f-droid.org on your Android browser
- Download and install the F-Droid APK
- Android may warn about "unknown sources" — allow it (this is expected for apps outside the Play Store)
- You may need to disable Google Play Protect temporarily if it blocks the install
Then install Termux from F-Droid — NOT the Play Store version (it's outdated and will not work). The Termux developer officially recommends the F-Droid build.
Also install Termux:API from F-Droid and a VNC viewer — RealVNC Viewer (Play Store) is recommended.
Android 12+ users: You must disable the Phantom Process Killer or Termux will be killed randomly. See instructions.md Section 3 for the full fix.
pkg update && pkg upgrade -y
pkg install git -y
git clone https://github.com/user/proot-dev-mods.gitcd proot-dev-mods
chmod +x setup-termux.sh
bash setup-termux.shFollow the on-screen instructions — the script will:
- Install
proot-distro, TigerVNC, PulseAudio, Termux:X11 support - Download and install Ubuntu (you choose the version)
- Copy scripts into the proot environment
- Let you configure resolution presets for your device(s)
- Create launcher scripts in your Termux home (
~/)
proot-distro login ubuntu-oldlts # (or your chosen alias)
bash /root/setup-proot.sh # Installs ~30 apps + desktop customizationFollow the prompts — you'll choose browsers, hostname, and whether to enable SSH.
exit
cd .. # (back to Termux home)
bash ~/start-ubuntu-vnc.sh # Starts VNC in the backgroundOpen RealVNC Viewer → New Connection → localhost:5901 or 127.0.0.1:5901 (You can also connect from a remote PC by replacing localhost with your device's IP address)
The VNC server runs in the background — your Termux shell stays usable. Use bash ~/stop-ubuntu.sh when you're done.
proot-distro login ubuntu-oldlts
bash /root/gdrive-mount.sh # Google Drive via WebDAV
bash /root/dropbox-mount.sh # Dropbox via WebDAVAfter setup, browse Google Drive in Thunar at dav://localhost:8880/ and Dropbox at dav://localhost:8881/ — or use the gdrive / dbx CLI commands.
FUSE mounting (rclone mount) is not available inside proot (no kernel module). Instead, these scripts use rclone's built-in WebDAV server to expose cloud storage as a browsable network location. Files are accessed on-demand — nothing is synced or stored locally.
| Port | Thunar Address | CLI Command |
|---|---|---|
| 8880 | dav://localhost:8880/ |
gdrive |
| Port | Thunar Address | CLI Command |
|---|---|---|
| 8881 | dav://localhost:8881/ |
dbx |
Both gdrive and dbx share the same subcommands:
| Command | Description |
|---|---|
gdrive ls [path] |
List files/folders |
gdrive tree [path] |
Tree view |
gdrive get <remote> [local] |
Download file or folder |
gdrive put <local> <remote> |
Upload file or folder |
gdrive mkdir <path> |
Create folder |
gdrive rm <path> |
Delete file/folder |
gdrive mv <from> <to> |
Move/rename |
gdrive cp <from> <to> |
Copy |
gdrive cat <file> |
Print file to stdout |
gdrive search <name> |
Search by name |
gdrive open [path] |
Open in Thunar via WebDAV |
gdrive start |
Start WebDAV server |
gdrive stop |
Stop WebDAV server |
gdrive status |
Show status & quota |
gdrive help |
Show all commands |
Replace gdrive with dbx for Dropbox — identical usage.
During setup, two methods are available:
- Option A — Browser: rclone opens the installed browser for sign-in (requires VNC desktop running)
- Option B — Manual token: rclone prints a URL; open it on any device, sign in, paste the token back
Reinstalls Chromium v89 from Debian Buster and/or Firefox from Mozilla APT with all proot compatibility flags. Run if Chromium/Firefox break or won't launch.
bash /root/chromium-repair.sh # Inside prootVSCode auto-updates regularly overwrite the proot wrapper (/usr/bin/code), .desktop files, and flags. This script restores everything in seconds.
bash /root/vscode-repair.sh # Inside prootRun in Termux (not inside proot):
bash ~/proot-backup.sh backup # Full backup → Internal Storage/proot-backups/
bash ~/proot-backup.sh backup --quick # Skip caches/tmp (smaller, faster)
bash ~/proot-backup.sh restore <file> # Restore from archive
bash ~/proot-backup.sh list # List available backups
bash ~/proot-backup.sh info <file> # Show backup metadataBackups are saved to Internal Storage/proot-backups/ — accessible from Android's file manager, USB, ADB, or rclone.
| Feature | VNC (Recommended) | Termux:X11 |
|---|---|---|
| Start command | bash ~/start-ubuntu-vnc.sh |
bash ~/start-ubuntu-x11.sh |
| Viewer | RealVNC Viewer → localhost:5901 |
Termux:X11 app |
| Setup effort | Lower — just install RealVNC | Needs sideloaded APK |
| Performance | Good | Better (native Wayland) |
| Audio | PulseAudio TCP → Android speakers | Same |
| Stop | bash ~/stop-ubuntu.sh |
bash ~/stop-ubuntu.sh |
Resolution presets are stored in ~/.proot-resolutions.conf in Termux (not inside the proot). The initial setup prompts you to configure them, but you can add or change presets at any time:
nano ~/.proot-resolutions.confThe format is one preset per line — LABEL|WIDTHxHEIGHT:
Full HD|1920x1080
Tablet|1280x800
Portrait|1080x1920
Small|1280x720
Save with Ctrl+O, exit with Ctrl+X, then restart the VNC session to use the new resolution.
PulseAudio runs in Termux and streams audio to Android speakers over TCP. VNC does not carry audio — sound plays directly through the device (which works perfectly since you're on the same physical device).
paplay /usr/share/sounds/freedesktop/stereo/bell.oga # Test sound
pavucontrol # Volume mixerUSB OTG devices are bind-mounted into proot by the launcher scripts. When you plug in a USB device, Android prompts you to grant access to Termux.
lsusb # List USB devices (inside proot)
termux-usb -l # List USB devices (in Termux)Note: Raw USB access works (libusb, serial). Kernel-level auto-mounting requires Android root.
# ── Start / Stop ──────────────────────────────────────
bash ~/start-ubuntu-vnc.sh # Start VNC desktop (background)
bash ~/start-ubuntu-x11.sh # Start X11 desktop (background)
bash ~/stop-ubuntu.sh # Stop everything
bash ~/login-ubuntu.sh # Shell only (no desktop)
# ── Inside Proot ──────────────────────────────────────
bash /root/setup-proot.sh # (Re)run proot setup
bash /root/chromium-repair.sh # Fix browsers
bash /root/vscode-repair.sh # Fix VSCode after updates
# ── Cloud Storage ─────────────────────────────────────
bash /root/gdrive-mount.sh # Set up Google Drive
bash /root/dropbox-mount.sh # Set up Dropbox
gdrive ls # Browse Google Drive
dbx ls # Browse Dropbox
gdrive open # Open Drive in Thunar
dbx open # Open Dropbox in Thunar
# ── Backup / Restore (Termux) ────────────────────────
bash ~/proot-backup.sh backup # Full backup
bash ~/proot-backup.sh backup --quick # Quick backup
bash ~/proot-backup.sh restore <file> # Restore
bash ~/proot-backup.sh list # List backupsSee instructions.md for the comprehensive setup guide covering:
- Prerequisites and Android configuration
- Phantom Process Killer fix (Android 12+)
- Detailed script-by-script documentation
- XFCE desktop customization details
- Development tools usage
- Full troubleshooting guide
- What works / what doesn't in proot
| What | Why |
|---|---|
No systemd |
proot is not a real VM — use service commands instead |
No snap packages |
Snap requires systemd + kernel features |
No docker |
Needs kernel namespaces — use remote Docker |
| No FUSE mounts | No kernel FUSE module — use rclone WebDAV server instead |
| No GDM/LightDM | Display managers need PAM/logind/systemd |
| No GPU acceleration | Software rendering only (LIBGL_ALWAYS_SOFTWARE=1) |
| USB auto-mount | Raw libusb access works; kernel-level mount needs root |
| Harmless sandbox warnings | "Failed to move to new namespace" — expected, ignore |
Proot-Dev-Mods is released under the MIT License — Copyright (c) 2026 Talbot "TBOT" Simons (mr-tbot).
Built on top of Termux and proot-distro (GPL-3.0) — this project is glue: it drives proot-distro, apt, and each vendor's own installer through their public interfaces. No third-party source, binary, or package is bundled in or redistributed by this repository. Every browser, tool, and app the scripts install is downloaded by your device, at install time, from the vendor's own servers (archive.debian.org, packages.mozilla.org, packages.microsoft.com, dl.google.com, rclone.org, each project's GitHub releases) under that vendor's own license.
Full third-party attribution — including which pieces are GPL, which are proprietary EULAs, and which terms the scripts accept on your behalf — is in THIRD_PARTY_LICENSES.md.
Heads up: the Chromium build these scripts install is v89 from Debian Buster — the newest one that runs under proot. It has had no security updates since 2021. Use Firefox for anything that involves a password.
"Google Chrome", "Google Drive", "Android", "Dropbox", "Visual Studio Code", "Spotify", "Firefox", "Ubuntu" and "Debian" are trademarks of their respective owners; Proot-Dev-Mods is an independent third-party project and is not endorsed by or affiliated with any of them.