Run it on your device
Everything here ships as ordinary packages. Install one flavor, open one app, and you have a desktop. Bring a compatible jailbreak and expect some rough edges.
What you need
- A jailbroken device
- Proven on an iPad 7 (A10, iPadOS 17.6.1) on Dopamine. Other jailbroken iOS 16+ devices may work, but this is the tested target. Rootless only: every binary bakes in
/var/jb, so a rooted jailbreak cannot run this. RootHide resolves its own/var/jbsymlink and works as-is. - A package manager
- Sileo, Zebra, or plain
apton the device. - AppSync Unified
- Required, and easy to forget. The display app is unsigned, and without AppSync it will not launch. Add
https://cydia.akemi.ai/as a source and install it before you install a flavor. - Some free space
- About 190 MB installed for GNOME and 610 MB for KDE, which brings every KDE app we ship. The native and X11 flavors are around 55 MB.
Add the repo
Add repo.maxleiter.com as a source in your package manager. In Sileo, open Sources, tap the add button, and paste the URL.
From a shell instead, as root. It is a flat repo, so the suite is ./.
Pick a flavor
There is no single xios package. You install one flavor. All of them pull in the xios-runtime base; the three fullscreen ones also pull in xios-core, which is what adds the display app, the iosc shell and the session launcher. See Desktop flavors for what each one is.
xios-gnome- GNOME Shell 46 on Mutter with the full session layer. Needs iOS 16.5.
xios-kde- KWin with Plasma Desktop, Plasma Mobile, and Plasma Nano, plus System Settings, PowerDevil, Breeze, and every KDE app we ship: Konsole, Dolphin, Kate, KWrite, KCalc, Okular, Ark, Gwenview. Newer and rougher than GNOME. Needs iOS 16.5.
xios-native- No Linux shell: apps get Home Screen icons and their own iPadOS windows. Needs iOS 16.0.
xios-x11- Xwayland inside the compositor, so X11 clients render through glamor and ANGLE. Needs iOS 16.5.
Whichever you pick, the install brings the display app com.max.xios, the iosc compositor and its desktop shell, ANGLE for the GPU path, the session launcher, and the font and locale defaults. Every flavor therefore also has the iosc desktop, which is the most reliable session and a good first thing to try.
Launch it
Open the app (it shows on the Home Screen as X11) and pick a session. From there, gestures drive it: a three-finger tap opens the control panel, where you start a desktop, resize a running one, choose which apps get Home Screen icons, and reach Advanced for switching between running displays. A pull-down from the top edge reveals the status overlay, a pinch zooms to fit, and a swipe up from the lower edge raises the keyboard.
The same thing from a shell, on the device or over SSH, as root:
A locked or sleeping iPad gets the Metal app suspended by FrontBoard, so a session that starts behind a locked screen presents a black frame. Unlock first.
Native mode uses Home Screen launchers instead of the session picker. Installing the flavor does not create icons by itself: choose apps in the Xios pane in Settings, or run xios-launcher-sync.
When it does not come up
- The X11 icon does nothing
- AppSync Unified is missing, or the app lost its signature. Reinstall AppSync, then
apt install --reinstall com.max.xios. - Black screen with the app open
- Either the device was locked while the session started, or no display server is running. Unlock, then check
xios-session status. - Status says compositor-only
- The compositor came up but the shell never painted. The log for the flavor you picked has the reason.
- Logs
- All under
/var/jb/tmp/:xios-session.log,xios-session-status.json,gnome-shell.log,kde-plasma.log. - Something was left behind
xios-session stoptears down compositors and sockets completely. It is safe to run at any time.
Send feedback
If you try it, file bugs, install notes, screenshots, and device details on GitHub Issues for maxleiter/jailbreak. Include the device, iOS version, jailbreak, package flavor, and what happened.