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/jb symlink and works as-is.
A package manager
Sileo, Zebra, or plain apt on 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.

Repoapt source
https://repo.maxleiter.com

From a shell instead, as root. It is a flat repo, so the suite is ./.

Shellsources.list.d
#echo 'deb [trusted=yes] https://repo.maxleiter.com ./' > /var/jb/etc/apt/sources.list.d/maxleiter.list
# apt update

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.
Installapt
# apt install xios-gnome # or xios-kde, xios-native, xios-x11

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:

Sessionsxios-session
# xios-session iosc # the iosc desktop shell
# xios-session gnome # GNOME session and Shell
# xios-session kde-mobile # or kde, kde-nano
# xios-session status
# xios-session stop # back to SpringBoard
Keep the screen awake

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 stop tears 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.