Den här artikeln handlar om hur grafik är strukturerad i Linux och vilka komponenter den består av. Den innehåller många skärmdumpar av olika skrivbordsmiljöer.
Om du inte riktigt skiljer mellan KDE och GNOME, eller om du gör det men vill veta vilka andra alternativ det finns, så är den här artikeln för dig. Det är en översikt, 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 de som precis har börjat utforska området. Linux.
Det här ämnet kan vara av intresse för avancerade användare, oavsett om de konfigurerar fjärråtkomst eller implementerar en tunn klient. Jag stöter ofta på erfarna Linux-användare som påstår: "Servern har bara kommandoraden, och jag planerar inte att studera grafik i detalj, eftersom det är allt för grundläggande användare." Men även experter Linux med stor förvåning och glädje upptäcker de alternativet "-X" i ssh-kommandot (och för detta är det användbart att förstå X-serverns funktion och funktion).

Jag har undervisat i kurser i nästan 15 år. Linux v ""och jag är säker på att många av de mer än fem tusen personer jag har utbildat läser och förmodligen skriver artiklar om Habr. Kurserna är alltid mycket intensiva (den genomsnittliga kurslängden är fem dagar) och täcker ämnen som det skulle ta minst tio dagar att helt förstå. Och under kursens gång, beroende på publiken (nybörjare eller erfarna administratörer) och "frågorna från publiken", väljer jag alltid vad jag ska förmedla mer i detalj och vad jag ska täcka mer ytligt, och ägnar mer tid åt kommandoradsverktyg och deras praktiska tillämpning. Det finns gott om sådana ämnen som måste offras lite. Detta är "Historia" Linux", "Skillnader i fördelningar Linux"," "Om licenser: GPL, BSD, ...", "Om grafik och skrivbordsmiljöer" (ämnet för den här artikeln), etc. Det är inte så att de är oviktiga, men vanligtvis finns det många mer angelägna "här och nu"-frågor och bara cirka fem dagar... Men för en allmän förståelse av operativsystemets grunder Linux, förstå den tillgängliga mångfalden (så att även med en specifik distribution Linux, har fortfarande en bredare syn på hela denna enorma och gränslösa värld som kallas "Linux”) Det är nyttigt och nödvändigt att studera dessa ämnen.
Allt eftersom artikeln fortskrider tillhandahåller jag länkar för varje komponent för den som vill dyka djupare in i ämnet, till exempel till Wikipedia-artiklar (samtidigt som jag pekar på en mer komplett/användbar version om det finns engelska och ryska artiklar).
För grundläggande exempel och skärmdumpar använde jag openSUSE-distributionen. Vilken annan gemenskapsutvecklad distribution som helst skulle kunna användas, så länge det fanns ett stort antal paket i förvaret. Det är svårt, men inte omöjligt, att visa mångfalden av skrivbordsdesigner på en kommersiell distribution, eftersom de ofta bara använder en eller två av de mest välkända skrivbordsmiljöerna. På så sätt begränsar utvecklare uppgiften att släppa ett stabilt, felsökt OS. På samma system installerade jag alla DM/DE/WM (förklaring av dessa termer nedan) som jag hittade i förvaret.
Skärmdumpar med "blå ramar" togs på openSUSE.
Jag tog skärmdumpar med "vita ramar" på andra distributioner, de anges i skärmdumpen.
Skärmdumpar med "grå ramar" togs från Internet, som exempel på skrivbordsdesign från tidigare år.
Så, låt oss börja.
Huvudkomponenterna som bildar grafik
Jag kommer att markera tre huvudkomponenter och lista dem i den ordning som de lanseras vid systemstart:
- DM (Display Manager);
- Display Server;
- DE (Skrivbordsmiljö).
Dessutom, som viktiga underklausuler i skrivbordsmiljön:
- Apps Manager/Launcher/Switcher (Startknapp);
- WM (fönsterhanterare);
- olika programvaror som följer med skrivbordsmiljön.
Mer information om varje punkt.
DM (Display Manager)
Den första applikationen som startar när du startar "grafik" är DM (Display Manager), en bildskärmshanterare. Dess huvudsakliga uppgifter:
- fråga vilka användare som ska tillåta in i systemet, begära autentiseringsdata (lösenord, fingeravtryck);
- välja vilken skrivbordsmiljö som ska köras.
För närvarande används ofta i olika distributioner:
- (ersatt ),
- ,
- ,
- .
- Värt att nämna är även Fly-DM (används i AstraLinux).
Listan över befintliga DM hålls uppdaterad i




Det är värt att notera att följande skärmdumpar använder samma LightDM display manager, men i olika distributioner (distributionsnamn anges inom parentes). Se hur annorlunda denna DM kan se ut tack vare arbetet från designers från olika distributioner.





Huvudsaken i denna mångfald är att göra det klart att det finns en applikation som är ansvarig för att lansera grafik och låter användaren komma åt denna grafik, och det finns olika implementeringar av denna applikation som skiljer sig åt i utseende och något i funktionalitet (val av designmiljöer, val av användare, version för dåligt seende användare, tillgänglighet till fjärråtkomst via protokoll ).
Display Server
Display Server är en slags grafikbas, vars huvuduppgift är att arbeta med ett grafikkort, bildskärm och olika inmatningsenheter (tangentbord, mus, pekplattor). Det vill säga, en applikation (till exempel en webbläsare eller textredigerare) som renderas i "grafik" behöver inte veta hur man direkt arbetar med enheter, inte heller behöver den veta om drivrutiner. X Window tar hand om allt detta.
När det gäller Display Server har det funnits i många år Linux, och i Unix var det tänkt som en applikation eller i vanligt språkbruk X (X).
Nu ersätter många distributioner X .
Du kan också läsa:
- ,
- ,
- (behövs för att starta grafiska applikationer på distans, till exempel med PuTTY).
Låt oss först starta X och flera grafiska applikationer i dem.
Workshop "kör X och applikationer i den"
Jag kommer att göra allt från den nyskapade webinaruser-användaren (det skulle vara enklare, men inte säkrare, att göra allt som root).
- Eftersom X behöver åtkomst till enheter ger jag åtkomst: Listan över enheter fastställdes 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 det startar jag X:s:
% X -retro :77 vt8 &
Alternativ: * -retro - starta med en "grå" klassisk bakgrund, och inte med svart som standard; * :77 - Jag ställer in (vilket som helst inom ett rimligt intervall är möjligt, bara :0 är troligen redan upptaget av den redan körande grafiken) skärmnummer, faktiskt någon sorts unik identifierare med vilken det kommer att vara möjligt att särskilja flera körande X; * vt8 - indikerar terminalen, här /dev/tty8, på vilken X kommer att visas).
- Starta den grafiska applikationen:
För att göra detta ställer vi först in en variabel genom vilken applikationen kommer att förstå vilka av X:en jag kör för att skicka det som behöver ritas:
% export DISPLAY=":77"
Du kan se listan över löpande Xs så här:
ps -fwwC X
Efter att vi har ställt in variabeln kan vi starta applikationer i våra Xs - till exempel startar jag en klocka:
% xclock -update 1 &
% xcalc &
% xögon -g 200x150-300+50 &

