X Window System

X Window System – system okien, czyli komponent graficznego interfejsu użytkownika, stworzony w latach 80. XX wieku w laboratoriach Massachusetts Institute of Technology (MIT). Obecnie prace nadzoruje X.Org Foundation, a najnowszym wydaniem jest wersja 11. Często oprócz X Window System stosuje się też nazwę X, X11, X11R6 (dla implementacji X.Org w wersjach 6) lub X11R7.

Nazwa X Windows (poprzez analogię do Microsoft Windows), chociaż rozpowszechniona, jest niepoprawna.

Najpopularniejszymi implementacjami X Window System są X.Org oraz XFree86.

Opis 

System X tworzy okna, na których program może tworzyć obraz, oraz zajmuje się obsługą urządzeń wejściowych (myszki, klawiatury, tabletu). Serwer X może rysować tylko najprostsze obiekty (odcinki, wielokąty, elipsy, wyświetlać bitmapy, stawiać pojedyncze piksele), nie dostarcza natomiast żadnego interfejsu użytkownika, czyli przycisków, rozwijanych menu, pasków przewijania itp. Rysowaniem i obsługą tych elementów musi zająć się program, najczęściej jest to biblioteka widgetów. System X nie zajmuje się również obsługą okien, nie dostarcza żadnych wbudowanych mechanizmów do ich przesuwania, zmiany rozmiaru, zamykania i uruchamiania programów itd., nie rysuje także pasków tytułowych dla okien – tym wszystkim musi zająć się osobny program, tzw. menedżer okien (ang. window manager).

Pierwszymi bibliotekami widgetów były Athena, Motif oraz OpenLook, dzięki którym udało się stworzyć proste środowiska graficzne. Dzisiejsze GNOME i KDE (korzystające odpowiednio z bibliotek: GTK i GTK+ oraz Qt) to całe rozbudowane środowiska graficzne starające się tworzyć pewną użytkową całość.

X Window System zaprojektowany jest w architekturze klient-serwer, co oznacza, że składa się z dwóch elementów: z serwera, zajmującego się wyświetlaniem grafiki oraz obsługą klawiatury i myszy, oraz z klienta, czyli oprogramowania żądającego od serwera zmian zawartości okna. Oba elementy komunikują się ze sobą przy pomocy protokołu przezroczystego sieciowo, co oznacza, że nie ma znaczenia, czy oba elementy systemu działają na tym samym komputerze, czy na dwóch różnych maszynach. Jedna maszyna może wykonywać program, druga może wyświetlać wynik działania programu. Przykładem może być sytuacja, w której użytkownik pracuje zdalnie na odległym komputerze korzystając z X Window System. Jego lokalny komputer (ten, przy którym siedzi) działa jako serwer X zapewniając graficzny interfejs użytkownika. Na zdalnym komputerze działa uruchomiony przez użytkownika program, będący klientem serwera X działającego na maszynie lokalnej. Z serwera na maszynie lokalnej program na maszynie odległej otrzymuje instrukcje sterujące użytkownika i na maszynę lokalną przesyła wyniki swojego działania.

Twórcy protokołu X przewidzieli możliwość jego rozszerzenia o nowe funkcje. Na przykład na potrzeby biblioteki OpenGL powstało rozszerzenie GLX.

Historia 
 X Window System został stworzony w czerwcu 1984 roku w laboratoriach Massachusetts Institute of Technology (MIT) przez Boba Scheiflera.
 W 1988 powołano MIT X Consortium, a w 1992 postanowiono przenieść konsorcjum poza MIT, tworząc oddzielną i niezależną organizację.
 W 1993 roku utworzono X Consortium, finansowane przez jego członków.
 1 stycznia 1994 roku wszystkie prawa do X Window System zostały przekazane X Consortium, Inc.
 Na początku 1996 roku w wyniku połączenia Open Software Foundation (OSF) i X/Open powstała The Open Group.
 X Consortium, Inc. zostało rozwiązane 31 grudnia 1996 roku. Wszystkie prawa do X Window System przekazano The Open Group.
 X Project Team została utworzona przez The Open Group jako następca X Consortium, Inc.
 The Open Group rozwiązało X Project Team i w maju 1999 roku powołało X.Org Group.
 22 stycznia 2004 członkowie X.Org Group utworzyli X.Org Foundation.

Wydania 
 przed X11R2 – MIT
 od X11R2 do X11R5 – MIT X Consortium
 od X11R6.0 do X11R6.3 – The X Consortium, Inc.
 X11R6.4 – The Open Group X Project Team
 X11R6.5, X11R6.5.1, X11R6.6 – The X.Org Group
 od X11R6.7 – X.Org Foundation

Zobacz też 

 NX, VNC
 GDI, Quartz
 DRI
 AIGLX, XGL
Wayland (serwer wyświetlania)

Linki zewnętrzne 
 

Oprogramowanie graficzne
 
Protokoły warstwy aplikacji