Tento článok je o tom, ako je grafika v Linuxe usporiadaná a z akých komponentov pozostáva. Obsahuje množstvo snímok obrazovky s rôznymi implementáciami pracovných plôch.
Ak nerozlišujete príliš medzi KDE a GNOME, alebo to síce robíte, ale chceli by ste vedieť, aké sú ďalšie alternatívy, tento článok je pre vás. Je to prehľadový text a hoci obsahuje veľa názvov a trochu terminológie, materiál bude užitočný aj pre začiatočníkov a tých, ktorí sa len pozerajú na Linux.
Téma môže zaujať aj pokročilých používateľov pri nastavovaní vzdialeného prístupu a implementácii tenkého klienta. Často stretávam úplne zdatných linuxákov, ktorí tvrdia: „Na serveri je len príkazový riadok a grafiku podrobnejšie študovať nechcem, pretože je to všetko len pre bežných používateľov.“ Ale aj znalcovia Linuxu s veľkým prekvapením a radosťou objavujú možnosť „-X“ v príkaze ssh (na to je užitočné chápať prácu a funkcie X-servera).

Takmer 15 rokov učím na kurzoch Linuxu v „“ a som si istý, že mnohí z viac ako piatich tisíc ľudí, ktorých som vyškolil, čítajú a určite píšu články na Habr. Kurzy sú vždy veľmi obsahovo nabité (priemerná dĺžka kurzu je päť dní), treba vysvetliť témy, na úplné oboznámenie s ktorými je potrebné minimálne desať dní. A vždy v priebehu kurzu, v závislosti od publika (či sú tam nováčikovia alebo skúsení administrátori), ako aj od „otázok z publika“, sa rozhodujem, čo vysvetliť podrobnejšie a čo — povrchne, aby som venoval viac času nástrojom príkazového riadku a ich praktickému využitiu. Tých tém, ktorými musím trošku obetovať, je dosť. Sú to „História Linuxu“, „Rozdiely v distribúciách Linuxu“, „O licenciách: GPL, BSD, ...“, „O grafike a prostrediach pracovných plôch“ (témou tohto článku) a ďalšie. Nie, že by neboli dôležité, ale zvyčajne je veľa aktuálnejších otázok „tu a teraz“ a len päť dní… Avšak pre celkové pochopenie základov operačného systému Linux, pochopenie dostupnej rozšírenosti (aby ste aj pri používaní konkrétneho distribúcie Linuxu mali širší pohľad na tento obrovský a neprehľadný svet, ktorému hovoríme „Linux“) je študovať tieto témy užitočné a potrebné.
V priebehu článku uvádzam odkazy na každý komponent, pre tých, ktorí sa chcú hlbšie ponoriť do témy, napríklad na články na Wikipédii (pričom uvádzam viac kompletnú/použitelnú verziu, ak existujú anglické a slovenské články).
Pre základné príklady a screenshoty som použil distribúciu openSUSE. Mohol som použiť akúkoľvek inú distribúciu vyvíjanú komunitou, ktorá obsahuje veľké množstvo balíkov v repozitári. Je to zložité, ale možné, ukázať rozmanitosť vzhľadu pracovnej plochy na komerčnej distribúcii, pretože často využívajú len jednu alebo dve najznámejšie prostredia pracovnej plochy. Týmto spôsobom si vývojári zúžia úlohu vydania stabilnej a ladenej OS. Na tento systém som nainštaloval všetky DM/DE/WM (vysvetlenie týchto pojmov nižšie), ktoré som našiel v repozitári.
Screenshoty s "modrými rámami" sú práve z openSUSE.
Screenshoty s "bielymi rámami" som robil na iných distribúciách, ktoré sú uvedené na screenshotoch.
Screenshoty so "šedými rámami" boli prevzaté z internetu, ako príklady vzhľadov pracovnej plochy z predchádzajúcich rokov.
Takže, začnime.
Základné komponenty, z ktorých sa skladá grafika
Vyzdvihnem tri hlavné komponenty a uvediem ich v poradí, ako sa spúšťajú pri štarte systému:
- DM (Display Manager);
- Display Server;
- DE (Desktop Environment).
Ďalej ako dôležité podbody k Desktop Environment:
- Apps Manager/Launcher/Switcher (tlačidlo „Štart“);
- WM (Window Manager);
- rôzne softvér dodávaný s prostredím pracovnej plochy.
Podrobnejšie k jednotlivým bodom.
DM (Display Manager)
Prvá aplikácia, ktorá sa spúšťa pri spustení "grafiky", je DM (Display Manager), displejový manažér. Jeho hlavné úlohy sú:
- opýtať sa, ktorých používateľov pustiť do systému, požiadať o autentifikačné údaje (heslo, odtlačok prsta);
- vybrať, ktorú prostredie pracovnej plochy spustiť.
V súčasnosti sa v rôznych distribúciách široko používajú:
- (nahradil ),
- ,
- ,
- .
- Tiež môžeme spomenúť Fly-DM (používaný v AstraLinux).
Zoznam existujúcich DM sa udržuje v aktuálnom stave v




