Denna artikel handlar om hur grafiken är uppbyggd i Linux och vilka komponenter den består av. Den innehåller många skärmdumpar med olika implementationer av skrivbordsmiljöer.
Om du inte riktigt kan skilja på KDE och GNOME, eller om du kan men vill veta vilka andra alternativ som finns, så är denna artikel för dig. Den är översiktlig, och även om den innehåller många namn och några termer, kommer materialet också att vara användbart för nybörjare och dem som bara kollar på Linux.
Ämnet kan även intressera mer avancerade användare när det gäller att konfigurera fjärråtkomst och implementera tunn klient. Jag stöter ofta på erfarna Linux-användare som hävdar att "på servern finns bara kommandoraden, och jag planerar inte att studera grafiken mer i detalj, eftersom det här är något för vanliga användare". Men även Linux-experter upptäcker med stor förvåning och glädje alternativet "-X" med kommandot ssh (och för detta är det nyttigt att förstå hur och vilka funktioner X-servern har).

Jag har i nästan 15 år varit lärare i Linuxkurser på "" och är säker på att många av de över fem tusen personer jag har undervisat läser och säkert skriver artiklar på Habr. Kurserna är alltid mycket innehållsrika (den genomsnittliga kurslängden är fem dagar); jag behöver ta upp ämnen som det skulle ta minst tio dagar att bekanta sig med ordentligt. Och alltid, beroende på publiken (om nybörjare har samlats eller erfarna administratörer), liksom från "frågor från publiken", väljer jag vad jag ska förmedla mer i detalj och vad mer ytligt, för att kunna ägna mer tid åt kommandoradsverktyg och deras praktiska tillämpningar. Det finns många sådana ämnen som jag får offra lite på. Dessa inkluderar "Linux historia", "Skillnader i Linux-distributioner", "Om licenser: GPL, BSD, ...", "Om grafik och skrivbordsmiljöer" (ämnet för denna artikel) och andra. Det handlar inte om att de inte är viktiga, men det finns vanligtvis många mer aktuella frågor som måste hanteras just nu, och allt får bara fem dagar... Men för att få en allmän förståelse för grunderna i Linux-operativsystemet och förstå den tillgängliga mångfalden (så att man även med en specifik Linux-distribution fortfarande har en bredare syn på denna enorma och oändliga värld som kallas "Linux"), är det nyttigt och viktigt att studera dessa ämnen.
I artikeln anges länkar för varje komponent för dem som vill fördjupa sig i ämnet, till exempel till artiklar på Wikipedia (där jag anger den mer omfattande/nyttiga versionen om det finns engelskspråkiga och ryskspråkiga artiklar).
För huvudexempel och skärmdumpar använde jag distributionsversionen av openSUSE. Jag kunde ha använt vilken annan distribution som helst som utvecklas av gemenskapen och har ett stort antal paket i sitt lager. Det är svårt, men möjligt, att demonstrera mångfalden av skrivbordslayouter på en kommersiell distribution, eftersom de ofta använder en eller två av de mest kända skrivbordsmiljöerna. Så begränsar utvecklarna sin uppgift att släppa ett stabilt och fungerande operativsystem. På detta system installerade jag alla DM/DE/WM (förklaringar av dessa termer nedan) som jag hittade i lagret.
Skärmdumpar med "blå ramar" är gjorda på openSUSE.
Skärmdumpar med "vita ramar" är tagna på andra distributioner, de anges på skärmdumpen.
Skärmdumpar med "grå ramar" har tagits från internet, som exempel på skrivbordslayouter från tidigare år.
Så, låt oss börja.
De huvudsakliga komponenterna som grafiken består av
Jag kommer att framhäva tre huvudkomponenter och lista dem i den ordning de startar när systemet startar:
- DM (Display Manager);
- Display Server;
- DE (Desktop Environment).
Ytterligare viktiga underpunkter i Desktop Environment:
- Apps Manager/Launcher/Switcher ("Start"-knappen);
- WM (Window Manager);
- olika programvara som levereras tillsammans med skrivbordsmiljön.
Mer information om varje punkt.
DM (Display Manager)
Det första programmet som startas vid starten av "grafiken" är DM (Display Manager), displayhanteraren. Dess huvuduppgifter är:
- att fråga vilka användare som får komma in i systemet, begära autentiseringsuppgifter (lösenord, fingeravtryck);
- att välja vilken skrivbordsmiljö som ska startas.
För närvarande används följande i olika distributioner:
- (ersatte ),
- ,
- ,
- .
- Det är också värt att nämna Fly-DM (som används i AstraLinux).
Listan över befintliga DM hålls uppdaterad i




