UNIX: introduzione elementare

L'interfaccia grafica X Window

Unix nasce nei primi anni '70, quando i grandi elaboratori centralizzati, i mainframe, lavoravano soprattutto mediante schede perforate, ed i terminali con video e tastiera, così come li conosciamo oggi, erano appannaggio di pochi fortunati. L'intero sistema operativo è stato sviluppato quindi in modo tale da prescindere completamente dal tipo di terminale con cui l'utente avrebbe utilizzato il sistema. Dal momento che spesso l'utente di un sistema Unix non opera direttamente sulla console della macchina, ma è collegato con un terminale connesso al server attraverso una rete o una linea telefonica, si è cercato di limitare al massimo lo scambio di messaggi a video tra il sistema e l'utente, in modo da non penalizzare in modo eccessivo gli utenti dotati di una connessione lenta o con una capacità di banda ridotta. Negli ultimi dieci anni hanno avuto un grosso sviluppo le tecnologie per la gestione del video e della cosiddetta interfaccia utente, ossia quell'insieme di dispositivi hardware e software che permettono all'utente di comunicare (in gergo, di interfacciarsi) con la macchina. Grazie al lavoro svolto da un gruppo di ricercatori "visionari" (almeno per quei tempi, oggi possiamo dire lungimiranti) del Palo Alto Research Center (PARC) della Xerox, hanno avuto un particolare sviluppo quelle che oggi chiamiamo GUI, Graphical User Interface, che ci permettono di operare su un terminale grafico, interagendo col sistema principalmente mediante il mouse e l'uso estensivo di rappresentazioni grafiche (icone, finestre, la metafora del desktop, ecc.). Ci stiamo riferendo a quello che sicuramente ognuno di noi ha utilizzato spesso su un personal computer in ambiente Windows o su un Macintosh.

Anche Unix, ormai da diversi anni, è dotato di una propria interfaccia grafica standard, denominata X Window (o anche X11). In questo capitolo cercheremo di farci un'idea piuttosto sommaria ed un po' superficiale, di cosa ci offre in più l'uso di questo ambiente, rispetto al terminale alfanumerico.

X Window e i window manager

X Window è un sistema con una interessantissima architettura client/server, aperto, facilmente portabile da un sistema operativo ad un altro ed in grado di garantire anche un elevato livello di interoperabilità tra un sistema e l'altro. È necessario premettere tutto questo per poter spiegare la grande potenza di questo sofisticato sottosistema grafico, che adotta una filosofia completamente diversa da quella di altre interfacce utente grafiche strettamente legate ad uno specifico sistema operativo. L'interfaccia grafica di Microsoft Windows è strettamente legata al sistema operativo, come anche l'interfaccia di Mac OS X o del System della Apple: anzi, il sistema operativo è composto anche dalle funzionalità della sua interfaccia grafica. X Window, invece, è un sottosistema grafico completamente indipendente dal sistema operativo: ne esiste dunque una implementazione (la più diffusa) per ogni sistema operativo Unix, ma ne esistono anche implementazioni per Windows e per i sistemi operativi della Apple, e in passato è stato utilizzato moltissimo anche in ambiente Digital VAX/VMS.

Il punto di forza di X11 è aver disaccoppiato la componente applicativa che richiede di utilizzare funzioni di visualizzazione ed interazione grafica con l'utente, dalla parte di presentazione che, sulla base delle richieste della componente applicativa, presenta sullo schermo del terminale grafico le icone e le finestre e consente di interagire con il sistema attraverso il mouse e la tastiera. È dunque un sistema client/server in cui la componente client, l'applicazione che produce un output grafico, si collega e colloquia con una controparte server, il cosiddetto X Window Server, che autorizza il collegamento e gestisce la visualizzazione dell'output sfruttando al meglio le caratteristiche del terminale grafico che controlla. Anche nei sistemi operativi Windows esiste una comunicazione tra l'applicazione e il sistema operativo che offre servizi di visualizzazione grafica, ma tale relazione viene stabilita attraverso delle funzioni API (Application Programming Interface) che permettono di visualizzare l'output solo sullo schermo del personal computer su cui sia l'applicazione che il sistema operativo vengono eseguiti. In ambiente X Window invece, le due componenti possono operare anche su macchine fisicamente distinte e distanti fra loro. Non a caso la maggior parte dei server Unix non sono dotati neanche di una componente hardware per la gestione della visualizzazione grafica (la cosiddetta "scheda grafica"), mentre questa è una componente indispensabile di ogni PC: il server Unix infatti si limita soltanto ad eseguire le applicazioni lanciate dagli utenti, mentre della visualizzazione dell'output in forma grafica si occupa un terminale grafico dotato di un server X Window. In questo modo diventa possibile utilizzare in modalità grafica la potenza di calcolo e di storage di uno stesso server da parte di più utenti connessi a terminali grafici distinti; ma al tempo stesso è anche possibile visualizzare sullo stesso terminale grafico l'output di applicazioni che girano su server differenti.

