Ten artykuł dotyczy tego, jak działa grafika w systemie Linux oraz z jakich komponentów się składa. Zawiera wiele zrzutów ekranu z różnymi implementacjami środowisk graficznych.
Jeśli nie odróżniasz zbytnio KDE od GNOME lub potrafisz je rozróżnić, ale chciałbyś dowiedzieć się, jakie są inne alternatywy, ten artykuł jest dla Ciebie. Jest to przeglądowy tekst, a chociaż zawiera wiele nazw i trochę terminów, materiał ten będzie również przydatny dla początkujących oraz tych, którzy dopiero zaczynają interesować się Linuxem.
Temat może zainteresować również zaawansowanych użytkowników przy konfiguracji zdalnego dostępu oraz implementacji cienkiego klienta. Często spotykam doświadczonych użytkowników systemu Linux, którzy twierdzą: „na serwerze jest tylko linia komend i nie planuję zgłębiać grafiki, ponieważ to wszystko jest potrzebne zwykłym użytkownikom”. Jednak nawet znawcy Linuxa z dużym zdziwieniem i radością odkrywają opcję „-X” w poleceniu ssh (a w tym celu warto zrozumieć działanie i funkcje serwera X).

Uczę na kursach Linux od prawie 15 lat w „” i jestem pewien, że wielu z ponad pięciu tysięcy osób, które przeszkoliłem, czyta i z pewnością pisze artykuły na Habr. Kursy są zawsze bardzo intensywne (średni czas trwania kursu to pięć dni), muszę przedstawić tematy, na dokładne poznanie których potrzeba co najmniej dziesięciu dni. I zawsze w trakcie kursu, w zależności od publiczności (czy to nowicjusze, czy doświadczeni administratorzy) oraz od „pytań z sali”, dokonuję wyboru, co wyjaśnić bardziej szczegółowo, a co — bardziej powierzchownie, aby poświęcić więcej czasu na narzędzia linii komend i ich praktyczne zastosowanie. Jest wiele tematów, które trzeba nieco poświęcić. Należą do nich „Historia Linuxa”, „Różnice w dystrybucjach Linuxa”, „O licencjach: GPL, BSD, …”, „O grafice i środowiskach graficznych” (temat tego artykułu) i inne. Nie to, żeby nie były ważne, ale zazwyczaj istnieje wiele bardziej aktualnych pytań „tu i teraz” i tylko pięć dni… Niemniej jednak, dla ogólnego zrozumienia podstaw systemu operacyjnego Linux oraz zrozumienia dostępnych różnorodności (aby nawet korzystając z jednej konkretnej dystrybucji Linuxa, mieć szerszy pogląd na ten ogromny i nieprzebrany świat zwany „Linuxem”), studiowanie tych tematów jest przydatne i konieczne.
W trakcie artykułu do każdego komponentu podaję linki dla tych, którzy chcą głębiej zagłębić się w temat, np. do artykułów na Wikipedii (przy czym wskazuję na pełniejsze/przydatniejsze wersje, gdy dostępne są artykuły anglojęzyczne i rosyjskojęzyczne).
Dla głównych przykładów i zrzutów ekranu użyłem dystrybucji openSUSE. Można było użyć dowolnej innej dystrybucji tworzonej przez społeczność, zawierającej dużą liczbę pakietów w repozytorium. Trudno, ale możliwe, jest zaprezentowanie różnorodności środowisk graficznych na komercyjnej dystrybucji, ponieważ często używa się w nich tylko jednego lub dwóch najbardziej znanych środowisk graficznych. W ten sposób twórcy ograniczają sobie zadanie wydania stabilnego, dopracowanego systemu operacyjnego. Na tym systemie zainstalowałem wszystkie DM/DE/WM (wyjaśnienie tych terminów poniżej), które znalazłem w repozytorium.
Zrzuty ekranu z „niebieskimi ramkami” są zrobione na openSUSE.
Zrzuty ekranu z „białymi ramkami” zrobiono na innych dystrybucjach, które są wskazane na zrzucie ekranu.
Zrzuty ekranu z „szarymi ramkami” zostały pobrane z internetu jako przykłady aranżacji biurka z lat poprzednich.
Zacznijmy.
Główne komponenty składające się na grafikę
Wyróżnię trzy główne komponenty i wymienię je w kolejności, w jakiej są uruchamiane przy starcie systemu:
- DM (Menadżer Wyświetlania);
- Serwer Wyświetlania;
- DE (Środowisko Graficzne).
Dodatkowo jako ważne podpunkty w Desktop Environment:
- Menadżer/Uruchamiacz/Aplikacja przełącznika (przycisk „Start”);
- WM (Menadżer Okien);
- różne oprogramowanie dostarczane z środowiskiem graficznym.
Szczegóły dotyczące każdego punktu.
DM (Menadżer Wyświetlania)
Pierwsza aplikacja, która uruchamia się przy starcie „grafiki”, to DM (Menadżer Wyświetlania). Jego główne zadania to:
- zapytać, jakich użytkowników wpuścić do systemu, poprosić o dane uwierzytelniające (hasło, odcisk palca);
- wybrać, jakie środowisko graficzne uruchomić.
Obecnie w różnych dystrybucjach szeroko stosuje się:
- (zastąpił ),
- ,
- ,
- .
- Można również wspomnieć o Fly-DM (używanym w AstraLinux).
Lista istniejących DM jest aktualizowana w




