Denne artikel handler om, hvordan grafikken fungerer i Linux, og hvilke komponenter den består af. Den indeholder mange screenshots af forskellige desktop-miljøer.
Hvis du ikke skelner meget mellem KDE og GNOME, eller hvis du gør, men gerne vil vide, hvilke andre alternativer der findes, så er denne artikel for dig. Den er en oversigt, og selvom den indeholder mange navne og en del termer, vil materialet også være nyttigt for begyndere og dem, der blot kigger i retningen af Linux.
Emnet kan også interessere erfarne brugere, når de opsætter fjernadgang og implementerer en tynd klient. Jeg støder ofte på erfarne Linux-brugere, der hævder: "Der er kun kommandolinje på serveren, og jeg planlægger ikke at studere grafikken nærmere, da det hele kun er nødvendigt for almindelige brugere." Men selv kendere af Linux opdager ofte med stor overraskelse og glæde muligheden "-X" med ssh-kommandoen (og for dette er det nyttigt at forstå, hvordan og hvilke funktioner X-serveren har).

Jeg har næsten 15 års erfaring med at undervise i Linux-kurser på "" og er sikker på, at mange af de mere end fem tusinde personer, jeg har undervist, læser og skriver artikler på Habra. Kurserne er altid meget intensive (den gennemsnitlige kursuslængde er fem dage), og jeg skal dække emner, som kræver mindst ti dage for en grundig introduktion. Og under kurset, afhængigt af publikum (om det er nybegyndere eller erfarne administratorer), samt "spørgsmål fra salen", vælger jeg, hvad der skal uddybes, og hvad der skal behandles mere overfladisk, så jeg kan bruge mere tid på kommandolinje-værktøjer og deres praktiske anvendelse. Der er mange emner, jeg må ofre lidt for. Dette inkluderer "Historien om Linux", "Forskelle i Linux-distributioner", "Om licenser: GPL, BSD, ...", "Om grafik og desktop-miljøer" (emnet for denne artikel) og flere. Ikke fordi de ikke er vigtige, men der er normalt mange mere aktuelle spørgsmål at tage fat på, og kun fem dage... Men for at forstå grundprincipperne i Linux OS, og den tilgængelige variation (så man, selvom man bruger en specifik Linux-distribution, stadig har et bredere perspektiv på denne enorme og ubegribelige verden, som kaldes "Linux"), er det nyttigt og nødvendigt at studere disse emner.
I artiklen angiver jeg links til hver komponent for dem, der ønsker at dykke dybere ned i emnet, for eksempel til artikler på Wikipedia (hvor jeg angiver den mere fuldstændige/nyttige version, hvis der findes både engelske og russiske artikler).
Jeg har brugt openSUSE-distributionen til hovedeksempler og screenshots. Man kunne have brugt enhver anden distributionsudgave, der udvikles af fællesskabet, med et stort antal pakker i repositoryet. Det er svært, men muligt at demonstrere variationen i desktopdesign på en kommerciel distribution, da der ofte kun anvendes en eller to af de mest kendte skrivebordsmiljøer. Dette indsnævrer udviklernes opgave med at frigive et stabilt, velafprøvet operativsystem. På denne system har jeg installeret alle DM/DE/WM (forklaring af disse termer nedenfor), som jeg fandt i repositoryet.
Screenshots med "blå rammer" er netop lavet på openSUSE.
Screenshots med "hvite rammer" blev taget med andre distributioner, som er angivet på screenshotet.
Screenshots med "grå rammer" blev hentet fra internettet som eksempler på desktopdesign fra tidligere år.
Så lad os komme i gang.
De vigtigste komponenter, som grafikken består af
Jeg vil fremhæve tre centrale komponenter og liste dem i den rækkefølge, de startes ved systemstart:
- DM (Display Manager);
- Display Server;
- DE (Desktop Environment).
Derudover som vigtige underpunkter i Desktop Environment:
- Apps Manager/Launcher/Switcher (knappen "Start");
- WM (Window Manager);
- forskellige softwareprogrammer, der leveres sammen med skrivebordsmiljøet.
Detaljeret information om hvert punkt.
DM (Display Manager)
Den første applikation, der startes ved opstart af "grafik", er DM (Display Manager), display manager. Dens hovedopgaver er:
- at spørge, hvilke brugere der kan få adgang til systemet, anmode om autentifikationsoplysninger (adgangskode, fingeraftryk);
- at vælge, hvilket skrivebordsmiljø der skal startes.
I øjeblikket anvendes der bredt i forskellige distributioner:
- (erstatte ),
- ,
- ,
- .
- Der kan også nævnes Fly-DM (anvendt i AstraLinux).
Listen over eksisterende DM holdes opdateret i