Huvudidéer och slutsatser från detta fragment:
- X behöver tillgång till enheter: terminal, grafikkort, inmatningsenheter,
- Xs själva visar inga gränssnittselement - det är en grå (om med alternativet "--retro") eller svart duk av vissa storlekar (till exempel 1920x1080 eller 1024x768) för att köra grafiska applikationer i den.
- Rörelsen av "korset" visar att X:en spårar musens position och överför denna information till applikationerna som körs i den.
- X:s fångar också tangenttryckningar på tangentbordet och överför denna information till applikationer.
- DISPLAY-variabeln talar om för grafiska applikationer i vilken skärm (varje X startas med ett unikt skärmnummer vid uppstart), och därför i vilken av de som körs på min maskin, X:en kommer att behöva ritas. (Det är också möjligt att specificera en fjärrdator i denna variabel och skicka utdata till Xs som körs på en annan dator i nätverket.) Eftersom Xs lanserades utan -auth-alternativet, finns det inget behov av att hantera XAUTHORITY-variabeln eller xhost kommando.
- Grafiska applikationer (eller som X-klienter kallar dem) renderas i X:s - utan möjlighet att flytta/stänga/ändra dem "-g (Width)x(Height)+(OffsetFromLeftEdge)+(OffsetFromTopEdge)". Med ett minustecken från höger respektive från nederkant.
- Två termer som är värda att nämna: X-server (det är vad X:s kallas) och X-clients (det är vad alla grafiska applikationer som körs i X:s kallas). Det finns en liten förvirring i att förstå denna terminologi, många förstår det precis tvärtom. I fallet när jag ansluter från en "klientmaskin" (i fjärråtkomstterminologi) till en "server" (i fjärråtkomstterminologi) för att visa en grafisk applikation från servern på min bildskärm, så startas X-servern på maskinen där monitorn (det vill säga på "klientmaskinen", inte på "servern") och X-klienter startar och körs på "servern", även om de visas på monitorn för "klientmaskinen".