Schematizzazione dell'architettura client/server di X Window
Schematizzazione dell'architettura client/server di X Window

Un'altra componente importante del sottosistema grafico X Window è costituito dal window manager che, interagendo con il server X Window, si occupa di gestire l'aspetto grafico delle finestre e la modalità di interazione dell'utente con il desktop. Di fatto i "bottoni" con cui possiamo chiudere una finestra o ridurla ad una icona dislocata da qualche parte sul desktop, la "barra del titolo" con cui possiamo trascinare la finestra in giro per lo schermo ed altri aspetti grafico/funzionali che siamo abituati a trovare su ogni interfaccia utente grafica, non fanno parte dell'applicazione, ma sono servizi offerti all'applicazione dal window manager. Su Microsoft Windows il window manager è uno solo ed è integrato nell'interfaccia grafica, mentre su X Window è possibile definire quale window manager si intende utilizzare, senza che questo comporti la necessità di apportare delle modifiche alle applicazioni. Uno stesso sistema può quindi essere configurato in modo tale da consentire ai propri utenti di scegliere il loro window manager preferito, con cui lavorare durante le sessioni al terminale grafico.

Alcuni window manager consentono la gestione di virtual desktop: lo schermo a disposizione dell'utente viene reso virtualmente molto più grande di quello fisicamente visibile attraverso il monitor; mediante una finestra particolare (chiamata pager) che rappresenta in scala ridotta l'intero grande schermo, è possibile selezionare la zona da "inquadrare" nel video del terminale.

I window manager storicamente più diffusi sono quattro, ma molti altri ne esistono o sono in via di sviluppo o di definizione:

A questi window manager "storici"(1) si sono affiancati negli anni altri prodotti meno diffusi, ma più sofisticati, a cui si sono aggiunti dei prodotti più ampi, denominati desktop manager, che oltre ad offrire dei servizi per la gestione delle finestre alle applicazioni grafiche, offrono all'utente una serie di utility che rendono più confortevole la gestione del desktop. Il più famoso in questa categoria è l'ambiente CDE (common desktop environment), supportato da tutti i principali Unix proprietari (Solaris, AIX, HP-UX, ecc.). Gnome e KDE (K Desktop Environment) sono degli ambienti ancor più sofisticati nati nel mondo open source che consentono agli sviluppatori di applicazioni di sfruttare delle librerie di funzioni grafiche aggiuntive, per realizzare programmi con interfacce utente ancora più complesse.

Una sessione X Window con TWM window manager
Una sessione X Window con TWM window manager

Utilizzo del display grafico "remoto"

Per sfruttare le capacità client/server del sistema X Window è necessario comunicare all'applicazione client le "coordinate" del display grafico e al server X11 l'indirizzo di rete del client autorizzato a sfruttare il display da remoto. Tutto questo viene impostato automaticamente con la configurazione di default se si utilizza la stessa console grafica della macchina Unix su cui stiamo lavorando (ad esempio quando si lavora "in locale" su un personal computer in ambiente Linux), ma deve invece essere definito esplicitamente dall'utente nel caso in cui intenda lanciare dei client grafici da una macchina remota.