Det är värt att notera att samma fönsterhanterare LightDM används i de följande skärmdumparna, men i olika distributioner (namnen på distributionerna anges inom parentes). Bedöm hur olika denna DM kan se ut tack vare arbetet från designers av olika distributioner.





Det viktigaste i detta mångfald är att förstå att det finns en sådan applikation som ansvarar för att initiera grafiken och ge användaren åtkomst till denna grafik, och att det finns olika implementationer av denna applikation, som skiljer sig åt i utseende och lite funktionalitet (val av skrivbordsmiljöer, användarval, version för synskadade användare, möjlighet till fjärråtkomst via protokollet ).
Display Server
Display Server är en grundläggande komponent för grafik vars huvuduppgift är att arbeta med grafikkort, bildskärm och olika inmatningsenheter (tangentbord, mus, pekplattor). Det vill säga applikationen (t.ex. webbläsare eller textredigerare) som ritas i 'grafiken', behöver inte veta hur man direkt arbetar med enheterna, den behöver inte veta om drivrutiner. Det tar X Window hand om.
När man talar om Display Server, syftade man under många år på applikationen eller i folkmun X (Ixx).
Nu implementeras .
Du kan också läsa:
- ,
- ,
- (används för att starta grafiska applikationer på distans, till exempel med PuTTY).
För att börja ska vi starta X:s och några grafiska applikationer i dem.
Praktikövning "starta X och applikationer i den"
Jag kommer att göra allt från den nyss skapade användaren webinaruser (det skulle vara enklare, men inte säkrare att göra allt från root).
- Eftersom X kräver åtkomst till enheterna, ger jag åtkomst: Jag bestämde listan över enheter genom att titta på felen vid start av X 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 detta startar jag X:
% X -retro :77 vt8 &
Alternativ: * -retro — startar med en "grå" klassisk bakgrund istället för den svarta som standard; * :77 — angiv (kan vara vilket som helst inom rimliga gränser, endast :0 är förmodligen redan upptaget av en redan körd grafik) skärmnumret, en viss unik identifierare som kan användas för att särskilja flera körande X; * vt8 — anger terminalen, här /dev/tty8, där X:en kommer att visas).
- Startar grafisk applikation:
För detta behöver vi först ställa in en variabel så att applikationen förstår vilken av mina startade X:ar som den ska skicka det som behöver ritas till:
% export DISPLAY=":77"
För att se listan över körande X:ar kan man göra så här:
ps -fwwC X
När vi har ställt in variabeln kan vi starta applikationer i våra X:ar — till exempel startar jag klockan:
% xclock -update 1 &
% xcalc &
% xeyes -g 200x150-300+50 &

Huvudidéer och slutsatser från detta stycke:
- X:arna behöver tillgång till enheter: terminal, grafikkort, inmatningsenheter,
- Själva X:arna visar inga gränssnittselement — det är en grå (om med alternativet "—retro") eller svart duk av specifika mått (till exempel 1920×1080 eller 1024×768) för att köra grafiska applikationer.
- Genom att följa "krysset" kan man se att X:arna spårar musens positioner och vidarebefordrar denna information till de körande applikationerna.
- X:arna fångar också nertryckningar på tangentbordet och vidarebefordrar denna information till applikationerna.
- Variabeln DISPLAY anger för grafiska applikationer vilken skärm (varje X startar med ett unikt skärmnumer) som de ska rita X:arna i, och därmed vilket av de startade på min maskin som de ska använda. (Det finns också möjlighet att i denna variabel ange en fjärrmaskin och skicka utdata till X:ar som körs på en annan maskin i nätverket.) Eftersom X:arna startades utan alternativet -auth, så finns det ingen anledning att bry sig om variabeln XAUTHORITY eller kommandot xhost.
- Grafiska applikationer (eller X-klienter som de kallas) ritas i X:arna — utan möjlighet att flytta/stänga/ändra "-g (Bredd)x(Höjd)+(FörskjutningFrånVänster)+(FörskjutningFrånÖverkant)". Med minustecken blir det alltså från höger och nederkant.
- Två termer som är värda att nämna: X-server (detta kallas för X:er) och X-klienter (detta kallas för alla grafiska program som körs i X:erna). Det finns viss förvirring kring förståelsen av denna terminologi, många tolkar den i exakt motsatt riktning. När jag från "klientmaskinen" (en term vid fjärråtkomst) ansluter till "servern" (en term vid fjärråtkomst) för att visa ett grafiskt program från servern på min skärm, så startas X-servern på den maskin där skärmen befinner sig (det vill säga på "klientmaskinen", inte på "servern"), medan X-klienterna startas och arbetar på "servern", även om de visas på skärmen av "klientmaskinen".

Komponenter DE
Vi går vidare och undersöker komponenterna som vanligtvis utgör skrivbordet.
Komponenter DE: Startknapp och aktivitetsfält
Låt oss börja med den så kallade Startknappen. Ofta är detta en separat applet som används i "Aktivitetsfältet". Det finns också vanligtvis en applet för att växla mellan körda applikationer.

Genom att titta på olika skrivbordsmiljöer skulle jag sammanfatta sådana applikationer under det gemensamma namnet "Apps Manager (Launcher/Switcher)", det vill säga ett verktyg för att hantera applikationer (starta och växla mellan körda), och jag skulle också ange verktyg som är exempel på applikationer av denna typ.
- Det kan förekomma som en Startknapp på den klassiska (full längd av en av skärmens kanter) "Aktivitetsfältet":
○ xfce4-panel,
○ mate-panel/gnome-panel,
○ vala-panel,
○ tint2. - Man kan också särskilt nämna "MacOS-liknande aktivitetsfält" (inte hela skärmens kant), även om många aktivitetsfält kan visas i båda varianterna. Här är den huvudsakliga skillnaden mest visuell — att ha "effekten av att förstora ikoner när man håller musen över dem."
○ docky,
○ latte-dock,
○ cairo-dock,
○ plank. - Och/eller tjänster som startar applikationer när "snabbtangenter" trycks (i många skrivbordsmiljöer finns en liknande komponent som alltid är närvarande och låter dig ställa in egna snabbtangenter):
○ sxhkd.
- Det finns också olika meny-liknande "launchers" (från engelskans Launch (starta)):
○ dmenu-run,
○ rofi -show drun,
○ albert,
○ grun.

Komponenter DE: WM (Fönsterhanterare)
WM (Fönsterhanterare) — en applikation som ansvarar för fönsterhantering, lägger till möjligheten:
- flytta fönster på skrivbordet (inklusive standard med att hålla ner Alt-tangenten på valfri del av fönstret, och inte bara på titeln);
- ändra storleken på fönster, till exempel genom att dra i 'fönsterkanten';
- lägger till 'titel' och knappar för minimering/återställning/stängning av programmet till fönstergränssnittet;
- begrepp om vilket program som är i 'fokus'.

Jag kommer att nämna de mest kända (i parentes anger jag vilken DE som används som standard):
- (GNOME3),
- (Mate),
- (GNOME2),
- (Cinnamon),
- (KDE),
- (XFCE),
- .

Jag kommer också att nämna 'gamla WM med DE-element'. Det vill säga, förutom fönsterhanteraren innehåller de element som 'Start'-knappen och 'Aktivitetsfält', som är mer typiska för fullständiga DE. Men hur gamla är de egentligen, när både IceWM och WindowMaker har släppt sina uppdaterade versioner 2020? Så, det är mer korrekt att säga 'gamla', men snarare 'pensionärer':
- ,
- ,
- , , , ,
- …





