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.

It advertises what real toolkits ask for, which by now means GTK and GNOME, Qt and Plasma, and the wlroots-family protocols the smaller Wayland apps expect. Input goes out through a standard wl_seat, with touch, tablet and the keyboard bridge alongside it.

Protocols iosc speaksaround 34 globals

xdg-shell, popups, subsurfaces, wp-viewport, fractional-scale, presentation-time, single-pixel-buffer, xdg-activation, xdg-decoration, xdg-output; the clipboard as wl_data_device, primary selection and wlr-data-control; layer-shell, foreign-toplevel, screencopy, cursor-shape, pointer-constraints and relative-pointer, idle-notify and idle-inhibit; text-input-v3 with input-method and virtual-keyboard for the iOS keyboard bridge; touch and zwp_tablet_v2 for the Pencil; the four KDE output-management protocols Plasma needs; and the private iosc_iosurface, which is how a client hands over a GPU buffer.

The two upstream compositors

A desktop environment brings its own compositor, and the two big ones are handled differently.

Mutter
GNOME Shell's compositor is given a native iOS backend, MetaBackendIOS, so it produces the output IOSurface itself and reuses iosc's GPU glue. There is one compositor on screen, not two.
KWin
Plasma's compositor nests instead: iosc owns the output, and kwin_wayland runs inside it as a Qt/ANGLE client with its own Wayland socket for Plasma's clients, compositing them into an IOSurface of its own first.

Xwayland, the route for X11 apps

X11 clients get in through Xwayland, which runs against iosc as an ordinary Wayland client with glamor rendering X pixmaps through ANGLE into IOSurfaces. An X app therefore reaches the A10 like anything else, and this is what the X11 flavor installs: the xios-x11 meta pulls in xwayland and xauth, not a server of our own.

A rootless window manager that would give each X toplevel its own iosc surface is written and lives in the tree, but it is a build-time option and is not compiled into the published compositor yet.

The software X server was retired

Until July 2026 this page described a second server of our own: Xios, an Xvfb-derived X server whose device layer drew into an IOSurface and whose clients rendered on the CPU. It was retired on 2026-07-29 along with its xios-server package, because Xwayland on glamor reaches the GPU and the software path could not. Xvnc and Xvfb are still built, but only as headless bring-up and debugging tools — neither is a session you would run a desktop on.

Switching between them

Because every compositor produces an interchangeable output IOSurface, the session launcher can start any of them and the app presents the result the same way. A three-finger tap in the app opens the control panel, which lists the desktop presets: iosc, Mutter, GNOME Shell, Plasma Desktop, Plasma Nano and Plasma Mobile. Switching to a running display slot lives one level down, under Advanced. iosc also resizes live when the iPad rotates.