La variabile di ambiente DISPLAY viene utilizzata dalle applicazioni client X11 per conoscere l'indirizzo di rete del server X Window e i riferimenti del display su cui deve essere inviato l'output grafico. Questa informazione viene specificata indicando l'indirizzo di rete IP o l'hostname del server X11 (della workstation grafica o dell'X-Terminal su cui opera l'utente), il numero del terminale grafico collegato alla workstation ed il numero dello schermo tra quelli collegati ad uno stesso terminale. Tipicamente una workstation Unix ha un terminale grafico (display) a cui è collegato un solo schermo (screen), ma in configurazioni più complesse (ad esempio per utenti che si occupano di computer grafica o nelle sale di controllo in cui sono presenti moltissimi schermi collegati ad una stessa postazione di lavoro) è possibile collegare più dispositivi hardware per consentire a molti utenti di operare sullo stesso terminale grafico. Il valore della variabile DISPLAY deve essere definito con la seguente sintassi: "hostname:display.screen", ad esempio con il comando "export DISPLAY=woodstock:0.0" nella shell Bash, o con "setenv DISPLAY woodstock:0.0" utilizzando la C Shell. Il valore per i parametri display e screen è costituito da un numero intero progressivo, a partire da 0 che identifica le unità di default.

Al tempo stesso è necessario comunicare al server grafico X Window che può accettare richieste di visualizzazione da parte delle applicazioni client che operano su un determinato sistema; il server X11 è dotato infatti di un criterio di protezione che impedisce a chiunque di visualizzare qualcosa sullo schermo di un server grafico, altrimenti diventerebbe ben presto impossibile lavorare su quello schermo. Il comando per configurare i criteri di protezione dell'X server durante la sessione di lavoro in corso è xhost. Con questo comando si può comunicare al server X11 da quali indirizzi di rete IP può accettare connessioni e da quali invece deve rifiutarli. Di default la configurazione prevede di rifiutare qualsiasi connessione tranne quelle provenienti dal sistema locale (localhost); con i comandi "xhost +hostname" e "xhost -hostname" si configura il sistema per accettare e per rifiutare le connessioni provenienti dai client che operano sulla macchina identificata dal nome hostname.

Vediamo un esempio piuttosto elementare, ma che dovrebbe aiutare a chiarire eventuali dubbi. Supponiamo di operare su una workstation Unix identificata dall'hostname "woodstock", dotata di console grafica e dunque anche di un server X Window. Supponiamo anche di voler eseguire su un'altra macchina Unix "remota" (ossia dislocata in una posizione distinta da quella della workstation di fronte a cui ci troviamo), identificata dall'hostname "aquilante", una certa applicazione grafica (ad esempio il programma xlogo) utilizzando però come terminale (tastiera, mouse, schermo e capacità grafiche ad alta risoluzione) la workstation "woodstock". Allora, aprendo una shell su "woodstock" (server X11), digiteremo il seguente comando per consentire a "aquilante" di connettersi in modalità grafica:

marco@woodstock ~$ xhost +aquilante
marco@woodstock ~$ _

Quindi, dopo aver aperto una shell remota su "aquilante" (vedremo nel prossimo capitolo come si può effettuare questa operazione), imposteremo le "coordinate" del display grafico ed eseguiremo l'applicazione con i seguenti comandi:

liverani@aquilante ~$ export DISPLAY=woodstock:0.0
liverani@aquilante ~$ xlogo &
liverani@aquilante ~$ _

Il programma xlogo viene eseguito sulla macchina remota "aquilante", impegnando la memoria, la CPU, le risorse di calcolo di quella macchina, ma il suo output e l'interazione con l'utente attraverso le finestre, il mouse e la tastiera, viene effettuato sulla macchina locale "woodstock".

Xterm

Mediante l'uso di X Window si può sperimentare e trarre profitto con maggiore facilità dalla grande potenza del multitasking di Unix. Spesso utilizzeremo il terminale grafico per compiti che avremmo potuto svolgere ugualmente su un normale terminale alfanumerico, ma che grazie ad X Window possiamo svolgere con maggiore comodità ed efficacia. Uno dei programmi più usati sotto X11 è xterm, una finestra di emulazione di terminale, dove viene eseguita la shell da cui è possibile lanciare altri programmi. Sostanzialmente xterm riproduce le funzionalità di un terminale alfanumerico, in una finestra che però può essere molto più ampia delle 24 righe da 80 caratteri ciascuna tipiche di un terminale VT100. Alle funzioni di base di un terminale alfanumerico, xterm aggiunge numerose funzionalità rese disponibili dall'ambiente grafico X Window, come la possibilità di scorrere a ritroso il testo della sessione di lavoro mediante una scroll bar, la possibilità di stabilire arbitrariamente il tipo di carattere (il font) con cui visualizzare il testo nella finestra, e le funzioni di "copia & incolla".