Förutom 'klassiska' ('staplade fönsterhanterare') är det värt att särskilt nämna , som gör det möjligt att ordna fönster i 'takpannor' över hela skärmen, och även för vissa applikationer ett separat skrivbord för varje startad applikation på hela skärmen. Detta är lite ovant för människor som inte har använt dem tidigare, men eftersom jag själv har använt ett sådant gränssnitt ganska länge kan jag säga att det är helt bekvämt och man vänjer sig snabbt vid ett sådant gränssnitt, efter vilket 'klassiska' fönsterhanterare inte verkar bekväma.
- ,
- ,
- ,
- ,
- ,
- qtile,
- bspwm,
- herbstluftwm,
- …
- twin,
- .

Det är också värt att särskilt nämna projektet och begreppet 'kompositfönsterhanterare', som använder hårdvaruacceleration för att visa transparens, skuggor och olika tredimensionella effekter. För ungefär 10 år sedan var det en boom av 3D-effekter på Linux-skrivbord. Nu använder många av fönsterhanterarna som är inbyggda i DE delvis kompositmöjligheter. Nyligen har — en produkt med liknande funktionalitet som Compiz under Wayland.

En detaljerad lista över olika fönsterhanterare kan också ses i .
DE-komponenter: andra
Det är också värt att notera följande komponenter av skrivbordet (här använder jag etablerade engelska termer för att beskriva typer av applikationer — detta är inte namnen på själva applikationerna):
- Appletar:
- Programvara (Widget toolkit) – ofta levereras med en viss "minimal uppsättning" av programvara:
DE (Skrivbordsmiljö)
Av de ovannämnda komponenterna bildas så kallad "Skrivbordsmiljö". Ofta utvecklas alla dess komponenter med hjälp av samma grafiska bibliotek och enligt samma designprinciper. På så sätt hålls åtminstone en gemensam stil för utseendet av applikationerna.
Här kan följande skrivbordsmiljöer som finns för tillfället särskiljas:
De mest utbredda anses vara GNOME och KDE, och tätt efter dem kommer XFCE.

En jämförelse av olika parametrar i form av tabell kan ses i den motsvarande .
Mångfalden av DE

Det finns till och med intressanta exempel från historien: mellan 2003-2007 skapades "3D-skrivbordstillväxt" för Linux med namnet "Project Looking Glass" av företaget Sun. Jag använde själv detta skrivbord, eller rättare sagt "lekta" med det, eftersom det var svårt att använda. Denna "3D-tillväxt" skrevs i Java vid en tid då det ännu inte fanns grafikkort som stödde 3D. Därför beräknades alla effekter av processorn, och datorn behövde vara mycket kraftfull, annars fungerade allt långsamt. Men i stället blev det vackert. Tredimensionella fält för applikationer kunde vridas / utvidgas. Man kunde vrida sig i en cylinder av skrivbordet med bakgrunder från en 360-graders panorama. Det fanns flera egna vackra applikationer: till exempel att lyssna på musik i form av "byte av CD-skivor" osv. Man kan se på youtube om detta projekt, men kvaliteten på dessa videor kommer sannolikt att vara dålig, eftersom det inte fanns möjlighet att ladda upp videor av hög kvalitet på den tiden.

Lättviktskrivbord. Det finns ett projekt som funnits ganska länge, sedan 1996. Under de senaste åren har det blivit ganska populärt som motvikt till de tyngre KDE och GNOME, som många distributioner behöver för ett lätt och "klassiskt" skrivbordsgränssnitt. Det har många inställningar och ett stort antal egna program: terminal (xfce4-terminal), filhanterare (thunar), bildvisare (ristretto), textredigerare (mousepad).

Används i distributionen «Elementary OS». Här kan man säga att det finns «arbetsytor» som utvecklas och används inom en specifik distribution och som inte används mycket (om ens något) i andra distributioner. Åtminstone har de ännu inte fått popularitet och övertygat majoriteten av publiken om fördelarna med sin metod. Pantheon har som mål att bygga ett gränssnitt som liknar macOS.

