Capitolo 15. X

Sommario
15.1. Che cos'è X?
15.2. Configurazione
15.3. Il mouse
15.4. La tastiera
15.5. Il monitor
15.6. La scheda video e il server
15.7. Avviare X
15.8. Personalizzare X
15.9. Altri window manager
15.10. Esempio di uso delle risorse di X
15.11. Login grafico con xdm

15.1. Che cos'è X?

Il sistema X Window è un ambiente di lavoro grafico disponibile per NetBSD e per molti altri sistemi Unix (e non Unix). In effetti X è più di un semplice ambiente grafico: grazie all'uso del protocollo X, il sistema X Window è "network transparent" (trasparente alla rete) ed è in grado di eseguire applicazioni distribuite (client-server). Ciò significa, in prima approssimazione, che è possibile lanciare un programma su un host "client" e visualizzarne l'output grafico sul un altro host "server" in modo del tutto trasparente; trasparente significa, in questo caso, che non è necessario modificare l'applicazione per ottenere questo risultato. Il sistema X Window e prodotto dall' "X Consortium" e la release corrente è X11R6. La versione di X usata da NetBSD è XFree86, un'implementazione open source liberamente ridistribuibile del sistema X Window.

quando si incomincia a usare X si incontrano parecchi termini il cui significato può apparire inizialmente oscuro. Gli elementi base di X sono:

Ricapitolando, per poter utilizzare l'ambiente grafico occorre:

Normalmente si utilizza un solo window manager alla volta per ogni server X (ma è possibile attivare più di un server X su uno stesso computer).

15.2. Configurazione

A meno di non aver scelto una configurazione minima, al termine dell'installazione X, nella sua incarnazione XFree86, è già presente sul sistema e pronto per funzionare, a patto di creare il file di configurazione, il temuto /etc/XF86Config. Per farsi un'idea dell'aspetto di questo file si può dare un'occhiata a /usr/X11R6/lib/X11/XF86Config.eg. La struttura del file di configurazione è descritta formalmente in XF86Config(4/5) e si può esaminare con:

# man XF86Config    

Prima di configurare il sistema è consigliabile un'attenta lettura della documentazione di XFree86 in /usr/X11R6/lib/X11/doc: vi sono dei file README specifici per le schede video e per il mouse e anche un README.NetBSD. Consiglio di cominciare con la lettura di QuickStart.doc. Il tempo dedicato alla lettura di queste informazioni non è affatto sprecato: la conoscenza della propria configurazione e di come utilizzarla con X è di grande importanza per sfruttare al meglio il proprio hardware.

Il file /etc/XF86Config può essere scritto manualmente con un qualsiasi editor oppure sfruttando un programma che lo crei in automatico, partendo dalla configurazione specificata interattivamente dall'utente. I programmi più noti sono xf86config e XF86Setup. Il primo funziona in modo testo e viene installato di default insieme a X, il secondo è un programma grafico che si trova nella collezione dei package.

Entrambi gli applicativi richiedono all'utente di specificare la configurazione del proprio sistema e, in particolare:

Prima di scrivere il file di configurazione, a mano o utilizzando uno dei due programmi già menzionati, bisogna procurarsi queste informazioni.

15.3. Il mouse

Per quanto riguarda il mouse bisogna verificare se il mouse è di tipo seriale o PS/2 e se si sta usando il dispositivo wsmouse, che richiede un protocollo diverso. Per il mouse seriale bisogna scegliere il protocollo corretto e specificare la porta seriale. Per esempio, per un mouse sulla prima porta seriale:

Section "Pointer"
  Protocol    "Microsoft"
  Device      "/dev/tty00"
EndSection    

Per un mouse sul dispositivo wsmouse:

Section "Pointer"
  Protocol    "wsmouse"
  Device      "/dev/wsmouse0"
EndSection    

Nel campo "Device" si può anche specificare /dev/mouse a patto di creare l'appropriato link nel filesystem. Per esempio:

# ln -sf /dev/wsmouse0 /dev/mouse    

15.4. La tastiera

Anche se avete già configurato la tastiera per wscons, per poter usare X è necessario effettuare una configurazione delle tastiera specifica per quest'ambiente, cosa, comunque, tutt'altro che complessa.

In mancanza di specifiche controindicazioni conviene utilizzare il protocollo XKB, selezionando il tipo di tastiera e il suo layout.

La configurazione della tastiera è uno dei punti deboli di tutti i programmi di configurazione automatica. Solitamente conviene lasciare impostata la configurazione originale inglese e poi ritoccare manualmente il file di configurazione generato dal programma. Per esempio:

# XkbDisable
# XkbKeymap   "xfree86(us)"

XkbModel        "pc102"
XkbLayout       "it"
XkbVariant      "nodeadkeys"    

Sostituendo pc105 a pc102 in XkbModel si possono utilizzare anche i simboli delle tastiere Windows.

15.5. Il monitor

È fondamentale specificare correttamente i valori della frequenza orizzontale e verticale del monitor: una definizione corretta protegge il monitor da impostazioni incompatibili della scheda video, evitando che venga danneggiato. Questi dati sono presenti sui manuali di tutti i monitor. Nella directory con la documentazione è presente un file con le specifiche di un gran numero di monitor.

15.6. La scheda video e il server

La scheda video può essere scelta dal database dei programmi di configurazione. Una volta scelta la scheda, il programma si prenderà cura delle restanti impostazioni.

Una volta scelta la scheda bisogna definire il server da utilizzare. I programmi di configurazione di solito sono in grado di scegliere il server giusto in base alla scheda grafica selezionata. Alcune schede, però, sono supportate da più di un server e in questo caso occorre decidere in base alla documentazione; server diversi hanno generalmente caratteristiche e livelli di supporto diversi. Un esempio tipico è la scheda S3 Virge che è supportata sia dal server SVGA sia dal server S3V.

15.7. Avviare X

All'uscita dal programma di configurazione viene creato il file /etc/XF86Config, che può essere esaminato e modificato a mano.

Prima di lanciare X conviene:

A questo punto si può lanciare X con il comando:

# startx    

Se X non parte bisognerà capire il motivo osservando i messaggi visualizzati sullo schermo e correggere il file di configurazione.

Se X si avvia ma qualcosa non funziona (per esempio il mouse) si può uscire rapidamente da X con la combinazione di tasti Ctrl-Alt-Backspace (non disponibile in tutti i port). Se invece tutto va bene ci si ritrova nell'ambiente X con il window manager di default che è twm; si tratta di un window manager semplice ma efficace, tanto che molti non sentono il bisogno di cercarne altri e continuano a usarlo. Naturalmente è possibile installare un altro window manager come pure personalizzare l'aspetto di twm. Per esempio, provare a dare il seguente comando in un xterm:

# xsetroot -solid DarkSeaGreen    

15.8. Personalizzare X