In particolare la funzione di "copia & incolla" (copy & paste) tipica di tutte le interfacce utente grafiche, è una caratteristica gestita dal server X11 e non dalle singole applicazioni. In pratica consente di selezionare con il mouse (evidenziandola in reverse) una porzione di testo visualizzata in una finestra qualsiasi (non solo in una finestra di xterm), copiandola in un'area di memoria della macchina denominata clipboard; in un secondo momento è possibile incollare il testo presente nel clipboard in un'altra finestra o in un'altra posizione della stessa finestra da cui era stata copiata. Per copiare una porzione di testo è sufficiente selezionarla con il mouse, utilizzando il pulsante sinistro; una volta effettuata una selezione, la si può estendere selezionando altre parti del testo contigue con il tasto destro del mouse. Per incollare (paste) altrove il testo selezionato basta premere il pulsante centrale.(2)

Aprendo più finestre di xterm sullo schermo, potremo operare contemporaneamente, grazie al multitasking, su più applicazioni. Dalla shell attivata nella finestra di xterm è possibile lanciare anche altre applicazioni grafiche indipendenti dalla finestra stessa.

In genere quando si apre una sessione di lavoro su un terminale grafico X Window (spesso chiamato più semplicemente X) viene attivata automaticamente una finestra xterm. In alcuni casi la prima finestra di xterm aperta esegue la cosiddetta "shell di login": quindi chiudendo questa sessione di xterm (e dunque terminando la shell di login) si effettua il logout dal sistema.

La shell che ci viene resa disponibile mediante xterm sarà il nostro programma chiave per controllare il sistema durante la sessione di lavoro al terminale grafico. Cerchiamo di entrare un po' più in dettaglio cominciando con qualche esempio. Per sperimentare subito il multitasking potremmo provare ad aprire un altro xterm, digitando semplicemente il comando "xterm" al prompt della shell. Dopo pochi istanti il sistema apre una seconda finestra con un'altra shell attiva al suo interno. Ci accorgiamo subito però che la shell della prima finestra non è più attiva, ovvero sembra "congelata" in uno stato in cui non viene più presentato il prompt e dunque non si riesce ad immettere altri comandi. In effetti la shell è stata proprio "congelata" temporaneamente per poter eseguire l'applicazione che da essa è stata lanciata (il secondo xterm). Dove è finito il multitasking? La risposta è semplice: non l'abbiamo sfruttato a dovere. Portando il mouse all'interno della finestra xterm appena attivata, digitiamo il comando "exit" e vediamo ricomparire il prompt della shell che fino ad ora era rimasta inattiva. Come avevamo visto nella sezione 2.6 è necessario aggiungere il simbolo "&" alla fine della linea di comando per attivare il processo "figlio" in una sessione separata, sganciata da quella del processo "padre". Quindi per lanciare un secondo xterm si deve digitare il comando "xterm &": in questo modo viene aperta una seconda finestra e viene attivata una shell al suo interno senza "congelare" l'altra shell. Ogni volta che da un xterm vorremo lanciare un'applicazione che deve essere eseguita in una finestra separata, dovremo ricordarci di aggiungere il simbolo "&" alla fine della linea di comando. I comandi che digiteremo sulla tastiera verranno indirizzati alla finestra attiva (quella in cui si trova il mouse), evidenziata in modo opportuno dal window manager; a differenza di quanto avviene su Microsoft Window, la configurazione di default dei window manager tradizionali non prevede che si debba selezionare con il pulsante sinistro del mouse una finestra per renderla attiva: è sufficiente che il puntatore del mouse si trovi nell'area della finestra per renderla attiva; in questo modo è possibile digitare dei comandi in una certa finstra di xterm, anche quando questa è parzialmente coperta da altre finestre che preferiamo tenere in primo piano.

