Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer

Denne artikkelen handler om hvordan grafikk fungerer i Linux og hvilke komponenter den består av. Den inneholder mange skjermbilder av ulike implementeringer av skrivebordsmiljøer. 

Hvis du egentlig ikke skiller mellom KDE og GNOME, eller du gjør det, men ønsker å vite hvilke andre alternativer som finnes, så er denne artikkelen for deg. Det er en oversikt, og selv om det inneholder mange navn og få termer, vil materialet også være nyttig for nybegynnere og de som bare ser mot Linux.

Emnet kan også være av interesse for avanserte brukere når de konfigurerer ekstern tilgang og implementerer en tynnklient. Jeg møter ofte erfarne Linux-brukere med utsagnene "det er bare en kommandolinje på serveren, og jeg planlegger ikke å studere grafikk mer detaljert, siden alt dette er nødvendig for vanlige brukere." Men selv Linux-eksperter er veldig overrasket og glade for å oppdage "-X"-alternativet for ssh-kommandoen (og for dette er det nyttig å forstå driften og funksjonene til X-serveren).

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøerKilde

Jeg har undervist i Linux-kurs i nesten 15 år på "Network Academy LANIT«og jeg er sikker på at mange av de mer enn fem tusen menneskene som jeg trente, leser og sannsynligvis skriver artikler om Habr. Kursene er alltid veldig intense (gjennomsnittlig kursvarighet er fem dager); du må dekke emner som krever minst ti dager for å forstå fullt ut. Og alltid i løpet av kurset, avhengig av publikum (nybegynnere samlet eller erfarne administratorer), så vel som på "spørsmål fra publikum", tar jeg et valg om hva jeg skal formidle mer detaljert og hva mer overfladisk, for å vie mer tid til kommandolinjeverktøy og deres praktiske anvendelse. Det er nok slike emner som krever litt ofre. Dette er "History of Linux", "Differences in Linux-distribusjoner", "Om lisenser: GPL, BSD, ...", "Om grafikk og skrivebordsmiljøer" (emnet for denne artikkelen), osv. Ikke at de ikke er det viktig, men vanligvis er det mange flere presserende "her og nå"-spørsmål og bare omtrent fem dager... Men for en generell forståelse av det grunnleggende om Linux OS, en forståelse av det tilgjengelige mangfoldet (slik at selv ved å bruke en spesifikk Linux-distribusjon, du har fortsatt et bredere syn på hele denne enorme og enorme verden som kalles "Linux"), å studere disse emnene er nyttig og nødvendig. 

Etter hvert som artikkelen skrider frem gir jeg lenker for hver komponent for de som ønsker å dykke dypere inn i emnet, for eksempel til Wikipedia-artikler (samtidig som jeg peker på en mer komplett/nyttig versjon hvis det er engelske og russiske artikler).

For grunnleggende eksempler og skjermbilder brukte jeg openSUSE-distribusjonen. Enhver annen fellesskapsutviklet distribusjon kunne brukes, så lenge det var et stort antall pakker i depotet. Det er vanskelig, men ikke umulig, å demonstrere variasjonen av skrivebordsdesign på en kommersiell distribusjon, da de ofte bare bruker ett eller to av de mest kjente skrivebordsmiljøene. På denne måten begrenser utviklere oppgaven med å gi ut et stabilt, feilsøkt OS. På det samme systemet installerte jeg alle DM/DE/WM (forklaring av disse vilkårene nedenfor) som jeg fant i depotet. 

Skjermbilder med "blå rammer" ble tatt på openSUSE. 

Jeg tok skjermbilder med "hvite rammer" på andre distribusjoner, de er angitt i skjermbildet. 

Skjermbilder med "grå rammer" ble hentet fra Internett, som eksempler på skrivebordsdesign fra tidligere år.

Så la oss begynne.

Основные компоненты, из которых состоит графика

Jeg vil fremheve tre hovedkomponenter og liste dem i den rekkefølgen de lanseres ved systemoppstart: 

  1. DM (Display Manager);
  2. Display Server;
  3. DE (Desktop Environment).

I tillegg, som viktige underklausuler i skrivebordsmiljøet: 

  • Apps Manager/Launcher/Switcher (Start-knapp); 
  • WM (Window Manager);
  • diverse programvare som følger med skrivebordsmiljøet.

Flere detaljer om hvert punkt.

