Capitolo 7. Il sistema X Window

Indice

7.1. Pacchetti fondamentali
7.2. Impostare l'ambiente desktop
7.2.1. Menu Debian
7.2.2. Menu Freedesktop.org
7.2.3. Menu Debian dal menu di Freedesktop.org
7.3. La relazione client/server
7.4. Il server X
7.4.1. La (ri)configurazione del server X
7.4.2. I metodi di connessione al server X
7.5. Avviare il sistema X Window
7.5.1. Avviare la sessione X con gdm3
7.5.2. Personalizzare la sessione X (metodo classico)
7.5.3. Personalizzare la sessione X (metodo nuovo)
7.5.4. Connettersi ad un client X remoto via SSH
7.5.5. Terminale X sicuro via Internet
7.6. Tipi di carattere in X Window
7.6.1. Tipi di carattere base
7.6.2. Tipi di carattere aggiuntivi
7.6.3. Tipi di carattere CJK
7.7. Applicazioni per X
7.7.1. Applicazioni da ufficio per X
7.7.2. Applicazioni di utilità per X
7.8. Informazioni varie su X
7.8.1. Appunti
7.8.2. Mappatura della tastiera e dei pulsanti del dispositivo di puntamento in X
7.8.3. Client X classici
7.8.4. L'emulatore di terminale per X - xterm
7.8.5. Eseguire client X come root
[Avvertimento] Avvertimento

Questo capito sta diventando non aggiornato dato che è basato su Debian 7.0 (Wheezy), rilasciata nel 2013.

Il sistema X Window in Debian è basato sui sorgenti di X.org.

Per facilitare l'installazione sono forniti alcuni (meta)pacchetti


Per le nozioni base su X fare riferimento a X(7) e il XWindow-User-HOWTO dell'LDP.

Un ambiente desktop è solitamente una combinazione di un gestore di finestre per X, un gestore di file e una suite di utilità compatibili.

Si può configurare un ambiente desktop completo come GNOME, KDE, Xfce o LXDE da aptitude nel menu dei task.

[Suggerimento] Suggerimento

Il menu dei task potrebbe non essere in sincrono con le più recenti transizioni di pacchetti negli ambienti Debian unstable/testing. In questo caso è necessario deselezionare alcuni (meta)pacchetti elencati nel menu dei task di aptitude(8) per evitare conflitti tra pacchetti. Quando si deselezionano (meta)pacchetti, è necessario selezionare manualmente alcuni pacchetti che forniscono le loro dipendenze per evitare che vengano automaticamente rimossi.

In alternativa è possibile impostare manualmente un ambiente semplice con solamente un gestore di finestre per X come Fluxbox.

Vedere Gestori di finestre per X per una guida ai gestori di finestre per X e agli ambienti desktop.

Il sistema del menu Debian fornisce un'interfaccia generale ai programmi sia testuali sia orientati ad X, tramite update-menus(1) nel pacchetto menu. Ciascun pacchetto installa i propri dati per il menu nella directory "/usr/share/menu/". Vedere "/usr/share/menu/README".

Il sistema X Window è attivato come combinazione di programmi server e client. Il significato delle parole server e client in relazione alle parole locale e remoto richiede un po' di attenzione.


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 per grandi immagini.

Per informazioni sul server X vedere xorg(1).

Ci sono diversi modi per far sì che il "server X" (lato display) accetti connessioni da un "client X" (lato applicazione).


[Avvertimento] Avvertimento

Non usare connessioni remote TCP/IP su reti non sicure per la connessione X a meno che non esistano ragioni molto buone per farlo, come l'uso di cifratura. Una connessione remota via socket TCP/IP senza cifratura è esposta ad attacchi di spionaggio ed è disabilitata in modo predefinito nel sistema Debian. Usare "ssh -X".

[Avvertimento] Avvertimento

