Dit artikel behandelt hoe de grafische interface in Linux is opgebouwd en uit welke componenten deze bestaat. Het bevat veel schermafbeeldingen met verschillende implementaties van desktopomgevingen.
Als je het verschil tussen KDE en GNOME niet goed kunt zien, of als je geïnteresseerd bent in andere alternatieven, dan is dit artikel iets voor jou. Het is een overzicht en hoewel er veel namen en een paar termen in staan, is de inhoud ook nuttig voor beginners en degenen die een blik op Linux willen werpen.
Dit onderwerp kan ook gevorderde gebruikers interesseren bij het instellen van externe toegang en bij de implementatie van een dunne client. Ik kom vaak ervaren Linux-gebruikers tegen die beweren: 'op de server is er alleen de commandoregel, en ik ben niet van plan me verder in grafische interfaces te verdiepen, want dat is alles voor eenvoudige gebruikers'. Maar zelfs kenners van Linux ontdekken met grote verbazing en vreugde de optie '-X' van het ssh-commando (en hiervoor is het nuttig om de werking en functies van de X-server te begrijpen).

Ik geef bijna 15 jaar les in Linux-cursussen bij "" en ik ben ervan overtuigd dat veel van de meer dan vijfduizend mensen die ik heb opgeleid, artikelen lezen en waarschijnlijk ook schrijven voor Habr. De cursussen zijn altijd erg intensief (de gemiddelde cursusduur is vijf dagen); er zijn onderwerpen die een volledige kennismaking vereisen van minstens tien dagen. En tijdens de cursus, afhankelijk van het publiek (of het beginners zijn of ervaren beheerders), evenals van de 'vragen uit de zaal', maak ik de keuze wat ik dieper moet behandelen en wat meer oppervlakkig, om meer tijd te besteden aan commandoregelhulpmiddelen en hun praktische toepassingen. Er zijn voldoende onderwerpen waarvoor ik wat tijd moet inleveren. Dit omvat 'De geschiedenis van Linux', 'Verschillen tussen Linux-distributies', 'Over licenties: GPL, BSD, ...', 'Over grafische interfaces en desktopomgevingen' (het onderwerp van dit artikel) en meer. Het is niet zo dat ze niet belangrijk zijn, maar meestal zijn er veel meer actuele 'hier en nu' vragen en slechts vijf dagen… Maar voor een algemeen begrip van de basisprincipes van het Linux-besturingssysteem en het begrijpen van de beschikbare diversiteit (zodat je, zelfs wanneer je een specifieke Linux-distributie gebruikt, toch een breder perspectief kunt hebben op deze enorme en onmetelijke wereld die 'Linux' wordt genoemd), is het nuttig en nodig om deze onderwerpen te bestuderen.
In het verloop van het artikel geef ik voor elk onderdeel links voor degenen die dieper op het onderwerp willen ingaan, bijvoorbeeld naar artikelen op Wikipedia (waarbij ik verwijs naar de meest volledige/nuttige versie indien zowel Engelse als Russische artikelen beschikbaar zijn).
Voor de belangrijkste voorbeelden en screenshots heb ik de openSUSE-distributie gebruikt. Elke andere community-gedreven distributie met een groot aantal pakketten in de repository had ook gebruikt kunnen worden. Het is moeilijk, maar mogelijk om een verscheidenheid aan desktopomgevingen te demonstreren op een commerciële distributie, omdat meestal slechts één of twee van de bekendste desktopomgevingen worden gebruikt. Dit beperkt de taak van ontwikkelaars om een stabiel en goed getest besturingssysteem uit te brengen. Voor dit systeem heb ik alle DM/DE/WM (uitleg van deze termen hieronder) geïnstalleerd die ik in de repository kon vinden.
Screenshots met 'blauwe kaders' zijn precies gemaakt op openSUSE.
Screenshots met 'witte kaders' zijn gemaakt op andere distributies, deze worden weergegeven in de screenshot.
Screenshots met 'grijze kaders' zijn van internet gehaald, als voorbeelden van desktopomgevingen uit voorgaande jaren.
Laten we beginnen.
De belangrijkste componenten waaruit grafische weergave bestaat
Ik zal drie hoofdcomponenten benadrukken en ze opnoemen in de volgorde waarin ze worden gestart bij het opstarten van het systeem:
- DM (Display Manager);
- Display Server;
- DE (Desktop Environment).
Daarnaast zijn er belangrijke subonderdelen binnen de Desktop Environment:
- Apps Manager/Launcher/Switcher (de 'Start'-knop);
- WM (Window Manager);
- verschillende software die met de desktopomgeving wordt meegeleverd.
Meer details over elk punt.
DM (Display Manager)
De eerste applicatie die wordt gestart bij het opstarten van de 'grafische' interface is de DM (Display Manager), de displaymanager. De belangrijkste taken zijn:
- Vragen welke gebruikers toegang tot het systeem mogen hebben en om authenticatiegegevens (wachtwoord, vingerafdruk) te vragen;
- Te kiezen welke desktopomgeving moet worden gestart.
Op dit moment worden in verschillende distributies veelgebruikte:
- (vervangen ),
- ,
- ,
- .
- Daarnaast kan Fly-DM worden genoemd (gebruikt in AstraLinux).
De lijst van bestaande DM's wordt actueel gehouden in de




Het is belangrijk op te merken dat in de volgende schermafbeeldingen dezelfde displaymanager LightDM wordt gebruikt, maar in verschillende distributies (de namen van de distributies zijn tussen haakjes aangegeven). Kijk hoe verschillend deze DM kan uitzien dankzij het werk van ontwerpers van verschillende distributies.





Het belangrijkste in deze diversiteit is dat er een toepassing bestaat die verantwoordelijk is voor het opstarten van de grafische interface en voor de toegang van de gebruiker tot deze grafische interface, en dat er verschillende implementaties van deze toepassing zijn, die verschillen in uiterlijk en een beetje in functionaliteit (keuze van thema's, keuze van gebruikers, versie voor slechtzienden, mogelijkheid tot externe toegang via protocol ).
Display Server
Een Display Server is een fundament voor de grafische interface, waarvan de belangrijkste taak is om te werken met de videokaart, monitor en verschillende invoerapparaten (toetsenbord, muis, touchpads). Dit betekent dat de applicatie (bijvoorbeeld een browser of tekstverwerker), die in de 'grafische interface' wordt weergegeven, niet hoeft te weten hoe het rechtstreeks met de apparaten moet werken, en ook niet over de stuurprogramma's hoeft te weten. Dit alles wordt door X Window afgehandeld.
Als we het hebben over Display Server, dan werd jarenlang in Linux en ook in Unix de applicatie of in de volksmond X (de X’en) bedoeld.
Tegenwoordig wordt in veel distributies X vervangen door .
Je kunt ook lezen:
- ,
- ,
- (nodig voor het op afstand uitvoeren van grafische applicaties, bijvoorbeeld met PuTTY).
Laten we beginnen met het opstarten van X’en en enkele grafische applicaties erin.
Praktijk: 'we starten X en applicaties erin'
Ik zal alles uitvoeren vanaf een nieuw aangemaakt gebruiker webinaruser (het zou gemakkelijker maar niet veiliger zijn om het als root uit te voeren).
- Aangezien X toegang nodig heeft tot de apparaten, geef ik toegang: Ik heb de lijst van apparaten bepaald door naar fouten te kijken bij het opstarten van X’en in het log (\/home\/webinaruser\/.local\/share\/xorg\/Xorg.77.log)
% sudo setfacl -m u:webinaruser:rw \/dev\/tty8 \/dev\/dri\/card0 \/dev\/fb0 \/dev\/input\/*
- Daarna start ik X’en op:
% X -retro :77 vt8 &
Opties: * -retro — start met een "grijze" klassieke achtergrond in plaats van de standaard zwarte; * :77 — stel het scherm in (kan elk nummer binnen redelijke grenzen zijn, alleen :0 is waarschijnlijk al bezet voor al actieve grafische weergave); * vt8 — geeft de terminal aan, hier /dev/tty8, waarop de X’en worden weergegeven.
- Grafische applicatie starten:
Hiervoor stellen we van tevoren een variabele in, waarmee de applicatie weet naar welke van mijn actieve X’en het item dat getekend moet worden, moet worden gestuurd:
% export DISPLAY=":77"
Om de lijst van actieve X’en te bekijken, kan dit zo:
ps -fwwC X
Nadat we de variabele hebben ingesteld, kunnen we applicaties in onze X’en starten — bijvoorbeeld, ik start de klok:
% xclock -update 1 &
% xcalc &
% xeyes -g 200x150-300+50 &

Belangrijkste ideeën en conclusies uit dit fragment:
- X’en hebben toegang nodig tot apparaten: de terminal, de videokaart, invoerapparaten,
- De X’en tonen zelf geen interface-elementen — dit is een grijze (met de optie "—retro") of zwarte achtergrond van bepaalde afmetingen (bijvoorbeeld 1920×1080 of 1024×768), om grafische applicaties in uit te voeren.
- Aan de beweging van de "cursor" is te zien dat de X’en de positie van de muis volgen en deze informatie doorgeven aan de lopende applicaties.
- Ook registreren de X’en toetsaanslagen op het toetsenbord en sturen deze informatie naar de applicaties.
- De DISPLAY-variabele geeft grafische applicaties aan op welk scherm (elke X wordt gestart met een uniek schermnummer) en dus in welke van de actieve op mijn machine, de X’en moeten worden getekend. (Er is ook de mogelijkheid om in deze variabele een externe machine op te geven en de uitvoer naar X’en te sturen die op een andere machine in het netwerk draaien.) Aangezien de X’en zonder de optie -auth zijn gestart, is er geen noodzaak om de XAUTHORITY-variabele of het commando xhost te begrijpen.
- Grafische applicaties (of X-clients zoals ze worden genoemd) worden getekend in de X’en — zonder de mogelijkheid om ze te verplaatsen / te sluiten / te wijzigen met "-g (Breedte)x(Hoogte)+(VerschuivingVanLinks)+(VerschuivingVanBoven)". Met een minteken voor afstanden van de rechter- en onderrand.
- Twee termen die het waard zijn om te vermelden: de X-server (zoals ze de X’en noemen) en de X-clients (zoals ze elk grafisch programma noemen dat binnen de X’en wordt uitgevoerd). Er is enige verwarring over deze terminologie; velen begrijpen het precies omgekeerd. In het geval dat ik vanaf een 'klantmachine' (in termen van externe toegang) verbinding maak met de 'server' (in termen van externe toegang) om een grafisch programma van de server op mijn monitor weer te geven, draait de X-server op de machine waar de monitor is (dat wil zeggen, op de 'klantmachine', en niet op de 'server'), terwijl de X-clients op de 'server' draaien en werken, hoewel ze op de monitor van de 'klantmachine' worden weergegeven.

DE-componenten
Laten we verder kijken naar de componenten waaruit een desktop meestal bestaat.
DE-componenten: de knop 'Start' en de 'Taakbalk'
Laten we beginnen met de zogenaamde knop 'Start'. Dit is vaak een aparte applet die op de 'Taakbalk' wordt gebruikt. Daar is meestal ook een applet voor het schakelen tussen actieve applicaties.

Kijkend naar verschillende desktopomgevingen, zou ik dergelijke applicaties onder de algemene naam 'Apps Manager (Launcher/Switcher)' samenvatten, dat wil zeggen een hulpmiddel voor het beheren van applicaties (starten en schakelen tussen actieve), en ik zal ook hulpmiddelen aangeven die voorbeelden zijn van dit type applicatie.
- Het komt voor als de knop 'Start' op de klassieke (over de volledige lengte van een van de randen van het scherm) 'Taakbalk':
○ xfce4-panel,
○ mate-panel/gnome-panel,
○ vala-panel,
○ tint2. - Daarnaast kunnen we ook 'MacOS-achtige taakbalken' (niet over de volle lengte van de schermrand) apart benoemen, hoewel veel taakbalken in beide varianten kunnen worden weergegeven. Het belangrijkste verschil is hier voornamelijk visueel — de aanwezigheid van een 'effect van vergrootte pictogrammen bij hover'.
○ docky,
○ latte-dock,
○ cairo-dock,
○ plank. - En/of diensten die applicaties starten bij het indrukken van 'sneltoetsen' (in veel desktopomgevingen is een soortgelijk component altijd aanwezig en kan men zijn eigen sneltoetsen instellen):
○ sxhkd.
- Er zijn ook verschillende menu-achtige 'launchers' (van het Engelse 'Launch' (starten)):
○ dmenu-run,
○ rofi -show drun,
○ albert,
○ grun.

DE-componenten: WM (Window Manager)
WM (Window Manager) — een bepaalde applicatie die verantwoordelijk is voor het beheer van vensters, en voegt de mogelijkheid toe:
- vensterbewegingen op het bureaublad (inclusief standaard met de Alt-toets ingedrukt ergens op het venster, niet alleen op de titelbalk);
- venstergrootte wijzigen, bijvoorbeeld door te slepen aan de "rand van het venster";
- voegt een "titel (title)" en knoppen voor minimaliseren/maximaliseren/sluiten van de applicatie toe aan de vensterinterface;
- het concept van welke applicatie "in focus" is.

Ik zal de meest bekende opsommen (in ronde haakjes geef ik aan in welk DE het standaard wordt gebruikt):
- (GNOME3),
- (Mate),
- (GNOME2),
- (Cinnamon),
- (KDE),
- (XFCE),
- .

Ik zal ook "oude WM's met DE-elementen" opsommen. Dat wil zeggen, naast de vensterbeheerder bevatten ze elementen zoals een "Start"-knop en "Taakbalken", die meer eigen zijn aan volwaardige DE's. Hoewel je je af kunt vragen hoe "oud" ze zijn, aangezien zowel IceWM als WindowMaker al hun vernieuwde versies in 2020 hebben uitgebracht. Het is waarschijnlijker om ze niet "oud" te noemen, maar "oudgedienden":
- ,
- ,
- , , , ,
- …





Naast "klassieke" ("stapelvensterbeheerders") moet ook apart worden vermeld , die het mogelijk maken om vensters "te tegelkruisen" over het hele scherm, en ook voor sommige applicaties een aparte werkruimte voor elke geopende applicatie in volledig scherm. Dit is iets ongebruikelijk voor mensen die het nog niet eerder hebben gebruikt, maar omdat ik zelf al geruime tijd zo'n interface gebruik, kan ik zeggen dat het heel handig is en je snel aan zo'n interface gewend raakt, waarna "klassieke" vensterbeheerders niet meer zo handig lijken.
- ,
- ,
- ,
- ,
- ,
- qtile,
- bspwm,
- herbstluftwm,
- …
- twin,
- .

Het project en het concept "Composityvensterbeheerder", die gebruik maakt van hardwareversnelling voor het weergeven van transparantie, schaduwen en verschillende driedimensionale effecten. Ongeveer 10 jaar geleden was er een hype rond 3D-effecten op Linux-desktops. Tegenwoordig maken veel vensterbeheerders die in DE zijn ingebouwd, deels gebruik van compositorische mogelijkheden. Onlangs verscheen — een product met vergelijkbare functionaliteit als Compiz onder Wayland.

Een gedetailleerde lijst van verschillende vensterbeheerders kan ook worden bekeken in .
Componenten van DE: overige
Daarnaast moeten de volgende onderdelen van de desktop worden genoemd (hier gebruik ik Engelse gevestigde termen voor de beschrijving van de soorten applicaties — dit zijn geen namen van de applicaties zelf):
- Applets (Applet):
- SO (Widget toolkit) - Vaak wordt met de omgeving een bepaalde 'minimale set' software meegeleverd:
DE (Desktopomgeving)
Van de bovenstaande componenten ontstaat de zogenaamde 'desktopomgeving'. Vaak worden al zijn componenten ontwikkeld met behulp van dezelfde grafische bibliotheken en dezelfde ontwerpprincipes. Hierdoor wordt ten minste een uniforme stijl voor het uiterlijk van applicaties gehandhaafd.
Hier kunnen we de volgende desktopomgevingen onderscheiden die momenteel bestaan:
De meest voorkomende zijn GNOME en KDE, en XFCE komt snel dichterbij.

Een vergelijking op verschillende parameters in de vorm van een tabel kan worden bekeken in het bijbehorende .
Verscheidenheid aan DE

Er zijn zelfs interessante voorbeelden uit de geschiedenis: van 2003 tot 2007 werd voor Linux een '3D-desktop' ontwikkeld met de naam 'Project Looking Glass' door het bedrijf Sun. Ik heb zelf deze desktop gebruikt, of liever gezegd 'mee gespeeld', aangezien het moeilijk was om ermee te werken. Dit '3D-ontwerp' was geschreven in Java in een tijd waarin er nog geen videokaarten waren met 3D-ondersteuning. Daarom werden alle effecten door de processor berekend, en je computer moest erg krachtig zijn, anders werkte alles traag. Maar het was wel mooi. De driedimensionale pictogrammen van applicaties konden draaien/uitvouwen. Je kon je omdraaien in een cilinder van de desktop met een achtergrond in 360 graden panorama. Er waren verschillende mooie applicaties: bijvoorbeeld muziek afspelen in de vorm van 'wisselende CD's', enz. Je kunt op youtube kijken over dit project, hoewel de kwaliteit van deze video's waarschijnlijk slecht zal zijn, omdat er in die jaren geen mogelijkheid was om video in hoge kwaliteit te uploaden.

Lichte desktop. Dit project bestaat al vrij lang, sinds 1996. In de laatste jaren is het vrij populair geworden, in tegenstelling tot de zwaardere KDE en GNOME, waarvoor veel distributies een lichte en 'klassieke' desktopinterface vereisen. Het heeft veel aanpassingsmogelijkheden en een groot aantal eigen programma's: terminal (xfce4-terminal), bestandsbeheerder (thunar), afbeeldingsviewer (ristretto), teksteditor (mousepad).

Gebruikt in de distributie 'Elementary OS'. Hier kan men zeggen dat er 'desktopomgevingen' zijn die zijn ontwikkeld en gebruikt binnen één specifieke distributie en die niet vaak worden gebruikt (om niet te zeggen 'helemaal niet worden gebruikt') in andere distributies. Ten minste hebben ze tot nu toe geen populariteit gewonnen en niet de meeste gebruikers overtuigd van de voordelen van hun aanpak. Pantheon heeft als doel een interface te bouwen die lijkt op macOS.

Variant met dock-paneel:

Sterke focus op grafische effecten en widgets (zelfs vanaf de tijd dat andere desktopomgevingen geen widgets op het bureaublad hadden, zoals een kalender/klok). Maakt gebruik van eigen bibliotheken. Beschikt over een groot aantal 'mooie' applicaties: terminal (Terminology), videospeler (Rage), afbeeldingsviewer (Ephoto).

Dit is een fork van Enlightenment17, die wordt gebruikt in de distributie BodhiLinux.

Oorspronkelijk een 'klassieke' desktopinterface, ontworpen als tegenhanger van KDE, dat was geschreven met de QT-bibliotheek, op dat moment verspreid onder een licentie die niet erg handig was voor commerciële distributies.

Vanaf versie drie wordt GNOME geleverd met de GNOME Shell, die een 'niet-klassieke uitstraling' heeft, wat niet door alle gebruikers werd gewaardeerd (ernstige veranderingen in de interfaces worden door gebruikers moeilijk geaccepteerd). Dit heeft geleid tot de opkomst van fork-projecten die deze desktop in de 'klassieke' stijl blijven ontwikkelen: MATE en Cinnamon. Het wordt standaard gebruikt in veel commerciële distributies. Heeft een groot aantal instellingen en eigen applicaties.

Is ontstaan uit GNOME2 en blijft deze desktopomgeving verder ontwikkelen. Heeft een groot aantal instellingen en forks van applicaties die eerder in GNOME2 werden gebruikt (nieuwe namen worden gebruikt) om de forks niet te verwarren met hun nieuwe versie voor GNOME3).

Een fork van GNOME Shell, die gebruikers een interface biedt in 'klassieke' stijl (zoals het was in GNOME2).
Heeft veel instellingen en dezelfde applicaties als voor GNOME Shell.

Een fork van GNOME in 'klassieke' stijl, die zich heeft ontwikkeld binnen de distributie Solus, maar nu ook wordt aangeboden als een zelfstandige desktopomgeving op verschillende andere distributies.

(of, zoals vaak gewoonlijk genoemd, gewoon KDE)
Desktopomgeving die wordt ontwikkeld binnen het KDE-project.
Heeft een enorme hoeveelheid instellingen die toegankelijk zijn voor de gewone gebruiker vanuit de grafische interface en veel grafische applicaties die ontwikkeld worden binnen deze desktopomgeving.

In 2008 heeft KDE zijn nieuwe implementatie van KDE Plasma uitgebracht (de desktop-engine is grondig herschreven). Net als bij GNOME/MATE waren niet alle KDE-fans enthousiast. Dit leidde tot een fork van het project, dat de ontwikkeling van de vorige versie voortzet onder de naam TDE (Trinity Desktop Environment).

Een van de nieuwe desktopomgevingen, geschreven met gebruik van Qt (waarop KDE is gebaseerd). Het heeft veel instellingen en een vrij mooie (hoewel dit subjectief is) en goed doorwerkte interface. Het wordt ontwikkeld binnen de distributie Deepin Linux. Er zijn ook pakketten voor andere distributies beschikbaar.

Fly
Een voorbeeld van een desktopomgeving, geschreven met gebruik van Qt. Het wordt ontwikkeld binnen de distributie Astra Linux.

Een lichte desktopomgeving. Net als enkele voorgaande voorbeelden, geschreven met gebruik van Qt. Het is in feite een voortzetting van het LXDE-project en het resultaat van de samenwerking met het Razor-qt-project.
Zoals je kunt zien, kan de desktop in Linux er erg verschillend uitzien en er is voor ieders smaak een geschikte interface te vinden: van zeer mooie ontwerpen met 3D-effecten tot minimalistische, van 'klassieke' tot ongebruikelijke interfaces, van die welke veel systeembronnen gebruiken tot lichte interfaces, van grote schermen tot tablets/smartphones.
Ik hoop dat ik een goed beeld heb kunnen geven van de belangrijkste componenten die de grafische interface en desktop in het Linux-besturingssysteem vormen.
Het materiaal voor dit artikel is in juli 2020 getest tijdens een webinar. Je kunt het bekijken. .
Dat is alles. Ik hoop dat het nuttig was. Als je vragen of opmerkingen hebt, schrijf me gerust. Ik beantwoord ze graag. En kom leren bij !
Bron: habr.com