DM (Display Manager)

Den første applikasjonen som starter når du starter "grafikk" er DM (Display Manager), en skjermbehandler. Dens hovedoppgaver:

  • spør hvilke brukere som skal tillates inn i systemet, be om autentiseringsdata (passord, fingeravtrykk);
  • velge hvilket skrivebordsmiljø som skal kjøres.

For tiden mye brukt i forskjellige distribusjoner: 

Listen over eksisterende DM-er holdes oppdatert i Wiki-artikkel. 

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Det er verdt å merke seg at følgende skjermbilder bruker samme LightDM-skjermbehandler, men i forskjellige distribusjoner (distribusjonsnavn er angitt i parentes). Se hvor annerledes denne DM-en kan se ut takket være arbeidet til designere fra forskjellige distribusjoner.

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Hovedsaken i dette mangfoldet er å gjøre det klart at det er en applikasjon som er ansvarlig for å lansere grafikk og la brukeren få tilgang til denne grafikken, og det er forskjellige implementeringer av denne applikasjonen som er forskjellige i utseende og litt i funksjonalitet (utvalg av designmiljøer, valg av brukere, versjon for dårlig seende brukere, tilgjengelighet av ekstern tilgang via protokoll XDMCP).

Vis server

Display Server er et slags grafikkfundament, hvis hovedoppgave er å jobbe med et skjermkort, skjerm og ulike inndataenheter (tastatur, mus, berøringsplater). Det vil si at en applikasjon (for eksempel en nettleser eller tekstredigerer) som er gjengitt i "grafikk" ikke trenger å vite hvordan man direkte jobber med enheter, og den trenger heller ikke vite om drivere. X Window tar seg av alt dette.

Når vi snakker om Display Server, i mange år i Linux, og til og med i Unix, var applikasjonen ment X Window System eller på vanlig språk X (X). 

Nå erstatter mange distribusjoner X Wayland. 

Du kan også lese:

Først, la oss starte X-er og flere grafiske applikasjoner i dem.

Workshop «kjører X og applikasjoner i den»

