X11 on iOS
Introduction
I'm excited to announce that X11 is coming soon to iOS. Most (see below) packages and dependencies for a fully functioning X11 desktop system have been compiled and are available on Cydia for iOS 11+. All packages have been compiled for arm64 and have been tested on iOS 12.4 and iOS 13.1. This requires a jailbroken device.
This site will serve largely as documentation for building yourself. You can add the Cydia repo below for the deb packages. Please let me know if you run across any issues with the debs; it's likely I messed up including a library or something like that. (These aren't done just yet.)
Above: adie (text editor), glxgears (GL demo), xterm (terminal emulator), fluxbox (window manager), compton (compositor), PathFinder (files). Image of programs running on device
How it works
At the moment, a virtual screen is accessed via a VNC client to an Xvnc [1]instance running on the iDevice. If you're unfamiliar, Xvnc is an X server with a virtual screen that can be accessed via VNC. The best part of this is no drivers are required: it's all handled by Xvnc.
Why
I want to turn my iPad into a proper development environment, and a windowing system helps with that. It's a powerful machine with a Unix-like OS, so X11 seemed like a reasonable project. X11 allows running arbirtary applications like browsers and IDEs, assuming you can make them compile.
Current Features
- X11 on iOS via Xvnc
- Working window managers (jwm / twm / fluxbox)
- Text editor (adie)
- Image editor (azpainter)
- OpenGL (via Mesa)
- Loads of other libraries, tools, and applications.
- All available in a Cydia repo
What's next?
-
Fix modern versions of fontconfig (> 2.8.0)— this has been addressed. - Desktop enviroments like XFCE, GNOME, and KDE
- requires GTK or QT
Experiment with Wayland via wayvnc— not feasible on iOS
Want to contribute?
If you're interested in using X11 now, or helping make it available sooner, feel free to email me or find me on IRC as MaxLeiter in #X11iOS on Freenode. More information on contributing is in the works.Building instructions
On a separate pageTips, bugs, etc.
- Getting
checking build system type... Invalid configuration `arm64-apple-darwin19.0.0': machine `arm64-apple' not recognized? Runecho 'echo arm-apple-darwin' > config.sub - Once I finish this it should be a little easier porting libraries and apps
[1] https://tigervnc.org/doc/Xvnc.html