Non sempre però è opportuno eseguire un'applicazione in una sessione separata: ad esempio se volessimo usare l'editor vi all'interno di una finestra xterm, non dovremo aggiungere la "&" alla fine della riga di comando, proprio perché questa volta desideriamo interrompere momentaneamente l'esecuzione della shell, che deve lasciare il posto, all'interno della stessa finestra, all'editor. Sperimentare direttamente queste differenze aiuterà a capire questi meccanismi molto più di quanto non possano fare queste intricate spiegazioni.

È possibile lanciare il programma xterm specificando una serie di opzioni, alcune delle quali sono tipiche di tutte le più diffuse applicazioni grafiche che operano sotto X. Vediamone alcune, che in certi casi potremo utilizzare anche con altri programmi:

-geometry
serve per specificare la dimensione e la posizione iniziale della finestra che si sta aprendo; ad esempio il comando "xterm -geometry 90x30+100-20 &" apre un xterm di 90 colonne per 30 righe, distante 100 pixel dal margine sinistro dello schermo e 20 dal margine inferiore;
-bg
specifica il colore di background della finestra che si sta aprendo; ad esempio: "xterm -bg skyblue4 &"; l'elenco dei colori di default, generalmente è contenuto nel file "/usr/X11/lib/X11/rgb.txt";
-fg
specifica il colore di default per il testo visualizzato nella finestra (foreground), ad esempio: "xterm -bg gray20 -fg white &";
-cr
specifica il colore del cursore, ad esempio: "xterm -bg skyblue4 -fg white -cr yellow &";
-fn
specifica il nome del font (tipo di carattere) da utilizzare, ad esempio: "xterm -fn lucidasanstypewriter-12 &";
-sb
abilita la visualizzazione della scroll bar, ad esempio: "xterm -sb &".

Si possono modificare alcune opzioni del programma xterm anche quando questo è già in esecuzione (run time). Tenendo premuto il tasto   Ctrl   è possibile attivare tre diversi menù selezionando i tre pulsanti del mouse sulla finestra:

Alcune utility

Lavorare in un ambiente grafico come X Window ci permette di utilizzare tante comode utility, che, pur non essendo indispensabili per svolgere il nostro lavoro, lo semplificano rendendo l'ambiente della sessione più "confortevole". In questa sezione descriviamo brevemente alcuni di questi comandi; come al solito, per ottenere informazioni più dettagliate è bene riferirsi alle pagine di manuale, magari mediante il programma xman.

Con xsetroot si possono impostare alcuni parametri di configurazione per lo sfondo dello schermo (la cosiddetta root window). In particolare l'opzione "-solid" permette di impostare il colore dello sfondo; ad esempio il comando "xsetroot -solid steelblue" imposta un colore azzurro chiaro.(3) Sui terminali monocromatici potranno invece essere utili le opzioni "-gray" e "-def" che impostano due diversi sfondi in bianco e nero. Con l'opzione "-bitmap" è possibile specificare il nome di un file che contiene una immagine in formato bitmap in bianco e nero, che viene visualizzata sullo sfondo ripetendola fino a ricoprire l'intero schermo. Le immagini bitmap possono essere disegnate utilizzando il programma bitmap.

Esistono numerosi orologi visualizzabili in una finestra sotto X: il più diffuso è xclock, ma spesso si trovano anche oclock e clock, quest'ultimo sotto Open Look. Sono numerose le opzioni che possiamo specificare per modificare l'aspetto degli orologi. Con xclock ad esempio l'opzione "-update 1" visualizza anche la lancetta dei secondi, mentre "-chime" abilita il segnale acustico emesso ogni ora; con oclock l'opzione "-transparent" rende trasparente lo sfondo dell'orologio, provocando un divertente effetto visivo.

La calcolatrice, sempre presente sotto X, può essere richiamata con il comando xcalc; se viene richiamata con l'opzione "-rpn" viene abilitata la "notazione polacca inversa" (reverse polish note), tipica di alcune calcolatrici tascabili HP.

