Odpowiedzi:
Zarówno GTK, jak i Qt to zestawy narzędzi do tworzenia interfejsów graficznych. Każdy zestaw narzędzi interfejsu użytkownika udostępnia własne funkcje do tworzenia widżetów (przyciski, pola tekstowe ...) i jest dostępny w postaci bibliotek , z którymi łączy się program graficzny. Program napisany dla GNOME będzie używał GTK ( libgdk
i libgtk
), podczas gdy programy KDE używają Qt ( libQtCore
i libQtGui
), programy Oświecenia używają EFL i tak dalej.
Jednak wszystkie te zestawy narzędzi korzystają z tego samego systemu X Window i tego samego protokołu X11 . Aby wyświetlać się na ekranie, zestaw narzędzi łączy się z działającym serwerem X (zwykle Xorg, wcześniej nazywany XFree86), wysyła polecenia X11 (utwórz okno, narysuj coś w oknie) i odbiera zdarzenia wejściowe X11 (mysz, klawiatura, zmiana rozmiaru okna , i c) z powrotem.
(Większość nowoczesnych zestawów narzędzi, takich jak GTK, Qt lub EFL, samodzielnie wykonuje fantazyjne rysunki i po prostu używa X11, aby wysłać gotowy obraz całego okna, a serwer X po prostu wyświetla go na ekranie. Starsze zestawy narzędzi, takie jak lXaw lub Motif, zamiast tego używają X11 do rysowania prymitywów, takich jak linie, prostokąty lub tekst, a serwer X wykonuje wszystkie renderowania).
Serwer X wykonuje następnie zadanie złożenia wszystkiego, rozmowy z kartą graficzną i tak dalej. W ten sposób możesz uruchamiać programy korzystające z różnych wersji różnych zestawów narzędzi, ponieważ w końcu korzystają one z tych samych funkcji systemu operacyjnego.
Sytuacja z wieloma narzędziami nie jest unikalna dla X - na przykład programy Windows używają standardowego, comctl32
ale także WPF, .NET WinForms, Chrome Aura, Firefox XUL, a nawet tego samego GTK lub Qt. Większość gier używa własnych elementów sterujących. Naprawdę jest to możliwe w każdym systemie graficznym, który pozwala narysować obraz w całym oknie.
Jednak jedną z zasad X był „mechanizm, a nie polityka”. Oznacza to, że serwer X zapewnia tylko swoim klientom (programom graficznym) mechanizm wykonywania różnych czynności, ale nakłada tak mało reguł, jak to konieczne . Innymi słowy, X bierze to w większym stopniu niż jakikolwiek inny system graficzny.
Na przykład jedną z integralnych części systemu graficznego jest zarządzanie oknami - rysowanie ramek (zwanych także dekoracjami) wokół każdego okna, możliwość przesuwania i zmiany rozmiaru okien i tak dalej. Windows i OS X mają wbudowany menedżer okien, ale w X działa jako osobny program - pakiet X.Org jest dostarczany z minimalną liczbą twm
, ale prawie wszystkie środowiska graficzne mają własne menedżery okien (GNOME miał Sawfish, Metacity, gnome-shell; KDE ma KWin) zapewniający integrację z odpowiednim środowiskiem graficznym.
(Podobnie jak zestawy narzędzi, nowoczesne menedżery okien do „kompozytu” faktycznie przejmują zadanie Xorga polegające na skomponowaniu wszystkich okien do końcowego obrazu ekranu, umożliwiając dodawanie cieni lub efektów).
W nowoczesnych środowiskach komputerowych to również stwarza problemy. Aby użyć najczęstszego przykładu: ta sama funkcja „chwyć klawiaturę” jest używana przez klawisze skrótu; wyskakujące menu; oraz wygaszacze ekranu i tylko jeden program może z nich korzystać jednocześnie. Oznacza to, że nie można zablokować ekranu, gdy otwarte jest menu podręczne, ani pominąć utworów, gdy ekran jest zablokowany. Jest to jeden z kilku powodów, dla których Wayland powstaje jako zamiennik X11.
Technicznie oznacza to nawet, że możesz uruchamiać programy X na innym komputerze, rozmawiając z serwerem X na twoim komputerze przez sieć. Rzeczywiście, był to podstawowy przypadek użycia we wczesnych dniach i właśnie stąd nazwa „X serwer ”. Możliwe jest uruchomienie serwera X na komputerze Mac i wyświetlanie okien utworzonych przez programy działające w systemie Linux, FreeBSD, a nawet OpenVMS.
Jednak, jak wspomniano powyżej, nowoczesne zestawy narzędzi wykonują wszystkie rysunki po stronie klienta (wymyślna grafika i ładne czcionki są dość trudne do wykonania z prymitywami X11) i tylko wypychają końcowe obrazy na serwer X, który jest bardzo szybki lokalnie, ale wymaga spora przepustowość sieci.
(Inne protokoły, takie jak RFB (alias VNC) lub Microsoft „Remote Desktop”, zostały zaprojektowane do tego i mają bardzo skuteczne sposoby kompresji obrazów okien.)
Częścią odpowiedzi jest to, że wiodące środowiska graficzne (Gnome, KDE, XFCE, być może inne) współpracują ze sobą pod http://freedesktop.org, aby umożliwić taką współpracę. Jedną ze specyfikacji opublikowanych przez FD.o jest EWMH , która zapewnia pewien poziom zgodności między menedżerami okien (w przypadku nowoczesnych funkcji, a nie tylko podstawowego zarządzania oknami).