Windows zapewnia pojedynczą implementację pojedynczego pulpitu na jednej implementacji pojedynczego API / frameworka, wszystkie wykonane przez Microsoft.
W systemach Unix otrzymujesz API / framework (X11 / X Window System), dla którego istnieje wiele implementacji (Xorg, Xfree86), a na dodatek dostajesz różne API / frameworki „wyższego poziomu” (GTK +, Qt, ... ), ponieważ surowy X11 jest tak prymitywny, na którym dostajesz różne pulpity (Gnome, KDE, ...), wszystkie wykonane przez różnych ludzi.
Co więcej, system X11 został zaprojektowany od podstaw z myślą o zdalnych GUI - tj. Maszynie lokalnej wyświetlającej GUI zdalnie działającej aplikacji - która wprowadza pojęcia „X Server” i „X Client”.
Następnie istnieje nomenklatura, która „wydaje się” niewłaściwa dla nowych użytkowników: na twoim komputerze lokalnym działa „X Server”, który zapewnia usługę „display GUI”, podczas gdy maszyna zdalna to „X Client” korzystający z usług na komputerze, aby wyświetlić GUI.
Cóż, to jest krótki przegląd; kiedy już to rozwiążesz, zrozumienie wszelkich artykułów / postów na forum na ten temat powinno stać się znacznie łatwiejsze.
Edycja: aby odpowiedzieć na dwa pierwsze komentarze PO.
Tak, „X11” jest jedynie protokołem, a Xorg / XFree86 to dwie implementacje. Na podstawowym poziomie X11 dotyczy tylko rysowania linii i kropek, co nie jest szczególnie przydatne, jeśli chcesz wykonać GUI.
Oprócz protokołu X11 ludzie zaimplementowali wiele rzeczy, a porównanie 1: 1 z Windows jest dość trudne, ponieważ Microsoft nigdy nie zadał sobie trudu, aby naprawdę oddzielić rzeczy. Ponadto nie jestem programistą typu GUI, tzn. Moje rzeczywiste doświadczenie z dowolnym systemem jest minimalne.
Na dole „menedżer okien” zapewnia okno (obsługa granic, zamykanie / minimalizowanie / maksymalizowanie przycisków, zmiana rozmiaru itp.) Oraz „nieruchomości” w oknie zestawu narzędzi widżetu. Istnieje wiele menedżerów okien, niektóre naśladują inne systemy (Windows, MacOS, AmigaOS, cokolwiek), i są one w większości wymienne dla pozostałych systemów.
„Zestaw narzędzi widżetów” oferuje przyciski, suwaki, pola tekstowe itp., Na których można zbudować GUI. Właśnie to (jako twórca aplikacji) faktycznie „widzisz”, pod względem API i to decyduje o większości „wyglądu i działania” Twojej aplikacji.
„Pulpit” buduje wiele aplikacji na pewnej kombinacji zestawu narzędzi / menedżera okien, aby zapewnić spójny wygląd i działanie. Nie musisz się tym przejmować, chyba że naprawdę chcesz sam zaprojektować pulpit.
Pulpit „Gnome” korzysta z zestawu narzędzi widgetów „GTK +” w górnej części menedżera okien „Metacity”.
Pulpit „KDE” korzysta z zestawu narzędzi widgetów „Qt” na menedżerze okien „KWin”.
Zauważ, że szczególnie te dwa, GTK + i Qt, ewoluowały daleko poza proste „zestawy narzędzi widgetów” w „ramy programowania aplikacji”. Jeśli chcesz tworzyć aplikacje GUI dla Linuksa, musisz wybrać, którego z nich chcesz użyć. Jest więcej możliwości, jeśli chcesz mieć bardziej „lekką” aplikację (niewymagającą dużych zależności bibliotek), ale dziś większość systemów ma już zainstalowane biblioteki GTK + i Qt.
Z aplikacji Qt na pulpicie Gnome lub aplikacji GTK + na pulpicie KDE można całkowicie korzystać (nie zawsze tak było), więc nie musisz się martwić o kompatybilność. Biorąc pod uwagę wybór między dwiema aplikacjami o porównywalnej funkcjonalności, ludzie zazwyczaj wolą aplikację przy użyciu „rodzimych” widżetów na wybranym komputerze, ale nie martwiłbym się tym.
Inne, ważniejsze punkty w wyborze „zestawu narzędzi widgetów”: Warunki licencjonowania, obsługa wybranego języka, zgodność między platformami.
Post Scriptum : Wracając kilka lat później, nabrałem trochę własnego doświadczenia w programowaniu GUI i zdaję sobie sprawę, że w powyższym wyjaśnieniu brakuje jednej rzeczy, jeśli szukasz porady „w którą stronę iść”: wxWidgets . Jest to struktura, która opiera się na czymkolwiek, z czego korzystasz natywnie, i pozwala na przezroczyste, przenośne tworzenie GUI, bez poświęcania wydajności i bez dołączania żadnych ciągów licencji. C ++ API. Jest to ścieżka, którą wybrałem dla moich potrzeb w zakresie GUI, i uważam, że należy o niej wspomnieć, aby była kompletna.