24/05/2023
Představte si svůj iPhone nebo iPad jako plnohodnotné vývojové prostředí, schopné spouštět grafické aplikace, prohlížeče a IDE, podobně jako tradiční stolní počítač. Tato vize se zdála být na dosah díky snahám o implementaci X Window System (X11) na iOS. Projekt, který kdysi sliboval revoluci pro jailbreaknutá zařízení, umožňoval uživatelům experimentovat s rozhraním, jež byste běžně očekávali spíše na Linuxu či Unixu. Avšak realita a nároky na údržbu si vybraly svou daň.

Je důležité hned na úvod poznamenat, že původní repozitář Cydia, který X11 balíčky nabízel, již není aktivní. Důvodem byla náročná údržba a ztráta zájmu ze strany vývojáře. Přestože obsah, na kterém je tento článek založen, byl ve své době velmi užitečný, pokud dnes toužíte po X11 na iOS/iPadOS, měli byste se zaměřit na projekt Procursus, který převzal štafetu. Tento článek vás provede historií, technickým fungováním a důvody, proč byl X11 na iOS tak lákavým cílem.
Co je X11 a Proč na iOS?
X Window System, běžně označovaný jako X11, je síťově transparentní okenní systém pro bitmapové displeje. Jednoduše řečeno, je to základní stavební kámen mnoha grafických uživatelských rozhraní (GUI) na Unixových a Linuxových systémech. Umožňuje spouštět aplikace v oknech a spravovat jejich zobrazení, vstup z myši a klávesnice. Myšlenka přinést X11 na iOS vycházela z touhy proměnit mobilní zařízení, jako je iPad, v plnohodnotné vývojové prostředí. S výkonným hardwarem a Unix-like operačním systémem se iPhone a iPad jevily jako ideální kandidáti pro spouštění komplexních aplikací, které by bez okenního systému nebyly možné.
Hlavní motivací byla svoboda spouštět libovolné aplikace, jako jsou webové prohlížeče, textové editory nebo integrovaná vývojová prostředí (IDE), za předpokladu, že je bylo možné zkompilovat pro architekturu iOS. To by uživatelům otevřelo zcela nové možnosti, daleko přesahující běžné mobilní aplikace.
Jak Fungovalo X11 na iOS?
V době, kdy byl projekt aktivní, byl přístup k virtuální obrazovce X11 realizován prostřednictvím VNC klienta, který se připojoval k instanci Xvnc běžící na iOS zařízení. Xvnc je v podstatě X server s virtuální obrazovkou, ke které lze přistupovat přes VNC (Virtual Network Computing) protokol. Nejlepší na tomto přístupu bylo, že nebyly vyžadovány žádné speciální ovladače – vše bylo zpracováno samotným Xvnc. To značně zjednodušilo implementaci a umožnilo relativně snadné spuštění grafického prostředí na jailbreaknutém zařízení. Uživatelé tak mohli na svém iPhonu nebo iPadu vidět a ovládat plnohodnotný desktop, i když pouze virtuálně.
Klíčové Vlastnosti a Možnosti
Projekt X11 na iOS dosáhl pozoruhodného pokroku a nabídl řadu funkcionalit, které byly v té době na mobilních zařízeních nevídané. Mezi hlavní rysy patřily:
- X11 na iOS přes Xvnc: Základní funkčnost okenního systému.
- Funkční správci oken: Byly podporovány populární a lehké správci oken jako jwm (Joe's Window Manager), twm (Tom's Window Manager) a fluxbox. Tyto správci oken umožňovaly uživatelům spravovat okna aplikací a přizpůsobit si vzhled desktopu.
- Textový editor: K dispozici byl textový editor adie, což umožňovalo základní úpravy souborů přímo v X11 prostředí.
- Editor obrázků: Pro grafické úpravy byl integrován azpainter.
- OpenGL podpora: Díky implementaci Mesa (open-source implementace OpenGL) bylo možné spouštět aplikace využívající grafickou akceleraci.
- Množství dalších knihoven, nástrojů a aplikací: Kromě výše zmíněných byly zkompilovány a dostupné stovky dalších komponent, které tvořily kompletní X11 ekosystém.
Tyto funkce ukázaly obrovský potenciál iOS zařízení jako plnohodnotných počítačů, byť s nutností jailbreaku a určitých kompromisů.
Technické Detaily: Kompilace X11 pro iOS
Srdcem projektu byla možnost kompilovat X11 a jeho závislosti pro architekturu iOS (arm64). Většina balíčků byla testována na iOS 12.4 a iOS 13.1. Proces kompilace byl komplexní a vyžadoval specifické nástroje a úpravy.
Požadované Nástroje a Knihovny pro Sestavení:
Před zahájením kompilace bylo nutné mít iOS SDK umístěné na /usr/share/iPhoneOS.sdk, aby sbingnerův llvm-10 správně fungoval. SDK bylo možné získat z Theos. Následující nástroje a knihovny byly nezbytné (pokud jste se nerozhodli je kompilovat sami):
- Z repozitáře MCApollo: Gettext, Glib, libffi, libxml2, m4, OpenSSL, perl, PkgConfig, libiconv, Python @ 3.7, readline, zlib, clang-10, Darwin CC Tools, Bison, Flex, libstdc++ (symlink standardní C++ knihovny), automake, autoconf, ninja, libpng, gperf.
Obecně platilo, že se dalo řídit instrukcemi z příručky Beyond LinuxFromScratch (BLFS), verze 9.0, s několika klíčovými rozdíly a úpravami kódu. Následující tabulka shrnuje některé z hlavních balíčků a knihoven, spolu s poznámkami o speciálních úpravách potřebných pro iOS:
| Název | Verze | Poznámky pro iOS Kompilaci |
|---|---|---|
| util-macros | 1.19.2 | |
| xorgproto | 2019.2 | |
| libXau | 1.0.9 | |
| libXdmcp | 1.1.3 | |
| xcb-proto | 1.13 | |
| libxcb | 1.13.1 | |
| Freetype | 2.10.1 | |
| Fontconfig | 2.13.1 | ⚠️ Vyžadovalo úpravu stdlib.h v SDK, aby umožnilo systémové volání. Chyba s patchem byla dostupná. |
| xtrans | 1.4.0 | |
| libX11 | 1.6.9 | |
| libFS | 1.0.8 | ⚠️ Bylo nutné odstranit kód ze souboru libtool. Proměnné prostředí nebyly na iOS naplněny, takže generovaný bash příkaz byl chybný. |
| libICE | 1.0.1 | |
| libSM | 1.2.3 | |
| libXScrnSaver | 1.2.3 | |
| libXt | 1.2.0 | |
| libXmu | 1.1.3 | |
| libXpm | 3.5.13 | |
| libXaw | 1.0.13 | |
| libXfixes | 5.0.3 | |
| libXcomposite | 0.4.5 | |
| libXrender | 0.9.10 | |
| libXcursor | 1.2.0 | |
| libXdamage | 1.1.5 | |
| libfontenc | 1.1.4 | |
| libXfont2 | 2.0.4 | |
| libXft | 2.3.3 | |
| libXi | 1.7.10 | |
| libXinerama | 1.1.4 | |
| libXrandr | 1.5.2 | |
| libXres | 1.2.0 | |
| libXtst | 1.2.3 | |
| libXv | 1.0.11 | |
| libXvMC | 1.0.12 | |
| libXxf86dga | 1.1.5 | |
| libXxf86vm | 1.1.4 | |
| libpciaccess | 1.0.12 | ❗️ Nepodporovaný OS |
| libdmx | 1.1.4 | |
| libxkbfile | 1.1.0 | |
| xcb-util | 0.4.0 | |
| xcb-util-image | 0.4.0 | |
| xcb-util-keysyms | 0.4.0 | |
| xcb-util-renderutil | 0.3.9 | |
| xcb-util-wm | 0.4.1 | |
| xcb-util-cursor | 0.1.3 | |
| Mako | 1.1.0 | Pokud nelze sestavit, zkusit pip. |
| Mesa | 0.52.1 | ⚠️ Nastavit DRI ovladače na swrast a gallium ovladače na prázdné. Ruční úprava meson_options.txt. Symlink m4 na /opt/local/bin/gm4. Odstranění kontroly APPLE v /src/mesa/main/texcompress_s3tc_tmp.h. Specifikovat minimální verzi iOS (např. -miphoneos-version-min=11.2). |
| xbitmaps | 1.1.2 | |
| iceauth | 1.0.8 | |
| luit | 1.1.1 | Spustit sed -i -e "/D_XOPEN/s/5/6/" configure. |
| mkfontdir | 1.0.7 | |
| mkfontscale | 1.2.1 | |
| sessreg | 1.1.2 | |
| setxkbmap | 1.3.2 | |
| smproxy | 1.0.6 | |
| x11perf | 1.6.1 | |
| xcursorgen | 1.0.7 | |
| xdpyinfo | 1.3.2 | |
| xev | 1.2.3 | |
| xhost | 1.0.8 | |
| xinput | 1.6.3 | |
| xkbcomp | 1.4.2 | |
| xkbevd | 1.1.4 | |
| xkbutils | 1.0.4 | |
| xkill | 1.0.5 | |
| xlsatoms | 1.1.3 | |
| xlsclients | 1.1.4 | |
| xmessage | 1.0.5 | |
| xmodmap | 1.0.10 | |
| xpr | 1.0.5 | |
| xprop | 1.2.4 | |
| xrandr | 1.5.1 | |
| xrdb | 1.2.0 | |
| xrefresh | 1.0.6 | |
| xset | 1.2.4 | |
| xsetroot | 1.1.2 | |
| xvinfo | 1.1.4 | |
| xwd | 1.0.7 | |
| xwininfo | 1.1.5 | |
| xwud | 1.0.5 | |
| startup-notification | .12 | |
| xterm | 351 | |
| FLTK | 1.3.5 | ⚠️ Nutné odstranit některé volání -U__APPLE__. Zakázat testy v Makefile. |
| tigervnc | 1.10.1 | ⚠️ Bez vncviewer. Zakázat přes CMake. Odstranit kontrolu if(NOT APPLE) a řádek add_subdirectory(tests). Důležité sestavit tigervnc před Xvnc. |
| Xvnc | 1.10.1 | ⚠️ Přidat falešný Xplugin.h. Upravit rootlessWindow.c pro kontrolu "Xplugin.h". Odstranit znaky -z, now z /unix/xserver/hw/vnc/Makefile.in. |
| Glib | 2.62.4 | ⚠️ Zakázat podporu Cocoa a Carbon v build.meson. Falešný crt_externs.h. Odstranit if host_system == 'darwin' kontrolu v glib/meson.build. |
| LuaJIT | 2.1.0 | Viz https://github.com/rweichler/luajit-ios |
| OpenJPG | 2.3.1 | |
| poppler | 0.84.0 | |
| check | 0.11.0 | |
| pango | Pracuje se na tom. | |
| EFL | 1.23.3 | Pracuje se na tom. |
| compton | git v0.1 beta g316eac0 | |
| FOX toolkit | 1.7.67 | Obsahuje Adie (textový editor), kalkulačku a Shutterbug (screenshoty). |
| azpainter | 4bf18c8 |
Tato tabulka ukazuje, jak složitý a detailní byl proces adaptace X11 pro iOS. Každá knihovna a nástroj vyžadovaly pečlivé úpravy a řešení specifických problémů spojených s mobilním operačním systémem a jeho architekturou.
iPhone 11 a jeho Soukromí: Souvislost s Vývojem na iOS
Zatímco se ponořujeme do hlubin softwarových úprav a snahy o rozšíření funkcionality iOS zařízení, je důležité si uvědomit, že Apple neustále klade velký důraz na soukromí uživatelů. S každou novou verzí iOS a každým novým modelem iPhonu se objevují vylepšení, která mají za cíl chránit osobní data. iPhone 11, který byl na trh uveden s iOS 13, přinesl několik významných funkcí v oblasti soukromí, které ovlivňují, jak aplikace interagují s vašimi daty.