Alcuni programmini divertenti, ma completamente inutili, sono xeyes, che visualizza due occhi che seguono con lo sguardo i movimenti del puntatore del mouse, xlogo, che visualizza il logo di X Window, e xmelt che provoca uno spettacolare quanto innocuo effetto di "squagliamento" dello schermo del terminale: se è presente sul vostro sistema potrà esservi utile... per stupire gli amici!

X Window è dotato di una funzionalità di screen saver che annerisce completamente lo schermo del terminale dopo diversi minuti di inattività dell'utente. Può essere configurato con il comando xset che accetta, tra l'altro, diversi parametri proprio per la gestione dello screen saver. Ad esempio l'opzione "s activate" consente di attivare immediatamente lo screen saver. Con l'opzione "s blank" si indica che lo screen saver deve produrre uno schermo completamente nero, mentre "s noblank" produce un "salva-schermo" che elimina ogni finestra dallo schermo e visualizza il logo di X Window. L'opzione "s n m" consente di specificare che lo screen saver deve attivarsi dopo n secondi di inattività dell'utente e che ogni m secondi deve essere cambiata la posizione in cui viene visualizzato il logo di X11; nel seguente esempio viene impostata l'attivazione dello screen saver dopo cinque minuti (300 secondi) di inattività dell'utente:

$ xset -s noblank -s 300 10
$ _

Spesso può essere utile attivare immediatamente uno screen saver bloccando il terminale con la nostra password, quando ci allontaniamo per qualche minuto dal nostro posto di lavoro. Il comando xlock abilita questa funzionalità visualizzando sullo schermo coloratissimi "effetti speciali"; se viene specificata l'opzione "-nolock" non sarà necessario digitare la password dell'utente per sbloccare il terminale (basterà un semplice click del mouse). Con l'opzione "-mode" è possibile scegliere l'animazione da visualizzare che altrimenti viene selezionata a caso tra quelle disponibili (hop, life, qix, image, swarm, rotor, pyro, flame, worm, random ed altre ancora). Ad esempio si può attivare lo screen saver digitando "xlock -nolock -mode flame".

Oltre a queste divertenti utility, di solito ne vengono fornite altre un po' più sofisticate ed utili, come ad esempio gli editor xedit e textedit. Il primo è assai semplice e sfrutta la funzionalità di "copy & paste" offerta da X Window. È possibile scorrere il testo del file caricato mediante la scoll bar ed è possibile posizionare il cursore nella finestra anche con il mouse; tuttavia è un editor molto primitivo a cui mancano numerose funzionalità fondamentali. textedit è invece l'editor di sistema dell'ambiente Open Look. È un programma piuttosto comodo e abbastanza sofisticato, meno potente di emacs e vi, ma pur sempre un utile strumento di lavoro. Dispone delle classiche funzionalità di cut, copy & paste, e di ricerca e sostituzione di stringhe di caratteri all'interno del testo; tutte queste funzionalità sono accessibili mediante i menù a tendina ed alcune dialog box.

Altre applicazioni grafiche

In questa sezione diamo un rapido sguardo ad alcune applicazioni molto diffuse ed assai utili, che necessitano dell'ambiente grafico X Window per poter essere eseguite. Iniziamo con ghostview, già citato nella sezione 2.4, che serve per visualizzare e stampare file in formato PostScript (il cui nome, in genere, termina con ".ps"). Il programma è guidato mediante dei menù selezionabili con il mouse e permette sostanzialmente di scorrere le pagine del testo visualizzandole in una finestra grafica, selezionarle tutte o solo una parte, stampare l'intero documento o solo le pagine selezionate. Il formato PostScript riveste una particolare importanza in ambiente Unix perché è un sofisticato formato standard utilizzabile su piattaforme hardware/software completamente diverse, ma sufficientemente potente tanto da includere diversi stili del testo e figure in formato grafico. Tramite la rete Internet si possono reperire facilmente numerosi documenti e manuali tecnici realizzati in PostScript.

