xiOS and iosc
Two servers draw the desktop. One speaks X11 and renders in software; the other speaks Wayland and composites on the GPU. They are separate programs that happen to share an output format.
xiOS, the X11 server
xiOS is derived from Xvfb, the virtual framebuffer X server, with a device layer that draws into an IOSurface instead of a memory buffer. X11 clients such as xterm and the classic x11-apps connect over the ordinary X protocol and are none the wiser about where their pixels end up.
X11 clients render on the CPU. iOS gives this X11 path no DRM/KMS or desktop OpenGL route, so the X track stays software. It is the compatible, reliable option, and it is where the project started.
- Basis
- Xvfb with an IOSurface device layer, cross-compiled for iphoneos-arm64.
- Output
- Draws the X screen straight into an IOSurface.
- Input
- UIKit events arrive as XTEST.
- Rendering
- Software only. Good for legacy X clients, but not the GPU track.
iosc, the Wayland compositor
iosc is a compositor written from scratch on libwayland-server, clean-room and MIT-licensed. Rather than blitting client buffers on the CPU, it treats each client's rendered surface as a GPU texture and blends them into the output IOSurface on the A10. This is the path that makes real toolkits feel native.
To satisfy GTK and GNOME it advertises the protocols those toolkits require, and it routes keyboard and pointer input through a standard wl_seat.
xdg-shell, xdg-popup, subsurfaces, wp-viewport, fractional-scale, wl_data_device clipboard, layer-shell, foreign-toplevel, cursor-shape, screencopy, session-lock, drag-and-drop, plus wired-up touch, Pencil tablet input, and live output resize for rotation.
Switching between them
Because both servers produce an interchangeable output IOSurface, the session launcher can start either one and the app presents it the same way. A three-finger tap in the app switches between running X and Wayland displays. A four-finger tap opens the session picker, where you choose a desktop; iosc can also resize live when the iPad rotates.