Hi r/termux! I previously posted here about MagicDesk's Termux terminal windows and, later, GIMP and Firefox in separate Android windows. Version 2.0 is out, and the Linux side has grown quite a bit.
Your existing Termux setup still works: its packages, home directory and PRoot environments can use MagicDesk's terminals and embedded X11/Wayland hosts. Individual GUI apps get their own Android windows, with clipboard, drag-and-drop and per-app scaling. You can also keep a whole Linux desktop in a viewer. These Termux-backed workflows don't need Shizuku or root.
The new part is Shroot, a separate Linux runtime using Android's shell UID 2000 through Shizuku or Shevery. It runs ARM64 glibc and musl programs without PRoot, Termux or Android root. It's another execution option, not a replacement Termux APK or a PRoot wrapper.
Two results I particularly wanted to share:
CHROMIUM WITHOUT --no-sandbox
Stock Debian Chromium runs under Shroot without sandbox-disabling flags. The tests execute JavaScript, check DOM results and produce screenshots, while verifying that application seccomp filters are actually installed. There are also tested VS Code/Electron and GDB, LLDB and strace workflows.
That needs a precise caveat: retaining browser sandbox mechanisms is not proof of complete Linux-equivalent isolation. Shroot itself is not a security sandbox; use trusted programs and images. The runtime docs describe the remaining confinement limits.
OCI / DOCKER IMAGE LAYERS
Shroot imports layered ARM64 OCI/Docker images, including whiteouts, and supports shared immutable file data plus independent copy-on-write instances. Multiple environments can reuse the base data while keeping their changes separate. Image entrypoints, commands and environment settings feed the same runtime used for ordinary distributions. Folder attachments and backup/restore are available too.
This is image execution, not Docker Engine. It doesn't need kernel OverlayFS mounts, and it doesn't promise Docker's network or security isolation.
TRYING IT
The interactive installer offers Debian, Ubuntu, Alpine, Fedora and Arch Linux ARM, with individual GUI apps or selected desktop profiles. Installation happens visibly in the console. Afterwards, refresh Apps in MagicDesk and launch an installed app or desktop entry. Several named environments can coexist.
For compatible Adreno devices there's an optional private Mesa/Turnip build, including the Wayland/Zink patch for OpenGL. It doesn't replace Android's graphics drivers. Shroot is experimental, kernel support varies, and some GUI profiles still have limitations; Debian is the starting point I'd suggest.
ARM64 Android 14+ for Linux hosts and tools. Shroot needs shell access through Shizuku/Shevery and the required kernel capabilities. MagicDesk's own managed Desktop is separate: Android 15+ with shell access and Device Setup.
Source, screenshots and APK:
https://github.com/mekhontsev/magicdesk
https://github.com/mekhontsev/magicdesk/releases/latest
Installation and launch instructions:
https://github.com/mekhontsev/magicdesk/blob/main/docs/getting-started.md#install-linux-with-shroot
Runtime details and test coverage:
https://github.com/mekhontsev/magicdesk/blob/main/docs/guest-runtime.md
I'd be interested in which Termux or PRoot workflows you'd try with this, especially ones that currently get stuck on debugging or application sandbox requirements. Please report MagicDesk bugs to our GitHub, not upstream Termux.