Oltre a questo formato, ne esiste anche un altro, denominato DVI (Device Independent), che garantisce la "portabilità" di documenti dotati di una formattazione ricca e complessa su piattaforme diverse. È questo il formato in cui vengono prodotti i documenti scritti e compilati con il programma TEX , un sofisticato strumento di composizione tipografica molto usato in ambito scientifico ed universitario. Per visualizzare i file DVI è spesso utile il programma xdvi, che però, al contrario di ghostview, non permette di stampare il file, ma soltanto di mostrarlo a video e di scorrerne le pagine. Se non è stato predisposto un apposito filtro di stampa per convertire automaticamente i file DVI in un formato adatto alla nostra stampante, con il programma dvips potremo convertire il file in formato DVI in un file equivalente in formato PostScript. Il programma xtex, utile soprattutto a chi utilizza il TEX \ per scrivere i propri documenti, al pari di xdvi consente di visualizzare i file DVI, ma in più gestisce anche la stampa.

Negli ultimi anni si è affermato come formato portabile universale per documenti elettronici il formato PDF (Portable Document format) di Adobe. Per visualizzare e stampare documenti in formato PDF si possono utilizzare il programma xpdf o il più sofisticato Acrobat Reader della stessa Adobe, che viene lanciato dal comando acroread.

Oltre al PostScript, al DVI e al PDF, orientati per lo più al testo, esistono numerosissimi formati standard per la memorizzazione di immagini grafiche di qualità fotografica. I più diffusi sono il GIF, il BMP ed il JPEG. Per visualizzare in una finestra del nostro terminale grafico un'immagine codificata in uno di questi formati, su molti sistemi è disponibile il programma xv. Mediante le numerose funzioni offerte dal pannello di controllo attivabile clickando col pulsante destro del mouse sulla finestra principale del programma, è possibile anche modificare e rielaborare l'immagine caricata, per poi salvarla, magari in un altro formato. Una interessante funzione offerta da xv è quella che permette di "catturare" il contenuto di un'altra finestra visualizzata sul desktop per poi salvarla o rielaborarla. Per la visualizzazione e la rielaborazione di immagini grafiche ad alta risoluzione sono molto utili i tool della suite open source ImageMagick, come ad esempio il comando display che consente di visualizzare e ritoccare immagini.

L'ultima applicazione descritta in questa brevissima panoramica è gnuplot, un famoso programma per la visualizzazione di grafici di funzioni in una o due variabili (grafici di curve o di superfici) e per la rappresentazione grafica (mediante interpolazione lineare) di dati provenienti da elaborazioni esterne (ad esempio una collezione di dati raccolti per via sperimentale). gnuplot opera su due finestre distinte: quella in cui è possibile impartire i comandi, che è la finestra xterm da cui si è lanciata l'applicazione (senza "&", quindi) e quella in cui avviene la visualizzazione dei grafici. Sono numerosi i comandi che è possibile impartire da tastiera all'interno di gnuplot, riporto brevemente solo i principali, rimandando come al solito per una descrizione più approfondita alla documentazione e all'help in linea che è possibile richiamare con il comando help.

plot [x1:x2] f1(x), f2(x), ...
Per visualizzare il grafico delle funzioni f1(x), f2(x), ... nell'intervallo [x1,x2];
plot "file"
Per visualizzare il grafico per punti, prendendo i valori delle ordinate da un file di dati; con il comando "plot "file" with lines" si rappresenta lo stesso grafico, ma i punti vengono anche collegati mediante dei segmenti;
splot [x1:x2] [y1:y2] f(x,y)
Per visualizzare il grafico della superficie rappresentata dalla funzione di due variabili f(x,y) nel dominio [x1,x2] × [y1,y2];
hidden3d
Per visualizzare il grafico delle superfici in modo non trasparente, ma "solido", nascondendo le linee nascoste;
nohidden3d
Per visualizzare il grafico delle superfici in modo trasparente, mostrando anche le linee nascoste.
quit
Per uscire da gnuplot e tornare alla shell.

Configurazione della sessione grafica

Ogni singolo utente del sistema può configurare e personalizzare la propria sessione grafica in ambiente X Window operando su alcuni file di configurazione presenti nella propria home directory. Come al solito si tratta di semplici file di testo o shell script, che, rispettando una sintassi molto elementare, consentono a chiunque di modificare l'aspetto e il comportamento dell'ambiente grafico. Dal momento che ogni applicazione in ambiente X11 ammette numerosissime opzioni per personalizzarne l'output, è molto comodo poterle definire una volta per tutte in un file di configurazione, senza doverle specificare ogni volta sulla linea di comando.

