Questo articolo tratta di come è strutturata la grafica in Linux e di quali componenti è composta. Contiene molti screenshot con diverse implementazioni dei desktop environment.
Se non differenziante molto tra KDE e GNOME, o se lo fai ma vorresti scoprire quali sono altre alternative, questo articolo è per te. È una panoramica e, anche se contiene molti nomi e alcuni termini, il materiale sarà utile anche ai principianti e a chi si avvicina a Linux.
L'argomento potrebbe interessare anche gli utenti esperti quando si tratta di configurare l'accesso remoto e realizzare un thin client. Spesso incontro utenti Linux esperti che affermano: "sul server c'è solo la riga di comando e non ho intenzione di approfondire la grafica, poiché serve solo agli utenti comuni". Ma anche i conoscitori di Linux scoprono con grande sorpresa e gioia l'opzione "-X" del comando ssh (ed è utile comprendere il funzionamento e le funzioni del server X).

Insegno corsi di Linux da quasi 15 anni presso "" e sono certo che molte delle oltre cinquemila persone che ho formato leggano sicuramente articoli su Habr. I corsi sono sempre molto intensi (la durata media del corso è di cinque giorni), è necessario trattare temi che richiederebbero almeno dieci giorni per una piena comprensione. E sempre durante il corso, a seconda del pubblico (se si tratta di principianti o di amministratori esperti) e delle "domande dal pubblico", scelgo cosa approfondire di più e cosa trattare più superficialmente, in modo da dedicare più tempo agli strumenti della riga di comando e al loro utilizzo pratico. Ci sono molte tematiche a cui devo un po' rinunciare. Queste includono "Storia di Linux", "Differenze tra le distribuzioni di Linux", "Le licenze: GPL, BSD, ...", "Grafica e ambienti desktop" (tema di questo articolo) e altre. Non che non siano importanti, ma di solito ci sono molte più domande "qui e ora" e solo cinque giorni... Tuttavia, per una comprensione generale delle basi del sistema operativo Linux e della varietà disponibile (affinché anche utilizzando una particolare distribuzione di Linux si possa avere una visione più ampia di questo enorme e vasto mondo chiamato "Linux"), è utile e necessario studiare questi argomenti.
Nel corso dell'articolo, per ogni componente indicherò i link per coloro che vorranno immergersi più a fondo nell'argomento, ad esempio verso articoli su Wikipedia (segnalando la versione più completa/utilizzabile quando disponibile articoli in lingua inglese e russa).
Per gli esempi principali e gli screenshot ho usato la distribuzione openSUSE. Si potrebbe utilizzare qualsiasi altra distribuzione sviluppata dalla comunità, con una vasta gamma di pacchetti nel repository. È difficile, ma possibile, dimostrare la varietà di ambienti desktop su una distribuzione commerciale, poiché spesso in esse vengono utilizzati solo uno o due dei desktop più noti. Così gli sviluppatori si pongono come obiettivo quello 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 proprio su openSUSE.
Gli screenshot con «cornici bianche» sono stati realizzati su altre distribuzioni, indicate nello screenshot.
Gli screenshot con «cornici grigie» sono stati presi da internet, come esempi di configurazioni desktop di anni passati.
Quindi, iniziamo.
I principali componenti che compongono la grafica
Evidenzierò tre componenti principali e li elencherò nell'ordine in cui vengono avviati all'avvio del sistema:
- DM (Display Manager);
- Display Server;
- DE (Desktop Environment).
In aggiunta, come importanti sotto-punti nel Desktop Environment:
- Apps Manager/Launcher/Switcher (il pulsante «Start»);
- WM (Window Manager);
- diverso software fornito insieme all'ambiente desktop.
Maggiore dettaglio su ogni punto.
DM (Display Manager)
La prima applicazione che si avvia all'avvio della «grafica» è il DM (Display Manager). I suoi principali compiti sono:
- chiedere quali utenti possono accedere al sistema, richiedere i dati di autenticazione (password, impronta digitale);
- scegliere quale ambiente desktop avviare.
Al momento, in diverse distribuzioni si utilizzano ampiamente:
- (sostituito ),
- ,
- ,
- .
- Si può anche menzionare Fly-DM (utilizzato in AstraLinux).
L'elenco dei DM esistenti è mantenuto aggiornato in




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





La cosa principale in questa varietà è che c'è un'applicazione che gestisce l'avvio della grafica e l'accesso dell'utente a questa grafica, e ci sono diverse implementazioni di quest'applicazione, che si differenziano per aspetto e un po' per funzionalità (scelta degli ambienti di desktop, scelta degli utenti, versione per utenti con visibilità ridotta, possibilità di accesso remoto tramite il protocollo ).
Display Server
Il Display Server è un fondamento della grafica, la cui funzione principale è lavorare con la scheda video, il monitor e vari dispositivi di input (tastiera, mouse, touchpad). Quindi l'applicazione (ad esempio, un browser o un editor di testo) che viene visualizzata in "grafica" non ha bisogno di sapere come interagire direttamente con i dispositivi, non ha bisogno di conoscere i driver. Tutto ciò viene gestito da X Window.
Quando si parla di Display Server, per molti anni in Linux, e anche in Unix, si riferiva all'applicazione o più comunemente nota come X (Ecks).
Attualmente, in molte distribuzioni, X viene progressivamente sostituito da .
È possibile anche leggere:
- ,
- ,
- (necessari per l'avvio remoto di applicazioni grafiche, ad esempio utilizzando PuTTY).
Per iniziare, avviamo gli X e alcune applicazioni grafiche in essi.
Laboratorio "avviamo X e le applicazioni in esso"
Eseguire tutto da un nuovo utente webinaruser (sarebbe stato più facile, ma non più sicuro, fare tutto da root).
- Poiché gli X necessitano di accesso ai dispositivi, concedo l'accesso: Ho determinato l'elenco dei dispositivi controllando 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 questo avvio gli X:
% X -retro :77 vt8 &
Opzioni: * -retro — avviano con uno sfondo classico "grigio", invece che con il nero di default; * :77 — imposto (può essere qualsiasi valore ragionevole, solo :0 è probabilmente occupato da una grafica già avviata) il numero dello schermo, un identificatore unico che permette di distinguere più X avviati; * vt8 — indica il terminale, qui /dev/tty8, su cui verranno visualizzati gli X.
- Avviamo un'applicazione grafica:
Per fare ciò, prima impostiamo una variabile che dirà all'applicazione a quali dei miei X avviati inviare ciò che deve essere disegnato:
% export DISPLAY=":77"
Per vedere 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 &

Le idee principali e le conclusioni di questo frammento:
- Gli X hanno bisogno di accesso ai dispositivi: terminale, scheda video, dispositivi di input,
- Gli X stessi non visualizzano alcun elemento dell'interfaccia — è una tela grigia (se con l'opzione "—retro") o nera di dimensioni definite (ad esempio, 1920×1080 o 1024×768), su cui avviare applicazioni grafiche.
- Dalla movimento del "cursore" si vede che gli X tracciano la posizione del mouse e trasmettono queste informazioni alle applicazioni avviate in essi.
- Gli X rilevano anche la pressione dei tasti sulla tastiera e trasmettono queste informazioni alle applicazioni.
- La variabile DISPLAY indica alle applicazioni grafiche in quale schermo (ogni X all'avvio ha un numero unico) e in quali dei miei X avviati è necessario disegnare. (C'è anche la possibilità di indicare un computer remoto in questa variabile e inviare l'output agli X avviati su un altro computer della rete.) Poiché gli X sono stati avviati senza l'opzione -auth, non è necessario preoccuparsi della variabile XAUTHORITY o del comando xhost.
- Le applicazioni grafiche (o come vengono chiamati i clienti X) vengono disegnate negli X — senza la possibilità di muoverle/chiuderle/modificare "-g (Larghezza)x(Altezza)+(OffsetDaSinistra)+(OffsetDaSopra)". Con il segno "meno" rispetto ai bordi destro e inferiore.
- Due termini che vale la pena menzionare: X-server (questo è come vengono chiamati gli X) e X-clienti (così si chiama 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 io mi connetta al "server" (nella terminologia dell'accesso remoto) dalla "macchina client" (nella terminologia dell'accesso remoto) per visualizzare un'applicazione grafica dal server sul mio monitor, l'X-server viene eseguito sulla macchina dove si trova il monitor (cioè sulla "macchina client", e non sul "server"), mentre gli X-clienti vengono eseguiti e funzionano sul "server", anche se vengono visualizzati sul monitor della "macchina client".

Componenti DE
Analizziamo ora i componenti da cui è solitamente composto un desktop.
Componenti DE: pulsante "Start" e "Barra delle applicazioni"
Cominciamo con il cosiddetto pulsante "Start". Spesso è un applet separato utilizzato nella "Barra delle applicazioni". Qui di solito c'è anche un applet per passare tra le applicazioni aperte.

Guardando diverse ambienti desktop, lo riassumerei sotto il nome generale di "Apps Manager (Launcher/Switcher)", cioè uno strumento per gestire le applicazioni (avvio e commutazione tra quelle aperte), e indicherò anche le utility che sono esempi di questo tipo di applicazione.
- Si presenta come pulsante "Start" sulla classica (per tutta la lunghezza di uno dei lati dello schermo) "Barra delle applicazioni":
○ xfce4-panel,
○ mate-panel/gnome-panel,
○ vala-panel,
○ tint2. - Si possono anche evidenziare separatamente le "barre delle applicazioni" in stile MacOS (non su tutta la lunghezza del bordo dello schermo), anche se molte barre delle applicazioni possono apparire in entrambi i modi. Qui la principale differenza è puramente visiva: la presenza di "un effetto ingrandito delle icone al passaggio del mouse".
○ docky,
○ latte-dock,
○ cairo-dock,
○ plank. - E/O servizi che avviano applicazioni con la pressione di "scorciatoie da tastiera" (in molte ambienti desktop, un componente simile è sempre presente e consente di impostare le proprie scorciatoie):
○ sxhkd.
- Esistono anche vari "launcher" a forma di menu (da inglese Launch (avviare)):
○ dmenu-run,
○ rofi -show drun,
○ albert,
○ grun.

Componenti DE: WM (Window Manager)
WM (Window Manager) è un'applicazione che si occupa della gestione delle finestre, aggiungendo la possibilità di:
- movimenti delle finestre sul desktop (incluso lo spostamento standard tenendo premuto il tasto Alt su qualsiasi parte della finestra, non solo sulla barra del titolo);
- cambio delle dimensioni delle finestre, ad esempio trascinando il «bordo della finestra»;
- aggiunge all'interfaccia della finestra il «titolo (title)» e i pulsanti per minimizzare/espandere/chiudere l'applicazione;
- il concetto di quale applicazione è in «focus».

Elenco le più conosciute (tra parentesi indico quale DE usa di default):
- (GNOME3),
- (Mate),
- (GNOME2),
- (Cinnamon),
- (KDE),
- (XFCE),
- .

Elenco anche i «vecchi WM con elementi DE». Cioè, oltre al gestore delle finestre, contengono elementi come il pulsante «Start» e le «Barre delle applicazioni», più tipici delle DE complete. Anche se cosa possono essere definiti «vecchi», visto che IceWM e WindowMaker hanno già rilasciato le loro versioni aggiornate nel 2020. Quindi, sarebbe più corretto definirli non «vecchi», ma «veterani»:
- ,
- ,
- , , , ,
- …





Oltre ai «classici» («gestori di finestre a stack»), vale la pena notare , che permettono di disporre le finestre «a piastrelle» su tutto lo schermo, così come per alcune applicazioni un desktop separato per ogni applicazione avviata a schermo intero. Questo può risultare un po' insolito per le persone che non li hanno utilizzati in precedenza, ma poiché anche io utilizzo un'interfaccia simile da abbastanza tempo, posso dire che è piuttosto comodo e ci si abitua velocemente a tale interfaccia, dopo di che i «classici» gestori di finestre non sembrano più comodi.
- ,
- ,
- ,
- ,
- ,
- qtile,
- bspwm,
- herbstluftwm,
- …
- twin,
- .

Vale anche la pena menzionare il progetto e il concetto di «Gestore di finestre composito», che utilizza le capacità di accelerazione hardware per visualizzare trasparenze, ombre e vari effetti 3D. Circa 10 anni fa c'è stato un boom di effetti 3D sui desktop Linux. Attualmente, molti dei gestori di finestre integrati nei DE utilizzano parzialmente le capacità di composizione. Di recente è stato lanciato — un prodotto con funzionalità simili a quelle di Compiz per Wayland.

Un elenco dettagliato di diversi gestori di finestre può anche essere consultato in .
Componente DE: altri
Vale anche la pena notare i seguenti componenti del desktop (qui utilizzo termini inglesi consolidati per descrivere le tipologie di applicazione - non sono i nomi delle applicazioni stesse):
- Applet (Applets):
- Il software (Widget toolkit) — spesso viene fornito con un «set minimo» di software:
DE (Desktop Environment)
Dai componenti elencati sopra si ottiene il cosiddetto «Ambiente di desktop». Spesso tutti i suoi componenti sono sviluppati utilizzando le stesse librerie grafiche e gli stessi principi di design. In questo modo, almeno, si mantiene uno stile comune per l'aspetto delle applicazioni.
Qui possiamo evidenziare i seguenti ambienti desktop esistenti al momento:
I più diffusi sono GNOME e KDE, e XFCE li insegue da vicino.

Il confronto secondo vari parametri sotto forma di tabella può essere visualizzato nel corrispondente .
La varietà di DE

Esistono anche esempi interessanti dalla storia: dal 2003 al 2007, per Linux è stata realizzata un'interfaccia «3D» del desktop chiamata «Project Looking Glass» dall'azienda Sun. Io stesso ho usato questo desktop, più che altro «giocando», poiché era difficile da usare. Questa «interfaccia 3D» era scritta in Java in un'epoca in cui non esistevano schede video con supporto per il 3D. Pertanto, tutti gli effetti venivano calcolati dalla CPU, e il computer doveva essere molto potente, altrimenti tutto funzionava lentamente. Ma, almeno, era bello. Le schede tridimensionali delle applicazioni potevano essere ruotate/espanse. Era possibile ruotare in un cilindro del desktop con sfondi a 360 gradi. C'erano diverse applicazioni belle: ad esempio, l'ascolto di musica sotto forma di «cambio di dischi» e altro ancora. Puoi guardare su YouTube questo progetto, tuttavia la qualità di questi video sarà probabilmente scadente, poiché in quegli anni non era possibile caricare video in alta qualità.

Desktop leggero. Esiste un progetto già da tempo, dal 1996. Negli ultimi anni è diventato abbastanza popolare, in contrapposizione a KDE e GNOME più pesanti, su molte distribuzioni che richiedono un'interfaccia desktop leggera e «classica». Ha molte impostazioni e un gran numero di propri programmi: 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 specifica distribuzione e non sono molto usati (per non dire «per niente») in altre distribuzioni. Almeno finora non hanno ottenuto popolarità e non hanno convinto la maggior parte del pubblico dei vantaggi del loro approccio. Pantheon si propone di costruire un'interfaccia simile a macOS.

Opzione con dock-panel:

Fortemente orientato verso effetti grafici e widget (fin dai tempi in cui altri ambienti desktop non avevano widget sul desktop, ad esempio, calendario/ore). Utilizza le proprie librerie. Ha un'ampia gamma delle proprie «belle» applicazioni: terminale (Terminology), lettore video (Rage), visualizzatore di immagini (Ephoto).

È un fork di Enlightenment17, utilizzato nella distribuzione BodhiLinux.

Inizialmente un'interfaccia desktop «classica», creata per contrastare KDE, scritta sulla libreria QT, all'epoca distribuita con una licenza non molto conveniente per le distribuzioni commerciali.

Dalla terza versione di GNOME, è stato fornito con la shell GNOME Shell, che ha un «aspetto non classico», il che non ha soddisfatto tutti gli utenti (cambiamenti drasticamente nei layout sono difficili da accettare per gli utenti). Di conseguenza, sono emersi progetti fork che continuano a sviluppare questo desktop in stile «classico»: MATE e Cinnamon. Viene utilizzato di default in molte distribuzioni commerciali. Ha molte impostazioni e le sue applicazioni.

È emerso sulla base di GNOME2 e continua a sviluppare questo ambiente di desktop. Ha molte impostazioni e fork di applicazioni che erano utilizzate ancora in GNOME2 (utilizzando nuovi nomi) per non 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).
Ha molte impostazioni e le stesse applicazioni che per GNOME Shell.

Fork di GNOME in stile «classico», che si è sviluppato all'interno della distribuzione Solus, ma ora viene anche fornito come desktop autonomo su varie altre distribuzioni.

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

Nel 2008, KDE ha rilasciato la sua nuova implementazione di KDE Plasma (il motore del desktop è stato fortemente riscritto). Anche in questo caso, così come per GNOME/MATE, non è piaciuto a tutti i fan di KDE. 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 (sul quale è scritto KDE). Ha molte impostazioni ed è abbastanza bello (anche se questo è un concetto soggettivo) e ben progettato. È sviluppato nell'ambito della distribuzione Deepin Linux. Sono disponibili anche pacchetti per altre distribuzioni.

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

Ambiente desktop leggero. Come alcuni dei precedenti esempi, è scritto utilizzando Qt. È in effetti una continuazione del progetto LXDE e il risultato della fusione con il progetto Razor-qt.
Come potete vedere, il desktop su Linux può apparire in modi molto diversi e per ogni gusto c'è un'interfaccia adatta: da quelle molto belle e con effetti 3D a quelle minimaliste, da quelle 'classiche' a quelle insolite, da quelle che utilizzano attivamente le risorse di sistema a quelle leggere, da schermi grandi a tablet/smartphone.
E spero di essere riuscito a dare un'idea di quali siano i principali componenti che costituiscono la grafica e il desktop nel sistema operativo Linux.
Il materiale per questo articolo è stato testato a luglio 2020 in un webinar. Puoi guardarlo .
Questo è tutto. Spero sia stato utile. Se hai domande e commenti, scrivi. Sarò felice di rispondere. E vieni a studiare alla !
Fonte: habr.com