DE komponenter
Låt oss sedan titta på komponenterna som vanligtvis utgör ett skrivbord.
DE-komponenter: Start-knapp och aktivitetsfält
Låt oss börja med den så kallade "Start"-knappen. Ofta är detta en separat applet som används i "Taskbar". Det finns också vanligtvis en applet för att växla mellan körande applikationer.

Efter att ha tittat på olika skrivbordsmiljöer skulle jag sammanfatta sådana applikationer under det allmänna namnet "Apps Manager (Launcher/Switcher)", det vill säga ett verktyg för att hantera applikationer (starta och växla mellan körande), och även ange verktyg som är en exempel på denna typ av applikation.
- Den kommer i form av "Start"-knappen på den klassiska (hela längden av en av kanterna på skärmen) "Taskbar":
○ xfce4-panel,
○ kompis-panel/gnome-panel,
○ vala-panel,
○ nyans2. - Du kan också ha en separat "MacOS-formad aktivitetsfält" (inte hela längden på skärmens kant), även om många aktivitetsfält kan visas i båda stilarna. Här är snarare den största skillnaden rent visuell - närvaron av "effekten av att förstora ikoner när du svävar."
○ docky,
○ latte-docka,
○ kairo-docka,
○ planka. - Och/eller en tjänst som startar applikationer när du trycker på snabbtangenter (i många skrivbordsmiljöer krävs en liknande komponent och låter dig konfigurera dina egna snabbtangenter):
○ sxhkd.
- Det finns också olika menyformade "launchers" (från engelska Launch (launch)):
○ dmenu-run,
○ rofi -show drun,
○ albert,
○ grunt.

DE-komponenter: WM (Window Manager)
WM (Window Manager) - en applikation som är ansvarig för att hantera fönster, lägger till möjligheten att:
- flytta fönster runt skrivbordet (inklusive standarden genom att hålla ner Alt-tangenten på valfri del av fönstret, inte bara namnlisten);
- ändra storlek på fönster, till exempel genom att dra "fönsterramen";
- lägger till en "titel" och knappar för att minimera/maximera/stänga programmet till fönstergränssnittet;
- konceptet för vilken applikation som är i "fokus".

Jag kommer att lista de mest kända (inom parentes anger jag vilken DE som används som standard):
- (GNOME3)
- (Para)
- (GNOME2)
- (Kanel)
- (KDE)
- (XFCE),
- .

Jag kommer också att lista "gamla WM med DE-element". De där. förutom fönsterhanteraren har de element som "Start"-knappen och "Taskbar", som är mer typiska för fullfjädrad DE. Fast hur "gamla" är de om både IceWM och WindowMaker redan har släppt sina uppdaterade versioner 2020. Det visar sig att det är mer korrekt inte "gammalt", utan "gammalt":
- ,
- ,
- , , , ,
- .





