Tento článek se zabývá tím, jak funguje grafika v Linuxu a z jakých komponentů se skládá. Obsahuje mnoho screenshotů různých prostředí pracovní plochy.
Pokud si nejste jisti rozdílem mezi KDE a GNOME, nebo je rozlišujete, ale chtěli byste zjistit, jaké jiné alternativy existují, je tento článek určen právě vám. Je to přehledný článek a i když obsahuje mnohá jména a trochu terminologie, bude užitečný i pro začátečníky, kteří se teprve dívají směrem k Linuxu.
Téma může zajímat i pokročilé uživatele při nastavování vzdáleného přístupu a při implementaci tenkého klienta. Často potkávám poměrně zkušené linuxáky, kteří tvrdí: „Na serveru je pouze příkazový řádek a grafiku podrobněji zkoumat neplánuji, protože to všechno je potřeba jen pro obyčejné uživatele.“ Ale i znalci Linuxu s velkým překvapením a radostí objevují možnost „-X“ u příkazu ssh (a pro to je užitečné rozumět fungování a funkcím X-serveru).

Posledních téměř 15 let vyučuji na kurzech Linuxu v „“ a jsem si jistý, že mnozí z více než pěti tisíc lidí, které jsem školil, čtou a jistě i píší články na Habr. Kurzy jsou vždy velmi intenzivní (průměrná délka kurzu je pět dní), je třeba probírat témata, na jejichž plné seznámení je potřeba minimálně deset dní. A vždy během kurzu, v závislosti na publiku (zda se sešli nováčci nebo zkušení administrátoři), stejně jako na „dotazech z publika“, vrším výběr toho, co předložit podrobněji a co spíše povrchně, abych mohl věnovat více času nástrojům příkazového řádku a jejich praktickému využití. Těchto témat, na kterých musím trochu obětovat, je dost. Jsou to „Historie Linuxu“, „Rozdíly v distribucích Linuxu“, „O licencích: GPL, BSD, ...“, „O grafice a prostředích pracovních ploch“ (téma tohoto článku) a další. Ne, že by nebyla důležitá, ale obvykle existuje mnoho aktuálnějších „tady a teď“ otázek a je tu jen pět dní… Nicméně pro celkové pochopení základů OS Linux, pochopení dostupné rozmanitosti (aby i při používání konkrétní distribuce Linuxu měl člověk širší pohled na celý tento obrovský a nekonečný svět, kterému se říká „Linux“) je studium těchto témat užitečné a nezbytné.
V průběhu článku zmiňuji odkazy k jednotlivým komponentům pro ty, kteří chtějí proniknout hlouběji do tématu, například na články na Wikipedii (přitom uvádím na úplnější/užitečnější verzi pokud existují anglické a ruské články).
Pro hlavní příklady a snímky obrazovky jsem použil distribuci openSUSE. Mohla být použita jakákoli jiná komunitně vyvíjená distribuce s velkým množstvím balíčků v repozitáři. Je obtížné, ale možné, demonstrovat rozmanitost prostředí pracovního stolu na komerční distribuci, protože se často používají pouze jedno nebo dvě nejznámější prostředí pracovního stolu. Takto si vývojáři zúží úkol na vydání stabilního a vyladěného operačního systému. Na tuto systém jsem nainstaloval všechny DM/DE/WM (vysvětlení těchto pojmů níže), které jsem našel v repozitáři.
Snímky obrazovky se "modrými rámečky" byly pořízeny na openSUSE.
Snímky obrazovky s "bílými rámečky" byly pořízeny na jiných distribucích, ty jsou uvedeny na snímku.
Snímky obrazovky se "šedými rámečky" byly převzaty z internetu jako příklady uspořádání pracovního stolu z minulých let.
Takže, začněme.
Hlavní komponenty, ze kterých se skládá grafika
Vyzdvihnu tři hlavní komponenty a vyjmenuji je v pořadí, jak se spouštějí při startu systému:
- DM (Display Manager);
- Display Server;
- DE (Desktop Environment).
Doplňkově jako důležité podkomponenty u Desktop Environment:
- Apps Manager/Launcher/Switcher (tlačítko „Start“);
- WM (Window Manager);
- různý software dodávaný spolu se systémem pracovního stolu.
Podrobněji k jednotlivým bodům.
DM (Display Manager)
První aplikace, která se spouští při startu „grafiky“, je DM (Display Manager), správce zobrazení. Jeho hlavní úkoly jsou:
- zeptat se, které uživatele pustit do systému, požádat o autentizační údaje (heslo, otisk prstu);
- vybrat, jaké prostředí pracovního stolu spustit.
V současnosti se v různých distribucích široce používá:
- (nahradil ),
- ,
- ,
- .
- Také lze zmínit Fly-DM (používaný v AstraLinux).
Seznam existujících DM je aktuálně veden v




