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. Rasterizzazione dei tipi di carattere
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:28, I:226 470 GNOME gestione di informazioni personali (groupware e posta elettronica)
thunderbird V:56, I:123 193432 GTK programma di posta (Mozilla Thunderbird)
kontact V:1, I:12 2195 KDE gestione di informazioni personali (groupware e posta elettronica)
libreoffice-writer V:122, I:414 38212 LO elaboratore di testi
abiword V:1, I:9 3467 GNOME elaboratore di testi
calligrawords V:0, I:6 5836 KDE elaboratore di testi
scribus V:1, I:20 30234 KDE editor per desktop publishing per modificare file PDF
glabels V:0, I:4 1338 GNOME editor di etichette
libreoffice-calc V:118, I:410 30647 LO foglio di calcolo
gnumeric V:4, I:18 10003 GNOME foglio di calcolo
calligrasheets V:0, I:5 11244 KDE foglio di calcolo
libreoffice-impress V:83, I:407 9098 LO presentazioni
calligrastage V:0, I:4 5142 KDE presentazioni
libreoffice-base V:46, I:171 5933 LO gestione di database
kexi V:0, I:1 7118 KDE gestione di database
libreoffice-draw V:84, I:408 13442 LO editor di grafica vettoriale (draw)
inkscape V:17, I:147 99316 GNOME editor di grafica vettoriale (draw)
karbon V:0, I:5 3581 KDE editor di grafica vettoriale (draw)
dia V:2, I:25 3908 GTK editor di grafi e diagrammi di flusso
gimp V:53, I:272 19767 GTK editor di grafica bitmap (paint)
shotwell V:15, I:233 6548 GTK organizzatore di foto digitali
digikam V:2, I:11 265 KDE organizzatore di foto digitali
darktable V:4, I:14 29882 GTK tavolo luminoso e camera oscura per fotografi
planner V:0, I:3 1458 GNOME gestione progetti
calligraplan V:0, I:1 19013 KDE gestione progetti
gnucash V:2, I:9 32579 GNOME contabilità personale
homebank V:0, I:2 1232 GTK contabilità personale
lilypond V:1, I:8 6424 - impaginatore di musica
kmymoney V:0, I:2 13341 KDE contabilità personale
librecad V:1, I:16 8798 applicazione Qt sistema CAD (Computer-Aided Design) (2D)
freecad I:16 53 applicazione Qt sistema CAD (Computer-Aided Design) (3D)
kicad V:2, I:14 196806 GTK sofware per progettazione di schemi elettronici e PCB
xsane V:13, I:148 2339 GTK frontend per lo scanner
libreoffice-math V:67, I:411 2234 LO editor di equazioni matematiche e formule
calibre V:8, I:30 62725 KDE convertitore e gestione di una biblioteca per libri elettronici
fbreader V:1, I:11 2631 GTK Lettori di ebook
evince V:96, I:306 974 GNOME visualizzatore di documenti (pdf)
okular V:35, I:109 17297 KDE visualizzatore di documenti (pdf)
x11-apps V:26, I:440 2476 applicazione X pura xeyes(1), ecc.
x11-utils V:169, I:556 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:124, I:288 572 59 - - Cantarell (GNOME 3, visualizzazione)
fonts-noto I:130 35 61 63 40 Tipi di carattere Noto (Google, multi-lingua con CJK)
fonts-dejavu I:422 39 58 68 40 DejaVu (GNOME 2, MCM:Verdana, Bitstream Vera esteso)
fonts-liberation2 V:114, I:378 4290 56 60 40 Tipi di carattere Liberation per LibreOffice (Red Hat, MCMATC)
fonts-croscore V:20, I:44 5278 56 60 40 Chrome OS: Arimo, Tinos e Cousine (Google, MCMATC)
fonts-crosextra-carlito V:23, I:172 2728 57 - - Chrome OS: Carlito (Google, MCM:Calibri )
fonts-crosextra-caladea I:171 347 - 55 - Chrome OS: Caladea (Google, MCM:Cambria ) (solo latini)
fonts-freefont-ttf V:64, I:226 6656 57 59 40 GNU FreeFont (URW Nimbus esteso)
fonts-quicksand I:391 392 56 - - Quicksand del task-desktop Debian (visualizzazione, solo latini)
fonts-hack V:20, I:95 2508 - - 40 P Un carattere progettato per il codice sorgente, Hack (Facebook)
fonts-sil-gentiumplus I:35 13568 - 54 - Gentium SIL
fonts-sil-charis I:26 6406 - 59 - Charis SIL
fonts-urw-base35 V:127, I:370 15558 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 453 - - 33 Bei tipi di carattere per terminale retrò
ttf-mscorefonts-installer V:1, I:54 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.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).