X od kuchni

"Co to X Window? To takie linuksowe Windows!" Ta obiegowa opinia na temat systemu X Window wciąż pojawia się na listach dyskusyjnych i w czasopismach fachowych. Czytając poniższy tekst, dowiesz się jak bardzo nieprawdziwe jest to stwierdzenie.

"Co to X Window? To takie linuksowe Windows!" Ta obiegowa opinia na temat systemu X Window wciąż pojawia się na listach dyskusyjnych i w czasopismach fachowych. Czytając poniższy tekst, dowiesz się jak bardzo nieprawdziwe jest to stwierdzenie.

Wygląd menedżera okien OLWM.

Wygląd menedżera okien OLWM.

Prawidłowa nazwa tego oprogramowania to X, X Window lub X Window System. Tak nazwali ten produkt jego twórcy i pod taką nazwą figuruje w dokumentacji technicznej. W opinii osób związanych z X i Linuksem w ogóle używanie innych form, a w szczególności nazwy X Windows może zadziałać jak czerwona płachta na byka (ze względu na jednoznaczne skojarzenie z produktem firmy Microsoft). Zamiennie z X Window używa się nazwy XFree lub XFree86. XFree86 to nieodpłatna implementacja serwerów protokołu X11R6 dla komputerów PC. Rozwój XFree86 odbywa się nieustannie i trwają prace nad różnymi odmianami dla systemów uniksowych (m.in. Linux, FreeBSD, Solaris, SVr4, Net-BSD, OpenBSD itd.). Ale nawet jeśli na daną platformę (systemową bądź sprzętową) nie ma dostępnego serwera XFree86, to można być niemal pewnym, że istnieje dla niej serwer X Window. Jest tak np. z MS Windows, dla których dostępne są serwery komercyjne, ale też co najmniej jeden nieodpłatny (MIX).

Jak to działa?

Burzliwa historia

X Window ma długą historię. System powstał w maju 1984 r. w słynnym MIT przy wsparciu korporacji DEC (było to trzy miesiące po wprowadzeniu na rynek pierwszego komputera Macintosh). Do stycznia 1985 r. numer wersji "podskoczył" aż do szóstki. W II kwartale 1985 r. X potrafił "już" obsługiwać kolory. Pod koniec 1985 r. nastąpiło przeniesienie X9 na maszyny IBM RT/PC i w ten sposób narodził się X10. Kolejna wersja (X11) pojawiła się dopiero we wrześniu 1987 r., stając się protoplastą wersji używanych współcześnie (nie zmienia się numer edycji, a jedynie numery wersji). Do roku 1990 pojawiła się wersja X11R4, później powstały wersje 5 i 6, istniejące do dzisiaj (obecnie zmieniają się już jedynie numerki "po przecinku" za szóstką). W 1996 r. X Consortium, które dotąd kierowało rozwojem systemu, przekazało prawa autorskie fundacji X Window Open Software Foundation z myślą o tym, by X Window stał się oprogramowaniem Open Source.

X Window to uniwersalny system uruchamiania aplikacji oparty na sieciowym X protokole. Wszystkie aplikacje X-owe działają w modelu klient/serwer. Serwerem jest oprogramowanie gwarantujące klientowi dostęp do grafiki i wyświetlające obraz na ekranie. Klientem jest konkretny program użytkowy, który przetwarza informacje, a w razie potrzeby komunikacji z użytkownikiem żąda od serwera usługi wyświetlenia wyników (ciągów znaków lub bitmap) na ekranie. Najbardziej wyrazistym praktycznym przykładem jest zdalna praca z programem dzia-łającym na superkomputerze.

Program ten wyświetla wyniki obliczeń na zdalnej końcówce PC. Często tak właśnie wykonywane są obliczenia naukowe. Ale nawet "swojskie" środowiska KDE, GNOME czy dowolna gra dla X również są systemami sieciowymi, z tą jednak różnicą, że "łączą" się z serwerem uruchomionym na tym samym komputerze. W zależności od rodzaju połączenia, X serwer kontaktuje się z klientami (programami) poprzez różne mechanizmy sieciowe. Mogą to być łącza strumieniowe, gniazda dziedziny Uniksa (UNIX domain socket) lub połączenia TCP/IP po-sprzez port o numerze wyższym niż 6000.

Szczegółowa konfiguracja menedżera logowania KDM (następcy "xdm").

Szczegółowa konfiguracja menedżera logowania KDM (następcy "xdm").

X serwer jest tą częścią systemu X Window, która zajmuje się bezpośrednio obsługą sprzętu wideo. Dlatego często można usłyszeć, że opracowano X serwer dla takiej czy innej karty wideo. X serwer wyświetla swój obraz na obiekcie nazywanym "wyświetlaczem" (display). Wyświetlacz może składać się ze zbioru ekranów (screens). Ekrany to zazwyczaj fizyczne monitory, choć istnieje rozszerzenie X o nazwie Xinerama, które umożliwia używanie kilku ekranów fizycznych jako jednego logicznego (multiheading) monitora.

Okna, biblioteki i inni

X serwer generalnie zajmuje się jedynie podstawową obsługą okien, tzn. jeśli okna będą na siebie zachodzić, to serwer w odpowiednich momentach będzie dla nich generował zdarzenia odświeżania zawartości, ruchów myszy, klawiatury i podobne. Struktura okien na ekranie jest hierarchiczna. Każde okno ma swojego "ro-dzica", wyjątkiem jest okno główne (zajmujące cały ekran fizyczny). Okna mogą otrzymywać komunikaty o zdarzeniach w różny sposób i na nie reagować. Nie mają jednak żadnego konkretnego wyglądu z punktu widzenia graficznego interfejsu użytkownika.

W tym celu z czasem powstały tzw. menedżery okien (window managers). Są to programy, które "opakowują" okienka w ramki, menu, elementy sterujące w postaci dodatkowych okien menedżera, na których wyświetlane są różne przyciski, tytuły programów itp. Menedżery okien potrafią zarządzać klientami (pozostałymi programami) za pomocą mechanizmu ICCCM (Inter Client Communication Convenctions Manual). Menedżer, jako szczególny klient X serwera, dziedziczy również maskę zdarzeń okna głównego i to jest przyczyna, z powodu której w systemie nie mogą jednocześnie pracować dwa menedżery okien.

GNOME to konkurencyjne dla KDE środowisko graficzne.

GNOME to konkurencyjne dla KDE środowisko graficzne.

Dotychczas powstało kilkanaście takich programów dla Linuksa, a dzisiaj wybór odpowiedniego z nich ma bardziej wymiar estetyczny i użytkowy niż techniczny. Przykładami popularnych menedżerów są: klasyczny FVWM (ciekawostka: początkowo skrót oznaczał "Feeble Virtual Window Manager" (feeble - kiepski). Później jednak autor oznaczył go dość dziwacznie jako "F? Virtual Window Manager") Afterstep, Enligtement (wykorzystywany standardowo przez GNOME), Twm, Olvwm, Icewm, WindowMaker i wiele innych. Każdy z nich ma unikatowy wygląd i metody konfigurowania. Również KDE ma własnego menedżera okien - "kwm", choć może być on być zastąpiony innymi tego typu aplikacjami. Prawdopodobnie najstarszym i najbardziej prymitywnym z nich jest Twm (Tom's window manager), który wciąż wchodzi w skład dystrybucji Linuksa.

Środowisko KDE wersja 1.x.

Środowisko KDE wersja 1.x.

Poza dodawaniem paska tytu-łu, menedżery okien mogą dawać inne proste udogodnienia, np. wirtualne ekrany, podręczne menu lub ikony. Celowo nie zaznaczyliśmy wcześniej, że menedżery okien dają właściwe GUI aplikacjom, ponieważ jest to bardziej skomplikowane. Generalnie X protokół ani implementacja jego obsługi w języku C, tzn. biblioteka Xlib, nie udostępniają żadnych właściwości GUI. Są tam możliwe jedynie takie operacje, jak narysowanie kreski, prostokąta, literki - ale żadnego przycisku, menu czy rozwijalnego menu. Co zrobić w takiej sytuacji? Na fundamencie biblio-teki Xlib trzeba zbudować odpowiednią bibliotekę GUI. Początkowo, przez długi czas używano dwóch najpopularniejszych: Motifa i Athena Widgets. Z czasem, szczególnie ze wzrostem popularności Linuksa i rozwojem możliwości sprzętowych i środowisk GUI na innych platformach, pojawiła się potrzeba rozwoju. Powstały takie biblioteki GUI, jak Qt czy Gtk. Pierwsza początkowo była biblioteką komercyjną, z czasem przeszła na licencję typu Open Source (QPL). Gtk z kolei od początku było rozpowszechniane na licencji GNU i miało być dobrą alternatywą dla Qt.


Zobacz również