Che cos'è Wayland su Linux e in cosa è diverso da X?

Pubblicato: 2023-07-17
File Manager aperto sul laptop System76 Gazelle
Hannah Stryker / How-To Geek
Wayland è un sistema a finestre sostitutivo per le distribuzioni Linux. Sostituisce il vecchio standard X11. Poiché richiede che le applicazioni vengano modificate per funzionare con esso, l'adozione è stata finora lenta. Al momento della scrittura, una maggiore sicurezza è il principale vantaggio rispetto a X11.

X11, o X Window System, consente al tuo ambiente desktop grafico di visualizzare e controllare le finestre. Wayland è un sostituto di X11. È progettato per essere più veloce e più sicuro. Ecco cosa devi sapere su di loro.

Sommario

Cos'è Wayland?
I molti nomi di X
Come funziona X11
Come funziona Wayland
Adozione lenta di Wayland da parte delle applicazioni
Stai usando Wayland o X11?
Dovresti usare Wayland o X11?

Cos'è Wayland?

Wayland è un moderno sostituto di X11, che è stato per decenni il sistema di finestre predefinito su Linux. Wayland è un protocollo di comunicazione e definisce la messaggistica tra un server di visualizzazione X Window e le applicazioni client. Il progetto Wayland fornisce librerie client e server che consentono alle applicazioni di utilizzare il protocollo.

Il progetto Wayland è stato avviato da uno sviluppatore Red Hat nel 2008.

I molti nomi di X

X Window System è un sistema a finestre, rilasciato per la prima volta per Unix operante dal Massachusetts Institute of Technology nel 1984. Le applicazioni possono basarsi sulla funzionalità offerta dal sistema a finestre per generare interfacce utente.

Nel 1987 il sistema X Window aveva raggiunto la versione 11 e divenne noto come X11. Ora è gestito dalla X.Org Foundation. È ancora alla versione 11, anche se ci sono state molte versioni minori dal 1987. Al momento della stesura, l'attuale versione stabile è X11R7.7.

La “X” nel nome non significa dieci in numeri romani, né implica “Xtra”, “Xtended” o qualcosa del genere. Un precedente sistema di finestre era chiamato "W", per "finestre", e si spostavano semplicemente alla lettera successiva dell'alfabeto quando iniziarono il nuovo progetto.

Sentirai il sistema X Window denominato "X", "X11", "Xorg", "X Windows" e "X Window System".

Come funziona X11

Il sistema X Window gestisce eventi e primitive di basso livello, come l'interazione con il mouse e il disegno e lo spostamento di finestre. Le applicazioni gestiscono la grafica e il design dell'interfaccia. L'aspetto delle finestre, quali pulsanti hanno e dove si trovano questi pulsanti, sono scelte che fa il programmatore dell'applicazione. Il sistema X Window disegna il disegno risultante sullo schermo.

X11 fornisce una definizione per la comunicazione che deve passare tra i vari componenti di un sistema X Window funzionante. Questa comunicazione è necessaria perché il codice utilizzato da un'applicazione X-enabled per disegnare le finestre e gli elementi dell'interfaccia non si trova all'interno dell'applicazione. Quel lavoro è condiviso tra un server X e il Window Manager.

Le applicazioni sono client del server X. Il Window Manager è un tipo speciale di client. Il server X è responsabile della gestione delle risorse, dell'esecuzione delle richieste di disegno e del marshalling di eventi come pressioni di tasti e clic del mouse alle applicazioni appropriate.

Funge anche da intermediario nella comunicazione tra il Window Manager e le applicazioni, scambiando messaggi avanti e indietro tra di loro. Il Window Manager mantiene un elenco delle finestre che le applicazioni hanno aperto, dove si trovano sullo schermo, che dimensioni hanno, se sono sovrapposte e così via.

Un Window Manager di compositing mantiene un buffer fuori schermo per ogni finestra. Combina questi buffer in una singola immagine che rappresenta la finestra più in alto, che rappresenta l'intero desktop, che viene scritta sullo schermo.

Tutti i moderni ambienti desktop grafici, inclusi GNOME e KDE, utilizzano i gestori di finestre di compositing.

Come funziona Wayland

Wayland ha lo scopo di risolvere i problemi di X11. L'architettura X11 richiede molti messaggi. Il server X si trova tra i client e il Window Manager. Si trova anche tra tutto e, tramite il kernel, l'hardware grafico. Il volume dei messaggi può portare a latenza e a un'esperienza visiva lenta e nervosa.

C'è anche una grande base di codice. C'è l'applicazione server, l'applicazione Window Manager e la libreria X11 utilizzata dai client. Più grande (e vecchia) è la tua base di codice, più difficile è mantenerla e più farai fatica con il codice legacy.

Modificando l'architettura, Wayland ha modernizzato e semplificato la base di codice, offrendo vantaggi in termini di prestazioni e maggiore sicurezza.

In effetti, hanno unito il server e il gestore delle finestre in un'unica applicazione. Hanno rimosso qualsiasi codice che eseguiva funzioni che ora vengono eseguite dal kernel. Invece di replicare lo sforzo, hanno sfruttato la funzionalità del kernel.

