Capitolo 7. Sistema GUI

Indice

7.1. Ambiente desktop GUI
7.2. Il protocollo di comunicazione della GUI
7.3. Infrastruttura GUI
7.4. Applicazioni GUI
7.5. Directory dell'utente
7.6. Tipi di carattere
7.6.1. Tipi di carattere base
7.6.2. Rasterizzazione dei tipi di carattere
7.7. Sandbox
7.8. Desktop remoto
7.9. Connessione a server X
7.9.1. Connessione locale al server X
7.9.2. Connessione remota a server X
7.9.3. Connessione chroot a server X
7.10. Appunti

Ci sono diverse scelte di ambienti desktop GUI completi nel sistema Debian.


[Suggerimento] Suggerimento

I pacchetti di dipendenza selezionati da un metapacchetto per task possono essere fuori sincrono rispetto al più recente stato di transizione nell'ambiente Debian unstable/testing. Per task-gnome-desktop, può essere necessario aggiustare la selezione dei pacchetti come segue:

  • Avviare aptitude(8) con sudo aptitude -u.

  • Spostare il cursore su "Task" e premere "Invio".

  • Spostare il cursore su "Utente finale" e premere "Invio".

  • Spostare il cursore su "GNOME" e premere "Invio".

  • Spostare il cursore su task-gnome-desktop e premere "Invio".

  • Spostare il cursore su "Dipende" e premere "m" (selezionato manualmente).

  • Spostare il cursore su "Raccomanda" e premere "m" (selezionato manualmente).

  • Spostare il cursore su "task-gnome-desktop" e premere "-" (eliminare).

  • Aggiustare i pacchetti selezionati abbandonando quelli problematici che causano conflitti tra i pacchetti.

  • Premere "g" per iniziare l'installazione.

Questo capitolo si concentrerà soprattutto sull'ambiente desktop predefinito in Debian: task-gnome-desktop che fornisce GNOME su wayland.

Il protocollo di comunicazione della GUI usato nel desktop GNOME può essere:

Controllare sul sito freedesktop.org in cosa l'architettura Wayland è differente dall'architettura X Window.

Dal punto di vista dell'utente le differenze possono essere a grandi linee riassunte in:

  • Wayland è un protocollo di comunicazione GUI per unico host: nuovo, più semplice, più veloce, senza binario con setuid root

  • X Window è un protocollo di comunicazione GUI con funzionalità di rete: tradizionale, complesso, più lento, con binario con setuid root

Per le applicazioni che usano il protocollo Wayland, l'accesso al contenuto delle loro schermata da un host remoto è supportato da VNC o RDP. Vedere Sezione 7.8, «Desktop remoto».

I server X moderni hanno l'estensione MIT Shared Memory e comunicano con i loro client X locali usando la memoria condivisa locale. Ciò scavalca il canale di comunicazione tra i processi Xlib trasparente alla rete e fa guadagnare in prestazioni. Questa situazione è stata il punto di partenza per la creazione di Wayland come protocollo di comunicazione GUI solo locale.

Usando il programma xeyes avviato dal terminale GNOME si può controllare il protocollo di comunicazione GUI usato da ciascuna applicazione GUI.

 $ xeyes
  • Se il cursore del mouse è su un'applicazione come "Terminale di GNOME", che usa il protocollo per display server Wayland, gli occhi non si muovono con il movimento del cursore.

  • Se il cursore del mouse è su un'applicazione come "xterm", che usa il protocollo base del sistema X Window, gli occhi si muovono insieme al cursore del mouse rendendo evidente la natura non-così-isolata di un'architettura X Window.

Alla data di aprile 2021 molte popolari applicazioni GUI come GNOME e le applicazioni LibreOffice (LO) sono migrate al protocollo per display server Wayland. L'autore nota come xterm, gitk, chromium, firefox, gimp, dia e tutte le applicazioni KDE usino ancora il protocollo di base del sistema X Window.

[Nota] Nota

Sia per xwayland in Wayland che per il sistema X Window nativo, il vecchio file di configurazione del server X "/etc/X11/xorg.conf" non dovrebbe esistere sul sistema. I dispositivi grafici e di input sono ora configurati dal kernel con DRM, KMS e udev. Il server X nativo è stato riscritto per usarli. Vedere "supporto modedb predefinito delle modalità video" nella documentazione del kernel Linux.

Questi sono pacchetti degni di nota dell'infrastruttura GUI per l'ambiente GNOME su Wayland.


Qui "[auto]" significa che questi pacchetti sono installati automaticamente quando viene installato task-gnome-desktop.

[Suggerimento] Suggerimento