Klíčové Funkce Soukromí na iPhone 11 (iOS 13)
- Upozornění na schránku (Clipboard Warnings): iPhone 11 (s iOS 13) začal upozorňovat uživatele malým oznámením, kdykoli aplikace zkopíruje data z vaší schránky. Tato funkce, která nebyla přítomna na iPhone X (iOS 11), výrazně zvyšuje transparentnost a kontrolu nad tím, co se děje s daty, která jste zkopírovali.
- Možnosti ochrany soukromí kamery/mikrofonu: Na iPhone 11 (s iOS 13) můžete povolit nebo zakázat přístup aplikace ke kameře nebo mikrofonu vašeho zařízení. Navíc se zobrazují indikační ikony, které vizuálně signalizují, kdy aplikace používá kameru nebo mikrofon. Tato funkce nebyla dostupná na iPhone X (iOS 11) a dává uživatelům mnohem větší kontrolu nad citlivými hardwarovými komponenty.
- Ochrana soukromí e-mailů (Mail Privacy Protection): Tato funkce, vestavěná do výchozí e-mailové aplikace na iPhone 11 (s iOS 13), blokuje odesílatelům používání „sledovacích pixelů“, které by jim umožnily zjistit, kdy jste e-mail přečetli. Rovněž skrývá vaši IP adresu před odesílateli, čímž zvyšuje anonymitu. Opět, tato pokročilá ochrana chyběla na iPhone X (iOS 11).
- Přizpůsobení témat (Theme Customization): Zde je zajímavé, že iPhone 11 (s iOS 13) stále nenabízí rozsáhlé možnosti přizpůsobení vzhledu uživatelského rozhraní (UI), jako je změna systémových barev nebo ikon aplikací. To je oblast, kde iOS tradičně zaostává za některými jinými operačními systémy, což může být pro uživatele zvyklé na větší flexibilitu v X11 prostředí zklamáním.
- Blokování sledování aplikací (Block App Tracking): Některé aplikace sledují vaši aktivitu, i když je aplikace nepoužíváte. Na iPhone 11 (s iOS 13) tato funkce soukromí umožňuje blokovat toto sledování, a to buď napříč všemi aplikacemi, nebo na základě jednotlivých aplikací. Tato úroveň kontroly nad sledováním nebyla k dispozici na iPhone X (iOS 11) a představuje významný krok vpřed v ochraně soukromí.
- Blokování sledování mezi weby (Blocks Cross-site Tracking): Toto nastavení (ve výchozím prohlížeči Safari) je přítomno jak na iPhone 11 (iOS 13), tak na iPhone X (iOS 11). Umožňuje blokovat cookies a data pro sledování mezi weby, což pomáhá chránit vaše soukromí při procházení internetu.
- Strojové učení na zařízení (On-device Machine Learning): iPhone 11 (stejně jako iPhone X) využívá strojové učení přímo na zařízení k rozpoznávání lidí, míst a dalších prvků v aplikaci Fotky. Algoritmy běží lokálně na zařízení, kde jsou citlivá data uchovávána. Konkurenční služby často nahrávají fotografie a provádějí analýzu na svých serverech, což vyžaduje sdílení osobních dat. Tato funkce podtrhuje filozofii Applu zpracovávat citlivá data lokálně, pokud je to možné.
Tyto funkce ukazují, že zatímco komunita jailbreaku a vývojářů se snažila rozšířit možnosti iOS zespodu, Apple sám neustále pracuje na posílení bezpečnosti a soukromí zevnitř operačního systému. Je to neustálý tanec mezi otevřeností a kontrolou, inovacemi a ochranou uživatele.
Často Kladené Otázky (FAQ)
Je Cydia repozitář pro X11 na iOS stále aktivní?
Ne, původní Cydia repozitář, který nabízel balíčky X11, již není aktivní. Vývojář jej stáhl kvůli náročnosti údržby a ztrátě zájmu. Pokud hledáte X11 na iOS/iPadOS, měli byste se zaměřit na projekt Procursus.
Potřebuji jailbreak, abych mohl spustit X11 na svém iPhonu?
Ano, pro spuštění X11 nebo podobných nízkoúrovňových systémů na iOS je nezbytný jailbreak. X11 vyžaduje přístup k systémovým souborům a možnost spouštět neoficiální balíčky, což je bez jailbreaku nemožné.
Co je Xvnc a jak se liší od běžného X serveru?
Xvnc je typ X serveru, který místo přímého zobrazení na fyzický displej vytvoří virtuální obrazovku. K této virtuální obrazovce se pak přistupuje vzdáleně pomocí VNC klienta. To eliminuje potřebu speciálních grafických ovladačů pro iOS, protože vše se odehrává v softwarové emulaci.
Mohu si X11 zkompilovat sám podle uvedených instrukcí?
Technicky ano, ale je to velmi náročný proces, který vyžaduje hluboké znalosti Unixových systémů, kompilace softwaru a řešení specifických problémů pro iOS architekturu. Většina uživatelů by pravděpodobně narazila na mnoho překážek. Doporučuje se spíše hledat předkompilované balíčky od aktivních projektů, jako je Procursus.
Je iPhone 11 dobrý telefon z hlediska soukromí?
iPhone 11 (s iOS 13 a novějším) nabízí robustní sadu funkcí pro ochranu soukromí, jako jsou upozornění na schránku, detailní kontrola přístupu k mikrofonu a kameře, ochrana soukromí e-mailů a blokování sledování aplikací. Apple se snaží zpracovávat citlivá data na zařízení, což je pro soukromí pozitivní. Celkově je iPhone 11 v tomto ohledu velmi schopný.
Závěr
Projekt X11 na iOS, ačkoliv již není aktivně udržován původním vývojářem přes Cydii, představoval fascinující ukázku potenciálu a flexibility mobilních zařízení Apple. Ukázal, že s trochou technické zručnosti a odhodlání lze iPhone a iPad proměnit v platformy schopné spouštět komplexní desktopové aplikace. Zatímco sny o plnohodnotném Linuxovém desktopu na iPhonu se přes Cydii rozplynuly, komunita kolem jailbreaku a alternativních repozitářů, jako je Procursus, nadále zkoumá hranice možného.
Paralelně s těmito experimenty Apple neustále posiluje základní zabezpečení a soukromí svých zařízení, což je patrné na funkcích, které přinesl iPhone 11. Tento vývoj zdůrazňuje dvě odlišné, ale stejně důležité cesty: snahu komunity o maximální otevřenost a kontrolu nad hardwarem a snahu výrobce o maximální bezpečnost a ochranu uživatelských dat. Pro uživatele to znamená, že ať už se vydají cestou jailbreaku a experimentování, nebo se spolehnou na oficiální ekosystém, jejich zařízení iPhone zůstává předmětem neustálého vývoje a inovací.
Chceš-li si přečíst další články podobné jako X11 na iPhone: Historie, Realita a Soukromí, navštiv kategorii Software.