Vi sono vari modi per personalizzare la configurazione (cioè l'aspetto e le finestre) di X all'avvio. Uno dei più semplici è creare un file .xinitrc nella propria home directory, copiando quello di default e modificandolo.

# cp /usr/X11R6/lib/X11/xinit/xinitrc ~/.xinitrc
# vi .xinitrc
    

Ecco un esempio di modifica che avvia il window manager, mostra l'orologio in basso a destra e apre due xterm. Inoltre imposta un colore per lo sfondo.

la prima parte è uguale
...
# start some nice programs
twm &
xclock -geometry 50x50-1-1 &
xterm -geometry 80x34-1+1 -bg OldLace &
xsetroot -solid Bisque4 &
exec xterm -geometry 80x44+0+0 -bg AntiqueWhite -name login    

Con questo tipo di configurazione, per uscire da X bisogna chiudere l'ultimo xterm (quello con il nome "login").

Al di là dei gusti personali in fatto di disposizione delle finestre e di colori, mi sembra evidente che solo con queste piccole modifiche l'ambiente di lavoro è diventato più piacevole.

Per migliorare ancora di più l'aspetto del desktop si possono installare alcuni programmi di utilità dalla collezione dei package, tra cui:

15.9. Altri window manager

Chi non si accontenta di twm può installare un altro window manager tra i tanti disponibili nella collezione dei package. Tra i più popolari: fvwm2, olwm/olvwm (Open Look Window Manager), WindowMaker, Enlightenment, AfterStep.

Nel seguito vediamo, a titolo di esempio, l'installazione di WindowMaker. Per aggiungere il programma utilizziamo il package precompilato windowmaker-0.60.tgz, che dipende da una serie di package che devono essere installati. Come sempre sia pkg_add sia make install gestiranno automaticamente tutte le dipendenze, e pertanto in realtà non è necessario individuarle e installarle manualmente.

# cd /usr/pkgsrc/x11/windowmaker
# make depends-list
xpm-3.4k
jpeg-6b
pkglibtool-1.2p2
giflib-3.0
libproplist-0.9.1
tiff-3.5.2    

Dopo aver aggiunto i package richiesti, aggiungiamo anche WindowMaker e, già che ci siamo, un po' di temi:

# pkg_add windowmaker-0.61.0.tgz wmthemes-0.6x.tgz    

WindowMaker è ora installato e per avviarlo basta modificare .xinitrc e/o .xsession, sostituendo la chiamata al precedente window manager (twm) con la chiamata a wmaker. Per esempio:

# start some nice programs
# start WindowMaker
wmaker &
xclock -geometry 50x50-1-1 &
xdaemon2 -geometry +0-70 &
...      
In questo esempio viene lanciato automaticamente anche il programma xdaemon che "personalizza" il desktop.

Prima di avviare WindowMaker bisogna eseguire il programma di configurazione:

$ wmaker.inst
$ startx
    

15.10. Esempio di uso delle risorse di X

A titolo di esempio su come si personalizzano le risorse dei programmi X, vediamo come cambiare il font di default di un XTerm.

Per personalizzare le risorse utilizzate da un programma, nel nostro caso XTerm, si può agire a livello globale, modificando il file /usr/X11R6/lib/app-defaults/Xterm, ma è preferibile effettuare la modifica nel file ${HOME}/.Xresources, anché perchè, così facendo, non viene persa in caso di aggiornamento di X o del sistema operativo.

Una volta presa questa decisione bisogna scegliere un nuovo font usando i programmi xfontsel e xlsfonts. Conviene anche consultare il file che definisce gli alias dei font, che è /usr/X11R6/lib/X11/fonts/misc/font.alias. Per esempio, si scopre che il font di default "fixed" è in realtà un alias di "-misc-fixed-medium-r-semicondensed-13-120-75-c-60-iso8859-1". Anche i font come, per esempio, "9x15" sono in realtà degli alias.

Una volta scelto il font, prima di installarlo in .Xresources, lo si può provare con un comando simile al seguente:

$ xterm -fn '-bitstream-courier-medium-r-normal-*-15-*-*-*-*-*-*-*'      
Una volta trovato il font desiderato, che supponiamo sia "9x15", lo si inserisce nel file .Xdefaults con una riga di questo tipo:
XTerm.VT100.font: 9x15      
Per rendere immediatamente effettivo il cambiamento eseguire il comando:
$ xrdb -merge ~/.Xresources      
Al successivo riavvio di NetBSD non è più necessario dare il comando precedente perché il file .xinitrc solitamente effettua automaticamente il merge di .Xresources.

Nota: si noti che

XTerm.VT100.font: 9x15	
è diverso da
XTerm*font: 9x15	
Nel secondo caso il carattere "*" agisce da carattere jolly (wildcard) e quindi la direttiva ha effetto su tutti i tipi di font (per esempio anche su quelli dei menu). La scelta di una delle due forme dipende quindi dall'effetto che si vuole ottenere.

Esaminando la pagina di manuale di XTerm (come pure quella della maggior parte dei programmi X) si trovano le indicazioni sulle risorse che è possibile personalizzare.

Quasi tutti i programmi X (quelli scritti con i cosiddetti "X Toolkit Intrinsics"), accettano alcune opzioni comuni da linea di comando, quali:

  • -display display

  • -geometry geometry

  • -bg color, -fg color

  • -fn font

  • -xrm resourcestring

Si veda la pagina di manuale di X per ulteriori dettagli.

15.11. Login grafico con xdm

Se si utilizza sempre X per lavorare, può essere piacevole avviarlo direttamente all'accensione del computer e avere un login grafico. Niente di più semplice:

I file di configurazione di xdm si trovano in /usr/X11R6/lib/X11/xdm. In Xservers viene avviato X sul terminale virtuale vt05: se lo si vuole avviare su un altro terminale questo è il posto giusto per intervenire. Per un buon funzionamento di xdm, al fine di evitare che due processi entrino in conflitto per la tastiera, conviene avviare xdm su un terminale virtuale in cui getty non è attivo. In pratica, se in Xservers abbiamo:

:0 local /usr/X11R6/bin/X :0 vt04    

in /etc/ttys è opportuno avere:

ttyE3   "/usr/libexec/getty Pc"         vt220   off secure    

(si noti che vt04 corrisponde a ttyE3, perchè la numerazione dei vt incomincia da 1 mentre quella dei ttyE incomincia da 0).

Per rendere la schermata di login di xdm un po' meno "misera", basta intervenire sui file di configurazione di xdm. Per esempio, si può cambiare il colore dello sfondo aggiungendo al file Xsetup_0 la riga seguente:

xsetroot -solid SeaGreen    

Oppure, invece del colore, come sfondo si può mettere un'immagine, usando xpmroot. Per esempio:

xpmroot /path_to_xpm/netbsd.xpm    

Giocando sui file di configurazione si possono ottenere molti effetti gradevoli.