gnome-tweaks è l'indispensabile utilità di configurazione. Per esempio:

  • Si può forzare la "sovra-amplificazione" del volume dell'audio da "Generale".

  • Si può forzare "Maiusc" a diventare "Esc" da "Tastiera e mouse" -> "Tastiera" -> "Opzioni aggiuntive disposizione".

[Suggerimento] Suggerimento

I dettagli delle funzionalità dell'ambiente desktop GNOME possono essere configurati con utilità avviate digitando "settings", "tweaks" o "extensions" dopo aver premuto il tasto Super.

In Debian sono ora disponibili molte utili applicazioni GUI. L'installazione di pacchetti software come scribus (KDE) nell'ambiente desktop GNOME è piuttosto accettabile dato che le funzionalità corrispondenti non sono disponibili nel desktop GNOME. Tuttavia l'installazione di troppi pacchetti con funzionalità duplicate può rendere il sistema affollato.

Ecco un elenco di applicazioni GUI che hanno attirato la mia attenzione.

Tabella 7.3. Elenco di applicazioni GUI degne di nota

pacchetto popcon dimensione del pacchetto tipo descrizione
evolution V:30, I:239 486 GNOME gestione di informazioni personali (groupware e posta elettronica)
thunderbird V:48, I:119 224760 GTK programma di posta (Mozilla Thunderbird)
kontact V:1, I:12 2208 KDE gestione di informazioni personali (groupware e posta elettronica)
libreoffice-writer V:117, I:435 31474 LO elaboratore di testi
abiword V:1, I:8 3542 GNOME elaboratore di testi
calligrawords V:0, I:7 6097 KDE elaboratore di testi
scribus V:1, I:16 31345 KDE editor per desktop publishing per modificare file PDF
glabels V:0, I:3 1338 GNOME editor di etichette
libreoffice-calc V:111, I:432 26009 LO foglio di calcolo
gnumeric V:4, I:14 9910 GNOME foglio di calcolo
calligrasheets V:0, I:5 11396 KDE foglio di calcolo
libreoffice-impress V:69, I:429 2646 LO presentazioni
calligrastage V:0, I:5 5339 KDE presentazioni
libreoffice-base V:26, I:121 5003 LO gestione di database
kexi V:0, I:1 7118 KDE gestione di database
libreoffice-draw V:72, I:430 10312 LO editor di grafica vettoriale (draw)
inkscape V:15, I:112 99800 GNOME editor di grafica vettoriale (draw)
karbon V:0, I:6 3610 KDE editor di grafica vettoriale (draw)
dia V:2, I:22 3741 GTK editor di grafi e diagrammi di flusso
gimp V:50, I:252 19304 GTK editor di grafica bitmap (paint)
shotwell V:17, I:255 6263 GTK organizzatore di foto digitali
digikam V:1, I:9 293 KDE organizzatore di foto digitali
darktable V:4, I:13 30554 GTK tavolo luminoso e camera oscura per fotografi
planner V:0, I:4 1394 GNOME gestione progetti
calligraplan V:0, I:2 19013 KDE gestione progetti
gnucash V:2, I:8 28928 GNOME contabilità personale
homebank V:0, I:2 1218 GTK contabilità personale
lilypond V:0, I:7 16092 - impaginatore di musica
kmymoney V:0, I:2 13937 KDE contabilità personale
librecad V:1, I:15 8963 applicazione Qt sistema CAD (Computer-Aided Design) (2D)
freecad I:18 36 applicazione Qt sistema CAD (Computer-Aided Design) (3D)
kicad V:3, I:14 236461 GTK sofware per progettazione di schemi elettronici e PCB
xsane V:12, I:144 2339 GTK frontend per lo scanner
libreoffice-math V:51, I:432 1898 LO editor di equazioni matematiche e formule
calibre V:6, I:28 63385 KDE convertitore e gestione di una biblioteca per libri elettronici
fbreader V:1, I:9 3783 GTK Lettori di ebook
evince V:92, I:314 941 GNOME visualizzatore di documenti (pdf)
okular V:40, I:123 17728 KDE visualizzatore di documenti (pdf)
x11-apps V:31, I:463 2460 applicazione X pura xeyes(1), ecc.
x11-utils V:192, I:566 651 applicazione X pura xev(1), xwininfo(1), ecc.

I nomi predefiniti per le directory dell'utente, come "~/Desktop", "~/Documenti", ..., usate dagli ambienti desktop dipendono dalla localizzazione usata per l'installazione del sistema. Possono essere reimpostate a quelle in inglese usando:

 $ LANGUAGE=C xdg-user-dirs-update --force 

Poi si spostano manualmente tutti i dati nelle nuove directory. Vedere xdg-user-dirs-update(1).

È anche possibile impostarle manualmente a qualsiasi nome modificando "~/.config/user-dirs.dirs". Vedere user-dirs.dirs(5).