Variant med dock-panel:

Stark betoning på grafiska effekter och widgets (redan från den tid då andra skrivbordsmiljöer inte hade widgets på skrivbordet, som kalendrar/ur). Använder sina egna bibliotek. Det finns ett stort antal egna «vackra» applikationer: terminal (Terminology), videospelare (Rage), bildvisare (Ephoto).

Detta är en fork av Enlightenment17, som används i distributionen BodhiLinux.

Ursprungligen ett «klassiskt» skrivbordgränssnitt, skapat som alternativ till KDE, som skrevs i QT-biblioteket, vilket vid den tiden fördelades under en licens som inte var särskilt bekväm för kommersiella distributioner.

Från tredje versionen av GNOME började det levereras med GNOME Shell, som har en «icke-klassisk stil», vilket inte gillades av alla användare (alla plötsliga förändringar i gränssnitt accepteras ofta inte av användarna). Som en följd av detta uppstod fork-projekt som fortsatte utvecklingen av detta skrivbord i «klassisk» stil: MATE och Cinnamon. Används som standard i många kommersiella distributioner. Har ett stort antal inställningar och egna applikationer.

Uppstod på basis av GNOME2 och fortsätter utvecklingen av denna skrivbordsgränssnitt. Har många inställningar och forks av applikationer som användes redan i GNOME2 (nya namn används) för att inte förvirra fork med deras nya version för GNOME3).

Fork av GNOME Shell som ger användarna ett gränssnitt i «klassisk» stil (som det var i GNOME2).
Har ett stort antal inställningar och samma applikationer som för GNOME Shell.

Fork av GNOME i «klassisk» stil, som utvecklades inom distributionen Solus, men nu också levereras som ett självständigt skrivbord i olika andra distributioner.

(eller, som det ofta kallas, helt enkelt KDE)
Skrivbordsmiljö som utvecklas inom ramen för KDE-projektet.
Har ett stort antal inställningar som är tillgängliga för vanliga användare genom det grafiska gränssnittet och många grafiska applikationer som utvecklas inom ramen för denna skrivbordsmiljö.

År 2008 släppte KDE sin nya version av KDE Plasma (skrivbordsmotorn har skrivits om helt). Precis som med GNOME/MATE uppskattades detta inte av alla KDE-entusiaster. Resultatet blev en fork av projektet som fortsätter att utveckla den tidigare versionen, kallad TDE (Trinity Desktop Environment).

En av de nya skrivbordsmiljöerna som är skriven i Qt (vilket även KDE är skrivet i). Den har många inställningar och ett ganska vackert (även om det är en subjektiv bedömning) och genomarbetat gränssnitt. Utvecklas inom ramen för distributionen Deepin Linux. Det finns också paket för andra distributioner.

Fly
Exempel på en skrivbordsmiljö skriven i Qt. Utvecklas inom distributionen Astra Linux.

En lättviktig skrivbordsmiljö. Precis som några av de tidigare exemplen är den skriven i Qt. Den är i själva verket en fortsättning på projektet LXDE och resultatet av en sammanslagning med projektet Razor-qt.
Som du kan se kan skrivbordet i Linux se väldigt olika ut och det finns en passande gränssnittsvariant för alla smaker: från väldigt vackra och med 3D-effekter till minimalistiska, från "klassiska" till ovanliga, från resurskrävande till lätta, från stora skärmar till plattor/smartphones.
Och jag hoppas att jag har lyckats ge en översikt över de grundläggande komponenterna som utgör grafiken och skrivbordsmiljön i Linux OS.
Materialet för denna artikel testades i juli 2020 under en webbseminarie. Du kan se det. .
Detta är allt. Jag hoppas att det har varit till hjälp. Om det finns några frågor eller kommentarer, skriv gärna. Jag ser fram emot att svara. Och kom gärna och lär dig vid. !
Källa: habr.com