Je dôležité poznamenať, že na nasledujúcich snímkach obrazovky sa používa ten istý správca displeja LightDM, ale v rôznych distribúciách (názvy distribúcií sú uvedené v zátvorkách). Zhodnoťte, ako rôzne môže vyzerať tento DM vďaka práci dizajnérov rôznych distribúcií.





Podstatné v tejto rozmanitosti je, aby bolo jasné, že existuje aplikácia, ktorá spravuje spúšťanie grafiky a umožňuje používateľovi prístup k tejto grafike, a existujú rôzne implementácie tejto aplikácie, ktoré sa odlišujú vzhľadom a trochu aj funkcionalitou (výber prostredia, výber používateľov, verzia pre slabozrakých, možnosť vzdialeného prístupu protokolom ).
Server displeja
Server displeja je určitý základ grafiky, ktorého hlavnou úlohou je pracovať s grafickou kartou, monitorom a rôznymi vstupnými zariadeniami (klávesnica, myš, touchpady). To znamená, že aplikácia (napríklad prehliadač alebo textový editor), ktorá sa vykresľuje v „grafike“, nemusí vedieť, ako priamo pracovať so zariadeniami, nepotrebuje poznať ovládače. To všetko preberá X Window.
Keď sa hovorí o serveri displeja, mnoho rokov sa na Linuxe a aj Unixe myslelo na aplikáciu alebo pre bežných používateľov X (Ikxy).
V súčasnosti sa v mnohých distribúciách na miesto X zavádzajú .
Môžete si tiež prečítať:
- ,
- ,
- (sú potrebné na vzdialené spúšťanie grafických aplikácií, napríklad pomocou PuTTY).
Najprv spustíme X-y a niekoľko grafických aplikácií v nich.
Cvičenie „spúšťame X a aplikácie v ňom“
Všetko budem vykonávať od čerstvo vytvoreného používateľa webinaruser (bolo by jednoduchšie, ale nie bezpečnejšie všetko vykonať ako root).
- Keďže X-om potrebujú prístup k zariadeniam, dávam prístup: Zoznam zariadení som určil pozorovaním chýb pri spustení X-ov 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\/*
- Po tomto spúšťam X-y:
% X -retro :77 vt8 &
Možnosti: * -retro — spúšťajú s „šedým“ klasickým pozadím, nie s čiernym ako predvolené; * :77 — určujem (môže byť akýkoľvek v rozumnom rozsahu, len :0 je už pravdepodobne obsadené pre už spustenú grafiku) číslo obrazovky, faktický akýsi jedinečný identifikátor, podľa ktorého bude možné rozlišovať medzi viacerými spustenými X’ami; * vt8 — určuje terminál, tu /dev/tty8, na ktorom sa budú zobrazovať X’y).
- Spúšťame grafickú aplikáciu:
Na to najprv nastavíme premennú, podľa ktorej aplikácia bude vedieť, do ktorých z mých spustených X’ov posielať to, čo treba nakresliť:
% export DISPLAY=":77"
Zoznam spustených X’ov si môžeme pozrieť takto:
ps -fwwC X
Po tom, ako sme nastavili premennú, môžeme spúšťať aplikácie do našich X’ov — napríklad spúšťam hodiny:
% xclock -update 1 &
% xcalc &
% xeyes -g 200x150-300+50 &

Hlavné myšlienky a zistenia z tohto fragmentu:
- X’y potrebujú prístup k zariadeniam: terminálu, grafickej karte, vstupným zariadeniam,
- Samotné X’y nezobrazujú žiadne prvky rozhrania — je to šedá (ak je s možnosťou „—retro“) alebo čierna plocha určitých rozmerov (napríklad 1920×1080 alebo 1024×768), aby v nej mohli bežať grafické aplikácie.
- Podľa pohybu „kurzora“ je vidno, že X’y sledujú polohy myši a odovzdávajú túto informáciu aplikáciám, ktoré sú v ňom spustené.
- Taktiež X’y zaznamenávajú stlačenia kláves na klávesnici a odovzdávajú túto informáciu aplikáciám.
- Premenná DISPLAY udáva grafickým aplikáciám, v ktorom obrazovke (každé X’y sa pri spustení spúšťajú s jedinečným číslom obrazovky), a teda v ktorých z spustených na mojej mašine, sú potrebné X’y kresliť. (Taktiež je možné v tejto premennej uviesť vzdialený stroj a posielať výstup na X’y spustené na inom stroji v sieti.) Keďže sme X’y spúšťali bez možnosti -auth, preto nie je potrebné zaoberať sa premennou XAUTHORITY alebo príkazom xhost.
- Grafické aplikácie (alebo ako ich nazývajú X-klienti) sa vykresľujú v X’ach — pri tom bez možnosti ich premiestňovať/zatvárať/meniť „-g (Šírka)x(Výška)+(PosunZĽavéhoRohu)+(PosunZVrchnéhoRohu)“. So znamienkom „mínus“ ísť z pravého a z dolného okraja.
- Dva termíny, ktoré stojí za zmienku: X-server (tak sa nazývajú X) a X-klienti (tak sa nazýva akákoľvek grafická aplikácia spúšťaná v X). Existuje niekoľko nedorozumení v chápaní tejto terminológie, mnohí ju chápajú naopak. Keď sa z "klientskeho počítača" (v terminológii vzdialeného prístupu) pripojím k "serveru" (v terminológii vzdialeného prístupu), aby som na svojom monitore zobrazil grafickú aplikáciu so servera, X-server sa spúšťa na tej mašine, kde je monitor (teda na "klientskej mašine", nie na "serveri"), zatiaľ čo X-klienti sa spúšťajú a pracujú na "serveri", aj keď sa zobrazujú na monitore "klientskej mašiny".

Komponenty DE
Ďalej sa pozrieme na komponenty, z ktorých sa zvyčajne skladá pracovná plocha.
Komponenty DE: tlačidlo „Štart“ a „Panel úloh“
Začneme s takzvaným tlačidlom „Štart“. Často ide o samostatný aplikačný modul, používaný na „Pane úloh“. Zvyčajne tam býva aj aplikačný modul na prepínanie medzi spustenými aplikáciami.

Pri pohľade na rôzne prostredia pracovných plôch by som tieto aplikácie zhrnul pod spoločný názov „Apps Manager (Launcher/Switcher)“, teda nástroj na správu aplikácií (spúšťanie a prepínanie medzi spustenými), a tiež uvediem utilitky, ktoré sú príkladom aplikácie tohto typu.
- Nachádza sa vo forme tlačidla „Štart“ na klasickej (po celej dĺžke jedného z hraníc obrazovky) „Pane úloh“:
○ xfce4-panel,
○ mate-panel/gnome-panel,
○ vala-panel,
○ tint2. - Môžeme tiež osobitne vyzdvihnúť „panely úloh podobné MacOS“ (nie na celú dĺžku okraja obrazovky), hoci mnohé panely úloh sa môžu zobrazovať v oboch variantoch. Tu je skôr hlavný rozdiel čisto vizuálny — existencia „efektu zväčšovania ikôn pri nahoverení“.
○ docky,
○ latte-dock,
○ cairo-dock,
○ plank. - A/ alebo služby, ktoré spúšťajú aplikácie stlačením „horúcich kláves“ (v mnohých prostrediach pracovnej plochy musí byť podobná zložka prítomná a umožňuje nastaviť vlastné horúce klávesy):
○ sxhkd.
- Existujú aj rôzne menu-typy „laucherov“ (z angličtiny Launch (spúšťať)):
○ dmenu-run,
○ rofi -show drun,
○ albert,
○ grun.

Komponenty DE: WM (Window Manager)
WM (Okenný manažér) — určitá aplikácia, ktorá zodpovedá za správu okien, pridáva možnosť:
- premiestvovanie okien po pracovnej ploche (vrátane štandardného s držaním klávesy Alt na akúkoľvek časť okna, nielen na titulok);
- zmena rozmerov okien, napríklad presúvaním za „rám okna“;
- pridáva k rozhraniu okien „titul (title)“ a tlačidlá na minimalizovanie/maximalizovanie/zatvorenie aplikácie;
- pojem, ktorá aplikácia je v „fokuse“.

Vymením najznámejšie (v zátvorkách uvádzam, v ktorom DE sa používa predvolene):
- (GNOME3),
- (Mate),
- (GNOME2),
- (Cinnamon),
- (KDE),
- (XFCE),
- .

Taktiež vymením „staré WM s prvkami DE“. T.j. okrem správcu okien majú obsahové prvky ako tlačidlo „Štart“ a „Panel úloh“, ktoré sú viac pridružené k plnohodnotným DE. Hoci aké sú „staré“, keď aj IceWM, aj WindowMaker už vydali svoje aktualizované verzie v roku 2020. Z toho vyplýva, že presnejšie by bolo nie „staré“, ale „starobylé“:
- ,
- ,
- , , , ,
- …





Okrem „klasických“ („zásobníkových správcov okien“) stojí za zmienku , ktoré umožňuje umiestniť okná „dlažobnými kameňmi“ po celej obrazovke, a pre niektoré aplikácie má samostatnú pracovnú plochu pre každú spustenú aplikáciu na celú obrazovku. Je to trochu neobvyklé pre ľudí, ktorí ich predtým nepoužívali, ale keďže s takým rozhraním som už dostatočne dávno, môžem povedať, že je to pomerne pohodlné a rýchlo sa na také rozhranie zvykne, po čom „klasickí“ správcovia okien už nevyzerajú pohodlne.
- ,
- ,
- ,
- ,
- ,
- qtile,
- bspwm,
- herbstluftwm,
- …
- twin,
- .

Taktiež stojí za zmienku projekt a taká koncepcia ako „kompozitný správca okien“, ktorý využíva možnosti hardvérovej akcelerácie na zobrazenie priehľadností, tieňov a rôznych trojrozmerných efektov. Pred približne 10 rokmi bol boom 3D efektov na Linux desktopy. Teraz mnohí správcovia okien, ktoré sú zabudované v DE, čiastočne využívajú kompozičné možnosti. Nedávno sa objavil — produkt s podobnou funkčnosťou ako Compiz pod Wayland.

Podrobný zoznam rôznych správcov okien si môžete tiež pozrieť v .
Komponenty DE: ostatné
Taktiež stojí za zmienku nasledujúce komponenty pracovnej plochy (tu používam anglické ustálené pojmy na opis varianty aplikácie — nie názvy samotných aplikácií):
- Applet(Ápleté):
- PO (Widget toolkit) — často prichádza s nejakým "minimálnym balíkom" softvéru:
DE (Desktop Environment)
Z uvedených komponentov vzniká takzvané "prostredie grafického rozhrania desktopu". Často sú všetky jeho komponenty vyvíjané s využitím rovnakých grafických knižníc a rovnakých dizajnových princípov, čím sa aspoň minimálne udržuje celkový štýl vzhľadu aplikácií.
Tu môžeme vyzdvihnúť nasledujúce existujúce prostredia desktopu:
Najrozšírenejšie sú GNOME a KDE, pričom im na päty šliape XFCE.

Porovnanie rôznych parametrov v podobe tabuľky si môžete pozrieť v príslušnej .
Rôznorodosť DE

Existujú aj zaujímavé príklady z histórie: v rokoch 2003-2007 bolo pre Linux vytvorené "3D grafické rozhranie desktopu" s názvom "Project Looking Glass" od firmy Sun. Sám som toto prostredie používal, presnejšie "hral sa", pretože jeho používanie bolo ťažké. Toto "3D grafické rozhranie" bolo naprogramované v Jave v čase, keď ešte neexistovali grafické karty s podporou 3D. Tým pádom všetky efekty počítal procesor, a počítač musel byť veľmi výkonný, inak všetko fungovalo pomaly. Ale bolo to krásne. Trojrozmerné dlaždice aplikácií sa dali otáčať/rozvíjať. Mohli ste sa otáčať v cylindri desktopu s pozadím z panorámu v 360 stupňoch. Malo to niekoľko svojich krásnych aplikácií: napríklad počúvanie hudby vo forme "výmeny CD diskov" a pod. Môžete si na YouTube pozrieť o tomto projekte, len kvalita týchto videí bude pravdepodobne zlá, pretože v tých rokoch neexistovala možnosť nahrať video vo vysokej kvalite.

Ľahký desktop. Existuje projekt už pomerne dlho, od roku 1996. V posledných rokoch sa teší značnej popularite, na rozdiel od ťažších KDE a GNOME, a to aj na mnohých distribúciách, kde je potrebné ľahké a "klasické" rozhranie desktopu. Obsahuje množstvo nastavení a veľké množstvo vlastných programov: terminál (xfce4-terminal), správca súborov (thunar), prehliadač obrázkov (ristretto), textový editor (mousepad).

Používa sa v distribúcii „Elementary OS“. Tu môžeme povedať, že existujú „pracovné plochy“, ktoré sú vyvíjané a používané v rámci jednej konkrétnej distribúcie a nepoužívajú sa výrazne (nepovedal by som „vôbec“) v iných distribúciách. Aspoň zatiaľ sa im nepodarilo získať popularitu a presvedčiť väčšinu publika o výhodách svojho prístupu. Pantheon si kladie za cieľ vybudovať rozhranie podobné macOS.

Varianta s dock-panelom:

Silný dôraz na grafické efekty a widgety (ešte z čias, keď iné pracovné prostredia nemali widgety na ploche, napríklad kalendár/hodiny). Používa svoje knižnice. Disponuje širokým súborom svojich „pekných“ aplikácií: terminál (Terminology), video prehrávač (Rage), prehliadač obrázkov (Ephoto).

Je to fork Enlightenment17, ktorý sa používa v distribúcii BodhiLinux.

Pôvodne „klasické“ rozhranie pracovnej plochy, vytvorené ako protiklad KDE, ktoré bolo napísané na knižnici QT a v tom čase bolo distribuované pod licenciou, ktorá nebola veľmi vhodná pre komerčné distribúcie.

Od tretej verzie GNOME sa dodáva s rozhraním GNOME Shell, ktoré má „nekonvenčný vzhľad“, čo sa nie každému používateľovi páčilo (akékoľvek náhle zmeny v rozhraniach sú ťažko prijímané používateľmi). Ako dôsledok sa objavili fork-projekty, ktoré naďalej rozvíjajú túto pracovnú plochu v „klasickom“ štýle: MATE a Cinnamon. Používa sa predvolene v mnohých komerčných distribúciách. Má veľké množstvo nastavení a svojich aplikácií.

Objavila sa na základe GNOME2 a pokračuje vo vývoji tohto prostredia. Má množstvo nastavení a forkov aplikácií, ktoré sa používali ešte v GNOME2 (používajú sa nové názvy), aby sa nedošlo k zámene forkov s ich novou verziou pre GNOME3).

Fork GNOME Shell, ktorý poskytuje používateľom rozhranie v „klasickom“ štýle (ako to bolo v GNOME2).
Má veľké množstvo nastavení a rovnaké aplikácie, ako aj pre GNOME Shell.

Fork GNOME v „klasickom“ štýle, ktorý sa vyvíjal v rámci distribúcie Solus, ale teraz sa dodáva aj v rámci samostatnej pracovnej plochy v rôznych iných distribúciách.

(alebo ako sa často nazýva, jednoducho KDE)
Prostredie pracovnej plochy, ktoré sa vyvíja v rámci projektu KDE.
Ponúka obrovské množstvo nastavení prístupných bežnému používateľovi z grafického rozhrania a množstvo grafických aplikácií vyvíjaných v rámci tejto pracovnej plochy.

V roku 2008 vydal KDE svoju novú implementáciu KDE Plasma (pohon pracovnej plochy bol výrazne prepracovaný). Rovnako ako pri GNOME/MATE sa to všetkým fanúšikom KDE nepáčilo. V dôsledku toho vznikol fork projektu, ktorý pokračuje vo vývoji predchádzajúcej verzie pod názvom TDE (Trinity Desktop Environment).

Jedno z nových prostredí pracovnej plochy, napísané pomocou Qt (na ktorom je založené aj KDE). Má množstvo nastavení a dosť pekné (aj keď to je subjektívny pojem) a premyslené rozhranie. Vyvíja sa v rámci distribúcie Deepin Linux. Existujú aj balíky pre iné distribúcie.

Fly
Príklad prostredia pracovnej plochy, napísaného pomocou Qt. Vyvíja sa v rámci distribúcie Astra Linux.

Ľahké prostredie pracovnej plochy. Rovnako ako niekoľko predchádzajúcich príkladov, je napísané pomocou Qt. Fakticky je pokračovaním projektu LXDE a výsledkom spojenia s projektom Razor-qt.
Ako vidíte, pracovná plocha v Linuxe môže vyzerať veľmi rôzne a pre každého sa tu nájde vhodné rozhranie: od veľmi krásnych a 3D efektmi po minimalistické, od "klasických" po nezvyčajné, od aktívne využívajúcich zdroje systému po ľahké, od veľkých obrazoviek po tablety/smartfóny.
Dúfam, že sa mi podarilo predstaviť, z akých základných komponentov sa skladá grafika a pracovná plocha v OS Linux.
Materiál pre tento článok bol odprezentovaný v júli 2020 na webinári. Môžete si ho pozrieť. .
Na tomto je všetko. Dúfam, že to bolo užitočné. Ak máte nejaké otázky alebo komentáre, píšte. Rád odpoviem. A príďte sa učiť do !
Zdroj: habr.com