In Debian sono a disposizione degli utenti molti tipi di carattere utili scalabili. La preoccupazione per l'utente è come evitare ridondanze e come configurare la disabilitazione di parte dei tipi di carattere installati. Altrimenti scelte di tipi di carattere inutili possono ingombrare i menu delle applicazioni GUI.

Il sistema Debia usa la libreria FreeType 2.0 per rasterizzare molti formati di tipi di carattere scalabili per lo schermo e la stampa:

La tabella seguente è compilata nella speranza che aiuti gli utenti a scegliere i tipi di carattere scalabili appropriati con una chiara idea della compatibilità delle metriche e delle coperture dei glifi. La maggior parte dei tipi di carattere copre tutti i caratteri latini, greci e cirillici. La scelta finale dei tipi di carattere da attivare può anche essere influenzata da gusti estetici personali. Questi tipi di carattere possono essere usati per la visualizzazione a schermo o per la stampa su carta.

Tabella 7.4. Elenco di tipi di carattere TrueType e OpenType degni di nota

pacchetto popcon dimensione senza grazie con grazie monospazio nota sul carattere
fonts-cantarell V:216, I:306 572 59 - - Cantarell (GNOME 3, visualizzazione)
fonts-noto I:153 31 61 63 40 Tipi di carattere Noto (Google, multi-lingua con CJK)
fonts-dejavu I:421 35 58 68 40 DejaVu (GNOME 2, MCM:Verdana, Bitstream Vera esteso)
fonts-liberation2 V:130, I:427 15 56 60 40 Tipi di carattere Liberation per LibreOffice (Red Hat, MCMATC)
fonts-croscore V:20, I:40 5274 56 60 40 Chrome OS: Arimo, Tinos e Cousine (Google, MCMATC)
fonts-crosextra-carlito V:21, I:131 2696 57 - - Chrome OS: Carlito (Google, MCM:Calibri )
fonts-crosextra-caladea I:128 347 - 55 - Chrome OS: Caladea (Google, MCM:Cambria ) (solo latini)
fonts-freefont-ttf V:76, I:218 14460 57 59 40 GNU FreeFont (URW Nimbus esteso)
fonts-quicksand V:123, I:438 392 56 - - Quicksand del task-desktop Debian (visualizzazione, solo latini)
fonts-hack V:24, I:120 2508 - - 40 P Un carattere progettato per il codice sorgente, Hack (Facebook)
fonts-sil-gentiumplus I:32 14345 - 54 - Gentium SIL
fonts-sil-charis I:27 6704 - 59 - Charis SIL
fonts-urw-base35 V:167, I:472 15560 56 60 40 URW Nimbus (Nimbus Sans, Roman No. 9 L, Mono L, MCAHTC)
fonts-ubuntu V:2, I:5 4339 58 - 33 P Tipi di carattere Ubuntu (visualizzazione)
fonts-terminus V:0, I:3 452 - - 33 Bei tipi di carattere per terminale retrò
ttf-mscorefonts-installer V:1, I:49 85 56? 60 40 Scaricatore per tipi di carattere non liberi di Microsoft (vedere più sotto)

Qui:

  • "MCM" sta per "Metrica Compatibile con tipi di carattere forniti da Microsoft"

  • "MCMATC" sta per "Metrica Compatibile con tipi di carattere forniti da Microsoft: Arial, Times New Roman, Courier New"

  • "MCAHTC" sta per "Metrica Compatibile con tipi di carattere forniti da Adobe: Helvetica, Times, Courier"

  • I numeri nelle colonne del tipo di carattere rappresentano la larghezza "M" approssimata relativa per il carattere alla stessa dimensione di punto.

  • "P" nelle colonne dei tipi di carattere mono a spaziatura fissa rappresenta l'usabilità per la programmazione grazie a "0"/"O" e "1"/"I"/"l" chiaramente distinguibili.

  • Il pacchetto ttf-mscorefonts-installer scarica i "Tipi di carattere principali per il Web" di Microsoft e installa Arial, Times New Roman, Courier New, Verdana, ... Questi tipi di carattere installati sono dati non liberi.

Molti tipi di carattere Latin sono una discendenza dalla famiglia URW Nimbus o Bitstream Vera.

[Suggerimento] Suggerimento

Se la propria localizzazione necessita di tipi di carattere non coperti bene dai tipi di carattere elencati sopra, usare aptitude per controllare nei pacchetti task elencati in "Task" -> "Localizzazione". I pacchetti di tipi di carattere elencati come "Dipende:" o "Raccomanda:" nei pacchetti dei task di localizzazione sono i candidati principali.