Non usare nemmeno connessioni XDMCP su reti non sicure. Inviano dati attraverso UDP/ IP senza cifratura e sono esposte ad attacchi di spionaggio.

Il sistema X Window è solitamente avviato come una sessione X, che è la combinazione di un server X e di client X connessi. Per un normale sistema desktop entrambe le componenti sono eseguite su una macchina.

La sessione X viene avviata in uno dei modi seguenti.

  • Il comando startx avviato dalla riga di comando

  • Uno dei programmi demone display manager per X, *dm avviati al termine dello script di avvio nella directory "/etc/rc?.d/" (dove "?" corrisponde al runlevel)

[Suggerimento] Suggerimento

Lo script di avvio dei demoni display manager controlla il contenuto del file "/etc/X11/default-display-manager" prima dell'effettivo avvio del demone. ciò assicura che venga attivato un solo programma demone per display manager di X.

[Suggerimento] Suggerimento

Vedere Sezione 8.3.5, «Localizzazione specifica solamente in X Window» per le variabili d'ambiente iniziali del display manager per X.

Essenzialmente tutti questi programmi eseguono lo script "/etc/X11/Xsession"; poi questo script effettua un'azione simile a run-parts(8) per eseguire tutti gli script nella directory "/etc/X11/Xsession.d/". Ciò è fondamentalmente l'esecuzione, con il comando interno exec, del primo programma trovato cercando nell'ordine seguente.

  1. Lo script specificato come argomento di "/etc/X11/Xsession" dal display manager di X, se definito.

  2. Lo script "~/.xsession" o "~/.Xsession", se definito.

  3. Il comando "/usr/bin/x-session-manager", se definito.

  4. Il comando "/usr/bin/x-window-manager", se definito.

  5. Il comando "/usr/bin/x-terminal-emulator", se definito.

Questo processo è influenzato dal contenuto di "/etc/X11/Xsession.options". I programmi effettivi a cui puntano questi comandi "/usr/bin/x-*" sono determinati dal sistema di alternative di Debian e possono essere modificati con "update-alternatives --config x-session-manager", ecc.

Vedere Xsession(5) per i dettagli.

gdm3(1) permette di selezionare dal suo menu il tipo di sessione (o l'ambiente desktop: Sezione 7.2, «Impostare l'ambiente desktop») e la lingua (o la localizzazione: Sezione 8.3, «La localizzazione») della sessione X. Archivia il valore selezionato predefinito in "~/.dmrc" nel formato seguente.

[Desktop]
Session=default
Language=ja_JP.UTF-8

Fontconfig 2.0 è stato creato nel 2002 per fornire una libreria indipendente dalla distribuzione per configurare e personalizzare l'accesso ai tipi di carattere. Debian a partire da squeeze usa Fontconfig 2.0 per la sua configurazione.

Il supporto dei tipi di carattere nel sistema X Window può essere riassunto nel modo seguente.

  • Sistema datato di supporto dei tipi di carattere dal lato server X

    • Il sistema originale base di X per i caratteri fornisce la compatibilità all'indietro per le versioni più vecchie dei client X.

    • I tipi di carattere originali base di X11 sono installati nel server X.

  • Sistema moderno di supporto dei tipi di carattere dal lato client X


È possibile controllare le informazioni sulla configurazione dei tipi di carattere nei modi seguenti.

  • "xset q" per il percorso dei tipi di carattere base di X11

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

  • "fc-list" per l'elenco dei tipi di carattere di fontconfig disponibili

[Suggerimento] Suggerimento

"The Penguin and Unicode" è una buona panoramica sul sistema X Window moderno. Altra documentazione all'indirizzo http://unifont.org/ dovrebbe fornire buone informazioni su tipi di carattere Unicode, software che gestisce Unicode, internazionalizzazione e problematiche correlate all'uso di Unicode su sistemi operativi free/libre/liberi/open source (FLOSS).