La configurazione dell'ambiente da parte dell'utente avviene principalmente attraverso i seguenti file:

.xsession
per la configurazione iniziale della sessione in ambiente grafico, per quei sistemi in cui il login avviene attraverso il sistema grafico XDM (X Display Manager);
.xinitrc
per la configurazione iniziale della sessione in ambiente grafico, per quei sistemi in cui la sessione grafica in ambiente X Window viene lanciata manualmente dall'utente (il comando varia da sistema a sistema: startx, xstart, openwin, ecc.);
.Xresources
per la configurazione delle opzioni di default per le principali applicazioni grafiche;
.mwmrc, .twmrc, .fwmrc
per la configurazione del window manager selezionato per la gestione delle finestre.

I file ".xsession" e ".xinitrc" sono degli shell script che contengono i comandi da eseguire ogni volta immediatamente dopo l'avvio della sessione grafica X Window. Con questi script di solito viene lanciato un xterm (per consentire all'utente di iniziare a lavorare), viene impostato l'ambiente grafico (colore dello sfondo, configurazione dello screen saver) e viene lanciato un window manager. La sintassi dei due file è la stessa; di seguito riportiamo un esempio molto semplice:

#!/bin/sh
#   ~/.xsession: file di configurazione della sessione X
#
xrdb -merge .Xresources
xset s 300 15 s noblank
xsetroot -solid LightSkyBlue4
xterm &
xclock -geometry -10+10 &
exec twm

Il file ".Xresources" viene utilizzato per definire le impostazioni di default di alcune delle applicazioni grafiche; per caricare le impostazioni presenti nel file si utilizza il comando xrdb che, con l'opzione "-merge" consente di aggiungere (ed eventualmente sovrapporre) le nuove impostazioni a quelle di default. Il file contiene una opzione per ogni riga: viene specificato il nome del programma a cui si applica l'opzione seguito da un asterisco e dall'impostazione che si intende definire. Di seguito riportiamo un esempio che può servire a rendere l'idea; l'elenco delle opzioni (chiamate anche "risorse") è disponibile nella pagina di manuale di ogni programma:

xman*topBox: False
xman*bothShown: true
XTerm*scrollBar: True
XTerm*saveLines: 300
xclock*width: 100
xclock*height: 100
xclock*update: 1
xclock*clientDecoration: all
xeyes*height: 66
xeyes*width: 100

Per quanto riguarda la configurazione dei singoli window manager si rimanda infine alla documentazione (e alle pagine di manuale) degli stessi programmi. Mediante i file di configurazione sopra indicati è possibile definire il colore del bordo delle finestre attive e non attive, il colore e l'aspetto dei "menù a tendina", il comportamento dei pulsanti del mouse quando vengono utilizzati sullo sfondo del desktop o sulla barra del titolo delle finestre, e molto altro ancora.

Una workstation grafica NeXT Station
Una workstation grafica NeXT Station

NOTE:

1. Una rassegna piuttosto completa, con numerose immagini delle schermate dei diversi window manager, si trova sulla rete Internet sul sito web http://xwinman.org.

2. I terminali grafici X Window hanno un mouse dotato di tre pulsanti; sulle workstation su cui il mouse è dotato soltanto di due tasti, premendoli insieme contemporaneamente si simula la pressione del tasto mancante, il tasto "centrale" del mouse.

3. Come abbiamo già accennato nelle pagine precedenti, l'elenco dei nomi dei colori che possono essere utilizzati si trova nel file di testo /usr/X11/lib/X11/rgb.txt.

Home page

Indice

Introduzione

Organizzazione del sistema

Comandi fondamentali

Editing di file di testo

L'interfaccia grafica X Window

Alcuni strumenti per l'uso della rete Internet

Sintesi dei comandi principali

Elenco alfabetico delle sigle

Bibliografia

HOME

Valid HTML 4.01! Valid CSS!
Author: Marco Liverani - Last modified: Sunday March 17, 2019 - URI: http://www.aquilante.net/unix/5.shtml