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® e Mac OS®.

Seppure non sia necessario capire tutti i dettagli dei diversi componenti di X e come interagiscono, tuttavia una qualche 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 originale di X aveva già lavorato ad un altro sistema grafico prima di scrivere X. Il nome di quel sistema era “W” (per “Window”). X era 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; per ulteriori dettagli su questo, consulta X(7).

5.2.2 Il modello client/server di X

X è stato progettato fin dall'inizio per essere incentrato sulla rete ed 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 di operazioni come il controllo del display, la gestione dell'input dalla tastiera e dal mouse, e di altri dispositivi di input o di output (es. una “tavoletta” può essere usata come dispositivo di input, e un proiettore video può essere un dispositivo di output alternativo). 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”.

In una casa o in un piccolo ufficio, il server X e i client X di solito funzioneranno sullo stesso computer. Ad ogni modo, è perfettamente possibile far funzionare il server X su un desktop meno potente, e far funzionare le applicazioni X (i client) su di una potente e costosa 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 quello che 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.

È importante ricordare 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 Mac OS di Apple, e ci sono diverse applicazioni free o commerciali che fanno esattamente questo.

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 responsabilità 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 Microsoft Windows), né che aspetto devono avere le barre sopra ogni finestra, se queste hanno o meno bottoni di chiusura, e così via.

Al contrario 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 aspetto e funzionalità 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 caratteristica per la quale il window manager deve avere responsabilità è 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 dovrebbe anche indicare in modo visibile 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 che 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 necessariamente la finestra che si trova davanti a tutte le altre. Il fuoco cambia se si punta un'altra finestra, e non c'è bisogno 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 visti sullo schermo in ogni applicazione.

“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. Microsoft Windows li chiama “controlli”.

Sia Microsoft Windows che Apple Mac OS hanno delle regole strette per i widget. Gli sviluppatori devono assicurarsi che tutte le loro applicazioni condividano lo stesso stile e lo stesso aspetto. 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 che le applicazioni per X abbiano lo stesso stile e lo stesso aspetto. Ci sono alcuni widgets popolari e le loro variazioni, come l'originale Athena sviluppato dal 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. Rispetto a 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>.