ProHoster > blog > administratie > Hoe graphics werken in Linux: een overzicht van verschillende desktopomgevingen
Hoe graphics werken in Linux: een overzicht van verschillende desktopomgevingen
Dit artikel gaat over hoe graphics werken in Linux en uit welke componenten het bestaat. Het bevat veel screenshots van verschillende implementaties van desktopomgevingen.
Als u niet echt onderscheid maakt tussen KDE en GNOME, of als u dat wel doet, maar wel wilt weten welke andere alternatieven er zijn, dan is dit artikel iets voor u. Het is een overzicht, en hoewel het veel namen en weinig termen bevat, zal het materiaal ook nuttig zijn voor beginners en voor mensen die alleen maar naar Linux kijken.
Het onderwerp kan ook interessant zijn voor gevorderde gebruikers bij het opzetten van externe toegang en het implementeren van een thin client. Ik kom vaak doorgewinterde Linux-gebruikers tegen met de uitspraak "er is alleen een opdrachtregel op de server, en ik ben niet van plan de graphics in meer detail te bestuderen, aangezien dit allemaal nodig is voor gewone gebruikers." Maar zelfs Linux-experts zijn zeer verrast en blij om de "-X" -optie voor de ssh-opdracht te ontdekken (en hiervoor is het handig om de werking en functies van de X-server te begrijpen).
Bron
Ik geef al bijna 15 jaar Linux-cursussen bij "Netwerk Academie LANIT"en ik ben er zeker van dat veel van de meer dan vijfduizend mensen die ik heb opgeleid artikelen lezen en waarschijnlijk schrijven over Habr. De cursussen zijn altijd erg intensief (de gemiddelde cursusduur is vijf dagen); je moet onderwerpen behandelen die minstens tien dagen vergen om volledig te begrijpen. En altijd maak ik tijdens de cursus, afhankelijk van het publiek (nieuwkomers of doorgewinterde beheerders), en ook van “vragen uit het publiek”, een keuze van wat ik gedetailleerder wil overbrengen en wat oppervlakkiger, om meer aandacht te besteden aan de cursus. tijd voor commandoregelhulpprogramma's en hun praktische toepassing. Er zijn genoeg van dit soort onderwerpen die een beetje opoffering vereisen. Dit zijn "Geschiedenis van Linux", "Verschillen in Linux-distributies", "Over licenties: GPL, BSD, ...", "Over grafische en desktopomgevingen" (het onderwerp van dit artikel), enz. Niet dat ze dat niet zijn belangrijk, maar meestal zijn er veel meer dringende ‘hier en nu’-vragen en slechts ongeveer vijf dagen... Voor een algemeen begrip van de basisprincipes van het Linux-besturingssysteem is echter een goed begrip van de beschikbare diversiteit (zodat zelfs het gebruik van één specifiek Linux-distributie, je hebt nog steeds een bredere kijk op deze hele enorme en uitgestrekte wereld die “Linux” wordt genoemd, het bestuderen van deze onderwerpen is nuttig en noodzakelijk.
Naarmate het artikel vordert, geef ik links voor elk onderdeel voor degenen die dieper in het onderwerp willen duiken, bijvoorbeeld naar Wikipedia-artikelen (terwijl ik naar een completere/nuttigere versie verwijs als er Engelse en Russische artikelen zijn).
Voor basisvoorbeelden en schermafbeeldingen heb ik de openSUSE-distributie gebruikt. Elke andere door de gemeenschap ontwikkelde distributie kan worden gebruikt, zolang er maar een groot aantal pakketten in de repository aanwezig zijn. Het is moeilijk, maar niet onmogelijk, om de verscheidenheid aan desktopontwerpen op een commerciële distributie te demonstreren, aangezien deze vaak slechts een of twee van de meest bekende desktopomgevingen gebruiken. Op deze manier beperken ontwikkelaars de taak van het uitbrengen van een stabiel besturingssysteem zonder fouten. Op hetzelfde systeem heb ik alle DM/DE/WM (uitleg van deze termen hieronder) geïnstalleerd die ik in de repository vond.
Schermafbeeldingen met “blauwe kaders” zijn gemaakt op openSUSE.
Ik heb screenshots gemaakt met "witte frames" op andere distributies, deze worden aangegeven in de screenshot.
Schermafbeeldingen met “grijze kaders” zijn van internet gehaald, als voorbeelden van desktopontwerpen van de afgelopen jaren.
Laten we beginnen.
De belangrijkste componenten waaruit afbeeldingen bestaan
Ik zal drie hoofdcomponenten benadrukken en ze opsommen in de volgorde waarin ze worden gestart bij het opstarten van het systeem:
DM (Displaymanager);
Weergaveserver;
DE (Desktopomgeving).
Bovendien, als belangrijke subclausules van de Desktop Environment:
Apps Manager/Launcher/Switcher (Start-knop);
WM (Vensterbeheer);
verschillende software die bij de desktopomgeving wordt geleverd.
Meer details over elk punt.
DM (Displaymanager)
De eerste applicatie die wordt gestart wanneer u “graphics” start, is DM (Display Manager), een displaymanager. Zijn belangrijkste taken:
vragen welke gebruikers toegang moeten krijgen tot het systeem, authenticatiegegevens opvragen (wachtwoord, vingerafdruk);
kies welke desktopomgeving u wilt uitvoeren.
Momenteel veel gebruikt in verschillende distributies:
Je kunt ook Fly-DM noemen (gebruikt in AstraLinux).
De lijst met bestaande DM's wordt actueel gehouden in Wiki-artikel.
Het is vermeldenswaard dat de volgende schermafbeeldingen dezelfde LightDM-weergavemanager gebruiken, maar in verschillende distributies (distributienamen worden tussen haakjes aangegeven). Ontdek hoe anders deze DM eruit kan zien dankzij het werk van ontwerpers uit verschillende distributies.
Het belangrijkste in deze diversiteit is om duidelijk te maken dat er een applicatie is die verantwoordelijk is voor het starten van afbeeldingen en de gebruiker toegang geeft tot deze afbeeldingen, en dat er verschillende implementaties van deze applicatie zijn die qua uiterlijk en enigszins qua functionaliteit verschillen (selectie van ontwerpomgevingen, selectie van gebruikers, versie voor slechtziende gebruikers, beschikbaarheid van externe toegang via protocol XDMCP).
Weergaveserver
Display Server is een soort grafische basis, waarvan de hoofdtaak is om te werken met een videokaart, monitor en verschillende invoerapparaten (toetsenbord, muis, touchpads). Dat wil zeggen dat een applicatie (bijvoorbeeld een browser of teksteditor) die in "grafische weergave" wordt weergegeven, niet hoeft te weten hoe hij rechtstreeks met apparaten moet werken, en ook niet over stuurprogramma's. X Window zorgt voor dit alles.
Als we het over Display Server hadden, werd jarenlang onder Linux en zelfs onder Unix de applicatie bedoeld X Window System of in het gewone taalgebruik X (X).
X's onder Windows OS (nodig om grafische applicaties op afstand te starten, bijvoorbeeld met PuTTY).
Laten we eerst X's en verschillende grafische toepassingen daarin lanceren.
Workshop “X en applicaties daarin draaien”
Ik zal alles doen vanuit de nieuw aangemaakte webinaruser-gebruiker (het zou gemakkelijker zijn, maar niet veiliger, om alles als root te doen).
Omdat X's toegang tot apparaten nodig hebben, geef ik toegang: De lijst met apparaten werd bepaald door te kijken naar de fouten bij het starten van X in het logbestand (/home/webinauser/.local/share/xorg/Xorg.77.log)
Opties: * -retro - start met een “grijze” klassieke achtergrond, en niet met zwart als standaard; * :77 - Ik heb een schermnummer ingesteld (alles binnen een redelijk bereik is mogelijk, alleen :0 is hoogstwaarschijnlijk al bezet door de reeds actieve grafische weergave), feitelijk een soort unieke identificatie waarmee het mogelijk zal zijn om verschillende actieve X's te onderscheiden; * vt8 - geeft de terminal aan, hier /dev/tty8, waarop X's worden weergegeven).
Start de grafische applicatie:
Om dit te doen, stellen we eerst een variabele in waarmee de applicatie begrijpt welke van de X's ik heb draaien om te verzenden wat er moet worden getekend:
% export DISPLAY=":77"
U kunt de lijst met actieve X's als volgt bekijken:
ps -fwwC X
Nadat we de variabele hebben ingesteld, kunnen we applicaties in onze Xs starten - ik start bijvoorbeeld een klok:
% xclock -update 1 &
% xcalc &
% xeyes -g 200x150-300+50 &
Belangrijkste ideeën en conclusies uit dit fragment:
X's hebben toegang nodig tot apparaten: terminal, videokaart, invoerapparaten,
De X's zelf geven geen interface-elementen weer - het is een grijs (indien met de "--retro" optie) of zwart canvas van bepaalde formaten (bijvoorbeeld 1920x1080 of 1024x768) om er grafische applicaties in uit te voeren.
De beweging van het ‘kruis’ laat zien dat de X’s de positie van de muis volgen en deze informatie doorgeven aan de applicaties die erop draaien.
X's vangen ook toetsaanslagen op het toetsenbord op en verzenden deze informatie naar applicaties.
De DISPLAY-variabele vertelt grafische applicaties in welk scherm (elke X's worden bij het opstarten gestart met een uniek schermnummer), en dus in welke van de applicaties die op mijn machine draaien, de X's moeten worden getekend. (Het is ook mogelijk om een externe machine in deze variabele te specificeren en uitvoer naar Xs te sturen die op een andere machine op het netwerk draait.) Omdat Xs werd gelanceerd zonder de optie -auth, is het niet nodig om met de XAUTHORITY-variabele of de xhost om te gaan. commando.
Grafische applicaties (of zoals X-clients ze noemen) worden weergegeven in X's - zonder de mogelijkheid om ze te verplaatsen/sluiten/wijzigen "-g (Width)x(Height)+(OffsetFromLeftEdge)+(OffsetFromTopEdge)". Met een minteken respectievelijk vanaf de rechterkant en vanaf de onderkant.
Twee termen die het vermelden waard zijn: X-server (zo worden X's genoemd) en X-clients (zo wordt elke grafische applicatie genoemd die in X's draait). Er bestaat enige verwarring bij het begrijpen van deze terminologie; velen begrijpen het precies het tegenovergestelde. In het geval dat ik verbinding maak vanaf een “clientmachine” (in terminologie voor externe toegang) met een “server” (in terminologie voor externe toegang) om een grafische toepassing van de server op mijn monitor weer te geven, dan start de X-server op de machine waar de monitor (dat wil zeggen, op de “clientmachine”, niet op de “server”), en X-clients starten en draaien op de “server”, hoewel ze worden weergegeven op de monitor van de “clientmachine”.
DE-componenten
Laten we vervolgens eens kijken naar de componenten waaruit gewoonlijk een bureaublad bestaat.
DE-componenten: Startknop en taakbalk
Laten we beginnen met de zogenaamde "Start" -knop. Vaak is dit een aparte applet die in de "Taakbalk" wordt gebruikt. Er is meestal ook een applet om te schakelen tussen actieve applicaties.
Nadat ik naar verschillende desktopomgevingen heb gekeken, zou ik dergelijke applicaties samenvatten onder de algemene naam "Apps Manager (Launcher/Switcher)", dat wil zeggen een hulpmiddel voor het beheren van applicaties (starten en schakelen tussen actieve applicaties), en ook hulpprogramma's aangeven die een voorbeeld van dit soort toepassing.
Het komt in de vorm van de “Start”-knop op de klassieke (de gehele lengte van een van de randen van het scherm) “Taakbalk”:
Je kunt ook een aparte "MacOS-vormige taakbalk" hebben (niet de volledige lengte van de rand van het scherm), hoewel veel taakbalken in beide stijlen kunnen verschijnen. Hier is het belangrijkste verschil eerder puur visueel: de aanwezigheid van een “pictogramvergrotingseffect bij het zweven.”
○ dok,
○ latte-dock,
○ Caïro-dok,
○ plank.
En/of een service die applicaties start wanneer u op sneltoetsen drukt (in veel desktopomgevingen is een soortgelijk onderdeel vereist waarmee u uw eigen sneltoetsen kunt configureren):
○ sxhkd.
Er zijn ook verschillende menu-achtige “launchers” (van het Engelse Launch (launch)):
WM (Window Manager) - een applicatie die verantwoordelijk is voor het beheer van vensters, voegt de mogelijkheid toe om:
vensters over het bureaublad verplaatsen (inclusief de standaardversie waarbij u de Alt-toets ingedrukt houdt op een willekeurig deel van het venster, niet alleen op de titelbalk);
het formaat van vensters wijzigen, bijvoorbeeld door het “raamkozijn” te slepen;
voegt een “titel” en knoppen voor het minimaliseren/maximaliseren/sluiten van de applicatie toe aan de vensterinterface;
het concept van welke toepassing “in focus” is.
Ik zet de bekendste op een rij (tussen haakjes geef ik aan welke DE standaard gebruikt wordt):
Ik zal ook "oude WM met DE-elementen" vermelden. Die. naast de vensterbeheerder hebben ze elementen zoals de knop "Start" en "Taakbalk", die meer typerend zijn voor volwaardige DE. Hoewel, hoe “oud” zijn ze als zowel IceWM als WindowMaker hun bijgewerkte versies al in 2020 hebben uitgebracht. Het blijkt dat het juister is, niet "oud", maar "oldtimers":
Naast de "klassieker" ("Stack Window Managers") is het een speciale vermelding waard betegelde WM, waarmee u vensters over het hele scherm “betegeld” kunt plaatsen, en voor sommige applicaties een apart bureaublad voor elke gestarte applicatie op het hele scherm. Dit is een beetje ongebruikelijk voor mensen die ze nog niet eerder hebben gebruikt, maar aangezien ik zelf al een hele tijd zo'n interface gebruik, kan ik zeggen dat het best handig is en je snel aan zo'n interface gewend raakt, waarna “klassieke” vensterbeheerders lijken niet langer handig.
Het project is ook afzonderlijk het vermelden waard Compiz en een concept als de “Composite Window Manager”, dat hardwareversnellingsmogelijkheden gebruikt om transparantie, schaduwen en verschillende driedimensionale effecten weer te geven. Ongeveer 10 jaar geleden was er een enorme groei in 3D-effecten op Linux-desktops. Tegenwoordig maken veel van de in DE ingebouwde vensterbeheerders gedeeltelijk gebruik van samengestelde mogelijkheden. Onlangs verschenen Wegvuur - een product met vergelijkbare functionaliteit als Compiz voor Wayland.
Een gedetailleerde lijst met verschillende vensterbeheerders kunt u ook vinden in vergelijking artikel.
DE-componenten: rust
Het is ook de moeite waard om de volgende desktopcomponenten te vermelden (hier gebruik ik gevestigde Engelse termen om een type applicatie te beschrijven - dit zijn niet de namen van de applicaties zelf):
Applets:
Software (Widget toolkit) - vaak wordt een bepaalde “minimale set” software meegeleverd met de omgeving:
Uit de bovenstaande componenten wordt de zogenaamde “Desktop Design Environment” verkregen. Vaak zijn alle componenten ontwikkeld met behulp van dezelfde grafische bibliotheken en dezelfde ontwerpprincipes. Zo blijft op zijn minst de algemene stijl voor het uiterlijk van applicaties behouden.
Hier kunnen we de volgende momenteel bestaande desktopomgevingen benadrukken:
Er zijn zelfs zulke interessante voorbeelden uit de geschiedenis: in 2003-2007 werd een “3D desktop-ontwerp” gemaakt voor Linux met de naam “Project Looking Glass” van Sun. Ik heb zelf deze desktop gebruikt, of beter gezegd, ermee 'gespeeld', omdat hij moeilijk te gebruiken was. Dit “3D-ontwerp” is geschreven in Java in een tijd dat er nog geen videokaarten waren met 3D-ondersteuning. Daarom werden alle effecten herberekend door de processor en moest de computer erg krachtig zijn, anders werkte alles langzaam. Maar het is prachtig geworden. Driedimensionale applicatietegels kunnen worden geroteerd/uitgevouwen. Het was mogelijk om in de cilinder van het bureaublad met behang te roteren vanuit een 360 graden panorama. Er waren verschillende mooie toepassingen: bijvoorbeeld muziek luisteren in de vorm van ‘cd’s verwisselen’ etc. Je kunt het bekijken op YouTube video over dit project zal alleen de kwaliteit van deze video's hoogstwaarschijnlijk slecht zijn, aangezien het in die jaren niet mogelijk was om video's van hoge kwaliteit te uploaden.
Lichtgewicht bureaublad. Het project bestaat al geruime tijd, sinds 1996. De afgelopen jaren is het behoorlijk populair geweest, in tegenstelling tot de zwaardere KDE en GNOME, op veel distributies die een lichtgewicht en “klassieke” desktopinterface vereisen. Het heeft veel instellingen en een groot aantal eigen programma's: terminal (xfce4-terminal), bestandsbeheerder (thunar), fotoviewer (ristretto), teksteditor (mousepad).
Gebruikt in de Elementary OS-distributie. Hier kunnen we zeggen dat er “desktops” zijn die zijn ontwikkeld en gebruikt binnen één afzonderlijke distributie en die niet veel worden gebruikt (zo niet “helemaal niet gebruikt”) in andere distributies. Ze zijn tenminste nog niet populair geworden en hebben het grootste deel van het publiek overtuigd van de voordelen van hun aanpak. Pantheon wil een interface bouwen die lijkt op macOS.
Sterke focus op grafische effecten en widgets (uit de tijd dat andere desktopomgevingen nog geen desktopwidgets zoals kalender/klok hadden). Gebruikt zijn eigen bibliotheken. Er is een groot aantal eigen “mooie” toepassingen: terminal (Terminology), videospeler (Rage), fotoviewer (Ephoto).
Aanvankelijk werd een "klassieke" desktopinterface gemaakt, in tegenstelling tot KDE, die in de QT-bibliotheek was geschreven, destijds gedistribueerd onder een licentie die niet erg handig was voor commerciële distributies.
Vanaf de derde versie begon GNOME met de GNOME Shell, die een “niet-klassieke look” heeft, wat niet alle gebruikers leuk vonden (elke plotselinge verandering in interfaces is voor gebruikers moeilijk te accepteren). Als gevolg hiervan is er de opkomst van fork-projecten die de ontwikkeling van deze desktop in de “klassieke” stijl voortzetten: MATE en Cinnamon. Standaard gebruikt in veel commerciële distributies. Het heeft een groot aantal instellingen en zijn eigen toepassingen.
Het is voortgekomen uit GNOME2 en blijft deze ontwerpomgeving ontwikkelen. Het heeft een groot aantal instellingen en applicatievorken die in GNOME2 werden gebruikt (nieuwe namen worden gebruikt) om de vorken niet te verwarren met hun nieuwe versie voor GNOME3).
Een vork in "klassieke" stijl van GNOME die is ontwikkeld als onderdeel van de Solus-distributie, maar nu ook als zelfstandige desktop op verschillende andere distributies wordt geleverd.
KDE_Plasma (of zoals het vaak wordt genoemd, gewoon KDE)
Een desktopomgeving ontwikkeld door het KDE-project.
Het heeft een groot aantal instellingen beschikbaar voor de eenvoudige gebruiker via de grafische interface en vele grafische applicaties die binnen het raamwerk van deze desktop zijn ontwikkeld.
In 2008 bracht KDE zijn nieuwe implementatie van KDE Plasma uit (de desktop-engine werd zwaar herschreven). Bovendien vonden niet alle KDE-fans het leuk, net als bij GNOME/MATE. Als gevolg hiervan verscheen er een afsplitsing van het project, waarmee de ontwikkeling van de vorige versie werd voortgezet, genaamd TDE (Trinity Desktop Environment).
Een van de nieuwe bureaubladomgevingen geschreven met Qt (waarop KDE is geschreven). Het heeft veel instellingen en is best mooi (hoewel dit een subjectief concept is) en goed ontwikkelde interface. Ontwikkeld als onderdeel van de Deepin Linux-distributie. Er zijn ook pakketten voor andere distributies
Vliegen
Een voorbeeld van een desktopomgeving geschreven met Qt. Ontwikkeld als onderdeel van de Astra Linux-distributie.
Lichtgewicht desktopomgeving. Net als verschillende eerdere voorbeelden, geschreven met Qt. In feite is het een voortzetting van het LXDE-project en het resultaat van een fusie met het Razor-qt-project.
Zoals je kunt zien kan de desktop in Linux er heel anders uitzien en is er voor ieders smaak een geschikte interface: van heel mooi en met 3D-effecten tot minimalistisch, van “klassiek” tot ongewoon, van actief gebruik maken van systeembronnen tot lichtgewicht, van groot schermen naar tablets/smartphones.
Nou, ik zou graag willen hopen dat ik een idee heb kunnen geven van wat de belangrijkste componenten van de grafische kaart en de desktop in Linux OS zijn.
Het materiaal voor dit artikel is in juli 2020 getest tijdens een webinar. Je kunt het bekijken hier.
Dat is alles. Ik hoop dat dit nuttig was. Als u vragen of opmerkingen heeft, kunt u schrijven. Ik zal blij zijn om te antwoorden. Nou, kom dan studeren bij "LANIT Netwerkacademie"!