Ci sono due tipi principali di caratteri per computer.

  • I tipi di carattere bitmap (buoni per rasterizzazione a basse risoluzioni)

  • Tipi di carattere outline/stroke (buoni per rasterizzazione ad alte risoluzioni)

Mentre il ridimensionamento dei caratteri bitmap causa immagini dentellate, il ridimensionamento dei caratteri outline/stroke produce un'immagine pulita.

I caratteri bitmap nel sistema Debian sono di solito forniti da file di caratteri bitmap pcf per X11 compressi, la cui estensione è ".pcf.gz".

I caratteri outline nel sistema Debian sono forniti dai tipi seguenti.

  • File di caratteri PostScript Type 1, la cui estensione è ".pfb" (file di caratteri binario) e ".afm" (file della metrica dei caratteri).

  • File di caratteri TrueType (o OpenType), la cui estensione è normalmente ".ttf".

[Suggerimento] Suggerimento

OpenType è pensato per rendere superati sia TrueType sia PostScript Type 1.

Tabella 7.5. Tabella dei tipi di carattere PostScript Type 1

pacchetto con i caratteri popcon dimensione carattere sans serif carattere serif carattere monospace origine del carattere
PostScript N/D N/D Helvetica Times Courier Adobe
gsfonts I:703 4439 Nimbus Sans L Nimbus Roman No9 L Nimbus Mono L URW (dimensione Adobe-compatibile)
gsfonts-x11 I:134 96 Nimbus Sans L Nimbus Roman No9 L Nimbus Mono L supporto per i caratteri per X con caratteri PostScript Type 1
t1-cyrillic I:23 4884 Free Helvetian Free Times Free Courier URW esteso (dimensione Adobe-compatibile)
lmodern I:148 33270 LMSans* LMRoman* LMTypewriter* caratteri PostScript e OpenType scalabili basati su Computer Modern (da TeX)

Tabella 7.6. Tabella dei tipi di carattere TrueType

pacchetto con i caratteri popcon dimensione carattere sans serif carattere serif carattere monospace origine del carattere
ttf-mscorefonts-installer V:1, I:90 125 Arial Times New Roman Courier New Microsoft (dimensione Adobe-compatibile) (Installa dati non liberi)
fonts-liberation I:575 2093 Liberation Sans Liberation Serif Liberation Mono Progetto Liberation Fonts (dimensione Microsoft-compatibile)
fonts-freefont-ttf V:38, I:382 10747 FreeSans FreeSerif FreeMono GNU freefont (dimensione Microsoft-compatibile)
fonts-dejavu I:489 39 DejaVu Sans DejaVu Serif DejaVu Sans Mono DejaVu, Bitstream Vera con copertura di Unicode
fonts-dejavu-core V:310, I:724 2954 DejaVu Sans DejaVu Serif DejaVu Sans Mono DejaVu, Bitstream Vera con copertura di Unicode (sans, sans-bold, serif, serif-bold, mono, mono-bold)
fonts-dejavu-extra I:510 7217 N/D N/D N/D DejaVu, Bitstream Vera with Unicode coverage (oblique, italic, bold-oblique, bold-italic, condensed)
ttf-unifont I:23 16903 N/D N/D unifont GNU Unifont, con tutti i codici di carattere stampabili in Unicode 5.1 BMP (Basic Multilingual Plane)

[Suggerimento] Suggerimento

I tipi di carattere DejaVu sono basati sui caratteri Bitstream Vera di cui sono un sovrainsieme.

In questa sezione ci sono alcune nozioni fondamentali centrate sull'uso di tipi di carattere con caratteri CJK.


I tipi di carattere con nomi come "VL PGothic", dove la "P" sta per carattere proporzionale, sono la versione proporzionale dei corrispondenti caratteri a spaziatura fissa, come "VL Gothic".

Per esempio la tabella dei codici Shift_JIS comprende 7070 caratteri che possono essere raggruppati nel modo seguente.

  • Caratteri a byte-singolo JIS X 0201 (191 caratteri, alias caratteri a mezza larghezza)

  • Caratteri a doppio-byte JIS X 0208 (6879 caratteri, alias caratteri a piena larghezza)