Je třeba poznamenat, že na následujících snímcích obrazovky se používá stejný zobrazovací správce LightDM, ale v různých distribucích (názvy distribucí jsou uvedeny v závorkách). Zhodnoťte, jak rozdílně může tento správce vypadat díky práci designérů různých distribucí.





Hlavní je, aby bylo jasné, že existuje taková aplikace, která se stará o spuštění grafiky a přístup uživatele k této grafice, a existují různé implementace této aplikace, které se liší vzhledem a trochu i funkcionalitou (výběr grafických prostředí, výběr uživatelů, verze pro slabozraké uživatele, možnost vzdáleného přístupu prostřednictvím protokolu ).
Zobrazovací server
Zobrazovací server je jakási základna grafiky, jeho hlavním úkolem je pracovat s grafickou kartou, monitorem a různými vstupními zařízeními (klávesnice, myš, touchpady). To znamená, že aplikaci (například prohlížeči nebo textovému editoru), která se vykresluje v „grafice“, není třeba vědět, jak pracovat přímo s zařízeními, není třeba vědět o ovladačích. To vše si bere na starosti X Window.
Když se mluví o zobrazovacím serveru, mnoho let v Linuxu a také v Unixu se tím měl na mysli aplikace nebo laicky řečeno X (Iksoidní).
V současnosti mnoho distribucí nahrazuje X .
Také si můžete přečíst:
- ,
- ,
- (potřebné pro vzdálené spuštění grafických aplikací, například při použití PuTTY).
Nejdříve spustíme X’ky a několik grafických aplikací v nich.
Praktikum „spouštíme X a aplikace v něm“
Vše budu provádět od čerstvě vytvořeného uživatele webinaruser (bylo by jednodušší, ale ne bezpečnější, provést vše od root’a).
- Protože X’kám je potřeba přístup k zařízením, dávám přístup: Seznam zařízení jsem určil podle chyb hlášených při spuštění X’ů v logu (\/home\/webinaruser\/.local\/share\/xorg\/Xorg.77.log)
% sudo setfacl -m u:webinaruser:rw \/dev\/tty8 \/dev\/dri\/card0 \/dev\/fb0 \/dev\/input\/*
- Poté spouštím X’ky:
% X -retro :77 vt8 &
Možnosti: * -retro — spouští s „šedým“ klasickým pozadím namísto černého, jak je výchozí; * :77 — určuje (může být libovolný v rozumném rozsahu, pouze :0 je pravděpodobně obsazeno již spuštěnou grafikou) číslo obrazovky, jakýsi jedinečný identifikátor, podle něhož lze rozlišovat více spuštěných X; * vt8 — označuje terminál, zde /dev/tty8, na kterém budou zobrazovány X.
- Spouštíme grafickou aplikaci:
Nejprve nastavíme proměnnou, podle které aplikace pochopí, do kterých z mých spuštěných X má posílat to, co má vykreslit:
% export DISPLAY=":77"
Seznam spuštěných X lze zobrazit takto:
ps -fwwC X
Po nastavení proměnné můžeme spouštět aplikace v našich X — například spouštím hodiny:
% xclock -update 1 &
% xcalc &
% xeyes -g 200x150-300+50 &

Hlavní myšlenky a závěry z tohoto úryvku:
- X potřebují přístup k zařízením: terminálu, grafické kartě, vstupním zařízením,
- Sama X nezobrazují žádné prvky rozhraní — je to šedá (pokud s volbou „—retro“) nebo černá plocha určitých rozměrů (například 1920×1080 nebo 1024×768), aby v ní mohly být spuštěny grafické aplikace.
- Podle pohybu „křížku“ je vidět, že X sledují polohy myši a předávají tyto informace spuštěným aplikacím.
- Také X zachytávají stisky kláves na klávesnici a přenášejí tyto informace aplikacím.
- Proměnná DISPLAY ukazuje grafickým aplikacím, na které obrazovce (každé X se při spuštění spouští s jedinečným číslem obrazovky), a tedy do kterých z mých spuštěných na stroji, je třeba vykreslit X. (Existuje také možnost v této proměnné uvést vzdálený stroj a posílat výstup na X spuštěné na jiném stroji v síti.) Protože X byly spuštěny bez volby -auth, není nutné se zabývat proměnnou XAUTHORITY nebo příkazem xhost.
- Grafické aplikace (nebo jak se jim říká X-klienti) se vykreslují v X — přičemž bez možnosti je přesouvat/zavřít/změnit „-g (šířka)x(výška)+(posun od levého okraje)+(posun od horního okraje)“. Se znaménkem „minus“ tedy od pravého a od dolního okraje.
- Dva termíny, které stojí za to zmínit: X-server (tak se nazývají X-y) a X-klienti (tak se nazývá jakákoliv grafická aplikace spouštěná v X-éch). Objevuje se zde určité nejasnosti v porozumění této terminologii, mnozí ji chápou přesně naopak. V případě, kdy se z „klientského stroje“ (v terminologii vzdáleného přístupu) připojuji k „serveru“ (v terminologii vzdáleného přístupu), abych zobrazil na své obrazovce grafickou aplikaci ze serveru, se X-server spouští na stroji, kde je monitor (tedy na „klientském stroji“, nikoli na „serveru“), zatímco X-klienti se spouštějí a pracují na „serveru“, i když se zobrazují na monitoru „klientského stroje“.

Komponenty DE
Dále se podíváme na komponenty, ze kterých obvykle sestává pracovní plocha.
Komponenty DE: tlačítko „Start“ a „Panel úloh“
Začněme takzvaným tlačítkem „Start“. Často je to samostatný applet používaný na „Panelu úloh“. Obvykle tam také bývá applet pro přepínání mezi spuštěnými aplikacemi.

Podíval jsem se na různé desktopové prostředí a shrnul bych podobné aplikace pod společný název „Správce aplikací (Launcher/Switcher)“, což znamená nástroj pro správu aplikací (spouštění a přepínání mezi spuštěnými), a také uvedu utility, které jsou příkladem aplikace tohoto typu.
- Bývá ve formě tlačítka „Start“ na klasickém (po celé délce jednoho z okrajů obrazovky) „Panelu úloh“:
○ xfce4-panel,
○ mate-panel/gnome-panel,
○ vala-panel,
○ tint2. - Také lze samostatně vyzdvihnout „panely úloh“ ve stylu MacOS (ne po celé délce okraje obrazovky), i když mnoho panelů úloh může být zobrazeno v obou variantách. Zde spíše jde o čistě vizuální odlišnost — přítomnost „efektu zvětšování ikon při najetí“.
○ docky,
○ latte-dock,
○ cairo-dock,
○ plank. - A/nebo služeb spouštějících aplikace při stisknutí „klávesových zkratek“ (ve většině desktopových prostředí musí být podobná komponenta přítomna a umožňuje nastavit vlastní klávesové zkratky):
○ sxhkd.
- Také existují různé menu-typové „launcher“ (z angl. Launch (spouštět)):
○ dmenu-run,
○ rofi -show drun,
○ albert,
○ grun.

Komponenty DE: WM (Window Manager)
WM (Okenní manažer) — určité aplikace, které odpovídají za správu oken, přidává možnost:
- pohyby oken na pracovní ploše (včetně standardního stahování pomocí klávesy Alt za jakoukoli část okna, nejen za záhlaví);
- změna velikosti oken, například přetahováním za „rámeček okna“;
- přidává do rozhraní oken „název (title)“ a tlačítka minimalizace/maximalizace/zavření aplikace;
- pojem, které aplikace se nachází ve „fokusu“.

Vyjmenuji nejznámější (v kulatých závorkách uvedu, v jakém DE se používá ve výchozím nastavení):
- (GNOME3),
- (Mate),
- (GNOME2),
- (Cinnamon),
- (KDE),
- (XFCE),
- .

Také uvedu „staré WM s prvky DE“. Tedy kromě správce oken mají prvky jako tlačítko „Start“ a „Panely úloh“, které jsou více vlastní plnohodnotným DE. I když jak staré, když IceWM a WindowMaker již vydaly své aktualizované verze v roce 2020. Správněji by bylo říci „starousedlíci“:
- ,
- ,
- , , , ,
- …





Kromě „klasických“ („stohových správců oken“) je třeba zvlášť zmínit , které umožňují umísťovat okna „dlaždicově“ po celé obrazovce, a také pro některé aplikace samostatnou pracovní plochu pro každou spouštěnou aplikaci na celou obrazovku. To může být trochu nezvyklé pro lidi, kteří je dříve nepoužívali, ale protože už poměrně dlouho používám toto rozhraní, mohu říci, že je to velmi pohodlné a rychle si na něj zvyknete, pak už „klasické“ správce oken nevypadají pohodlně.
- ,
- ,
- ,
- ,
- ,
- qtile,
- bspwm,
- herbstluftwm,
- …
- twin,
- .

Také stojí za zmínku projekt a takový pojem jako „Složený správce oken“, který využívá možnosti hardwarového akcelerace pro zobrazování průhlednosti, stínů, různých trojrozměrných efektů. Přibližně před 10 lety byl boom 3D efektů na Linux desktopech. Nyní mnoho z integrovaných správců oken v DE částečně využívá složené možnosti. Nedávno se objevil — produkt s podobnou funkcionalitou jako Compiz pod Waylandem.

Podrobný seznam různých správců oken lze také nalézt v .
Komponenty DE: ostatní
Také stojí za zmínku následující komponenty pracovní plochy (zde používám anglické ustálené termíny pro popis různých aplikací — to nejsou názvy samotných aplikací):
- Applet(ové):
- PO (Widget toolkit) – často se dodává s jakýmsi „minimálním souborem“ softwaru:
DE (Desktop Environment)
Z uvedených komponentů vzniká takzvané „prostředí desktopového zobrazení“. Často jsou všechny jeho komponenty vyvíjeny pomocí stejných grafických knihoven a podle stejných designových principů. Tím se alespoň zachovává jednotný styl vzhledu aplikací.
Zde lze vyčlenit následující existující desktopová prostředí:
Nejrozšířenějšími jsou GNOME a KDE, a těsně je následuje XFCE.

Srovnání podle různých parametrů v tabulkové podobě můžete najít v příslušném .
Rozmanitost DE

Existují dokonce zajímavé příklady z historie: v letech 2003-2007 bylo pro Linux vyvinuto „3D zobrazení desktopu“ s názvem „Project Looking Glass“ od firmy Sun. Sám jsem ho používal, spíše si s ním „hrál“, protože jeho používání bylo obtížné. Toto „3D zobrazení“ bylo napsáno v Javě v době, kdy ještě neexistovaly grafické karty s podporou 3D. Všechny efekty tak počítal procesor, a počítač musel být velmi výkonný, jinak všechno běželo pomalu. Ale vypadalo to krásně. Třídimenzionální dlaždice aplikací bylo možné otáčet/rozbalovat. Mohli jste se otočit v cylindru desktopu s tapetami z panoramatu v 360 stupních. Mělo to několik vlastních krásných aplikací: například přehrávání hudby ve formátu „výměny CD“ atd. Můžete si na YouTube prohlédnout o tomto projektu, jen kvalita těchto videí pravděpodobně nebude dobrá, protože v těch letech nebyla možnost nahrát video vysoké kvality.

Lehký desktop. Projekt existuje už dávno, od roku 1996. V posledních letech je velmi populární jako alternativní volba k těžším KDE a GNOME, na mnoha distribucích, které vyžadují lehké a „klasické“ uživatelské rozhraní desktopu. Nabízí mnoho možností nastavení a velké množství vlastních programů: terminál (xfce4-terminal), správce souborů (thunar), prohlížeč obrázků (ristretto), textový editor (mousepad).

Používá se v distribuci „Elementary OS“. Zde lze říci, že existují „pracovní prostředí“, která jsou vyvinuta a používána v rámci jedné konkrétní distribuce a nejsou příliš využívána (pokud neříct „vůbec nevyužívána“) v jiných distribucích. Minimálně zatím nezískala na popularitě a nepřesvědčila většinu uživatelů o výhodách svého přístupu. Pantheon si klade za cíl vytvořit rozhraní podobné macOS.

Varianta s dockem:

Silný důraz na grafické efekty a widgety (už od doby, kdy jiné pracovní prostředí nemělo widgety na ploše, například kalendář/hodiny). Používá své knihovny. Obsahuje velkou sadu svých „hezkých“ aplikací: terminál (Terminology), video přehrávač (Rage), prohlížeč obrázků (Ephoto).

Je to fork Enlightenment17, který se používá v distribuci BodhiLinux.

Původně „klasické“ rozhraní pracovního stolu, vytvořené jako alternativa ke KDE, které bylo napsané na knihovně QT, v té době distribuované pod licencí, která nebyla příliš výhodná pro komerční distribuce.

Od třetí verze GNOME se dodává s rozhraním GNOME Shell, které má „nekonvenční vzhled“, což nevyhovovalo všem uživatelům (jakékoliv náhlé změny v rozhraních jsou uživateli těžko přijímány). V důsledku toho vznikly fork projekty, které pokračují ve vývoji tohoto pracovního stolu ve „klasickém“ stylu: MATE a Cinnamon. Používá se ve výchozím nastavení v mnoha komerčních distribucích. Má velké množství nastavení a svých aplikací.

Objevil se na základě GNOME2 a pokračuje ve vývoji tohoto designového prostředí. Má velké množství nastavení a forků aplikací, které se používaly ještě v GNOME2 (nové názvy jsou používány), aby se nepletly forky s jejich novou verzí pro GNOME3).

Fork GNOME Shell, poskytující uživatelům rozhraní v „klasickém“ stylu (jak bylo v GNOME2).
Má velké množství nastavení a stejné aplikace, které jsou pro GNOME Shell.

Fork GNOME v „klasickém“ stylu, který se vyvíjel v rámci distribuce Solus, ale nyní se také dodává jako samostatný pracovní stůl v různých dalších distribucích.

(nebo, jak se často nazývá, prostě KDE)
Pracovní prostředí, které je vyvíjeno v rámci projektu KDE.
Má obrovské množství nastavení, které jsou k dispozici obyčejnému uživateli prostřednictvím grafického rozhraní, a mnoho grafických aplikací vyvíjených v rámci této pracovní plochy.

V roce 2008 vydalo KDE svou novou implementaci KDE Plasma (motor pracovní plochy byl silně přepsán). Stejně jako u GNOME/MATE se to ne každému fanouškovi KDE líbilo. Výsledkem byl fork projektu, který pokračuje ve vývoji předchozí verze, nazvaný TDE (Trinity Desktop Environment).

Jedno z nových desktopových prostředí, napsané pomocí Qt (na kterém je napsáno KDE). Má mnoho nastavení a dostatečně krásné (i když to je subjektivní pojem) a promyšlené rozhraní. Vyvíjí se v rámci distribuce Deepin Linux. Jsou k dispozici také balíčky pro jiné distribuce.

Fly
Příklad desktopového prostředí, napsaného pomocí Qt. Vyvíjí se v rámci distribuce Astra Linux.

Lehká desktopová prostředí. Stejně jako několik předchozích příkladů, napsaná pomocí Qt. Ve skutečnosti je pokračováním projektu LXDE a výsledkem spojení s projektem Razor-qt.
Jak vidíte, desktop v Linuxu může vypadat velmi různě a pro každého zde najdete vhodné rozhraní: od velmi krásných s 3D efekty po minimalistické, od "klasických" po neobvyklé, od těch, které aktivně využívají systémové zdroje, po lehké, od velkých obrazovek po tablety/chytré telefony.
Nu a doufám, že se mi podařilo poskytnout představu o tom, z jakých hlavních komponentů se skládá grafika a pracovní plocha v OS Linux.
Materiál pro tento článek byl testován v červenci 2020 na webináři. Můžete ho vidět. .
To je vše. Doufám, že to bylo užitečné. Pokud máte nějaké otázky nebo komentáře, pište. Rád odpovím. A přijďte se učit do !
Zdroj: habr.com