Jeg vil gjøre alt fra den nyopprettede webinaruser-brukeren (det ville vært enklere, men ikke sikrere, å gjøre alt som root).

  • Siden X trenger tilgang til enheter, gir jeg tilgang: Listen over enheter ble bestemt ved å se på feilene ved 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/*

  • Etter det starter jeg X-er:

% X -retro :77 vt8 & 

Alternativer: * -retro - start med en "grå" klassisk bakgrunn, og ikke med svart som standard; * :77 - Jeg setter (alle innenfor et rimelig område er mulig, bare :0 er mest sannsynlig allerede okkupert av grafikken som allerede kjører) skjermnummer, faktisk en slags unik identifikator som det vil være mulig å skille mellom flere kjørende X-er; * vt8 - indikerer terminalen, her /dev/tty8, som X-er vil vises på). 

  • Start den grafiske applikasjonen:

For å gjøre dette setter vi først en variabel som applikasjonen vil forstå hvilke av X-ene jeg kjører for å sende det som må tegnes: 

% export DISPLAY=":77" 

Du kan se listen over kjørende X-er slik: 

ps -fwwC X

Etter at vi har satt variabelen, kan vi starte applikasjoner i X-ene våre - for eksempel starter jeg en klokke:

% xclock -update 1 & 

% xcalc & 

% xeyes -g 200x150-300+50 &

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Hovedideer og konklusjoner fra dette fragmentet:

  • X trenger tilgang til enheter: terminal, skjermkort, inngangsenheter,
  • X-ene i seg selv viser ingen grensesnittelementer - det er et grått (hvis med alternativet "--retro") eller svart lerret i visse størrelser (for eksempel 1920x1080 eller 1024x768) for å kjøre grafiske applikasjoner i den.
  • Bevegelsen av "korset" viser at X-ene sporer musens posisjon og overfører denne informasjonen til applikasjonene som kjører i den.
  • X-er fanger også opp tastetrykk på tastaturet og overfører denne informasjonen til applikasjoner.
  • DISPLAY-variabelen forteller grafiske applikasjoner i hvilken skjerm (hver X-er startes med et unikt skjermnummer ved oppstart), og derfor i hvilke av de som kjører på maskinen min, X-ene må tegnes. (Det er også mulig å spesifisere en ekstern maskin i denne variabelen og sende utdata til Xs som kjører på en annen maskin på nettverket.) Siden Xs ble lansert uten -auth-alternativet, er det ikke nødvendig å håndtere XAUTHORITY-variabelen eller xhost kommando.
  • Grafiske applikasjoner (eller som X-klienter kaller dem) gjengis i X-er - uten mulighet til å flytte/lukke/endre dem "-g (Width)x(Height)+(OffsetFromLeftEdge)+(OffsetFromTopEdge)". Med et minustegn, henholdsvis fra høyre og fra underkant.
  • To begreper som er verdt å nevne: X-server (det er det X-er kalles) og X-klienter (det er hva enhver grafisk applikasjon som kjører i X-er kalles). Det er litt forvirring i å forstå denne terminologien; mange forstår det nøyaktig motsatt. I tilfellet når jeg kobler fra en "klientmaskin" (i fjerntilgangsterminologi) til en "server" (i fjerntilgangsterminologi) for å vise en grafisk applikasjon fra serveren på skjermen min, starter X-serveren på maskin der skjermen (det vil si på "klientmaskinen", ikke på "serveren"), og X-klienter starter og kjører på "serveren", selv om de vises på skjermen til "klientmaskinen". 

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer

DE komponenter

La oss deretter se på komponentene som vanligvis utgjør et skrivebord.

DE-komponenter: Start-knapp og oppgavelinje

La oss starte med den såkalte "Start"-knappen. Ofte er dette en egen applet som brukes i "Oppgavelinjen". Det er også vanligvis en applet for å bytte mellom kjørende applikasjoner.

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Etter å ha sett på forskjellige skrivebordsmiljøer, vil jeg oppsummere slike applikasjoner under det generelle navnet "Apps Manager (Launcher/Switcher)", det vil si et verktøy for å administrere applikasjoner (starte og bytte mellom kjørende), og også angi verktøy som er en eksempel på denne typen applikasjoner.

  • Den kommer i form av "Start"-knappen på klassikeren (hele lengden av en av kantene på skjermen) "Oppgavelinje":

    ○ xfce4-panel,
    ○ kamerat-panel/nisse-panel,
    ○ vala-panel,
    ○ fargetone2.

  • Du kan også ha en egen "MacOS-formet oppgavelinje" (ikke hele lengden på kanten av skjermen), selv om mange oppgavelinjer kan vises i begge stilene. Her er hovedforskjellen snarere rent visuell - tilstedeværelsen av en "piktogramforstørrelseseffekt ved sveving."

    ○ docky,
    ○ latte-dock,
    ○ kairo-dokk,
    ○ planke.

  • Og/eller en tjeneste som starter programmer når du trykker på hurtigtaster (i mange skrivebordsmiljøer kreves en lignende komponent og lar deg konfigurere dine egne hurtigtaster):

    ○ sxhkd.

  • Det er også forskjellige menylignende "launchers" (fra den engelske Launch (lansering)):

    ○ dmenu-run,
    ○ rofi -show drun,
    ○ albert,
    ○ grynt.

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer

DE-komponenter: WM (Window Manager)

Flere detaljer på russisk

Flere detaljer på engelsk

WM (Window Manager) - et program som er ansvarlig for å administrere vinduer, legger til muligheten til å:

  • flytte vinduer rundt skrivebordet (inkludert standarden med å holde nede Alt-tasten på hvilken som helst del av vinduet, ikke bare tittellinjen);
  • endre størrelse på vinduer, for eksempel ved å dra "vindusrammen";
  • legger til en "tittel" og knapper for å minimere/maksimere/lukke applikasjonen til vindusgrensesnittet;
  • konseptet for hvilken applikasjon som er i "fokus".

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Jeg vil liste opp de mest kjente (i parentes angir jeg hvilken DE som brukes som standard):

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Jeg vil også liste "gamle WM med DE-elementer". De. i tillegg til vindusbehandlingen har de elementer som "Start"-knappen og "Taskbar", som er mer typisk for fullverdig DE. Selv om hvor "gamle" er de hvis både IceWM og WindowMaker allerede har gitt ut sine oppdaterte versjoner i 2020. Det viser seg at det er mer riktig ikke "gammelt", men "gammelt":

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
I tillegg til "klassikeren" ("stabelvindusbehandlere") er det verdt å nevne spesielt flislagt WM, som lar deg plassere vinduer "flislagt" over hele skjermen, samt for noen applikasjoner et eget skrivebord for hver lansert applikasjon på hele skjermen. Dette er litt uvanlig for folk som ikke har brukt dem før, men siden jeg selv har brukt et slikt grensesnitt ganske lenge, kan jeg si at det er ganske praktisk og man blir raskt vant til et slikt grensesnitt, hvoretter "klassiske" vindusbehandlere virker ikke lenger praktiske.

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Prosjektet er også verdt å nevne separat Compiz og et slikt konsept som "Composite Window Manager", som bruker maskinvareakselerasjonsmuligheter for å vise gjennomsiktighet, skygger og forskjellige tredimensjonale effekter. For omtrent 10 år siden var det en boom i 3D-effekter på Linux-stasjonære datamaskiner. I dag gjør mange av vindusbehandlerne innebygd i DE delvis bruk av komposittfunksjoner. Dukket nylig opp Wayfire - et produkt med lignende funksjonalitet som Compiz for Wayland.

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
En detaljert liste over ulike vindusbehandlere finner du også i  sammenligningsartikkel.

DE komponenter: hvile

Det er også verdt å merke seg følgende skrivebordskomponenter (her bruker jeg etablerte engelske termer for å beskrive en type applikasjon - dette er ikke navnene på applikasjonene i seg selv):

  • Appleter:
  • Programvare (widget-verktøysett) - ofte leveres et visst "minimumssett" av programvare med miljøet:

DE (skrivebordsmiljø)

Flere detaljer på engelsk

Fra komponentene ovenfor oppnås det såkalte "Desktop Design Environment". Ofte er alle komponentene utviklet ved å bruke de samme grafikkbibliotekene og de samme designprinsippene. Dermed opprettholdes som et minimum den generelle stilen for utseendet til applikasjoner.

Her kan vi fremheve følgende eksisterende skrivebordsmiljøer:

GNOME og KDE regnes som de vanligste, og XFCE er tett i hælene.

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
En sammenligning av ulike parametere i form av en tabell kan finnes i den tilsvarende Wikipedia-artikkel.  

DE variasjon

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Project_Looking_Glass

Det er til og med slike interessante eksempler fra historien: i 2003-2007 ble det laget et "3D desktop design" for Linux med navnet "Project Looking Glass" fra Sun. Jeg brukte selv dette skrivebordet, eller rettere sagt "lekt" med det, da det var vanskelig å bruke. Denne "3D-designen" ble skrevet i Java på en tid da det ikke fantes skjermkort med 3D-støtte. Derfor ble alle effekter beregnet på nytt av prosessoren, og datamaskinen måtte være veldig kraftig, ellers fungerte alt sakte. Men det ble vakkert. Tredimensjonale applikasjonsfliser kan roteres/utvides. Det var mulig å rotere i sylinderen på skrivebordet med bakgrunnsbilde fra et 360-graders panorama. Det var flere vakre applikasjoner: for eksempel å lytte til musikk i form av å "bytte CDer" osv. Du kan se den på YouTube video om dette prosjektet er det mest sannsynlig at kvaliteten på disse videoene vil være dårlig, siden det i disse årene ikke var mulig å laste opp videoer av høy kvalitet.

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Xfce

Lett skrivebord. Prosjektet har eksistert ganske lenge, siden 1996. De siste årene har det vært ganske populært, i motsetning til de tyngre KDE og GNOME, på mange distribusjoner som krever et lett og "klassisk" skrivebordsgrensesnitt. Den har mange innstillinger og et stort antall egne programmer: terminal (xfce4-terminal), filbehandling (thunar), bildeviser (ristretto), tekstredigerer (musematte).

 
Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Pantheon 

Brukes i Elementary OS-distribusjonen. Her kan vi si at det er "desktops" som er utviklet og brukt innenfor en separat distribusjon og er lite brukt (hvis ikke "ikke brukt i det hele tatt") i andre distribusjoner. I det minste har de ennå ikke vunnet popularitet og overbevist de fleste av publikum om fordelene ved deres tilnærming. Pantheon har som mål å bygge et grensesnitt som ligner på macOS. 

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Alternativ med dokkingpanel:

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Opplysning

Sterkt fokus på grafiske effekter og widgets (fra tiden da andre skrivebordsmiljøer ikke hadde skrivebordswidgets som kalender/klokke). Bruker egne biblioteker. Det er et stort sett med sine egne "vakre" applikasjoner: terminal (Terminologi), videospiller (Rage), bildeviser (Ephoto).

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
moksha

Dette er en gaffel av Enlightenment17, som brukes i BodhiLinux-distribusjonen. 

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
GNOME

Opprinnelig et "klassisk" skrivebordsgrensesnitt, laget i motsetning til KDE, som ble skrevet i QT-biblioteket, på den tiden distribuert under en lisens som ikke var veldig praktisk for kommersielle distribusjoner. 

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
GNOME_Shell

Fra den tredje versjonen begynte GNOME å komme med GNOME-skallet, som har et "ikke-klassisk utseende", som ikke alle brukere likte (alle plutselige endringer i grensesnitt er vanskelig for brukere å akseptere). Som en konsekvens, fremveksten av gaffelprosjekter som fortsetter utviklingen av dette skrivebordet i den "klassiske" stilen: MATE og Cinnamon. Brukes som standard i mange kommersielle distribusjoner. Den har et stort antall innstillinger og egne applikasjoner. 

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
KAMERAT 

Det dukket opp fra GNOME2 og fortsetter å utvikle dette designmiljøet. Den har et stort antall innstillinger og applikasjonsgafler som ble brukt tilbake i GNOME2 (nye navn er brukt) for ikke å forveksle gaflene med deres nye versjon for GNOME3).

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Kanel

En gaffel av GNOME Shell som gir brukerne et "klassisk" stilgrensesnitt (som tilfellet var i GNOME2). 

Den har et stort antall innstillinger og de samme applikasjonene som for GNOME Shell.

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
budgie

En "klassisk" stilgaffel av GNOME som ble utviklet som en del av Solus-distribusjonen, men som nå også kommer som et frittstående skrivebord på forskjellige andre distribusjoner.

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
KDE_Plasma (eller som det ofte kalles, ganske enkelt KDE) 

Et skrivebordsmiljø utviklet av KDE-prosjektet. 

Den har et stort antall innstillinger tilgjengelig for den enkle brukeren fra det grafiske grensesnittet og mange grafiske applikasjoner utviklet innenfor rammen av dette skrivebordet.

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Trinity

I 2008 ga KDE ut sin nye implementering av KDE Plasma (skrivebordsmotoren ble kraftig omskrevet). Også, som med GNOME/MATE, likte ikke alle KDE-fans det. Som et resultat dukket det opp en del av prosjektet, som fortsatte utviklingen av den forrige versjonen, kalt TDE (Trinity Desktop Environment).

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Deepin_DE

Et av de nye skrivebordsmiljøene skrevet med Qt (som KDE er skrevet på). Den har mange innstillinger og er ganske vakker (selv om dette er et subjektivt konsept) og velutviklet grensesnitt. Utviklet som en del av Deepin Linux-distribusjonen. Det finnes også pakker for andre distribusjoner

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
Fly 

Et eksempel på et skrivebordsmiljø skrevet med Qt. Utviklet som en del av Astra Linux-distribusjonen. 

Hvordan grafikk fungerer i Linux: en oversikt over ulike skrivebordsmiljøer
LXQt

Lett skrivebordsmiljø. Som flere tidligere eksempler, skrevet med Qt. Faktisk er det en fortsettelse av LXDE-prosjektet og resultatet av en fusjon med Razor-qt-prosjektet.

Som du kan se, kan skrivebordet i Linux se veldig annerledes ut, og det er et passende grensesnitt for enhver smak: fra veldig vakkert og med 3D-effekter til minimalistisk, fra "klassisk" til uvanlig, fra aktivt bruk av systemressurser til lett, fra store skjermer til nettbrett/smarttelefoner.

Ну и хочется надеяться, что у меня получилось дать представление о том, из каких основных компонентов состоит графика и рабочий стол в ОС Linux.

Materialet til denne artikkelen ble testet i juli 2020 på et webinar. Du kan se den her.

Det er alt. Jeg håper dette var nyttig. Hvis du har spørsmål eller kommentarer, vennligst skriv. Jeg svarer gjerne. Vel, kom og studer kl "LANIT Network Academy"!

Kilde: www.habr.com

Legg til en kommentar