5.2 Capire X

Usare X per la prima volta può essere talvolta scioccante per quelli che hanno familiarità con altri ambienti grafici, come Microsoft Windows o MacOS

Non é necessario capire tutti i dettagli dei diversi componenti di X e come interagiscono; in ogni caso, una piccola conoscenza di base rende possibile avvantaggiarsi delle funzionalità di X.

5.2.1 Perchè X?

X non è il primo window manager scritto per Unix, ma è il più popolare. Il gruppo di sviluppo di X aveva già lavorato ad un altro sistema grafico prima di scrivere X. Il nome di quel sistema era “W” (per “Window”). X è semplicemente la lettera seguente nell'alfabeto Romano.

X può essere chiamato “X”, “X Window System”, “X11”, e in altri modi. Chiamare X11 “X Windows” potrebbe dare fastidio a della gente; dà un'occhiata a X(1) per ulteriori informazioni su questo.

5.2.2 Il modello client/server di X

X è stato progettato fin dall'inizio per essere usato in rete, e adotta un modello “client-server”. Nel modello di X, il “server X” funziona sul computer che ha tastiera, monitor e mouse attaccati. Il server è responsabile del controllo del display, del trattamento dell'input dalla tastiera e dal mouse, e così via. Ogni applicazione X (come XTerm, o Netscape) è un “client”. Un client spedisce messaggi al server come “Per favore disegna una finestra a queste coordinate”, e il server risponde con messaggi quali “L'utente ha appena premuto il bottone OK”.

Se si tratta solo di un computer, come in una casa o in un piccolo ufficio, il server X e i client X funzioneranno sullo stesso computer. Ad ogni modo, è perfettamente possibile far funzionare il server X su una macchina meno potente, e far funzionare le applicazioni (i client) su di una macchina che serve l'ufficio. In questo scenario le comunicazioni tra il client X e il server hanno luogo attraverso la rete.

Questo confonde certa gente, perchè la terminologia di X è proprio l'opposto di come ci si possa aspettare di solito. Normalmente ci si aspetta che il “server X” sia la grossa e potente macchina in fondo alla sala, e il “client X” sia la macchina sulla propria scrivania.

Ricorda che il server X è la macchina con il monitor e la tastiera, e i client X sono i programmi che mostrano le finestre.

Non c'è nulla nel protocollo che obbliga la macchina client e quella server ad utilizzare lo stesso sistema operativo, oppure a funzionare sullo stesso tipo di computer. È certamente possibile far funzionare un server X su Microsoft Windows o MacOS, e ci sono diverse applicazioni free o commerciali che fanno esattamente quello.

Il server X che viene fornito con FreeBSD è chiamato XFree86, ed è disponibile gratuitamente, sotto una licenza molto simile a quella di FreeBSD. Server X commerciali per FreeBSD sono comunque disponibili.

5.2.3 Il Window Manager

La filosofia di design di X è molto simile a quella di Unix, “strumenti, non regole”. Questo significa che X non prova a dire come una azione debba essere compiuta. Invece, vengono forniti degli strumenti all'utente, ed è quindi esponsabilitè dell'utente decidere come usare questi strumenti.

Questa filosofia si estende al fatto che X non dice come le finestre debbano comparire sullo schermo, né come queste debbano essere spostate con il mouse, né quali tasti servano per muoversi attraverso le finestre (ad esempio, Alt+Tab, nel caso di Windows), né che aspetto devono avere le barre sopra ogni finestra, se queste hanno o meno bottoni di chiusura, e così via.

Invece X delega questa responsabilitè ad una applicazione chiamata “Window Manager”. Ci sono dozzine di window manager disponibili per X; AfterStep, Blackbox, ctwm, Enlightenment, fvwm, Sawfish, twm, Window Maker, ed altri. Ciascuno di questi window manager fornisce un diverso aspetto ed ambiente; alcuni di questi supportano i “virtual desktop”; alcuni consentono di avere delle combinazioni di tasti predefinite per gestire il desktop; altri hanno un pulsante “Start” o simile; altri possono avere dei “temi”, permettendo un cambio completo di look-and-feel applicando un nuovo tema. Questi window manager, e molti altri, sono disponibili nella categoria x11-wm dei Port.

