Systém X-Window (rovněž X11, nebo X) vznikl jako prostředek pro tvorbu grafických uživatelských rozgraní (GUI) a programů s grafickým rozhraním na univerzitě MIT v 80. letech. X-Window není úplným GUI, jedná se pouze o systém pro správu oken, jenž poskytuje funkce pro práci s okny a ovládání oken. Základními vlastnostmi systému jsou nezávislost na platformě a předpoklady pro provoz na síti, což dává uživateli možnost provozovat výpočetně náročné úlohy na výkonnějším počítači a svůj používat jako terminál.
X-Window system je v současnosti velmi rozšířen v oblasti velkých UNIXových systémů, kde se dnes nejvíce používá CDE (Common Desktop Environment) postavené nad OSF-Motif a v prostředí LINUXu, kde momentálně vpodstatě proti sobě stojí KDE využívající služeb objektové knihovny Qt a Gnome, jenž je podporováno např. firmou SUN a opírá se o knihovnu Gtk. Existují však také implementace systému X-Window pro osobní počítače provozující MS-DOS, resp. MS-Windows např.: ReflectionX, Desqview/X, i pro Macy s MacOS - servery: MacX, eXodus, klienti: PlanetX, Xgator. Další aplikací X-Window systému jsou pak síťové bezdiskové grafické stanice - X-terminály, které vyrábí např. firma HP.
Systém X-Window je postaven na osvědčeném modelu client-server. Ke komunikaci mezi klientskou a servrovskou částí je určen protokol X. X-protokol byl vyvinut v polovině osmdesátých let. Důvodem pro jeho vznik byla potřeba grafického uživatelského rozhraní, hlavně pro operační systém UNIX. Může být provozován buď na jednom počítači, nebo v počítačové síti. Je nezávislý na operačním systému a tím pádem použitelný na mnoha různých platformách. Pro síťovou komunikaci zajišťuje spojení typu klient-server. Tento model dává uživateli možnost spouštět programy na jednom počítači a obsluhovat je z jiného počítače.
Uživatel pracuje na X-Serveru, který "poskytuje" myš, obrazovku, klávesnici a další vstupně/výstupní zařízení. X-Klienty jsou pak aplikace (např. xterm, emacs, xclock), jenž od X-serveru přijímají a zpracovávají vstupy a vrací mu výstupy.
Ve většině případů server a klient běží na jednom počítači. Ovšem neméně často je tento systém používán ke komunikaci terminálu (X-Terminal) a serveru, právě prostřednictvím X-Protokolu.
X-protokol dále specifikuje dvě vrstvy X-window: vrstvu závislou na zařízení a vrstvu na zařízení nezávislou. To má za následek zamaskování odlišností různých systémů a tím pádem nezávislost na platformě:
Protokol je založen na principu asynchronní komunikace mezi X-klientem a X-serverem:
Tento přístup má mnohé výhody:
xhost
xhost +ja.hostitel.cz
Po provedení tohoto příkazu může jakýkoliv uživatel na tomto počítači komunikovat s daným X-Serverem.
xhost -ja.hostitel.cz
xhost +
xhost -
Xlib: connection to "display:0.0" refused by server
Xlib: Client is not authorized to connect to Server
Zamezení přístupu, pokud je již hostitel připojen, nebude mít efekt. Projeví se až po restartu X-Serveru.
Výhody:
Kontrola přístupu pomocí programu xhost je jednoduchá, díky jeho syntaxi.
Nevýhody:
Jednoduchost programu xhost je rovněž nevýhodou. Všechna spojení od hostitele musí být založena
na stejné úrovni: uživatel-uživatel, program-program, spojení-spojení. Pro mnoho systémů, kde se mnoho
uživatelů najednou dožaduje spojení na jednoho hostitele je toto řešení nedostatečné.
Xhost má větší prioritu, než Oveření pravosti "peška". Kdokoliv může sám přidávat různé systémy
do seznamu klientů bez jakýchkoliv privilegií, nebo vědomí síťového administrátora.
xauth extract - $DISPLAY | rsh ahost.foo.org xauth merge -
První příkaz posílá "magic cookie" na standardní výstup. Pomocí roury je tato informace předána programu rsh (Remote Shell Command), který spustí na počítači ahost.foo.org program xauth a zapíše posílaný "magic cookie" do souboru .Xauthority. Výsledkem je to, že nyní může uživatel, který použil tento příkaz, spouštět X-Klienty na stroji ahost.foo.org, a zobrazovat je na své obrazovce (X-Server). Je žádoucí, aby měl každý uživatel nastavena správně práva u souboru .Xauthority, a to tak aby ho mohl číst a zapisovat do něj pouze on sám.
Klíčovým vylepšením oproti metodě Ověření pravosti hostitele, je fakt, že uživatel který použil xauth, může pracovat na ahost.foo.org, ale je "neviditelný" pro ostatní uživatele připojené na tento počítač.
X Display Manager
X Display Manager xdm je klient, který má na starost správu přihlašovacího dialogu. Když se uživatel přihlašuje,
zapíše xdm "magic cookie" do souboru .Xauthority do uživatelova domovského adresáře.Xdm může být
použit jak pro login na lokálním počítači, tak pro vzdálené přihlašování. Stará se rovněž o ověřování "magic cookie". Tato
funkce musí být ovšem nejprve nastavena přidáním následujícího řádku do souboru /usr/lib/X11/xdm/xdm/config:
DisplayManager*authorize: true
Výsledkem tohoto nastavení je to, že program xdm generuje nový "magic cookie" pokaždé, když se uživatel přihlašuje a zapíše ho do souboru .Xauthority.
Výhody:
Autorizace nyní probíhá na úrovni uživatel-uživatel, ne na bázi hostitel-hostitel. To je důležité hlavně pro systém, kde
jeden hostitel má mnoho uživatelů.
Nevýhody:
Programy xdm a xauth jsou poměrně časově náročné jak pro administrátora, tak pro koncového uživatele.
Pro jejich použití je žádoucí dobrá znalost modelu klient-server.
Metoda Ověřování pomocí "magic cookie" může být použita jako doplněk programu xhost.
Systém X-Window poskytuje programátorům aplikací (X-klientů, psaní X-Serveru jistě není tak častou záležitostí) několik úrovní abstrakce při přístupu ke svým prostředkům. Na nejnižší úrovni je samozřejmě samotný X-Protocol, který se však díky složitosti (síťové pakety) pro psaní aplikací přímo prakticky nepoužívá.
Nad protokolem X jsou postaveny knihovny, které poskytují více či méně komplexní rozhraní. Knihovnou s nejnižší úrovní abstrakce je Xlib. Přestože se některé knihovny na vysoké úrovni znaží Xlib zcela zapouzdřit, znalost programování pomocí funkcí této knihovny je pro vývoj komplexnější X-aplikace velmi výhodná, neboť Xlib dovoluje přístup ke všem funkcím X-protokolu (funkce pro práci s displejem, událostmi, ošetření chyb, správu oken, prostředků, komunikaci se servrem, atd.) a umožňuje tak plnou kontrolu nad systémem. Pro konkrétní představu: jednoduchý program používající Xlib.
Programování aplikací s využitím pouze služeb knihovny Xlib by sice nebylo nemožné, nicméně jistě velmi zdlouhavé. Proto dává většina programátorů přednost knihovnám vyšší úrovně, toolkitům. Jednou z nich je X toolkit, jenž se skládá z knihovny Xt Intrinsics a z množiny objektů GUI, přípravků - widgetů, která umožňuje vytváření nových widgetů, použití a modifikaci existujících přípravků. Widget zapouzdruje tři druhy informace: okno, do kterého se zobrazují informace, metody definující chování a stavovou informaci. Architektura Xt Intrinsics je založena na využití principů objektově orientovaného programování a umožňuje tak intuitivně kombinovat vytvořené přípravky a použít je v grafickém rozhraní aplikace.
Další vrstva je oproti předchozím rozvětvena a nabízí na výběr hned několik knihoven. Kromě standardní knihovny Athena (Athena widget set) existují ještě např.: OSF/Motif, OpenLook Intrinsics Toolkit, z novějších pak Qt, gtk a mnoho dalších, viz podrobnější výčet.
[1] Limpouch A.: X Window System, Grada, Praha 1993
[2] Manuálové stránky SunOS 5.7
[3] Technical X Window System and Motif WWW Sites
[4] Linux Documentation Project
[5] The X-Window System
[6] http://www.x.org