Con Wayland, il compositore e l'applicazione client comunicano direttamente. Il compositore mantiene la sua mappatura interna di quali finestre si trovano sul desktop e in quale dimensione e stato si trovano. Intermedia gli eventi di modifica di tastiera, mouse e finestra e li invia alle applicazioni che possiedono quelle finestre.

Le applicazioni aggiornano l'interfaccia utente di conseguenza. Una delle principali differenze è che il rendering viene eseguito all'interno delle applicazioni stesse, utilizzando le librerie Wayland collegate.

L'applicazione aggiorna il buffer utilizzato per contenere la finestra oppure ne crea uno nuovo e scarta quello vecchio. L'applicazione client invia quindi una notifica al compositore, dicendogli di aggiornare la sua mappatura delle finestre e di utilizzare il buffer video nuovo o aggiornato.

Questa architettura semplificata e il moderno design del codice offrono miglioramenti delle prestazioni, con il ridimensionamento e il trascinamento delle finestre in particolare, che appaiono fluidi e fluidi.

Adozione lenta di Wayland da parte delle applicazioni

Wayland è il sistema di finestre predefinito in Debian 10 e versioni successive, Fedora 34 o versioni successive, Ubuntu 18.04 o versioni successive e altre distribuzioni come Arch Linux. Nonostante ciò, il più delle volte Wayland esegue applicazioni X11.

Esiste un livello di compatibilità chiamato XWayland che consente alle applicazioni X11 di funzionare con Wayland. Ciò era necessario perché la maggior parte delle applicazioni X11 non è stata modificata e trasferita su Wayland.

Negli ambienti desktop che forniscono compositori Wayland, come GNOME, applicazioni ufficiali come GNOME Text Editor e Maps, Files e Calendar sono tutte applicazioni native Wayland. Ma la stragrande maggioranza delle applicazioni X11 sono ancora intatte, applicazioni X11 native.

Nvidia rilascia driver per GPU Linux open source, con un problema
CORRELATI Nvidia rilascia driver GPU Linux open source, con un problema

Il middleware XWayland di solito funziona bene, ma possono esserci problemi con alcune applicazioni X11 che eseguono funzioni di basso livello relative allo schermo come la registrazione dello schermo. L'uso di Wayland con NVIDIA può essere tanto doloroso quanto lo è con X11, anche se non ho avuto problemi con il mio driver quotidiano che lo utilizzava con una GPU NVIDIA GeForce GT 1030.

È probabile che alcuni autori di applicazioni X11 sperino che la loro applicazione funzioni bene con XWayland e possano evitare di doverli rielaborare nelle applicazioni Wayland. Non sorprenderti se l'adozione e la migrazione a Wayland è lunga e lenta, con nuove applicazioni che lo adottano ma la maggior parte delle applicazioni X11 esistenti rimane così com'è, riponendo le proprie speranze su XWayland.

CORRELATO: Novità di Ubuntu 21.04 'Hirsute Hippo'

Stai usando Wayland o X11?

Se stai utilizzando una delle principali distribuzioni Linux, è probabile che tu stia già utilizzando Wayland. Puoi controllare emettendo il seguente comando.

 echo $XDG_SESSION_TYPE

Su un sistema che utilizza Wayland, l'output sarà:

E su un sistema che esegue il sistema X Window, vedrai:

Raramente, la variabile di ambiente XDG_SESSION_TYPE non è impostata. In tal caso puoi invece utilizzare questo comando:

 loginctl show-session $(loginctl show-user $(whoami) -p Display --value) -p Tipo --value

Il comando loginctl interno e nidificato utilizza il comando show-user per mostrare le proprietà dell'utente specificato. Il comando whoami ci fornisce il nome dell'utente corrente. L'opzione -p (proprietà) limita l'output di loginctl alle informazioni sull'impostazione "Display" e utilizziamo l'opzione --value per restituire solo il valore. Non vogliamo avere la stringa "Display=" nella risposta da loginctl . Tutto ciò ci fornisce un ID di sessione.

Passiamo l'ID di sessione al loginctl esterno e utilizziamo il comando show-session per visualizzare gli attributi della sessione. Usiamo l'opzione -p (proprietà) per limitare l'output alle informazioni sul tipo di sessione e utilizziamo l'opzione --value per mostrare il valore senza l'etichetta "Type=".

Su un computer che utilizza Wayland, vedrai:

Utilizzando il comando loginctl su Fedora Linux, per determinare se Wayland o X11 è in uso

Se stai utilizzando il sistema X Window, vedrai:

Utilizzando il comando loginctl su Manjaro inux, per determinare se Wayland o X11 è in uso

Dovresti usare Wayland o X11?

A meno che tu non abbia problemi, puoi anche attenersi a ciò che stai già utilizzando. Ma se noti instabilità o aggiornamenti dello schermo a scatti, puoi provare a passare a quello che non stai utilizzando.

Su GNOME, se vuoi cambiare sistema e provare l'altro sistema, nella schermata di accesso fai clic sul tuo nome utente, quindi fai clic sull'icona della ruota dentata nell'angolo in basso a destra del display.

Il menu a discesa in GNOME che consente di scegliere un'esperienza desktop basata su Wayland o X11

Un menu ti offrirà diverse versioni di GNOME. Le opzioni che menzionano "Xorg" usano il sistema X Window e quelle che non usano Wayland.

CORRELATO: Come elencare le variabili d'ambiente su Linux