Inoltre, i desktop environments KDE e GNOME hanno tutti e due il proprio window manager che si integra con il desktop.

Ciascun window manager inoltre ha a un proprio meccanismo di configurazione; alcuni si aspettano di avere un file di configurazione scritto a mano, altri hanno delle interfacce grafiche per molti dei compiti di configurazione; almeno uno (sawfish) ha un file di configurazione scritto in un dialetto del linguaggio Lisp.

Regole di fuoco: Un'altra capacità che il window manager deve avere è la cosiddetta “focus policy”, o Regola di fuoco. Ogni sistema a finestre necessita di un modo per scegliere la finestra che deve essere attiva e che deve ricevere le comunicazioni da tastiera, e deve indicare univocamente quale finestra è attiva in un determinato momento.

Una Focus policy familiare è chiamata “click-to-focus”. Questo è il modello utilizzato da Microsoft Windows, nel quale una finestra diventa attiva dopo aver ricevuto un click del mouse.

X non supporta alcuna focus policy particolare. Invece il Window Manager controlla quale finestra è attiva in un determinato momento. Diversi Window manager supporteranno diversi metodi di focus. Tutti supportano il click-to-focus, e la maggioranza di questi ne supporta molti altri.

Le regole di fuoco più popolari sono:

focus-follows-mouse (o fuoco-segue-mouse)

La finestra su cui si trova il puntatore è quella che riceve il fuoco. Questa potrebbe non essere necesariamente la finestra che si trova davanti a tutte le altre. Il fuoco cambia se si punta un'altra finestra, e non c'è modo di fare click con il mouse.

sloppy-focus

Questa policy è una piccola estensione della focus-follows-mouse. Con focus-follows-mouse, se il mouse viene mosso sulla finestra principale (o sullo sfondo), allora nessuna finestra avrà il fuoco, e la pressione di un tasto verrà semplicemente ignorata. Con Sloppy-focus, il fuoco è solamente cambiato quando il cursore entra in una nuova finestra, e non quando si esce dalla finestra corrente.

click-to-focus

La finestra attiva è scelta dal click del mouse. La finestra potrebbe essere allora “alzata”, ed apparire davanti alle altre finestre. Tutte le pressioni dei tasti saranno da quel momento dirette a questa finestra, anche se il cursore viene spostato su un'altra finestra.

Molti window manager supportano altre policy, come possono avere variazioni sul tema. Per maggiori informazioni vi preghiamo di consultare la documentazione stessa del window manager.

5.2.4 I Widget

L'approccio di X di fornire strumenti e non regole si estende anche ai widget, cioè ai contenitori contenenti, sullo schermo, le applicazioni.

“Widget” è un termine usato per tutte quelle parti nell'interfaccia utente che possono essere cliccate o manipolate in un certo modo; bottoni, checkboxes, radio buttons, icone, liste, e così via. Windows li chiama invece “controlli”.

Sia Microsoft Windows che Apple MacOS hanno delle regole strette per i widget. Gli sviluppatori devono assicurarsi che tutte le loro applicazioni condividano lo stesso stile. Con X, non si è sentito un particolare bisogno di obbligare ad avere un particolare stile grafico, o settare widgets a cui aderire.

Come risultato, non aspettatevi applicazioni per X che abbiano lo stesso stile. Ci sono alcuni widgets popolari e le loro variazioni, come l'originale Athena sviluppato dall'MIT, Motif (dal quale è stato modellato il widget presente su Microsoft windows, tutti angoli a doppio livello e tre sfumature di grigio), OpenLook, ed altri.

Molte applicazioni nuove di X di oggi usano un widget con sembianze moderne, probabilmente Qt, usato da KDE, o GTK, usato da GNOME. Nel rispetto di questo, c'è un accenno di convergenza nell'aspetto dei desktop UNIX, il che facilita le cose ai nuovi utenti.

Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Per domande su FreeBSD, leggi la documentazione prima di contattare <questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a <doc@FreeBSD.org>.