I caratteri a doppio-byte occupano, nei terminali console che usano tipi di carattere CJK a spaziatura fissa, una larghezza doppia. Per gestire tale situazione, possono essere usati i file HBF (Hanzi Bitmap Font), con estensione ".hbf", per avere tipi di carattere contententi caratteri a byte-singolo e doppio-byte.

Per risparmiare spazio, per i file di caratteri TrueType, si possono usare file con raccolte di tipi di carattere TrueType con estensione ".ttc.

Per gestire complesse spaziature dei caratteri, i tipi di carattere PostScript CID Type 1 sono usati con file CMap che iniziano con "%!PS-Adobe-3.0 Resource-CMap". Ciò viene raramente usato per il normale display X, ma è usato per la resa in file PDF, ecc. (vedere Sezione 7.7.2, «Applicazioni di utilità per X»).

[Suggerimento] Suggerimento

Per alcuni punti della codifica Unicode sono presenti glifi multipli, a causa della unificazione Han. Un esmpio di glifi più problematici sono "U+3001 IDEOGRAPHIC COMMA" e "U+3002 IDEOGRAPHIC FULL STOP" la cui posizione è diversa tra le nazioni CJK. La configurazione della priorità dei caratteri pensati per il giapponese, rispetto a quelli cinesi, usando " ~/.fonts.conf" dovrebbe dare un po' di pace agli utenti giapponesi.

Ecco un elenco di utilità base che hanno attirato la mia attenzione.


[Attenzione] Attenzione

Per far sì che evince e okular visualizzino documenti PDF CJK usando dati Cmap (Sezione 7.6.3, «Tipi di carattere CJK»), deve essere installato il pacchetto poppler-data (precedentemente non libero, vedere Sezione 11.4.1, «Ghostscript»).

[Nota] Nota

L'installazione di software come scribus (KDE) nell'ambiente desktop GNOME è piuttosto accettabile dato che le funzionalità corrispondenti non sono disponibili in GNOME. Tuttavia l'installazione di troppi pacchetti con le stesse funzionalità ingombra il menu.

[Avvertimento] Avvertimento

Non avviare mai il gestore di display/sessione X dall'account root digitando "root al prompt di un display manager come gdm3, perché è considerato rischioso (non sicuro), anche quando si ha in mente di eseguire attività di amministrazione del sistema. L'intera architettura X è considerata non sicura se eseguita come utente root. Bisogna sempre utilizzare il livello di privilegi più basso possibile, come un account di un utente regolare.

Un modo facile di eseguire un particolare client X, ad esempio "pippo", come root è l'uso di sudo(8) ecc., nel modo seguente.

$ sudo pippo &
$ sudo -s
# pippo &
$ gksu pippo &
$ ssh -X root@localhost
# pippo &
[Attenzione] Attenzione

L'uso di ssh(1) solo per questo scopo, come nell'esempio precedente, è uno spreco di risorse.

Per fare sì che il client X si connetta al server X, tenere a mente quanto segue.

  • I valori delle variabili d'ambiente "$XAUTHORITY" e "$DISPLAY" del vecchio utente devono essere copiati nelle variabili del nuovo utente.

  • Il nuovo utente deve avere i permessi di lettura per il file a cui punta la variabile d'ambiente "$XAUTHORITY".

Il pacchetto gksu (popcon: V:51, I:277) è un pacchetto specializzato, con interfaccia utente grafica GTK+, per ottenere i privilegi di root. Può essere configurato per usare su(1) o sudo(8) come backend, a seconda della chiave di gconf "/apps/gksu/sudo-mode". Si può modificare la chiave di gconf usando gconf-editor(1) (menu: "Applicazioni" → "Strumenti di sistema" → "Editor della configurazione").