A shell, containers, Kubernetes and a PBX, all in one APK. The one thing missing was a screen. Linxr v3.4.0 adds a graphical Linux desktop you can use with your fingers, without installing a separate VNC client.
🖥️ The stack
Everything runs inside the Alpine VM:
X11 apps (GTK, Qt) └── Openbox window manager + Tint2 taskbar (or a full XFCE4 session) └── Xvfb :1 virtual X display └── x11vnc RFB server → port 5900 └── websockify + noVNC → port 6080 (HTML5) ↓ Linxr's built-in web viewer The VM forwards 6080 and 5900 to the phone, and Linxr opens the noVNC page in an in-app browser view, with noVNC's touch gestures and scaling. Prefer a real VNC client? Point it at port 5900.
🎛️ A desktop control panel
From Linxr you can:
- install, start and stop the desktop in one tap
- pick a resolution: 1280×720, 1600×720, 1920×1080 or 1024×600
- launch a terminal, file manager or text editor straight onto the desktop
Behind the panel is a small REST API inside the VM on port 7080: /desktop/status, /desktop/start, /desktop/stop, /desktop/install and /desktop/app.
⏱️ A fast status check
Checking whether the desktop was up used to be oddly slow. The cause was musl's reverse-DNS lookups. The status probes are now quick, non-blocking socket checks.
📦 The size
The universal APK is now 244.5 MB. That buys a Linux workstation, two container engines, k3s, a PBX and now a desktop, all without root.
Next, Part 16: write your own Marketplace recipe.
📥 Get Linxr
- 🐙 APK on GitHub: github.com/AI2TH/Linxr/releases/latest
- 📲 Google Play: Linxr on Google Play. New builds reach testers first: join the AI2TH Google Group and opt in here. The GitHub APK is always the newest build.
- 🌐 Website: ai2th.github.io/linxr.html
- 💬 Questions and feedback: AI2TH Google Group


