X Window System
W systemie GNU/Linux za obsługę okienkowego interfejsu użytkownika odpowiada system X Window. Jest to system sieciowy pozwalający na wyświetlanie okien z dowolną zawartością na zdalnym ekranie. Każdy program chcący wyświetlić coś na ekranie - X-klient - komunikuje się za pomocą protokołu X z X-serwerem - programem odpowiedzialnym za wyświetlanie danych X-klientów oraz przyjmowanie wejścia od użytkowników i przekazywanie go klientom. Taka architektura daje szereg możliwości niedostępnych dla innych systemów graficznych.
Przede wszystkim - X-serwer, na którym klient wyświetla swoje okna, może znajdować się zarówno na tym samym komputerze, co klient, jak i na zupełnie odległym. W ten sposób możliwa jest praca z graficznymi programami na zdalnych maszynach. Można to wykorzystać przykładowo do uruchamiania szczególnie kosztownych zadań na szybszym komputerze. Można również uczynić z klienta komputer z minimalnym zestawem urządzeń - brak dysku twardego, niewiele pamięci operacyjnej - a wszystkie programy uruchamiać na centralnym serwerze. Taki układ jest bardzo łatwy w zarządzaniu, gdyż całe oprogramowanie i konfiguracja znajdują się na jednym komputerze, jak i bardzo tani - wystarczy kupić jedną bardzo wydajną maszynę i komplet tanich terminali zamiast dużej ilości wydajnych stacji roboczych.
Możliwość zdalnej pracy oferuje również VNC - Virtual Network Computing. Serwer VNC jest z punktu widzenia programów zwyczajnym X-serwerem. Okna klientów nie są jednak wyświetlane na fizycznym ekranie, lecz w wewnętrznym, pamięciowym buforze. Aby zobaczyć jego zawartość, wystarczy połączyć się z serwerem za pomocą dowolnego klienta VNC. Dzięki połączeniu architektury X z VNC, dostajemy możliwość korzystania ze swojego pulpitu z dowolnego miejsca w sieci, zachowując możliwość wywoływania zdalnych programów.
Architektura X jest oparta na zasadzie oddzielenia polityki od mechanizmu. Oznacza to, że system X Window nie wymusza żadnego konkretnego zachowania na klientach, jedyne, co robi, to wyświetla grafikę i komunikuje o zdarzeniach. Za całą resztę odpowiadają programy klienckie. Z tego powodu powstało wiele bibliotek interfejsu użytkownika, pozwalających na zrobienie czegoś bardziej wysokopoziomowego, niż samo wyświetlanie grafiki - tworzenie przycisków, menu, pasków narzędziowych, pól wejściowych i innych. Do bibliotek takich należą tradycyjne Athena Widgets i Motif oraz obecnie popularne Qt i GTK. Programista tworzący nowy program działający w X Window może wykorzystać jedną z tych bibliotek lub pracować bezpośrednio z protokołem X.
System X Window uwzględnia istnienie jednego szczególnego klienta - menedżera okien. Jest to program, który odpowiada za wyświetlanie dekoracji okien oraz ich interakcję z użytkownikiem. Menedżerów okien można używać zamiennie. Z tego powodu istnieje mnogość programów tego typu, oferujących różne możliwości, wygląd czy zachowanie. Wybór odpowiedniego menedżera pozostawiony jest użytkownikowi.
Wiele programów, które zostały nazwane przez autorów menedżerami okien, zawierają dodatkową funkcjonalność - paski dokowania dla apletów, paski narzędziowe, menu startowe i inne. Istnieje jednak odrębna klasa aplikacji, w której te funkcjonalności dodatkowe wychodzą na pierwszy plan, zaś sama funkcja menedżera okien jest drugorzędna. Są to zintegrowane środowiska użytkownika, do których należą m.in. KDE, GNOME, CDE, XFCE.