Warto zauważyć, że na następnych zrzutach ekranu używany jest ten sam menedżer wyświetlania LightDM, ale w różnych dystrybucjach (nazwa dystrybucji podana w nawiasach). Oceń, jak różnie może wyglądać ten DM dzięki pracy projektantów różnych dystrybucji.





Najważniejsze w tym różnorodnym świecie, aby było jasne, że istnieje aplikacja odpowiedzialna za uruchamianie grafiki oraz zapewnienie dostępu użytkowników do tej grafiki, a także różne implementacje tej aplikacji, różniące się wyglądem i trochę funkcjonalnością (wybór środowisk graficznych, wybór użytkowników, wersja dla osób niedowidzących, możliwość zdalnego dostępu przez protokół ).
Serwer wyświetlania
Serwer wyświetlania to pewien fundament grafiki, którego głównym zadaniem jest współpraca z kartą graficzną, monitorem oraz różnymi urządzeniami wejściowymi (klawiatura, mysz, touchpady). Oznacza to, że aplikacja (na przykład przeglądarka lub edytor tekstu), która jest wyświetlana w "grafice", nie musi wiedzieć, jak bezpośrednio współpracować z urządzeniami, nie musi znać się na sterownikach. Wszystko to przejmuje na siebie X Window.
Kiedy mówimy o serwerze wyświetlania, od wielu lat w systemach Linux, a także w Unix, chodziło o aplikację znaną potocznie jako X (Iksy).
Obecnie w wielu dystrybucjach w miejsce X wdraża się .
Można również przeczytać:
- ,
- ,
- (potrzebne do zdalnego uruchamiania aplikacji graficznych, na przykład przy użyciu PuTTY).
Na początek uruchomimy X’y i kilka aplikacji graficznych w nich.
Praktyka „uruchamiamy X i aplikacje w nim”
Będę wykonywał wszystko jako nowo utworzony użytkownik webinaruser (łatwiej, ale nie bezpieczniej byłoby zrobić to jako root).
- Ponieważ X’y potrzebują dostępu do urządzeń, przyznaję dostęp: Listę urządzeń ustaliłem, sprawdzając błędy podczas uruchamiania X’ów w logu (/home/webinaruser/.local/share/xorg/Xorg.77.log)
% sudo setfacl -m u:webinaruser:rw /dev/tty8 /dev/dri/card0 /dev/fb0 /dev/input/*
- Po tym uruchamiam X’y:
% X -retro :77 vt8 &
Opcje: * -retro — uruchamiają z „szarym” klasycznym tłem, a nie z czarnym jak w przypadku domyślnym; * :77 — ustawiam (można dowolny w rozsądnych granicach, tylko :0 jest już najprawdopodobniej zajęty przez już uruchomioną grafikę) numer ekranu, faktyczny unikalny identyfikator, według którego można będzie rozróżniać wiele uruchomionych X’ów; * vt8 — wskazuje terminal, tutaj /dev/tty8, na którym będą wyświetlane X’y).
- Uruchamiamy aplikację graficzną:
W tym celu wcześniej ustawiamy zmienną, według której aplikacja będzie wiedziała, w które z uruchomionych X’ów wysłać to, co trzeba narysować:
% export DISPLAY=":77"
Listę uruchomionych X’ów można zobaczyć tak:
ps -fwwC X
Po tym, jak ustawiliśmy zmienną, możemy uruchamiać aplikacje w naszych X’ach — na przykład uruchamiam zegar:
% xclock -update 1 &
% xcalc &
% xeyes -g 200x150-300+50 &

Główne pomysły i wnioski z tego fragmentu:
- X’y wymagają dostępu do urządzeń: terminala, karty graficznej, urządzeń wejściowych,
- Sama X’y nie wyświetlają żadnych elementów interfejsu — to szara (jeśli z opcją „—retro”) lub czarna powierzchnia określonych rozmiarów (na przykład 1920×1080 lub 1024×768), aby uruchamiać w niej aplikacje graficzne.
- Po ruchu „kursora” widać, że X’y śledzą położenie myszki i przekazują tę informację uruchomionym w nich aplikacjom.
- X’y również przechwytują naciśnięcia klawiszy na klawiaturze i przekazują tę informację aplikacjom.
- Zmienna DISPLAY wskazuje aplikacjom graficznym, w którym ekranie (każde X’y przy uruchamianiu mają unikalny numer ekranu), a więc w jakie z uruchomionych na moim komputerze, trzeba będzie rysować X’y. (Istnieje również możliwość w tej zmiennej wskazać zdalny komputer i wysłać wyjście do X’ów uruchomionych na innym komputerze w sieci.) Ponieważ X’y uruchamiano bez opcji -auth, nie ma potrzeby rozumieć zmiennej XAUTHORITY ani polecenia xhost.
- Aplikacje graficzne (lub jak je nazywają, klienci X) są rysowane w X’ach — przy tym bez możliwości ich przenoszenia/zamykania/zmiany „-g (Szerokość)x(Wysokość)+(PrzesunięcieOdLewejKrawędzi)+(PrzesunięcieOdGórnejKrawędzi)”. Z znakiem „minus” odpowiednio od prawej i od dolnej krawędzi.
- Dwa terminy, które warto wymienić: X-serwer (tak nazywane są X-y) i X-klienci (tak nazywane są wszelkie aplikacje graficzne uruchamiane w X-ach). Istnieje pewne zamieszanie w zrozumieniu tej terminologii; wiele osób interpretuje ją wręcz odwrotnie. W przypadku, gdy z "klienckiej maszyny" (w terminologii zdalnego dostępu) łączę się z "serwerem" (w terminologii zdalnego dostępu), aby wyświetlić na swoim monitorze aplikację graficzną z serwera, to X-serwer uruchamia się na tej maszynie, gdzie znajduje się monitor (czyli na "klienckiej maszynie", a nie na "serwerze"), a X-klienci są uruchamiani i działają na "serwerze", chociaż są wyświetlane na monitorze "klienckiej maszyny".

Składniki DE
Dalej omówimy składniki, z których zazwyczaj składa się pulpit.
Składniki DE: przycisk „Start” i „Panel zadań”
Zacznijmy od tzw. przycisku „Start”. Często jest to oddzielny aparat używany na „Panelu zadań”. Zwykle znajduje się tam również aparat do przełączania między uruchomionymi aplikacjami.

Patrząc na różne środowiska pulpitu, uogólniłbym podobne aplikacje pod wspólną nazwą „Menadżer aplikacji (Uruchamiacz/Przełącznik)”, czyli narzędzie do zarządzania aplikacjami (uruchamianie i przełączanie między uruchomionymi), jak również wskaźniki narzędzi, które są przykładem aplikacji tego typu.
- Może występować w postaci przycisku „Start” na klasycznym (wzdłuż całej długości jednego z krawędzi ekranu) „Panelu zadań”:
○ xfce4-panel,
○ mate-panel/gnome-panel,
○ vala-panel,
○ tint2. - Można również wyróżnić „panele zadań w stylu MacOS” (nie na całą długość krawędzi ekranu), chociaż wiele paneli zadań może być wyświetlanych w obu wariantach. Tutaj główną różnicą jest czysto wizualna — obecność „efektu powiększania ikon przy najechaniu”.
○ docky,
○ latte-dock,
○ cairo-dock,
○ plank. - I/lub usług, które uruchamiają aplikacje po naciśnięciu „klawiszy skrótów” (w wielu środowiskach pulpitu podobny komponent jest zawsze obecny i pozwala na skonfigurowanie własnych klawiszy skrótów):
○ sxhkd.
- Istnieją również różne menu-typowe „uruchamiacze” (od ang. Launch (uruchamiać)):
○ dmenu-run,
○ rofi -show drun,
○ albert,
○ grun.

Składniki DE: WM (Zarządca okien)
WM (Zarządca okien) — to aplikacja, która odpowiada za zarządzanie oknami i dodaje możliwość:
- przemieszczanie okien na pulpicie (w tym standardowe z przytrzymywaniem klawisza Alt za dowolną część okna, a nie tylko za nagłówek);
- zmiana rozmiarów okien, na przykład przeciągając za „ramkę okna”;
- dodaje do interfejsu okien „tytuł (title)” oraz przyciski minimalizacji/maximalizacji/zamykania aplikacji;
- pojęcie, która aplikacja jest „w centrum uwagi”.

Wymienię najbardziej znane (w nawiasach wskazuję, w jakim DE jest używane domyślnie):
- (GNOME3),
- (Mate),
- (GNOME2),
- (Cinnamon),
- (KDE),
- (XFCE),
- .

Wymienię również „stare WM z elementami DE”. Tzn. oprócz menedżera okien zawierają elementy takie jak przycisk „Start” i „Paski zadań”, bardziej charakterystyczne dla pełnoprawnych DE. Choć jak to „stare”, skoro zarówno IceWM, jak i WindowMaker już wydały swoje zaktualizowane wersje w 2020 roku. Okazuje się, że poprawniej jest mówić nie „stare”, a „weterani”:
- ,
- ,
- , , , ,
- …





Oprócz „klasycznych” („stakowych menedżerów okien”) warto wyróżnić , które pozwalają rozmieszczać okna „mozaikowo” po całym ekranie, a także dla niektórych aplikacji osobny pulpit dla każdej uruchomionej aplikacji na cały ekran. To może być nieco nietypowe dla osób, które wcześniej ich nie używały, ale ponieważ sam używam takiego interfejsu od dłuższego czasu, mogę powiedzieć, że jest to całkiem wygodne i szybko się do niego przyzwyczajasz, po czym „klasyczne” menedżery okien nie wydają się już wygodne.
- ,
- ,
- ,
- ,
- ,
- qtile,
- bspwm,
- herbstluftwm,
- …
- twin,
- .

Warto również wspomnieć o projekcie i o takim pojęciu jak „Kompizowy menedżer okien”, który wykorzystuje możliwości przyspieszenia sprzętowego do wyświetlania przezroczystości, cieni, różnych efektów 3D. Około 10 lat temu nastąpił boom na efekty 3D na pulpitach Linuxa. Obecnie wiele menedżerów okien wbudowanych w DE w części wykorzystuje możliwości kompozytowe. Niedawno pojawił się — produkt z analogiczną funkcjonalnością Compiz pod Wayland.

Szczegółową listę różnych menedżerów okien można również zobaczyć w .
Komponenty DE: inne
Warto również zauważyć następujące komponenty pulpitu (używam tutaj ustalonych angielskich terminów dla opisu rodzajów aplikacji — to nie są nazwy samych aplikacji):
- Applet (Aplety):
- Oprogramowanie (Widget toolkit) — często dostarczane z zestawem minimalnym oprogramowania:
Środowisko Graficzne (Desktop Environment)
Z wymienionych powyżej komponentów powstaje tzw. „Środowisko Graficzne”. Często wszystkie jego komponenty są opracowywane przy użyciu tych samych bibliotek graficznych i zgodnie z tymi samymi zasadami projektowania. Tym samym, przynajmniej, utrzymywany jest ogólny styl wyglądu aplikacji.
Można wyróżnić następujące dostępne aktualnie środowiska graficzne:
Najbardziej popularne to GNOME i KDE, a na ich pięty depcze XFCE.

Porównanie pod względem różnych parametrów w formie tabeli można znaleźć w odpowiedniej .
Różnorodność DE

Są też interesujące przykłady z historii: w latach 2003-2007 powstało „3D-ozdobienie biurka” o nazwie „Project Looking Glass” od firmy Sun. Sam używałem tego biurka, raczej bawiłem się, ponieważ korzystanie z niego było trudne. To „3D-ozdobienie” napisano w Javie w czasach, gdy nie było jeszcze kart graficznych wspierających 3D. Dlatego wszystkie efekty były liczone przez procesor, a komputer musiał być bardzo mocny, inaczej wszystko działało wolno. Ale za to wyglądało pięknie. Trójwymiarowe kafelki aplikacji można było obracać / rozwijać. Można było obracać się w cylindrze biurka z tapetą panoramiczną w 360 stopniach. Było kilka ładnych aplikacji: na przykład odsłuch muzyki w formie „zmiany płyt CD” itd. Można na YouTube zobaczyć ten projekt, tylko jakość tych filmów będzie zapewne słaba, ponieważ w tamtych latach nie było możliwości przesyłania wideo w wysokiej jakości.

Lekki pulpit. Projekt istnieje od 1996 roku. W ostatnich latach stał się dość popularny w przeciwieństwie do cięższych KDE i GNOME, które są wymagane w wielu dystrybucjach z lekkim i „klasycznym” interfejsem. Posiada wiele ustawień i dużą ilość własnych programów: terminal (xfce4-terminal), menedżer plików (thunar), przeglądarka zdjęć (ristretto), edytor tekstu (mousepad).

Używane w dystrybucji „Elementary OS”. Tutaj można powiedzieć, że są „pulpity”, które są rozwijane i używane w ramach jednej, konkretnej dystrybucji i nie są zbytnio używane (nie mówiąc już o tym, że „zupełnie nie są używane”) w innych dystrybucjach. Jak na razie nie zdobyły popularności i nie przekonały większości użytkowników do zalet swojego podejścia. Pantheon ma na celu zbudowanie interfejsu przypominającego macOS.

Wersja z panelem dock:

Silne nastawienie na efekty graficzne i widżety (jeszcze z czasów, gdy inne środowiska pulpitu nie miały widżetów na pulpicie, na przykład kalendarza/zegarów). Używa własnych bibliotek. Posiada dużą liczbę swoich „ładnych” aplikacji: terminal (Terminology), odtwarzacz wideo (Rage), przeglądarka zdjęć (Ephoto).

To fork Enlightenment17, który jest używany w dystrybucji BodhiLinux.

Początkowo „klasyczny” interfejs pulpitu, stworzony w odpowiedzi na KDE, które zostało napisane w bibliotece QT, w tamtym czasie rozpowszechniane na licencji, która nie była zbyt wygodna dla komercyjnych dystrybucji.

Od trzeciej wersji GNOME dostarczany jest z powłoką GNOME Shell, która ma „nieklasyczny wygląd”, co nie przypadło do gustu wszystkim użytkownikom (jakiekolwiek nagłe zmiany w interfejsach są trudne do zaakceptowania przez użytkowników). W rezultacie powstały projekty forku, które kontynuują rozwój tego pulpitu w „klasycznym” stylu: MATE i Cinnamon. Używany domyślnie w wielu komercyjnych dystrybucjach. Ma wiele ustawień i swoich aplikacji.

Powstał na bazie GNOME2 i kontynuuje rozwój tego środowiska graficznego. Ma wiele ustawień i forki aplikacji, które były używane jeszcze w GNOME2 (używane są nowe nazwy), aby nie mylić forków z ich nową wersją dla GNOME3).

Fork GNOME Shell, oferujący użytkownikom interfejs w „klasycznym” stylu (jak to było w GNOME2).
Ma wiele ustawień i te same aplikacje, co dla GNOME Shell.

Fork GNOME w „klasycznym” stylu, który rozwijał się w ramach dystrybucji Solus, ale obecnie jest również dostarczany w ramach samodzielnego pulpitu w różnych innych dystrybucjach.

(lub, jak często nazywają, po prostu KDE)
Środowisko pulpitu rozwijane w ramach projektu KDE.
Oferuje ogromną ilość ustawień dostępnych dla przeciętnego użytkownika z interfejsu graficznego oraz wiele aplikacji graficznych rozwijanych w ramach tego pulpitu.

W 2008 roku KDE wydało swoją nową implementację KDE Plasma (silnik pulpitu został znacznie przepisany). Podobnie jak w przypadku GNOME/MATE, nie wszystkim fanom KDE się to spodobało. W rezultacie powstał fork projektu, który kontynuuje rozwój poprzedniej wersji, noszący nazwę TDE (Trinity Desktop Environment).

Jedno z nowych środowisk graficznych, napisane z użyciem Qt (na którym oparty jest KDE). Oferuje wiele ustawień i jest wystarczająco ładne (choć to subiektywna kwestia) oraz dopracowane pod względem interfejsu. Rozwijane w ramach dystrybucji Deepin Linux. Są też pakiety do innych dystrybucji.

Fly
Przykład środowiska graficznego napisanego z użyciem Qt. Rozwijane w ramach dystrybucji Astra Linux.

Lekka przestrzeń robocza. Podobnie jak kilka poprzednich przykładów, jest napisana z użyciem Qt. Faktycznie stanowi kontynuację projektu LXDE i jest wynikiem połączenia z projektem Razor-qt.
Jak widać, pulpit w Linuxie może wyglądać bardzo różnie i każdy znajdzie tutaj odpowiedni interfejs: od bardzo ładnych z efektami 3D po minimalistyczne, od „klasycznych” po nietypowe, od aktywnie korzystających z zasobów systemu po lekkie, od dużych ekranów po tablety/smartfony.
Mam nadzieję, że udało mi się przekazać, z jakich głównych komponentów składa się grafika i pulpit w systemie Linux.
Materiał do tego artykułu był testowany w lipcu 2020 roku na webinarze. Można go obejrzeć. .
To wszystko. Mam nadzieję, że było przydatne. W przypadku pytań i komentarzy piszcie. Chętnie odpowiem. I zapraszam do nauki w !
Źródło: habr.com