Förutom "klassikern" ("stackfönsterhanterare") är det värt att särskilt nämna , som låter dig placera fönster "kaklade" över hela skärmen, samt för vissa applikationer ett separat skrivbord för varje startad applikation på hela skärmen. Detta är lite ovanligt för folk 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 ganska bekvämt och man vänjer sig snabbt vid ett sådant gränssnitt, varefter "klassiska" fönsterhanterare verkar inte längre bekväma.
- ,
- ,
- ,
- ,
- ,
- qtile,
- bspwm,
- herbstluftwm,
- .
- tvilling,
- .

Projektet är också värt att nämna separat och konceptet med en "kompositfönsterhanterare", som använder hårdvaruacceleration för att visa transparens, skuggor och olika 3D-effekter. För ungefär 10 år sedan skedde en boom inom 3D-effekter på Linux-skrivbord. Numera använder många av de fönsterhanterare som är inbyggda i skrivbordsmiljöer delvis kompositionsfunktioner. Nyligen, - en produkt med liknande funktionalitet som Compiz för Wayland.

En detaljerad lista över olika fönsterhanterare finns också i .
DE komponenter: vila
Det är också värt att notera följande skrivbordskomponenter (här använder jag etablerade engelska termer för att beskriva en typ av applikation - det här är inte namnen på själva applikationerna):
- Applets:
- Programvara (Widget toolkit) - ofta levereras en viss "minimum uppsättning" av programvara med miljön:
DE (skrivbordsmiljö)
Från ovanstående komponenter erhålls den så kallade "Desktop Design Environment". Ofta är alla dess komponenter utvecklade med samma grafikbibliotek och med samma designprinciper. Således bibehålls åtminstone den allmänna stilen för utseendet på applikationer.
Här kan vi lyfta fram följande för närvarande befintliga skrivbordsmiljöer:
GNOME och KDE anses vara de vanligaste, och XFCE ligger nära i hälarna.

En jämförelse av olika parametrar i form av en tabell kan hittas i motsvarande .
DE sort

Det finns till och med sådana intressanta exempel från historien: 2003-2007 för Linux Ett "3D-skrivbordstema" som heter "Project Looking Glass" skapades av Sun. Jag använde det här skrivbordet själv, eller snarare "lekte med det", eftersom det var svårt att använda. Detta "3D-tema" skrevs i Java vid en tidpunkt då 3D-kompatibla grafikkort ännu inte existerade. Därför beräknades alla effekter om av processorn, och datorn var tvungen att vara mycket kraftfull, annars skulle allt fungera långsamt. Men det blev vackert. 3D-applikationspanelerna kunde roteras och fällas ut. Man kunde rotera runt i en skrivbordscylinder med ett 360-graders bakgrundspanorama. Det fanns flera vackra applikationer: till exempel att lyssna på musik i form av en "CD-växlare", etc. Du kan titta på det på YouTube. om det här projektet kommer bara kvaliteten på dessa videor troligen att vara dålig, eftersom det under dessa år inte var möjligt att ladda upp videor av hög kvalitet.

Lätt skrivbord. Projektet har funnits ganska länge, sedan 1996. Under de senaste åren har det varit ganska populärt, till skillnad från de tyngre KDE och GNOME, på många distributioner som kräver ett lättviktigt och "klassiskt" skrivbordsgränssnitt. Den har många inställningar och ett stort antal egna program: terminal (xfce4-terminal), filhanterare (thunar), bildvisare (ristretto), textredigerare (musmatta).

Det används i Elementary OS-distributionen. Man kan nog säga att det finns skrivbordsmiljöer som utvecklats och används inom en enda distribution och som inte används i stor utsträckning (om inte helt oanvända) i andra distributioner. Åtminstone har de ännu inte vunnit popularitet eller övertygat en stor publik om fördelarna med sin metod. Pantheon strävar efter att bygga ett gränssnitt som liknar macOS.

Tillval med dockningspanel:

Starkt fokus på grafiska effekter och widgets (från de dagar då andra skrivbordsmiljöer inte hade skrivbordswidgets som kalender/klocka). Använder sina egna bibliotek. Det finns en stor uppsättning egna "vackra" applikationer: terminal (Terminologi), videospelare (Rage), bildvisare (Ephoto).

Detta är en förgrening av Enlightenment17, som används i Bodhi-distributionen.Linux.

Ursprungligen ett "klassiskt" skrivbordsgränssnitt, skapat i motsats till KDE, som skrevs i QT-biblioteket, vid den tiden distribuerat under en licens som inte var särskilt bekväm för kommersiella distributioner.

Från den tredje versionen började GNOME komma med GNOME-skalet, som har ett "icke-klassiskt utseende", vilket inte alla användare gillade (alla plötsliga förändringar i gränssnitt är svåra för användare att acceptera). Som en konsekvens uppkomsten av gaffelprojekt som fortsätter utvecklingen av detta skrivbord i den "klassiska" stilen: MATE och Cinnamon. Används som standard i många kommersiella distributioner. Den har ett stort antal inställningar och egna applikationer.

Det kom från GNOME2 och fortsätter att utveckla denna designmiljö. Den har ett stort antal inställningar och applikationsgafflar som användes tillbaka i GNOME2 (nya namn används) för att inte blanda ihop gafflarna med deras nya version för GNOME3).

En gaffel av GNOME Shell som ger användarna ett "klassiskt" gränssnitt (som var fallet i GNOME2).
Den har ett stort antal inställningar och samma applikationer som för GNOME Shell.

En "klassisk" stil gaffel av GNOME som utvecklades som en del av Solus-distributionen, men som nu också kommer som ett fristående skrivbord på olika andra distributioner.

(eller som det ofta kallas, helt enkelt KDE)
En skrivbordsmiljö utvecklad av KDE-projektet.
Den har ett stort antal inställningar tillgängliga för den enkla användaren från det grafiska gränssnittet och många grafiska applikationer utvecklade inom ramen för detta skrivbord.

2008 släppte KDE sin nya implementering av KDE Plasma (skrivbordsmotorn var kraftigt omskriven). Dessutom, som med GNOME/MATE, gillade inte alla KDE-fans det. Som ett resultat dök en gaffel av projektet upp, som fortsatte utvecklingen av den tidigare versionen, kallad TDE (Trinity Desktop Environment).

En av de nya skrivbordsmiljöerna, skriven med Qt (samma språk som används av KDE). Den erbjuder ett brett utbud av anpassningsalternativ och ett ganska vackert (om än subjektivt) och sofistikerat gränssnitt. Den utvecklas som en del av Deepin-distributionen. LinuxDet finns även paket för andra distributioner.

Fly
Ett exempel på en skrivbordsmiljö skriven med Qt. Utvecklad som en del av distributionen. Astra Linux.

Lätt skrivbordsmiljö. Liksom flera tidigare exempel, skrivna med Qt. Faktum är att det är en fortsättning på LXDE-projektet och resultatet av en sammanslagning med Razor-qt-projektet.
Som ni ser är skrivbordet i Linux Gränssnittet kan se väldigt olika ut, och det finns något för alla smaker: från mycket vackra med 3D-effekter till minimalistiska, från "klassiska" till ovanliga, från de som aktivt använder systemresurser till lätta, från stora skärmar till surfplattor/smartphones.
Nåväl, jag hoppas att jag har lyckats ge en uppfattning om huvudkomponenterna som utgör grafiken och skrivbordet i operativsystemet. Linux.
Materialet för den här artikeln testades i juli 2020 på ett webinar. Du kan titta på den .
Det är allt. Jag hoppas att detta var till hjälp. Om du har några frågor eller kommentarer, skriv gärna. Jag svarar gärna. Nåväl, kom och studera kl !
Källa: will.com
