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. Tipi di carattere
7.5.1. Tipi di carattere base
7.5.2. Font rasterization
7.6. Sandbox
7.7. Desktop remoto
7.8. Connessione a server X
7.8.1. Connessione locale al server X
7.8.2. Connessione remota a server X
7.8.3. Connessione chroot a server X
7.9. 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.7, «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".

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:31, I:236 493 GNOME gestione di informazioni personali (groupware e posta elettronica)
thunderbird V:50, I:130 202238 GTK programma di posta (Mozilla Thunderbird)
kontact V:1, I:14 2203 KDE gestione di informazioni personali (groupware e posta elettronica)
libreoffice-writer V:153, I:433 37611 LO elaboratore di testi
abiword V:1, I:11 5133 GNOME elaboratore di testi
calligrawords V:0, I:7 5893 KDE elaboratore di testi
scribus V:2, I:22 30523 KDE editor per desktop publishing per modificare file PDF
glabels V:0, I:4 1327 GNOME editor di etichette
libreoffice-calc V:148, I:430 30127 LO foglio di calcolo
gnumeric V:5, I:19 10084 GNOME foglio di calcolo
calligrasheets V:0, I:5 11326 KDE foglio di calcolo
libreoffice-impress V:118, I:426 9248 LO presentazioni
calligrastage V:0, I:5 5198 KDE presentazioni
libreoffice-base V:78, I:219 6047 LO gestione di database
kexi V:0, I:2 7118 KDE gestione di database
libreoffice-draw V:119, I:427 13442 LO editor di grafica vettoriale (draw)
inkscape V:35, I:167 87324 GNOME editor di grafica vettoriale (draw)
karbon V:0, I:6 3593 KDE editor di grafica vettoriale (draw)
dia V:3, I:28 3620 GTK editor di grafi e diagrammi di flusso
gimp V:61, I:300 19827 GTK editor di grafica bitmap (paint)
shotwell V:17, I:237 6402 GTK organizzatore di foto digitali
digikam V:2, I:12 2921 KDE organizzatore di foto digitali
darktable V:5, I:16 26575 GTK tavolo luminoso e camera oscura per fotografi
planner V:0, I:4 1146 GNOME gestione progetti
calligraplan V:0, I:1 18517 KDE gestione progetti
gnucash V:3, I:10 32394 GNOME contabilità personale
homebank V:0, I:2 1114 GTK contabilità personale
lilypond V:1, I:8 7363 - impaginatore di musica
kmymoney V:0, I:2 12850 KDE contabilità personale
librecad V:2, I:16 8309 applicazione Qt sistema CAD (Computer-Aided Design) (2D)
freecad I:18 59 applicazione Qt sistema CAD (Computer-Aided Design) (3D)
kicad V:2, I:14 193841 GTK sofware per progettazione di schemi elettronici e PCB
xsane V:16, I:161 2346 GTK frontend per lo scanner
libreoffice-math V:104, I:430 2298 LO editor di equazioni matematiche e formule
calibre V:9, I:33 57919 KDE convertitore e gestione di una biblioteca per libri elettronici
fbreader V:1, I:13 2631 GTK Lettori di ebook
evince V:107, I:323 978 GNOME visualizzatore di documenti (pdf)
okular V:42, I:114 15376 KDE visualizzatore di documenti (pdf)
x11-apps V:29, I:461 2437 applicazione X pura xeyes(1), ecc.
x11-utils V:169, I:581 712 applicazione X pura xev(1), xwininfo(1), ecc.

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 glifi per i caratteri latini, greci e cirillici. La scelta finale dei font 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:103, I:296 572 59 - - Cantarell (GNOME 3, visualizzazione)
fonts-noto I:134 35 61 63 40 Tipi di carattere Noto (Google, multi-lingua con CJK)
fonts-dejavu I:449 39 58 68 40 DejaVu (GNOME 2, MCM:Verdana, Bitstream Vera esteso)
fonts-liberation2 V:107, I:371 4290 56 60 40 Tipi di carattere Liberation per LibreOffice (Red Hat, MCMATC)
fonts-croscore V:17, I:46 5278 56 60 40 Chrome OS: Arimo, Tinos e Cousine (Google, MCMATC)
fonts-crosextra-carlito V:24, I:214 2732 57 - - Chrome OS: Carlito (Google, MCM:Calibri )
fonts-crosextra-caladea I:212 258 - 55 - Chrome OS: Caladea (Google, MCM:Cambria ) (solo latini)
fonts-freefont-ttf V:63, I:247 6656 57 59 40 GNU FreeFont (URW Nimbus esteso)
fonts-quicksand I:390 392 56 - - Quicksand del task-desktop Debian (visualizzazione, solo latini)
fonts-hack V:17, I:94 2508 - - 40 P Un carattere progettato per il codice sorgente, Hack (Facebook)
fonts-sil-gentiumplus I:37 13568 - 54 - Gentium SIL
fonts-sil-charis V:3, I:22 6406 - 59 - Charis SIL
fonts-urw-base35 V:112, I:295 11095 56 60 40 URW 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:2 452 - - 33 Bei tipi di carattere per terminale retrò
ttf-mscorefonts-installer V:1, I:59 92 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.

The inherent risk of running external binaries can be reduced by using the sandbox environment which leverages modern Linux security features (see Sezione 4.7.4, «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".

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).