Det skal bemærkes, at de følgende screenshots bruger den samme display manager, LightDM, men i forskellige distributioner (navnene på distributionerne er angivet i parentes). Vurder, hvor forskelligt denne DM kan se ud takket være arbejdet fra designerne af de forskellige distributioner.





Det vigtigste i denne mangfoldighed er, at der findes en applikation, der håndterer opstarten af grafikken og giver brugeren adgang til denne grafik, og der findes forskellige implementeringer af denne applikation, der adskiller sig i udseende og lidt i funktionalitet (valgmuligheder for skriveborde, brugervalg, version for svagtseende brugere, muligheden for fjernadgang via protokol ).
Display Server
Display Server er fundamentet for grafikken, hvis hovedopgave er at arbejde med grafikkortet, skærmen og forskellige inputenheder (tastatur, mus, touchpads). Det vil sige, at applikationen (for eksempel en browser eller tekstbehandler), der bliver gengivet i "grafikken", ikke behøver at vide, hvordan man arbejder direkte med enhederne, og den behøver ikke at vide noget om drivere. Alt dette håndteres af X Window.
Når man taler om Display Server, har man i mange år i Linux og også i Unix refereret til applikationen eller på almindeligt sprog X (Ikserne).
I mange distributioner bliver X nu erstattet af .
Man kan også læse:
- ,
- ,
- (nødvendige for fjernstart af grafiske applikationer, f.eks. ved brug af PuTTY).
Lad os starte med at køre X'erne og nogle grafiske applikationer i dem.
Praktisk øvelse "starter X og applikationer i dem"
Jeg vil udføre alt fra den nyoprettede bruger webinaruser (det ville være enklere, men ikke sikrere at udføre alt som root).
- Da X'erne har brug for adgang til enhederne, giver jeg adgang: Jeg har bestemt listen over enheder ved at se på fejlene ved opstarten af X'erne i loggen (/home/webinaruser/.local/share/xorg/Xorg.77.log)
% sudo setfacl -m u:webinaruser:rw /dev/tty8 /dev/dri/card0 /dev/fb0 /dev/input/*
- Efter dette starter jeg X'erne:
% X -retro :77 vt8 &
Indstillinger: * -retro — starter med en "grå" klassisk baggrund i stedet for sort som standard; * :77 — angiver (kan være hvilken som helst inden for et rimeligt interval, kun :0 er allerede sandsynligvis optaget af allerede kørende grafik) screen-nummer, en slags faktisk unik identifikator, som gør det muligt at skelne mellem flere kørende X'er; * vt8 — angiver terminalen, her /dev/tty8, hvor X'erne vil blive vist).
- Starter grafisk applikation:
For dette skal vi først sætte en variabel, som applikationen vil bruge til at forstå, hvilken af de kørende X'er den skal sende det, der skal tegnes, til:
% export DISPLAY=":77"
Du kan se listen over kørende X'er på denne måde:
ps -fwwC X
Når vi har sat variablen, kan vi starte applikationer i vores X'er — for eksempel starter jeg urene:
% xclock -update 1 &
% xcalc &
% xeyes -g 200x150-300+50 &

De vigtigste ideer og konklusioner fra dette afsnit:
- X'erne kræver adgang til enheder: terminal, grafikkort, inputenheder,
- Selve X'erne viser ingen interfacelementer — det er et gråt (hvis med indstillingen "—retro") eller sort lærred af bestemte størrelser (f.eks. 1920×1080 eller 1024×768), så man kan køre grafiske applikationer i det.
- Fra bevægelsen af "kursiholdet" kan man se, at X'erne registrerer musens positioner og sender denne information til de kørende applikationer.
- X'erne opfanger også tastetryk på tastaturet og sender denne information til applikationerne.
- DISPLAY-variablen angiver for grafiske applikationer, hvilken skærm (hver X starter med et unikt skærmnummer) og dermed i hvilke af de kørende på min maskine, X'erne skal tegnes. (Der er også mulighed for at angive en fjernmaskine i denne variabel og sende output til X'er, der kører på en anden maskine i netværket.) Da X'erne blev startet uden indstillingen -auth, er der ikke behov for at bekymre sig om XAUTHORITY-variablen eller kommandoen xhost.
- Grafiske applikationer (eller hvad der kaldes X-klienter) tegnes i X'erne — uden mulighed for at flytte/lukke/ændre "-g (Bredde)x(Højde)+(ForskyvningFraVenstre)+(ForskyvningFraØversteKant)". Med negativt tegn henholdsvis fra højre og fra den nederste kant.
- To termer, som er værd at nævne: X-server (det, de kalder X'erne) og X-klienter (det, de kalder enhver grafisk applikation, der kører i X'erne). Der er en lille forvirring omkring denne terminologi, da mange forstår den helt omvendt. I tilfælde af at jeg fra "klientmaskinen" (i remote access terminologi) opretter forbindelse til "serveren" (i remote access terminologi) for at vise en grafisk applikation fra serveren på min skærm, så starter X-serveren på den maskine, hvor skærmen er (dvs. på "klientmaskinen" og ikke på "serveren"), mens X-klienter startes og kører på "serveren", selvom de vises på skærmen på "klientmaskinen".

DE-komponenter
Lad os se nærmere på de komponenter, som en arbejdsflade typisk består af.
DE-komponenter: "Start"-knap og "Panel"
Lad os begynde med såkaldte "Start"-knap. Dette er ofte en separat applet, der bruges på "Panelet". Der er normalt også en applet til skift mellem kørende applikationer.

Når jeg ser på de forskellige skrivebordsmiljøer, ville jeg samle sådanne applikationer under den overordnede betegnelse "Apps Manager (Launcher/Switcher)", det vil sige et værktøj til at administrere applikationer (starte og skifte mellem kørende), og jeg vil også nævne værktøjer, der er eksempler på denne type applikation.
- Det findes i form af en "Start"-knap på et klassisk (i hele længden af en af skærmkanten) "Panel":
○ xfce4-panel,
○ mate-panel/gnome-panel,
○ vala-panel,
○ tint2. - Man kan også fremhæve "MacOS-lignende paneler" (ikke i hele længden af kanten af skærmen), selvom mange paneler kan vises i begge varianter. Her er den vigtigste forskel mest visuelt — tilstedeværelsen af "forstørrelseseffekten på ikoner, når man holder musen henover".
○ docky,
○ latte-dock,
○ cairo-dock,
○ plank. - Og/eller tjenester, der starter applikationer ved at trykke på "genvejstaster" (i mange skrivebordsmiljøer til stede, hvilket gør det muligt at indstille egne genvejstaster):
○ sxhkd.
- Der er også forskellige menu-lignende "launchers" (fra engelsk Launch (starte)):
○ dmenu-run,
○ rofi -show drun,
○ albert,
○ grun.

DE-komponenter: WM (Window Manager)
WM (Vinduessystem) — en applikation, der svarer på vinduesadministration, tilføjer mulighed for:
- flytning af vinduer på skrivebordet (herunder standard med at holde Alt-tasten nede for enhver del af vinduet, og ikke kun for titlen);
- ændring af vinduestørrelser, f.eks. ved at trække i "vinduets ramme";
- tilføjer "titel (title)" til vinduesinterfacet samt knapper til minimering/udvidelse/lukning af applikationen;
- begrebet, hvilken applikation der er i "fokus".

Lad mig nævne de mest kendte (i parentes angiver jeg, hvilken DE der bruges som standard):
- (GNOME3),
- (Mate),
- (GNOME2),
- (Cinnamon),
- (KDE),
- (XFCE),
- .

Jeg vil også nævne "gamle WM med elementer fra DE". Det vil sige, udover vinduesbehandleren har de elementer som "Start"-knappen og "Opgavepaneler", der er mere karakteristiske for fulde DE. Selvom det er mærkeligt at kalde dem "gamle", når både IceWM og WindowMaker har udgivet deres opdaterede versioner i 2020. Det er mere korrekt at kalde dem "ancer":
- ,
- ,
- , , , ,
- …





Ud over de "klassiske" ("stakvinduesbehandlere") skal man også nævne , som tillader placering af vinduer "fliseformet" over hele skærmen, samt for nogle applikationer en separat arbejdsplads for hver startede applikation fuld skærm. Dette er lidt uvant for folk, der ikke tidligere har brugt dem, men da jeg selv har brugt en sådan interface i lang tid, kan jeg sige, at det er ganske praktisk, og man vænner sig hurtigt til det, hvorefter de "klassiske" vinduesbehandlere ikke virker så praktiske.
- ,
- ,
- ,
- ,
- ,
- qtile,
- bspwm,
- herbstluftwm,
- …
- twin,
- .

Det er også værd at nævne projektet og et begreb såsom "Kompositvinduesbehandler", der bruger hardwareaccelerationsmuligheder for at vise gennemsigtighed, skygger og forskellige 3D-effekter. For cirka 10 år siden var der en bølge af 3D-effekter på Linux-skriveborde. I dag bruger mange af de vinduesbehandlere, der er indbygget i DE, delvist kompositoriske muligheder. For nylig dukkede der op — et produkt med lignende funktionalitet som Compiz under Wayland.

En detaljeret liste over forskellige vinduesbehandlere kan også ses i .
Komponenter i DE: andre
Det er også værd at nævne følgende komponenter i skrivebordet (her bruger jeg etablerede engelske termer til at beskrive typer af applikationer — dette er ikke navne på selve applikationerne):
- Applets(Аплеты):
- Software (Widget toolkit) — der medfølger ofte en slags "minimumssæt" af software:
DE (Desktop Environment)
Af de nævnte komponenter dannes den såkaldte "Desktop Environment". Ofte udvikles alle dens komponenter ved hjælp af de samme grafiske biblioteker og med ensartede designprincipper. På den måde opretholdes der i det mindste en fælles stil for apparaternes udseende.
Her kan følgende eksisterende desktop-miljøer fremhæves:
De mest udbredte er GNOME og KDE, og XFCE følger tæt efter.

Sammenligning af forskellige parametre i tabelformat kan ses i den tilsvarende .
Mangfoldighed i DE

Der findes endda interessante eksempler fra historien: i årene 2003-2007 blev der lavet "3D-desktop" til Linux kaldet "Project Looking Glass" af firmaet Sun. Jeg har selv brugt denne desktop, eller rettere sagt "legede" med den, da det var svært at bruge. Denne "3D-design" var skrevet i Java på en tid, hvor der endnu ikke var grafikkort med 3D-support. Derfor blev alle effekter beregnet af CPU'en, og computeren skulle være meget kraftig, ellers fungerede alt langsomt. Men det så smukt ud. Tre-dimensionale applikationsfliser kunne drejes/udfoldes. Man kunne rotere i cylinderen af desktop med baggrunde fra panoramavideoer i 360 grader. Der var flere smukke applikationer: for eksempel musikafspilning i form af "skift af CD'er" osv. Man kan se videoer om dette projekt på YouTube, men kvaliteten af disse videoer vil sandsynligvis være dårlig, da der i disse år ikke var mulighed for at uploade videoer med høj kvalitet.

Letvægts desktop. Der har eksisteret et projekt i lang tid, siden 1996. I de senere år er det blevet ret populært, i modsætning til de tungere KDE og GNOME, som mange distributioner kræver for at få et let og "klassisk" desktop-interface. Det har mange indstillinger og et stort antal egne programmer: terminal (xfce4-terminal), filhåndtering (thunar), billedfremviser (ristretto), teksteditor (mousepad).

Brugt i distributionen 'Elementary OS'. Her kan man sige, at der er 'skrivbordsmiljøer', der udvikles og anvendes inden for en bestemt distribution og ikke bruges meget (hvis ikke helt) i andre distributioner. I det mindste har de endnu ikke fået populært fodfæste eller overbevist størstedelen af publikum om fordelene ved deres tilgang. Pantheon har til formål at opbygge et interface, der ligner macOS.

Variation med dock-panel:

Stærk fokus på grafiske effekter og widgets (allerede fra dengang, hvor andre skrivebordsmiljøer ikke havde widgets på skrivebordet, som for eksempel kalender/ur). Bruger sine egne biblioteker. Der er et stort udvalg af 'smukke' applikationer: terminal (Terminology), videoafspiller (Rage), billedfremviser (Ephoto).

Dette er en fork af Enlightenment17, som bruges i distributionen BodhiLinux.

Oprindeligt et 'klassisk' skrivebordsinterface, skabt som modstykke til KDE, der blev skrevet på QT-biblioteket, som dengang blev distribueret under en licens, der ikke var særlig venlig for kommercielle distributioner.

Fra tredje version af GNOME blev GNOME Shells skræddersyede interface introduceret, som havde et 'uklassisk udseende', der ikke nød alles accept (enhver dramatisk ændring i interfaces er svær for brugerne at acceptere). Dette førte til oprettelsen af fork-projekter, der fortsætter udviklingen af dette skrivebord i 'klassisk' stil: MATE og Cinnamon. Anvendes som standard i mange kommercielle distributioner. Har et stort antal indstillinger og egne applikationer.

Opstod på grundlag af GNOME2 og fortsætter udviklingen af denne desktop-miljø. Har et stort antal indstillinger og forgreninger af applikationer, der blev brugt i GNOME2 (anvender nye navne) for at undgå forvirring af forgreningerne med deres nye version for GNOME3).

Fork af GNOME Shell, der giver brugerne et interface i 'klassisk' stil (som det var i GNOME2).
Har et stort antal indstillinger og de samme applikationer som for GNOME Shell.

Fork af GNOME i 'klassisk' stil, der blev udviklet inden for distributionen Solus, men nu også leveres som et selvstændigt skrivebord i forskellige andre distributioner.

(eller, som det ofte kaldes, blot KDE)
Skrivebordsenvironment udviklet inden for KDE-projektet.
Har et enorme antal indstillinger, der er tilgængelige for den gennemsnitlige bruger via det grafiske interface, samt mange grafiske applikationer udviklet inden for denne skrivebordsramme.

I 2008 udgav KDE sin nye implementering af KDE Plasma (arbejdsbordets motor blev stærkt omskrevet). Ligesom med GNOME/MATE kunne ikke alle KDE-fans lide det. Som et resultat opstod der et fork af projektet, som fortsatte udviklingen af den tidligere version, kaldet TDE (Trinity Desktop Environment).

En af de nye skrivebordsomgivelser, skrevet med Qt (som KDE er bygget på). Har mange indstillinger og en ret flot (selvom dette er et subjektivt begreb) og gennemarbejdet grænseflade. Udvikles inden for distributionen Deepin Linux. Der findes også pakker til andre distributioner.

Fly
Et eksempel på en skrivebordsomgivelse, skrevet med Qt. Udvikles inden for distributionen Astra Linux.

Letvægts skrivebordsomgivelser. Ligesom nogle af de tidligere eksempler er det skrevet med Qt. Faktisk er det en fortsættelse af LXDE-projektet og et resultat af fusionen med Razor-qt-projektet.
Som du kan se, kan skrivebordet i Linux se meget forskelligt ud, og der findes et passende interface for enhver smag: fra meget smukke og med 3D-effekter til minimalistiske, fra "klassiske" til usædvanlige, fra systemressourcekrævende til letvægtsløsninger, fra store skærme til tablets/smartphones.
Og jeg håber, at jeg har formået at give et indtryk af, hvilke grundlæggende komponenter grafikken og skrivebordet i Linux OS består af.
Materialet til denne artikel blev testet i juli 2020 under et webinar. Du kan se det. .
Det var alt. Jeg håber, det har været nyttigt. Hvis der er spørgsmål eller kommentarer, er du velkommen til at skrive. Jeg vil gerne svare. Og kom forbi for at lære i !
Kilde: habr.com
