Questo articolo tratta di come funziona la grafica in Linux e quali componenti la costituiscono. Include molti screenshot di diverse implementazioni degli ambienti desktop.
Se non riesci a distinguere tra KDE e GNOME, o se li distingui ma desideri conoscere altre alternative, questo articolo è per te. È una panoramica che, pur contenendo molti nomi e qualche termine, sarà utile anche per i principianti e per coloro che stanno solo iniziando a esplorare Linux.
L'argomento può interessare anche gli utenti esperti che configurano l'accesso remoto e implementano client leggeri. Spesso incontro utenti Linux piuttosto esperti con l'affermazione "sul server c'è solo la riga di comando e non intendo approfondire la grafica, poiché è tutto per gli utenti comuni". Ma anche gli esperti di Linux scoprono con grande sorpresa e gioia l'opzione "-X" del comando ssh (ed è utile sapere come funziona e quali sono le funzioni del server X).

Insegno corsi di Linux da quasi 15 anni a "» e sono sicuro che molti di quelli più di cinquemila che ho istruito leggano e sicuramente scrivano articoli su Habr. I corsi sono sempre molto intensi (la durata media del corso è di cinque giorni), e bisognerebbe trattare argomenti per i quali ci vorrebbero almeno dieci giorni per un'introduzione completa. E durante il corso, a seconda del pubblico (se ci sono principianti o amministratori esperti), così come delle "domande dal pubblico", scelgo cosa approfondire e cosa trattare in modo più superficiale, per dedicare più tempo alle utility da linea di comando e al loro utilizzo pratico. Ci sono diversi argomenti a cui devo rinunciare. Questi includono "Storia di Linux", "Differenze tra le distribuzioni Linux", "Sulle licenze: GPL, BSD, ...", "Grafica e ambienti desktop" (tema di questo articolo) e altro ancora. Non che non siano importanti, ma di solito ci sono molte più domande "qui e ora" e in fin dei conti ci sono solo cinque giorni... Tuttavia, per una comprensione generale delle basi del sistema operativo Linux, per capire la varietà disponibile (perché anche utilizzando una particolare distribuzione di Linux, si deve comunque avere una visione più ampia di questo enorme mondo che chiamiamo "Linux"), è utile e necessario studiare questi argomenti.
Nel corso dell'articolo, per ciascun componente indico i link per coloro che desiderano approfondire l'argomento, ad esempio articoli su Wikipedia (indicando la versione più completa/utilizzata, se disponibile sia la versione inglese che quella russa).
Per i principali esempi e screenshot, ho utilizzato la distribuzione openSUSE. Si poteva utilizzare qualsiasi altra distribuzione sviluppata dalla comunità, con un'ampia disponibilità di pacchetti nel repository. È difficile, ma possibile, dimostrare la diversità nell'aspetto del desktop su una distribuzione commerciale, poiché in genere vengono utilizzati solo uno o due ambienti desktop più noti. In questo modo, gli sviluppatori semplificano la loro necessità di rilasciare un sistema operativo stabile e collaudato. Su questo sistema ho installato tutti i DM/DE/WM (spiegazione di questi termini di seguito) che ho trovato nel repository.
Gli screenshot con "cornici blu" sono stati realizzati su openSUSE.
Gli screenshot con "cornici bianche" sono stati fatti su altre distribuzioni, indicate nello screenshot.
Gli screenshot con "cornici grigie" sono stati presi da internet, come esempi di design per desktop degli anni passati.
Bene, iniziamo.
Componenti principali della grafica
Voglio evidenziare tre componenti principali e elencarli nell'ordine in cui vengono avviati all'avvio del sistema:
- DM (Display Manager);
- Server di Visualizzazione;
- DE (Desktop Environment).
In aggiunta, come punti importanti nel Desktop Environment:
- Apps Manager/Launcher/Switcher (pulsante «Start»);
- WM (Window Manager);
- diverso software fornito insieme all'ambiente desktop.
Maggiore dettaglio su ciascun punto.
DM (Display Manager)
La prima applicazione che viene avviata all'accensione della «grafica» è il DM (Display Manager), il gestore della visualizzazione. Le sue principali funzioni sono:
- chiedere quali utenti possono accedere al sistema, richiedere i dati di autenticazione (password, impronta digitale);
- selezionare quale ambiente desktop avviare.
Attualmente, in varie distribuzioni vengono ampiamente utilizzati:
- (sostituito da ),
- ,
- ,
- .
- Si può anche menzionare Fly-DM (utilizzato in AstraLinux).
L'elenco dei DM esistenti è costantemente aggiornato nella




È importante notare che negli screenshot seguenti viene utilizzato lo stesso gestore di visualizzazione LightDM, ma in diverse distribuzioni (i nomi delle distribuzioni sono indicati tra parentesi). Valuta quanto possa apparire diverso questo DM grazie al lavoro dei designer delle varie distribuzioni.





La cosa principale in questa varietà è che esiste un'applicazione che si occupa di avviare la grafica e consentire all'utente di accedervi, e ci sono diverse implementazioni di quest'applicazione, che si differenziano per aspetto e un po' per funzionalità (selezione degli ambienti desktop, scelta degli utenti, versione per utenti con disabilità visive, possibilità di accesso remoto tramite il protocollo ).
Display Server
Il Display Server è un fondamento della grafica, il cui compito principale è interagire con la scheda grafica, il monitor e vari dispositivi di input (tastiera, mouse, touchpad). Ciò significa che l'applicazione (ad esempio, un browser o un editor di testo), che viene visualizzata nella ‘grafica’, non deve sapere come lavorare direttamente con i dispositivi, né deve conoscere i driver. Tutto questo è gestito da X Window.
Quando si parla di Display Server, per molti anni in Linux e Unix si intendeva un'applicazione o comunemente chiamato X (Iks).
Attualmente, in molte distribuzioni, si sta introducendo .
Puoi anche leggere:
- ,
- ,
- (necessari per l'avvio remoto delle applicazioni grafiche, ad esempio usando PuTTY).
Per iniziare, avviamo gli X e alcune applicazioni grafiche in essi.
Pratica "avviando X e le applicazioni in esso"
Eseguirò tutto come nuovo utente webinaruser (sarebbe più facile, ma non più sicuro, eseguire tutto come root).
- Poiché gli X hanno bisogno di accesso alle periferiche, concedo l'accesso: Ho identificato l'elenco delle periferiche guardando gli errori durante l'avvio degli X nel log (/home/webinaruser/.local/share/xorg/Xorg.77.log)
% sudo setfacl -m u:webinaruser:rw /dev/tty8 /dev/dri/card0 /dev/fb0 /dev/input/*
- Dopo di che avvio gli X:
% X -retro :77 vt8 &
Opzioni: * -retro — avviano con uno sfondo classico "grigio" e non con il nero come predefinito; * :77 — specifico (può essere qualsiasi numero ragionevole, solo :0 è probabilmente già occupato da una grafica in esecuzione) il numero dello schermo, un identificatore unico per distinguere più X avviati; * vt8 — indica il terminale, qui /dev/tty8, su cui verranno visualizzati gli X.
- Avviamo un'applicazione grafica:
Per fare ciò, impostiamo prima una variabile che indicherà all'applicazione in quali X avviati inviare ciò che deve essere disegnato:
% export DISPLAY=":77"
Per visualizzare l'elenco degli X avviati, si può fare così:
ps -fwwC X
Dopo aver impostato la variabile, possiamo avviare le applicazioni nei nostri X — ad esempio, avvio l'orologio:
% xclock -update 1 &
% xcalc &
% xeyes -g 200x150-300+50 &

Principali idee e conclusioni da questo frammento:
- Gli X necessitano di accesso ai dispositivi: terminale, scheda video, dispositivi di input,
- Gli X non visualizzano alcun elemento dell'interfaccia — appare una tela grigia (se con l'opzione «—retro») o nera di determinate dimensioni (ad esempio, 1920×1080 o 1024×768), progettata per eseguire applicazioni grafiche.
- Dal movimento del «cursore» si può notare che gli X tracciano la posizione del mouse e trasferiscono queste informazioni alle applicazioni in esecuzione.
- Inoltre, gli X catturano le pressioni dei tasti sulla tastiera e inoltrano queste informazioni alle applicazioni.
- La variabile DISPLAY indica alle applicazioni grafiche quale schermo utilizzare (ogni X al momento dell'avvio ha un numero di schermo unico), e quindi in quali delle applicazioni in esecuzione sulla mia macchina devono essere disegnati gli X. (C'è anche la possibilità di specificare in questa variabile una macchina remota e inviare l'output agli X in esecuzione su un'altra macchina nella rete.) Poiché gli X sono stati avviati senza l'opzione -auth, non c'è bisogno di preoccuparsi della variabile XAUTHORITY o del comando xhost.
- Le applicazioni grafiche (o come vengono chiamati i client X) vengono disegnate negli X, ma senza la possibilità di spostarle/chiuderle/modificare "-g (Larghezza)x(Altezza)+(SpostamentoDalLatoSinistro)+(SpostamentoDallaParteSuperiore)". Con il segno "meno" rispettivamente dal lato destro e dal bordo inferiore.
- Due termini da menzionare: il server X (così vengono chiamati gli X) e i client X (così viene chiamata qualsiasi applicazione grafica eseguita negli X). C'è un po' di confusione nella comprensione di questa terminologia, molti la interpretano esattamente al contrario. Nel caso in cui mi connetta al "server" (nel contesto dell'accesso remoto) dalla mia "macchina client" per visualizzare sul mio monitor un'applicazione grafica dal server, il server X si avvia sulla macchina dove si trova il monitor (cioè sulla "macchina client", non sul "server"), mentre i client X vengono avviati e funzionano sul "server", anche se vengono visualizzati sul monitor della "macchina client".

Componenti DE
Analizziamo i componenti di cui è solitamente composto un desktop.
Componenti DE: pulsante "Start" e "Barra delle applicazioni"
Iniziamo con il cosiddetto pulsante «Start». Spesso è un'applet separata, utilizzata nella «Barra delle applicazioni». Di solito è presente anche un'applet per passare tra le applicazioni aperte.

Esaminando diversi ambienti desktop, potrei riassumere tali applicazioni sotto il nome comune di «Apps Manager (Launcher/Switcher)», cioè uno strumento per gestire le applicazioni (lancio e passaggio tra quelle aperte), e indicherò le utility che sono esempi di applicazione di questo tipo.
- È presente in forma di pulsante «Start» sulla classica «Barra delle applicazioni» (lunga quanto un lato dello schermo):
○ xfce4-panel,
○ mate-panel/gnome-panel,
○ vala-panel,
○ tint2. - Si possono anche evidenziare separatamente le «Barre delle applicazioni simili a MacOS» (non lunghe quanto un lato dello schermo), sebbene molte barre delle applicazioni possano essere visualizzate in entrambe le varianti. Qui la principale differenza è puramente visiva: la presenza dell'«effetto ingrandimento delle icone al passaggio del mouse».
○ docky,
○ latte-dock,
○ cairo-dock,
○ plank. - E/O servizi che avviano applicazioni alla pressione di «tasti di scelta rapida» (in molti ambienti desktop è presente un componente simile che consente di impostare le proprie combinazioni di tasti):
○ sxhkd.
- Esistono anche vari menu-образные «launcher» (da «Launch»):
○ dmenu-run,
○ rofi -show drun,
○ albert,
○ grun.

Componenti DE: WM (Window Manager)
Il WM (Window Manager) è un'applicazione che gestisce le finestre, fornendo la possibilità di:
- spostare le finestre sul desktop (incluso lo spostamento standard tenendo premuto il tasto Alt su qualsiasi parte della finestra, non solo sulla barra del titolo);
- modificare le dimensioni delle finestre, ad esempio, trascinando il bordo della finestra;
- aggiungere alla finestra il «titolo (title)» e i pulsanti di minimizzazione/maximizzazione/chiusura dell'applicazione;
- gestire quale applicazione è «in primo piano».

Elencando i più noti (tra parentesi indico in quale DE è usato di default):
- (GNOME3),
- (Mate),
- (GNOME2),
- (Cinnamon),
- (KDE),
- (XFCE),
- .

Elenco anche i "vecchi WM con elementi DE". Cioè, oltre al gestore di finestre, contengono elementi come il pulsante "Start" e la "taskbar", più tipici di un DE completo. Anche se sono "vecchi", considerando che sia IceWM che WindowMaker hanno già rilasciato versioni aggiornate nel 2020. Quindi, sarebbe più corretto definirli "storici":
- ,
- ,
- , , , ,
- …





Oltre ai "classici" ("gestori di finestre a pila"), vale la pena menzionare separatamente , che consente di posizionare le finestre "a mosaico" su tutto lo schermo, e per alcune applicazioni un desktop separato per ogni applicazione avviata a schermo intero. Questo è un po' insolito per le persone che non lo hanno mai usato prima, ma dato che io stesso utilizzo questo tipo di interfaccia da abbastanza tempo, posso dire che è piuttosto comodo e ci si abitua rapidamente a un'interfaccia di questo tipo, dopo di che i "classici" gestori di finestre non sembrano più comodi.
- ,
- ,
- ,
- ,
- ,
- qtile,
- bspwm,
- herbstluftwm,
- …
- twin,
- .

Vale anche la pena menzionare il progetto esiste anche il concetto di «Gestore delle finestre composito», che utilizza le capacità di accelerazione hardware per visualizzare trasparenze, ombre e diversi effetti 3D. Circa 10 anni fa c'è stata un'esplosione di effetti 3D sui desktop Linux. Oggi, molti dei gestori di finestre integrati nei DE utilizzano parzialmente le capacità compositive. Recentemente è emerso — un prodotto con funzionalità simili a Compiz per Wayland.

Un elenco dettagliato dei vari gestori di finestre può essere consultato in .
Componenti DE: altri
Vale anche la pena menzionare i seguenti componenti del desktop (qui utilizzo termini consolidati in inglese per descrivere i tipi di applicazioni — non i nomi delle applicazioni stesse):
- Applet (Applet):
- Software (Widget toolkit) — spesso con l'ambiente viene fornito un «set minimo» di software:
DE (Ambiente Desktop)
Dai componenti sopra elencati si ottiene la cosiddetta «Ambiente desktop». Spesso tutti i suoi componenti sono sviluppati utilizzando le stesse librerie grafiche e seguendo principi di design simili. In questo modo, almeno, viene mantenuto uno stile coerente per l'aspetto delle applicazioni.
Attualmente possiamo evidenziare i seguenti ambienti desktop:
I più comuni sono considerati GNOME e KDE, con XFCE che li insegue da vicino.

Il confronto tra vari parametri in forma di tabella può essere visto nell' .
Diversità DE

Ci sono esempi interessanti nella storia: dal 2003 al 2007 per Linux è stato realizzato un "desktop 3D" chiamato "Project Looking Glass" dall'azienda Sun. Ho utilizzato questo desktop, o meglio, mi sono "divertito" con esso, poiché era difficile da usare. Questo "design 3D" era scritto in Java ai tempi in cui non esistevano ancora schede grafiche con supporto 3D. Pertanto, tutti gli effetti venivano elaborati dalla CPU, e il computer doveva essere molto potente, altrimenti tutto funzionava lentamente. Ma era esteticamente gradevole. Le finestre delle applicazioni potevano essere ruotate/apri. Era possibile ruotarsi all'interno di un cilindro del desktop con sfondi panoramici a 360 gradi. C'erano alcune applicazioni molto belle, come l'ascolto della musica rappresentato come "cambio di CD" e così via. Puoi guardare su youtube questo progetto, solo che la qualità di questi video sarà probabilmente scadente, poiché in quegli anni non era possibile caricare video di alta qualità.

Desktop leggero. Esiste da abbastanza tempo, fin dal 1996. Negli ultimi anni è diventato molto popolare, in contrapposizione ai più pesanti KDE e GNOME, su molte distribuzioni che necessitano di un'interfaccia desktop leggera e 'classica'. Ha molte impostazioni e un gran numero di sue applicazioni: terminale (xfce4-terminal), gestore di file (thunar), visualizzatore di immagini (ristretto), editor di testo (mousepad).

Utilizzato nella distribuzione 'Elementary OS'. Qui si può dire che ci sono 'desktop' che vengono sviluppati e utilizzati all'interno di una singola distribuzione e non sono ampiamente utilizzati (se non dire 'per niente') in altre distribuzioni. Almeno non hanno ancora guadagnato popolarità e non hanno convinto la maggior parte del pubblico dei vantaggi del loro approccio. Pantheon si prefigge l'obiettivo di costruire un'interfaccia simile a macOS.

Opzione con barra dock:

Forti inclinazione verso effetti grafici e widget (già dai tempi in cui altri ambienti di lavoro non avevano widget sul desktop, come il calendario/ore). Utilizza le proprie librerie. Dispone di un'ampia suite di applicazioni 'belle': terminale (Terminology), lettore multimediale (Rage), visualizzatore di immagini (Ephoto).

Questo è un fork di Enlightenment17, utilizzato nella distribuzione BodhiLinux.

Interfaccia desktop 'classica' inizialmente creata in contrapposizione a KDE, che era scritto sulla libreria QT, all'epoca distribuita con una licenza non particolarmente adatta per distribuzioni commerciali.

Dalla terza versione di GNOME, è stato fornito con l'interfaccia GNOME Shell, che presenta un 'aspetto non classico', il che non è piaciuto a tutti gli utenti (qualsiasi cambiamento radicale nelle interfacce viene difficilmente accettato dagli utenti). Di conseguenza, sono emersi progetti fork che continuano lo sviluppo di questo desktop in uno stile 'classico': MATE e Cinnamon. È utilizzato per default in molte distribuzioni commerciali. Ha un gran numero di impostazioni e applicazioni proprie.

È nato sulla base di GNOME2 e continua lo sviluppo di questo ambiente grafico. Dispone di numerose impostazioni e fork di applicazioni che erano già utilizzate in GNOME2 (vengono usati nuovi nomi) per evitare di confondere i fork con la loro nuova versione per GNOME3).

Fork di GNOME Shell che fornisce agli utenti un'interfaccia in stile 'classico' (come era in GNOME2).
Dispone di numerose impostazioni e delle stesse applicazioni di GNOME Shell.

Fork di GNOME in stile 'classico' che è stato sviluppato nell'ambito della distribuzione Solus, ma ora è anche fornito come desktop autonomo su diverse altre distribuzioni.

(o, come viene spesso chiamato, semplicemente KDE)
Ambiente desktop sviluppato nell'ambito del progetto KDE.
Offre un'enorme quantità di impostazioni accessibili all'utente comune tramite l'interfaccia grafica e molte applicazioni grafiche sviluppate per questo desktop.

Nel 2008, KDE ha rilasciato la sua nuova implementazione di KDE Plasma (con un motore del desktop notevolmente riscritto). Come per GNOME/MATE, non a tutti i fan di KDE è piaciuto. Di conseguenza, è nato un fork del progetto, che continua lo sviluppo della versione precedente, chiamato TDE (Trinity Desktop Environment).

Uno dei nuovi ambienti desktop, scritto utilizzando Qt (su cui si basa KDE). Ha molte impostazioni ed è abbastanza bello (anche se è un concetto soggettivo) e ben progettato. Viene sviluppato nell'ambito della distribuzione Deepin Linux. Sono disponibili anche pacchetti per altre distribuzioni.

Fly
Esempio di ambiente desktop scritto utilizzando Qt. Viene sviluppato nell'ambito della distribuzione Astra Linux.

Ambiente desktop leggero. Come diversi esempi precedenti, è scritto utilizzando Qt. È in effetti un'estensione del progetto LXDE e il risultato di una fusione con il progetto Razor-qt.
Come potete vedere, il desktop in Linux può avere un aspetto molto diverso e qui c'è un'interfaccia adatta a qualsiasi gusto: da quelle molto belle e con effetti 3D a quelle minimaliste, da 'classiche' a insolite, da quelle che utilizzano attivamente le risorse di sistema a quelle leggere, da grandi schermi a tablet/smartphone.
Spero di aver dato un'idea di quali siano i componenti principali che compongono la grafica e il desktop nel sistema operativo Linux.
Il materiale per questo articolo è stato testato a luglio 2020 durante un webinar. Puoi guardarlo .
Questo è tutto. Spero sia stato utile. Se hai domande o commenti, scrivimi. Sarò felice di rispondere. E vieni a studiare presso !
Fonte: habr.com