Debia usa FreeType per rasterizzare i tipi di carattere. La sua infrastruttura di scelta dei caratteri è fornita dalla libreria per configurazione dei tipi di carattere Fontconfig.


[Suggerimento] Suggerimento

Alcuni pacchetti di tipi di carattere, come fonts-noto* installano troppi tipi di carattere. Si può anche voler mantenere installati alcuni pacchetti di caratteri ma disabilitarli per le situazioni normali d'uso. Per alcuni punti del codice Unicode sono necessari glifi multipli a causa della unificazione Han e glifi non desiderati possono essere scelti dalla libreria Fontconfig non configurata. Uno dei casi più noiosi sono "U+3001 IDEOGRAPHIC COMMA" e "U+3002 IDEOGRAPHIC FULL STOP" nei paesi CJK. Si può facilmente evitare questa situazione problematica configurando la disponibilità dei tipi di carattere usando la GUI per la gestione dei tipi di carattere (font-manager).

È possibile anche elencare lo stato di configurazione dei tipi di carattere dalla riga di comando.

  • "fc-match(1)" per le impostazioni predefinite per i tipi di carattere di fontconfig

  • "fc-list(1)" per i tipi di carattere disponibili per fontconfig

Si può impostare lo stato di configurazione di un tipo di carattere dall'editor di testo, ma non è una cosa banale. Vedere fonts.conf(5).

Molte applicazioni, soprattutto GUI, in Linux sono disponibili solamente in forma binaria da fonti non-Debian.

[Avvertimento] Avvertimento

I binari da questi siti possono includere pacchetti software proprietari non liberi.

Esiste una ragione d'essere per queste distribuzioni in formato binario per gli aficionados del Software Libero che usano Debian, dato che queste possono fornire un insieme pulito di librerie usato per ciascuna applicazione dal corrispondente sviluppatore a monte, indipendentemente da quelle fornite da Debian.

Il rischio intrinseco dell'esecuzione di binari esterni può essere ridotto utilizzando un ambiente sandbox che sfrutta le funzionalità di sicurezza moderne di Linux (vedere Sezione 4.7.5, «Funzionalità di sicurezza di Linux».

  • Per i binari da AppImage e alcuni siti a monte, eseguirli in firejail con configurazione manuale.

  • Per i binari da FLATHUB, eseguirli in Flatpak . (Non è necessaria una configurazione manuale).

  • Per i binari da snapcraft, eseguirli in Snap . (Nessuna configurazione manuale richiesta; compatibile con programmi demone.)

Il pacchetto xdg-desktop-portal fornisce un'API standardizzata per le funzionalità comuni del desktop. Vedere xdg-desktop-portal (flatpak) e xdg-desktop-portal (snap).


Questa tecnologia per ambiente sandbox è molto simile a come le app nei SO degli smartphone vengono eseguite con accesso controllato alle risorse.

Anche alcune grandi applicazioni GUI come browser web in Debian usano internamente la tecnologia degli ambienti sandbox per renderle più sicure.


Ci sono diversi modi per connettersi da un'applicazione su un host remoto al server X, incluso xwayland sull'host locale.


L'accesso al server X locale da parte delle applicazioni locali che usano il protocollo di base X può essere connesso localmente attraverso un socket locale di dominio UNIX. Ciò può essere autorizzato dal file di autorità che contiene i cookie di accesso. Il file authority è identificato dalla variabile d'ambiente "$XAUTHORITY" e il display X è identificato dalla variabile d'ambiente "$DISPLAY". Dato che queste vengono normalmente impostate automaticamente, non è necessaria alcuna azione speciale, ad es. "gitk" come segue.

username $ gitk
[Nota] Nota

Per xwayland, XAUTHORITY contiene un valore come "/run/user/1000/.mutter-Xwaylandauth.YVSU30".

L'accesso al display del server X locale da parte di applicazioni remote che usano il protocollo principale X è supportato usando la funzionalità di inoltro di X11.

Questo metodo può mostrare l'output da un client X remoto come se fosse connesso localmente attraverso un socket UNIX locale.

Vedere Sezione 6.3, «Il server e le utilità per l'accesso remoto (SSH)» per SSH/SSHD.

[Avvertimento] Avvertimento

La connessione TCP/IP remota al server X è disabilitata in modo predefinito nel sistema Debian per ragioni di sicurezza. Non abilitarla impostando semplicemente "xhost +", né abilitando connessioni XDMCP, se lo si può evitare.

Per ritagliare testo negli appunti, vedere Sezione 1.4.4, «Operazioni del mouse».

Per tagliare grafica negli appunti vedere Sezione 11.6, «Strumenti per dati grafici».

Anche alcuni comandi CLI possono manipolare gli appunti a carattere (PRIMARY e CLIPBOARD).