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