% Linux Guida dell'Utente                   -*- TeX -*-
  % x11.tex
  % Copyright (c) 1993, 1994 by Larry Greenfield
  %
  % Traduzione di Eugenia Franzoni, 1997
  %
  % Questo file e' liberamente distribuibile, ma si deve preservare questo
  % avviso di copyright su tutte le copie, e deve essere distribuito solo come
  % parte di "Linux Guida dell'Utente". L'uso di questo file e'
  % protetto dal copyright dell'intero documento, nel file "copyright.tex".
  
  % Titolo del capitolo
  \chapter{Il sistema X Window}
  \label{x-chapter}
  
  % Frasetta estratta dal programma fortune e non tradotta...
  % \begin{quote}
  % Any good quotes about X11?
  % \end{quote}
  
  \bindex{Sistema X Window}
  
  \blackdiamond Questo capitolo si applica solamente a chi usa il sistema
  X~Window. Se vi trovate con uno schermo pieno di finestre, a colori o con un
  cursore che si sposta solo con il mouse, state usando X11 (se il
  vostro schermo consiste di caratteri bianchi su sfondo nero, non
  state usando X. Se lo volete avviare, date un'occhiata alla 
  Sezione~\ref{x-start-stop-section}).
  
  \section{Avviare e fermare il sistema X Window}
  \label{x-start-stop-section}
   
  \subsection{Avviare X}
   
  Anche se X non parte automaticamente quando vi loggate, \`e possibile
  avviarlo dal normale prompt della shell testuale. Ci sono due
  comandi
  possibili per avviare X, {\tt startx}\impttindex{startx} o {\tt
  xinit}\impttindex{xinit}; provate prima {\tt startx}: se la shell
  dice che
  non trova il comando, provate ad usare {\tt xinit} e guardate se
  viene
  avviato X. Se nessuno dei due funziona, probabilmente 
  X non \`e
  installato
  nel vostro sistema---consultate la documentazione locale della vostra
  distribuzione.
  
  Se il comando funziona ma alla fine vi ritrovate con lo schermo
  nero con il prompt della shell, X \`e installato ma non configurato.
  Consultate la documentazione della vostra distribuzione per sapere
  come fare.
  
  \subsection{Uscire da X}
   
  % what about the possibility of the xterm being a ``login window''
   
  A seconda di come X \`e configurato, ci sono due possibili modi per
  uscirne. Il primo si applica se il vostro gestore di finestre controlla
  se X viene o non viene eseguito; se \`e cos\`{\i}, dovrete uscire da X
  usando un men\`u  (vedere la Sezione~\ref{x-menus}
  a pagina~\pageref{x-menus}).  Per visualizzare i men\`u, cliccate con
  un pulsante del mouse sullo sfondo.
  
  La voce del men\`u che ci interessa \`e ``Exit Window Manager'' o ``Exit 
  X'' o qualcosa di simile. Provate a cercarla (ricordatevi,
  pu\`o
  esserci pi\`u di un men\`u---provate i vari pulsanti del mouse!) e
  sceglietela.
  
  L'altro metodo funziona se \`e un particolare {\tt xterm} a controllare
  X; se \`e questo il caso, c'\`e probabilmente una finestra con titolo
  ``login'' o ``system xterm'': per uscire da X, spostate il cursore in
  quella finestra e digitate ``exit''.
  
  Se X si \`e avviato automaticamente quando vi siete loggati, uno di
  questi metodi dovrebbe riuscire a chiudere completamente la vostra
  sessione. Per riaprirla, fate di nuovo il login. Se avete avviato X
  manualmente, questi metodi vi dovrebbero far tornare al prompt del
  modo testo (se volete fare logout, digitate {\tt logout} al prompt
  testuale).
  
  \section{Cos'\`e il sistema X Window?}
  
  Il sistema X~Window \`e un metodo di lavoro grafico
  distribuito, sviluppato
  originariamente al Massachusetts Institute of
  Technology\index{Massachusetts Institute of Technology}. Da allora 
   \`e stato
  passato ad un'associazione di venditori (appunto, l'``X~Consortium'') e viene 
  mantenuto da loro.
  
  Il sistema X~Window (da qui in poi abbreviato con ``X''\footnote{Ci sono
  parecchi altri modi per riferirsi al sistema X~Window. Un modo
  comune, anche se {\em non\/} corretto, \`e ``X Windows''.})
  ha nuove versioni ogni pochi anni,
  chiamate release. Nel momento in cui scrivo, l'ultima versione \`e la X11R6, o
  release 6. L'undici in X11 \`e il numero di versione ufficiale, ma non
  c'\`e stata una nuova versione in parecchi anni, n\'e ce n'\`e una in
  programma.
  
  Ci sono due termini quando si parla di X che dovrebbero esservi 
  familiari: il
  {\bf client}\glossary{client} \`e un programma X: per esempio, {\tt xterm}
  \`e il client che mostra la shell quando vi loggate; il {\bf
  server}\glossary{server} \`e un programma che fornisce servizi ai programmi
  client, per esempio, il server disegna la finestra di {\tt xterm} e comunica
  con l'utente.
  
  Siccome il client e il server sono due programmi separati, \`e possibile
  eseguire il client e il server {\em su due macchine fisicamente
  separate}.
  Oltre a fornire metodi
  standard per eseguire grafica, potete anche eseguire un programma su
  una
  macchina remota (anche oltreoceano, se volete!) e averlo visualizzato
  sulla stazione di lavoro che avete di fronte.
  
  Un terzo termine che dovrebbe esservi familiare \`e il {\bf gestore delle finestre}\glossary{gestore delle finestre}, o {\bf window
  manager}\glossary{window manager}. Il gestore delle finestre \`e uno speciale client
  che comunica al server dove posizionare le varie finestre e fornisce
  all'utente i mezzi per spostarle sullo schermo. Il server, da solo,
  non fa
  niente per l'utente, ma fornisce solamente un appoggio tra l'utente e il client.
  
  
  \section{Cos'\`e questa roba sul mio schermo?}
  
  Quando avviate X, vengono avviati parecchi programmi: per primo viene
  avviato il
  server, poi normalmente diversi client. Sfortunatamente questo
  passaggio non \`e
  standardizzato nelle varie distribuzioni. \`E probabile che tra questi
  client ci sia un gestore di finestre, {\tt fvwm} o {\tt twm}, un prompt, {\tt
  xterm}, e un orologio, {\tt xclock}.
  
  \begin{figure}[tbf]\label{full-x-screen}
  \centering
  \epsfig{file=ps-files/screen-shot-5.ps, width=\linewidth}
  \caption{Un esempio di una schermata standard di X. In questo caso,
  l'utente usa {\tt twm}. L'orologio standard \`e stato sostituito da uno
  trasparente, {\tt oclock}.}
  \end{figure}
  
  \subsection{XClock}
  
  \begin{command}
  {\tt xclock} [-digital] [-analog] [-update {\sl secondi}] [-hands
  {\sl
    colore}]
  \end{command}
  
  Parler\`o prima del pi\`u semplice: {\tt xclock}\ttindex{xclock} funziona
  esattamente come vi aspettate. Segna i secondi, i minuti e le ore in
  una
  piccola finestra.
  
  Nessun tipo di interazione con mouse e tasti nella finestra di {\tt xclock}
  ha effetto su esso---questo \`e {\em tutto\/} quello che fa. In effetti ci
  sono varie opzioni che si possono dare al programma per farlo funzionare in
  modi diversi: per esempio, {\tt xclock -digital} crea un orologio digitale,
  {\tt xclock -update 1} crea una lancetta dei secondi che si muove ogni
  secondo, e {\tt -update 5} crea una lancetta dei secondi che si muove
  ogni 5 secondi.
  
  Per maggiori informazioni sulle opzioni di {\tt xclock}, consultate la sua
  pagina man---{\tt man xclock}. 
  Se volete provare ad eseguire un po' di {\tt
  xclock}, dovreste probabilmente leggere la
  sezione~\ref{section-multitasking} (Multitasking) per imparare come
  farli girare in aggiunta ai vostri normali programmi (se avviate un
  {\tt xclock} in primo piano---il modo normale di avviare un
  programma---e ve ne volete sbarazzare, digitate \key{ctrl-c}).
  
  
  \subsection{XTerm}
  % Un titolo migliore?
  
  Una finestra con un prompt all'interno (qualcosa probabilmente simile a:
  {\tt /home/larry\#}) \`e controllata da un programma chiamato {\tt
  xterm}\ttindex{xterm}. {\tt xterm} \`e un programma stranamente 
  complicato. A prima
  vista non sembra fare granch\'e, ma in realt\`a svolge moltissimi
  compiti: {\tt
  xterm} emula un terminale in modo che le applicazioni UNIX in modo
  testo vi
  possano lavorare correttamente, e mantiene un buffer di
  informazioni, in modo che ci si possa riferire ai comandi dati in
  precedenza (per scoprire come usarlo, guardate la Sezione~\ref{x-scroll-bar}).
  
  Per la maggior parte di questo libro impareremo ad usare UNIX da
  riga di comando, e
  questo si pu\`o fare da dentro la finestra {\tt xterm}. Per interagire
  con {\tt
  xterm}, {\em normalmente\/} dovete spostare il puntatore del mouse
  (generalmente a forma di ``X'' o di freccia) nella finestra di {\tt
  xterm}, ma questo comportamento dipende dal gestore delle finestre.
  
  Uno dei modi per avviare un programma da dentro X \`e attraverso un
  {\tt xterm}. Dato che i programmi X sono programmi UNIX standard,
  anche loro possono essere avviati da dentro un normale prompt di
  comandi come gli {\tt xterm}. Far girare un programma a
  lungo termine da un {\tt xterm} bloccherebbe l'{\tt xterm} finch\'e il
  programma non finisce, quindi normalmente i programmi X si avviano in
  background. Per altre informazioni su questo, vedere la Sezione~\ref{section-multitasking}.
  
  
  \section{I gestori di finestre}
  
  In Linux vengono comunemente usati due diversi gestori di finestre: il
  primo, 
  {\tt twm},\ttindex{twm} che \`e l'abbreviazione di ``Tab
  Window Manager'',  % dalla pagina man. E` corretto?
  \`e pi\`u grande dell'altro che viene generalmente usato, {\tt
  fvwm}
  ({\tt fvwm} sta per ``F(?) Virtual Window Manager''---l'autore ha trascurato
  di indicare per cosa stia esattamente la f). Sia {\tt twm} sia {\tt
  fvwm}
  sono altamente configurabili, e questo significa che non posso dirvi
  esattamente cosa fanno i vari  tasti nella vostra particolare
  configurazione.
  
  Per imparare la configurazione di {\tt twm}, guardate la
  sezione~\ref{twm-config-section}. La configurazione di {\tt fvwm} \`e
  spiegata nella sezione~\ref{fvwm-config-section}.
  
  
  \subsection{Quando vengono create nuove finestre}
  
  Un gestore di finestre ha tre possibilit\`a quando viene creata una nuova
  finestra: lo si pu\`o configurare 
  in modo che sia
  mostrato il contorno della finestra stessa e si possa 
  posizionarla sullo schermo 
  (``posizionamento manuale''), oppure \`e
  possibile che posizioni da solo la nuova
  finestra da
  qualche parte sullo schermo
  (``posizionamento casuale''); 
  infine, alcune applicazioni richiedono un posizionamento particolare
  sullo schermo, oppure \`e possibile che il 
  gestore di finestre sia configurato per mostrare
  determinate applicazioni sempre
  nello stesso posto dello schermo (per esempio, posso specificare
  che {\tt xclock} appaia sempre nell'angolo in alto a destra).
  
  
  \subsection{Mettere a fuoco}
  
  Il gestore di finestre controlla alcune cose importanti; la prima cosa che vi
  dovrebbe interessare \`e il ``focus'' (messa a fuoco). La finestra
  messa a fuoco \`e quella che riceve i comandi che inserite da
  tastiera;
  generalmente in X \`e determinata dalla
  posizione del
  cursore del mouse: se questo si trova sopra una delle finestre
  di {\tt
  xterm}\footnote{Potete avere pi\`u di una copia di {\tt xterm} in esecuzione
  nello stesso tempo!}, quell'{\tt xterm} ricever\`a tutto quello che
  inserirete da tastiera. Notate che ci\`o \`e diverso da quello che succede con  
  altri sistemi
  operativi a finestre, come Macintosh, OS/2 o Microsoft Windows, dove
  per mettere a fuoco una finestra dovete
  cliccarci con il mouse:
  di solito, sotto
  X, se il cursore del mouse finisce fuori dalla finestra, il fuoco
  viene perso e non potrete pi\`u digitarci dentro.
  
  Notate, comunque, che \`e possibile configurare sia {\tt twm} sia {\tt fvwm}
  per fare in modo che dobbiate cliccare su una finestra per metterla a
  fuoco, e cliccare altrove per perdere il fuoco, proprio come per
  Microsoft Windows. Scoprite come
  \`e configurato il vostro gestore di finestre provando o consultate la
  documentazione
  locale.
  
  
  \subsection{Spostare le finestre}
  
  Un'altra cosa molto configurabile in X \`e come spostare una finestra. 
  Nella mia configurazione personale di {\tt twm}, ci sono tre modi
  diversi per spostare una finestra: quello pi\`u ovvio \`e spostare il
  cursore del mouse sulla {\bf barra del titolo}, e trascinare la finestra per
  lo schermo; sfortunatamente si pu\`o configurare il sistema per farlo
  con uno qualsiasi dei pulsanti
  (sinistro, destro e centrale)\footnote{Molti PC hanno mouse con solo due
  pulsanti. In questi casi \`e possibile simulare il tasto centrale usando
  contemporaneamente il destro e il sinistro.} (per trascinare,
  spostate
  il cursore del mouse sopra la barra del titolo, e tenete premuto il pulsante
  {\em mentre\/} spostate il mouse). Probabilmente, il vostro sistema \`e
  configurato per spostare le finestre usando il pulsante
  \emph{sinistro}.
  
  Un altro modo per spostare le finestre \`e di tener premuto un
  tasto mentre si trascina il mouse; per esempio, nella {\em mia\/}
  configurazione, se tengo premuto il tasto \key{Alt} e sposto il cursore su
  una finestra, la posso trascinare usando il pulsante sinistro del
  mouse.
  
  Nuovamente, potete riuscire a capire come \`e configurato il gestore di finestre per tentativi o guardando la documentazione locale. 
  Oltre a questo, se volete provare ad interpretare il file di
  configurazione, guardate la sezione~\ref{twm-config-section} per {\tt
  twm}\ttindex{twm}, o la sezione~\ref{fvwm-config-section} per {\tt
  fvwm}\ttindex{fvwm}.
  
  
  \subsection{Profondit\`a}
  
  Siccome le finestre possono sovrapporsi, in X c'\`e il concetto di {\bf
  profondit\`a}. Anche se le finestre e lo schermo sono entrambi 
  bidimensionali,
  una
  finestra pu\`o essere davanti ad altre, oscurandole parzialmente o
  completamente.
  
  Ci sono diverse operazioni che permettono di gestire la profondit\`a:
  
  \begin{itemize}
  \item {\bf Raise} della finestra, per portarla in primo piano. Di
  solito lo si fa
  cliccando sulla barra del titolo con uno dei pulsante del mouse. A
  seconda di come
  \`e configurato il gestore di finestre, pu\`o essere uno qualsiasi dei tre
  (\`e anche possibile che si possa fare con pi\`u di un pulsante). 
  
  \item {\bf Lower} della finestra, per mandarla sullo sfondo. Si pu\`o
  fare con un diverso click sulla barra del titolo. \`E anche possibile
  configurare alcuni gestori in modo che un click mandi la finestra
  avanti se c'\`e qualcosa sopra, e la mandi dietro se \`e in primo piano.
  
  \item {\bf Cycling} delle finestre. \`E un'altra operazione permessa da 
  molti gestori: ogni finestra viene portata in primo piano in
  successione.
  \end{itemize}
  
  
  \subsection{Iconizzazione}
  
  Ci sono parecchie altre operazioni che possono oscurare o nascondere
  completamente le finestre; la prima \`e l'``iconizzazione''; a
  seconda del gestore, si pu\`o fare in vari modi: in {\tt
  twm}, molti configurano un {\bf gestore di icone\index{gestore di icone|see{icon manager}}} ({\bf icon manager}\index{icon manager}): si 
  tratta di una finestra speciale che contiene un elenco di tutte le
  altre
  finestre sullo schermo; cliccando su un nome (a seconda
  dell'impostazione,
  si pu\`o fare con un pulsante qualsiasi del mouse!)
  la finestra scompare---\`e
  iconificata; \`e ancora attiva, ma non potrete vederla. Un altro
  click nel gestore di icone ripristina la finestra sullo schermo.
  
  Questo procedimento \`e abbastanza utile; per esempio, potreste avere
  {\tt xterm} remoti
  su alcuni computer che usate solo occasionalmente; dato che 
  raramente vengono usati tutti nello stesso momento, si possono tenere molte
  finestre di {\tt xterm} iconificate, e lavorare solo con alcune.
  L'unico
  problema \`e che \`e semplice ``perdersi'' le finestre; si creano cos\`{\i}
  sempre nuove finestre che duplicano le funzionalit\`a di quelle gi\`a
  presenti, ma che ci si dimentica di avere iconificate.
  
  Altri gestori di finestre possono creare icone lungo il margine inferiore
  dello schermo, o lasciarle sparse nella finestra principale.
  
  \subsection{Ridimensionare}
   
  Ci sono altri modi diversi per ridimensionare le finestre sotto X.
  Di nuovo, il modo usato dipende dal gestore, e da come \`e
  configurato esattamente. Il metodo pi\`u familiare agli utenti di
  Microsoft Windows \`e di cliccare e trascinare il bordo della finestra.
  Se il vostro gestore di finestre crea dei bordi spessi che fanno cambiare
  l'aspetto del cursore del mouse quando ci passa sopra, probabilmente
  questo \`e il metodo da usare per ridimensionare le finestre.
  
  Un altro metodo \`e di creare un pulsante di ``ridimensionamento''
  sulla barra del titolo. Nella Figura~\ref{full-x-screen}, si vede un
  pulsantino sulla destra di ogni barra del titolo; per ridimensionare
  le finestre, si sposta il mouse su questo pulsante e si preme il
  pulsante destro del mouse. A questo punto si pu\`o spostare il mouse
  fuori dei bordi della finestra per ridimensionarla, quando avete
  raggiunto la dimensione voluta, lasciate il pulsante del mouse.
   
  \subsection{Massimizzazione}
   
  Un'altra operazione supportata dalla maggior parte dei gestori di finestre
  \`e la
  massimizzazione. In {\tt twm}, per esempio, si pu\`o massimizzare la
  larghezza
  o l'altezza, o entrambe le dimensioni della finestra: questa
  operazione \`e chiamata
  ``zoom'' nel linguaggio di {\tt twm}, anche se io preferisco il
  termine massimizzazione. Diverse applicazioni rispondono in modo diverso al cambiamento
  della loro dimensione (per esempio, {\tt xterm} non ingrandisce il
  carattere, ma rende disponibile uno spazio di lavoro maggiore!).
  
  Sfortunatamente non \`e affatto sempre uguale il modo per ingrandire
  una finestra.
  
  
  
  \subsection{Men\`u}\label{x-menus}                  
   
  
  Un altro scopo del gestore di finestre \`e fornire men\`u all'utente per
  velocizzare i compiti ripetuti pi\`u frequentemente. Per
  esempio, si pu\`o creare una voce di men\`u che lancia automaticamente
  Emacs o un altro {\tt xterm}: in questo modo non
  \`e pi\`u necessario inserire comandi in un {\tt xterm}---ottimo
  specialmente se non ci sono {\tt xterm} in esecuzione!
  
  In generale, \`e possibile accedere a diversi men\`u cliccando nella
  finestra principale, che \`e la finestra immobile dietro a tutte le altre. Per
  default \`e colorata di grigio, ma potrebbe essere diversa.\footnote{Un 
  programma divertente da provare si chiama 
  {\tt  xfishtank}\ttindex{xfishtank}. Vi mette sullo sfondo un piccolo
  acquario.}
  Per provare a
  vedere
  un men\`u, cliccate e tenete premuto un pulsante sulla scrivania. Dovrebbe
  apparire un men\`u a tendina. Per fare una selezione, spostate (senza
  rilasciare il pulsante) il cursore del mouse su una voce e quindi
  lasciatelo.
  
  
  \section{Attributi di X}
  
  Ci sono vari programmi che usano X. Alcuni, come
  {\tt emacs}\ttindex{emacs}, possono funzionare sia in modalit\`a testo,
  {\em sia\/} 
  creando la propria finestra. Comunque, la maggior parte dei programmi
  per X funzionano solo sotto X.
  
  \subsection{Geometria}\index{Sistema X Window!geometria}
  
  Ci sono alcune cose comuni a tutti i programmi che funzionano sotto X. 
  In X, la {\bf geometria} di una finestra \`e la posizione e la
  dimensione della finestra stessa. La geometria di una finestra ha
  quattro componenti:
  \begin{itemize}
  \item La dimensione orizzontale, che di solito viene misurata in
  pixel (un pixel \`e la pi\`u piccola unit\`a che pu\`o essere colorata. Molte
  configurazioni sui PC Intel hanno 1024 pixel in orizzontale e 768
  pixel in verticale). Alcune applicazioni, come {\tt xterm} e {\tt
  emacs}, misurano le applicazioni in termini di numero di caratteri
  che entrano nella finestra (ad esempio, si pu\`o avere una larghezza di
  80 caratteri).
  \item La dimensione verticale, anch'essa misurata in pixel. Anche
  questa pu\`o essere misurata in caratteri.
  \item La distanza orizzontale da uno dei lati dello schermo.
  Ad esempio, {\tt +35} posizioner\`a il lato sinistro della finestra a
  35 pixel dal lato sinistro dello schermo. D'altra parte, {\tt -50}
  posizioner\`a il lato destro della finestra a 50 pixel dal lato destro
  dello schermo. In genere \`e impossibile posizionare la finestra fuori
  dello schermo al suo avvio, anche se in seguito ci si pu\`o spostare
  (fanno eccezione le finestre molto grandi).
  \item La distanza verticale dal lato superiore o inferiore dello
  schermo. Una distanza positiva viene misurata dal lato superiore
  dello schermo, ed una negativa da quello inferiore. 
  \end{itemize}
  
  Tutte le quattro componenti vengono unite in una stringa di geometria
  di questo genere:
  {\tt 503x73-78+0} (in questo caso la finestra \`e larga 503 pixel,
  alta 73 pixel, ed \`e posizionata vicino all'angolo in alto a destra
  dello schermo). Un altro modo di indicarla \`e: 
  {\sl dim-oriz\/}{\tt x}{\sl
    dim-vert\/}$\pm${\sl pos-oriz\/}$\pm${\sl pos-vert}.
  
  \subsection{Display}
   
  Ogni applicazione X ha associato un display. Il display \`e il nome
  dello schermo controllato dal server X, e consiste di tre componenti:
   
  \begin{itemize}
  \item Il nome della macchina su cui gira il server. Sulle macchine
  Linux stand-alone il server gira sullo stesso sistema dei client.
  In tali casi, il nome della macchina pu\`o essere omesso.
  \item Il numero del server che gira su quella macchina. Dato che ogni
  macchina pu\`o avere server X multipli che ci girano sopra (cosa strana
  per la maggior parte delle macchine \linux, ma possibile), ognuno
  deve avere un numero identificativo univoco. 
  \item Il numero dello schermo. X supporta un server particolare che
  controlla pi\`u di uno schermo alla volta. Potete immaginare
  qualcuno che abbia bisogno di molto spazio schermo, e che abbia
  quindi due monitor uno accanto all'altro. Dato che per motivi di
  performance non \`e indicato avere due server sulla stessa macchina, un
  solo server controlla i due monitor.
  \end{itemize}
  
  Queste tre cose vengono messe insieme in questo modo:
  {\sl macchina\/}:{\sl numero-server}.{\sl numero-schermo}.
   
  Ad esempio, su {\tt mousehouse}, tutte le mie applicazioni hanno il
  display impostato a {\tt :0.0}, che sta per il primo schermo del
  primo server sul display locale. Comunque, se uso un computer remoto,
  il display sar\`a impostato a {\tt mousehouse:0.0}.
   
  Per default, il display viene preso dalla variabile d'ambiente
  (vedere la Sezione~\ref{section-env-variables}) {\tt DISPLAY}, 
  che pu\`o essere superata usando un'opzione da linea di comando (vedere
  la Figura~\ref{x-standard-options}). Per vedere come impostare la
  variabile d'ambiente {\tt DISPLAY}, provate il comando {\tt echo
  \$DISPLAY}.
  
  \begin{figure}
  \begin{center}
  \begin{tabular}{|l|p{.4\linewidth}|p{.4\linewidth}|}\hline
    Nome & Seguito da & Esempio\\ \hline
  {\tt -geometry} & geometria della finestra & {\tt xterm
    -geometry 80x24+0+90}\\ \hline
  {\tt -display}  & display su cui si vuole far apparire il programma &
                    {\tt xterm -display lionsden:0.0}\\ \hline
  {\tt -fg} & colore primario del primo piano & {\tt xterm -fg
    yellow}\\ \hline
  {\tt -bg} & colore primario dello sfondo & {\tt xterm -bg blue}\\
  \hline
  \end{tabular}
  \end{center}
  \caption{Opzioni standard per i programmi per
  X.}\label{x-standard-options}
  \end{figure}
  
  \section{Caratteristiche comuni}
   
  Anche se X \`e un'interfaccia grafica utente, \`e molto irregolare: \`eE
  impossibile sapere a priori come funziona uno qualsiasi dei suoi componenti,
  perch\'e ognuno pu\`o essere riconfigurato, modificato e persino
  sostituito. Ne abbiamo gi\`a incontrato un caso: i vari gestori di finestre, ciascuno dei quali \`e altamente configurabile.
  
  Un'altra causa di questa irregolarit\`a \`e il fatto che le applicazioni
  per X sono costruite usando delle cose che si chiamano ``insiemi di
  widget''. Nelle distribuzioni standard sono inclusi gli ``Athena
  widget'' sviluppati all'MIT, che vengono comunemente usati nelle
  applicazioni liberamente distribuibili;
  hanno lo svantaggio che non sono particolarmente
  belli a vedersi e sono in qualche modo pi\`u difficili da usare di
  altri widget.\index{Sistema X Window!widget Athena}
  
  L'altro insieme di widget conosciuto \`e ``Motif''.\index{X Window System!widget Motif} 
  Motif \`e un insieme di widget commerciale, simile all'interfaccia
  utente usata per Microsoft Windows. Molte applicazioni commerciali
  usano gli widget Motif, come anche alcune applicazioni liberamente
  distribuibili. Il
  noto Web browser {\tt netscape}\ttindex{netscape} usa Motif.
   
  Proviamo a vedere gli elementi pi\`u comuni che si incontrano.
   
  \subsection{Pulsanti}
   
  I pulsanti sono in genere le cose pi\`u facili da usare. Si richiama un
  pulsante posizionandoci sopra il cursore del mouse e cliccando
  (premendo e lasciando immediatamente il tasto del mouse) sul tasto
  sinistro del mouse. I pulsanti di Athena e di Motif sono
  funzionalmente la stessa cosa, anche se hanno un aspetto diverso. 
  
  \subsection{Barre dei Menu}
  
  Una barra dei men\`u \`e un insieme di comandi accessibili usando il
  mouse. Come esempio, la barra dei  men\`u di {\tt emacs} \`e mostrata in
  Figura~\ref{x11-menu-bar}.  Ogni parola \`e il titolo di una categoria
  di comandi. {\sf File} comprende i comandi che aprono file nuovi e
  salvano i file. Per convenzione, \`e anche la categoria che contiene il
  comando per uscire dal programma.
  
  Per accedere ad un comando, spostate il cursore del mouse su una
  determinata categoria (come {\sf File}), premete il tasto sinistro
  del mouse e tenetelo premuto. Verr\`a mostrata una variet\`a di comandi.
  Per sceglierne uno, spostateci sopra il cursore e lasciate il tasto
  sinistro. Alcune barre dei men\`u vi lasciano cliccare su una
  categoria---se \`e questo il caso, cliccare su una categoria terr\`a
  aperto il men\`u finch\'e non cliccate su un comando, su un altro men\`u o
  fuori della barra (indicando che non vi interessa avviare un comando
  particolare). 
  
  \begin{figure}[tb]
  \begin{center}
  \epsfig{file=ps-files/screen-shot-2.ps, width=\textwidth}
  \end{center}
  \caption{{\tt emacs} cambier\`a la sua barra dei men\`u a seconda del
  tipo di file su cui state lavorando. Ecco una possibile barra dei
  men\`u.}\label{x11-menu-bar}
  \end{figure}
   
  \subsection{Barre di scorrimento}\label{x-scroll-bar}
   
  Una {\bf barra di scorrimento} \`e un metodo che permette di
  visualizzare solo una parte del documento, mentre il resto rimane
  fuori dello schermo. Ad esempio, la finestra di {\tt xterm} in
  Figura~\ref{x11-scrollbar} mostra solo una terza parte del testo
  disponibile. \`E facile vedere quale parte del testo disponibile viene
  visualizzata: la parte scura della barra di scorrimento \`e relativa
  sia alla posizione che alla quantit\`a di testo visualizzato. Se il
  testo viene visualizzato per intero, tutta la barra di scorrimento \`e
  scura. Se viene visualizzata la met\`a centrale del testo, \`e scura la
  met\`a centrale della barra di scorrimento.\index{X Window 
  System!barre di scorrimento}
  
  Si pu\`o avere una barra di scorrimento verticale a sinistra o a destra
  del testo, e una orizzontale sopra o sotto, a seconda
  dell'applicazione.  
   
  \begin{figure}[tb]
  \begin{center}
  \epsfig{file=ps-files/screen-shot-3.ps, height=3in} \hspace{0.7in}
  \epsfig{file=ps-files/screen-shot-4.ps, height=3in}
  \end{center}
  \caption{A sinistra di questa finestra {\tt xterm} \`e visibile una
  barra di scorrimento di tipo Athena. Sulla finestra di {\tt Netscape}
  \`e visibile una barra di scorrimento di tipo Motif.}\label{x11-scrollbar}
  \end{figure}
   
   
  \subsubsection{Barre di scorrimento Athena}
   
  Le barre di scorrimento di tipo Athena operano in maniera diversa da
  quelle degli altri sistemi operativi a finestre. Per
  scorrere il testo verso l'alto (cio\`e per mostrare il materiale
  che sta sopra quello correntemente visibile) si pu\`o cliccare 
  sul pulsante destro in qualsiasi punto della barra di
  scorrimento. Per scorrere verso il basso, cliccate con il pulsante
  sinistro in qualsiasi punto della barra.
  
  Si pu\`o anche saltare ad un punto particolare del materiale mostrato
  cliccando con il pulsante centrale del mouse in un qualsiasi punto
  della barra di scorrimento. In questo modo nella finestra viene
  visualizzato il materiale che si trova a quel punto del documento.
   
  \subsubsection{Barre di scorrimento Motif}
   
  Le barre di scorrimento Motif funzionano pi\`u o meno come quelle del
  Macintosh o di Microsoft Windows. Un esempio si trova a destra in
  Figura~\ref{x11-scrollbar}.  Notate che in aggiunta alla barra, ci
  sono delle frecce sopra e sotto la barra stessa; vengono usate per i
  piccoli movimenti: cliccando su una di esse con il pulsante destro o
  centrale del mouse si far\`a scorrere una piccola quantit\`a di testo (come
  una linea); il pulsante sinistro non ha effetto. 
   
  Quello che succede cliccando all'interno della barra di scorrimento
  con le barre Motif \`e molto diverso rispetto alle barre Athena.
  Il pulsante destro non ha effetti. Cliccando con il sinistro sopra la
  posizione corrente il testo scorre verso l'alto. In modo simile,
  cliccando sotto la posizione corrente il testo scorre verso il basso.
  Cliccando e tenendo il pulsante sinistro \emph{sulla} posizione
  corrente permette di spostare a piacere la barra; rilasciando il
  pulsante sinistro si posiziona la finestra.
  
  Cliccare sul pulsante centrale in qualsiasi punto della barra far\`a
  saltare immediatamente a quella posizione, come per il pulsante
  centrale delle barre Athena, ma invece di iniziare a mostrare
  i dati alla posizione cliccata, quella posizione viene presa come 
  \emph{punto centrale} dei dati da mostrare.
   
  \eindex{Sistema X Window}
  % Local Variables:
  % mode: latex
  % TeX-master: "guide"
  % End:
