Capitolo successivo Capitolo precedente Indice

41. X - programmi di utilità

Una serie di programmi di utilità facilita e rende confortevole l'utilizzo di X Window System. La tabella (seguente) elenca i programmi a cui si accenna in questo capitolo.


Programma Descrizione
xterm Terminale.
nxterm Terminale.
rxvt Terminale.
xclipboard Facilita il taglia-incolla.
xlsfonts Elenco dei tipi di carattere.
xfontsel Visualizzazione dell'aspetto dei tipi di carattere.
xfd Mappa dei caratteri.
xwininfo Informazioni su una finestra.
xdpyinfo Informazioni sul display.
xset Imposta alcune caratteristiche del server.
xsetroot Imposta le caratteristiche della finestra di root.
xbiff Avvisa della presenza di posta.
xclock Orologio configurabile.
xcalc Calcolatrice.
Alcuni programmi di utilità di X Window System.

41.1 Terminale

Il primo programma da dover conoscere quando si utilizza X Window System è quello che consente di gestire un terminale a caratteri attraverso una finestra. Il programma utilizzato normalmente per questo scopo è xterm che tra tutti è il più completo. In alternativa si possono usare programmi simili, a volte con meno funzionalità (come nxterm e rxvt), in modo da non sprecare inutilmente risorse.

Il comportamento di un programma di terminale a finestra non è esattamente uguale a quello di una console; ci si accorge subito che i soliti programmi non rispondono alla tastiera nello stesso modo cui si era abituati. Quando ciò accade, vale almeno la pena di provare tutti i programmi di terminale a finestra a disposizione, per determinare quale si comporta nel modo più confacente alle proprie esigenze.

La sintassi semplificata di xterm, nxterm e rxvt è la seguente.

xterm [<opzioni>] [-e <programma> [<opzioni>]]

nxterm [<opzioni>] [-e <programma> [<opzioni>]]

rxvt [<opzioni>] [-e <programma> [<opzioni>]]

Quando il programma viene avviato senza l'opzione -e, viene eseguito quanto contenuto nella variabile SHELL e se manca viene utilizzato /bin/sh.

Se invece si utilizza l'opzione -e, si può specificare il programma da eseguire nella finestra. Ciò può essere utile per preparare dei comandi già pronti all'interno di menu di altri programmi o del gestore di finestre stesso.

Una cosa importante da sottolineare è che le dimensioni della geometria di una finestra di terminale si esprimono in caratteri e non in punti come si fa di solito.

Esempi

$ xterm -font 5x8 -geometry =132x30+0+0

Avvia una finestra di terminale utilizzando caratteri molto piccoli con una dimensione di 30 righe per 132 colonne, posizionato a partire dall'angolo superiore sinistro dello schermo.

$ xterm -e top

Avvia una finestra di terminale di dimensioni predefinite (80x25) con il programma top. Quando l'esecuzione di top viene conclusa, la finestra del terminale si chiude.

41.2 Clipboard

Il server X offre un modesto supporto alla gestione del ``taglia-incolla''. Si tratta esclusivamente delle stringhe (alfanumeriche), per cui è solitamente possibile copiare una parte di testo da una finestra di terminale ad un'altra.

L'operazione di copia avviene utilizzando il mouse, premendo il tasto sinistro e trascinando in modo da evidenziare il testo desiderato. Per incollare in un'altra applicazione occorre fare in modo che questa passi in primo piano (cioè che la sua finestra diventi quella attiva), poi basta premere il tasto centrale ed il testo viene inserito come se venisse digitato e quindi a partire dalla posizione del cursore.

Quando non si dispone di un mouse a tre tasti, oppure se il tasto centrale non funziona, si ottiene la funzione del tasto centrale con la pressione simultanea dei due tasti funzionanti.
Per incollare del testo all'interno di una applicazione vi, occorre prima attivare la modalità di inserimento, altrimenti vi utilizzerà il testo incollato come una serie di comandi. Lo stesso ragionamento vale ovviamente anche per altri programmi che possono utilizzare i caratteri normali sia come testo da inserire che come comandi da eseguire.

Ci sono anche altri modi per evidenziare un testo, ma quello che conta è che quando evidenziato per la copia deve rimanere evidenziato fino al momento in cui si intende incollare quel testo.

Molti programmi per X Window System sono in grado di utilizzare questo servizio del server X, ma non tutti, specialmente quelli nati per essere compatibili con sistemi operativi molto differenti. Alcuni programmi hanno la necessità di gestire in proprio le funzionalità di taglia-incolla, soprattutto quando si tratta di testo formattato, immagini e altro. In questi casi, vengono utilizzati dei meccanismi di comunicazione tra i processi, indipendenti dal sistema. Di conseguenza, possono comunicare tra loro solo i processi predisposti per quel particolare sistema di comunicazione. Questo dovrebbe chiarire il motivo per cui il trasferimento di informazioni tra una applicazione e l'altra, attraverso il meccanismo del taglia-incolla, funziona solo in alcune situazioni e tra particolari gruppi di programmi.

$ xclipboard

xclipboard [<opzioni>]

xclipboard è un programma che facilita l'utilizzo del servizio di taglia-incolla fornito dal server X. Si tratta di una serie di ``pagine'' su cui è possibile scrivere e incollare del testo attraverso il meccanismo normale di X Window System.


xclipboard permette di utilizzare un'area transitoria per il taglia-incolla.

Sotto questo aspetto si tratta di niente di più che una specie di programma per la creazione e modifica di testo. Tuttavia, l'accorgimento delle gestione di pagine separate lo rende più pratico per l'uso del taglia-incolla.

Il programma mostra un menu molto semplice composto da alcune voci:

Per incollare del testo in una applicazione, utilizzando quanto conservato con questo programma, si deve selezionare la pagina che interessa e quindi si deve evidenziare il testo desiderato. Quindi si incolla nel modo solito.

41.3 Caratteri

Nel capitolo introduttivo a X Window System si è accennato all'organizzazione dei nomi dei caratteri. In particolare, quando i programmi fanno riferimento ai tipi di carattere, è normalmente consentito l'uso di simboli jolly. Si tratta dell'asterisco e del punto interrogativo ed hanno lo stesso significato che gli si attribuisce quando vengono usati per i nomi dei file: l'asterisco corrisponde a qualunque sequenza di caratteri, mentre il punto interrogativo corrisponde ad un solo carattere qualsiasi.

Quando si deve fare riferimento ad un modello di caratteri, cioè un nome che fa uso di simboli jolly, attraverso la riga di comando, è bene ricordare che la shell interpreta questi simboli se non vengono protetti. Nel caso delle shell derivate da quella di Bourne, basta racchiudere il nome tra apici singoli.

La maggior parte dei programmi, quando deve fare riferimento ad un tipo di carattere attraverso la riga di comando, riconosce l'opzione -font <tipo-di-carattere> (abbreviabile anche con -fn).

$ xlsfonts

xlsfonts [<opzioni>]

xlsfonts elenca i tipi di carattere a disposizione in base a quanto specificato attraverso le opzioni. L'opzione più importante è -font <modello>, attraverso la quale è possibile indicare un modello di caratteri.

Esempi

$ xlsfonts

Elenca tutti i tipi di carattere a disposizione.

$ xlsfonts -font '*'

Esattamente come nell'esempio precedente, solo che viene indicato espressamente un modello che si riferisce a tutti i tipi di caratteri.

$ xlsfonts -font '-courier-*'

Elenca tutti i tipi di carattere il cui nome inizia per -courier-.

$ xfontsel

xfontsel [<opzioni>]

xfontsel è un programma che consente di conoscere i tipi di font a disposizione e le loro caratteristiche. È comodo da usare, soprattutto perché fornisce la possibilità di selezionare il tipo di carattere e le sue caratteristiche attraverso un sistema di menu.


Attraverso xfontsel si possono visualizzare i tipi di carattere a disposizione.

$ xfd

xfd [<opzioni>] -font <tipo-di-carattere>

xfd visualizza l'aspetto e la codifica di un tipo di carattere che deve essere obbligatoriamente determinato dalle opzioni. Di conseguenza, l'utilizzo dell'opzione -font è obbligatoria.


Attraverso xfd si può visualizzare il set di caratteri corrispondente ad un certo tipo.

41.4 Informazioni sulle finestre e sul server

Le informazioni sullo stato di una finestra possono essere utili sia a titolo diagnostico, sia per poter riprodurre le stesse condizioni attraverso la configurazione di opzioni e/o risorse.

Le informazioni su un server possono essere interessanti, in particolare quando vengono richieste a distanza.

$ xwininfo

xwininfo [<opzioni>]

xwininfo permette di avere tutte le notizie possibili su una determinata finestra. Emette il risultato attraverso lo standard output, quindi conviene utilizzarlo attraverso una finestra di terminale, a meno di non ridirigere l'output.

Alcune opzioni

-id <identificatore-della-finestra>

Permette di indicare esplicitamente la finestra della quale si vogliono le informazioni, attraverso il codice esadecimale che la identifica.

-root

Emette le informazioni sulla finestra root cioè la superficie su cui si ``appoggiano'' le finestre normali.

-int

Richiede che gli identificatori delle finestre siano emessi in forma decimale, mentre normalmente vengono mostrati in esadecimale.

-children

Emette l'indicazione della finestra root, di quella genitrice e delle figlie di quella specificata. Permette quindi di avere una visione della dipendenza che c'è tra le finestre, con particolare attenzione alle figlie.

-root

Emette l'indicazione della finestra root, di quella genitrice, delle figlie e delle successive, ricorsivamente. Funziona in maniera simile all'opzione -children, con la differenza che mostra tutte le discendenze.

-stats

Emette molte informazioni riferite alla finestra. Corrisponde al comportamento predefinito, quando non si specificano opzioni.

-all

Emette tutte le informazioni possibili.

Esempi

$ xwininfo [Invio]

xwininfo: Please select the window about which you
          would like information by clicking the
          mouse in that window.

Il programma invita a utilizzare il mouse per indicare una finestra della quale si vogliono conoscere le informazioni.

xwininfo: Window id: 0x2000002 "rxvt"

  Absolute upper-left X:  272
  Absolute upper-left Y:  165
  Relative upper-left X:  0
  Relative upper-left Y:  0
  Width: 494
  Height: 329
  Depth: 8
  Visual Class: PseudoColor
  Border width: 0
  Class: InputOutput
  Colormap: 0x26 (installed)
  Bit Gravity State: ForgetGravity
  Window Gravity State: NorthWestGravity
  Backing Store State: NotUseful
  Save Under State: no
  Map State: IsViewable
  Override Redirect State: no
  Corners:  +272+165  -34+165  -34-106  +272-106
  -geometry 80x25-29+143

$ xdpyinfo

xdpyinfo [<opzioni>]

xdpyinfo permette di avere tutte le informazioni possibili su un particolare server X, eventualmente anche remoto.

Alcune opzioni

-display <identificatore-del-server>

Permette di definire esplicitamente le coordinate necessarie a raggiungere il server che si desidera interrogare.

Esempi

$ xdpyinfo topolino.zigozago.dg:0 [Invio]

name of display:    topolino.zigozago.dg:0.0
version number:    11.0
vendor string:    The XFree86 Project, Inc
vendor release number:    3200
maximum request size:  4194300 bytes
motion buffer size:  256
bitmap unit, bit order, padding:    32, LSBFirst, 32
image byte order:    LSBFirst
number of supported pixmap formats:    2
supported pixmap formats:
    depth 1, bits_per_pixel 1, scanline_pad 32
    depth 8, bits_per_pixel 8, scanline_pad 32
keycode range:    minimum 9, maximum 117
focus:  window 0x1800002, revert to Parent
number of extensions:    15
    BIG-REQUESTS
    DOUBLE-BUFFER
    MIT-SCREEN-SAVER
    MIT-SHM
    MIT-SUNDRY-NONSTANDARD
    RECORD
    SHAPE
    SYNC
    XC-MISC
    XFree86-DGA
    XFree86-Misc
    XFree86-VidModeExtension
    XInputExtension
    XKEYBOARD
    XTEST
default screen number:    0
number of screens:    1

screen #0:
  dimensions:    800x600 pixels (271x203 millimeters)
  resolution:    75x75 dots per inch
  depths (2):    1, 8
  root window id:    0x2a
  depth of root window:    8 planes
  number of colormaps:    minimum 1, maximum 1
  default colormap:    0x26
  default number of colormap cells:    256
  preallocated pixels:    black 0, white 1
  options:    backing-store YES, save-unders YES
  largest cursor:    64x64
  current input event mask:    0x58003d
    KeyPressMask             ButtonPressMask          ButtonReleaseMask        
    EnterWindowMask          LeaveWindowMask          SubstructureNotifyMask   
    SubstructureRedirectMask PropertyChangeMask       
  number of visuals:    6
  default visual id:  0x20
  visual:
    visual id:    0x20
    class:    PseudoColor
    depth:    8 planes
    available colormap entries:    256
    red, green, blue masks:    0x0, 0x0, 0x0
    significant bits in color specification:    6 bits
  visual:
    visual id:    0x21
    class:    DirectColor
    depth:    8 planes
    available colormap entries:    8 per subfield
    red, green, blue masks:    0x7, 0x38, 0xc0
    significant bits in color specification:    6 bits
...

Il listato che si ottiene è molto lungo, ma le informazioni più immediate possono essere ritrovate nella prima parte. In particolare si nota la dimensione (800x600), la risoluzione (75x75 dpi), la profondità di colori (8 bit) e di conseguenza il numero di colori a disposizione (256).

41.5 Impostazione dello schermo

La configurazione del funzionamento dello schermo riguarda il comportamento il tipo di interazione tra l'utente e i programmi (tastiera, mouse, screen saver) e il tipo di sfondo, ovvero la finestra root.

$ xset

xset [<opzioni>]

xset permette di definire e leggere una grande quantità di impostazioni che riguardano la stazione grafica (il server X). Le opzioni particolari di questo programma non utilizzano il trattino tradizionale, o quantomeno non nel modo solito. Quando l'utente che ha impostato la configurazione termina la sua sessione di lavoro attraverso un logout, tutto torna al suo valore precedente.

Alcune opzioni

-display <identificatore-del-server>

Permette di definire esplicitamente le coordinate necessarie a raggiungere il server che su cui si desidera intervenire.

b {<volume> <tono> <durata>} | {on|off}

Definisce il suono dell'avvisatore acustico. Utilizzando gli argomenti on oppure off si attiva o si disattiva l'avvisatore acustico.

m [{<accelerazione> [<soglia>]} | default ]

Permette di definire il valore di accelerazione e di soglia dello spostamento del dispositivo di puntamento. Se non viene indicato alcun valore, oppure se viene utilizzato l'argomento default, si ripristinano le impostazioni predefinite. L'accelerazione può essere stabilita utilizzando un valore intero e genera uno spostamento pari al suo valore moltiplicato per la velocità effettiva dello spostamento, quando questa supera il valore di soglia specificato. In pratica, se lo spostamento è al di sotto della soglia, il movimento del cursore è lento, se questa viene superata, lo spostamento risulta accelerato.

r [on|off]

Abilita o disabilita la ripetizione del tasto premuto a lungo.

s [{<durata-inattività> [<durata-esposizione>]} | <flag> ]

Questa opzione permette l'utilizzo di due argomenti numerici o di un flag espresso attraverso una singola parola. Lo scopo è quello di configurare il comportamento del ``salva schermo'', o screen saver. La durata di inattività rappresenta il tempo, in secondi, che deve trascorrere prima che si attivi lo screen saver; la durata di esposizione riguarda il caso in cui si utilizzi un'immagine al posto dello schermo nero, e rappresenta il tempo in cui questa può rimanere ferma. Segue l'elenco e la descrizione dei flag.

q

Permette di ottenere le informazioni relative a tutte le impostazioni ac ui può accedere xset

Esempi

$ xset b 100 1000 100

Imposta un suono acuto e breve per l'avvisatore acustico.

$ xset m 10 5

Imposta un mouse ``veloce''.

$ xset m 4 2

Imposta un mouse ``normale''.

$ xset s 30 s blank

Fissa la durata di attesa per l'attivazione dello screen saver a 30 secondi e stabilisce che deve trattarsi di uno schermo nero.

---------

$ xset q [Invio]

Keyboard Control:
  auto repeat:  on    key click percent:  0    LED mask:  00000000
  auto repeat delay:  500    repeat rate:  5
  auto repeating keys:  00feffffdffffbbf
                        fa9fffffffdf3d00
                        0000000000000000
                        0000000000000000
  bell percent:  100    bell pitch:  200    bell duration:  1000
Pointer Control:
  acceleration:  4/1    threshold:  4
Screen Saver:
  prefer blanking:  yes    allow exposures:  yes
  timeout:  30    cycle:  1
  suspend time:  900    off time:  1800
Colors:
  default colormap:  0x26    BlackPixel:  0    WhitePixel:  1
Font Path:
  /usr/X11R6/lib/X11/fonts/misc/,/usr/X11R6/lib/X11/fonts/75dpi/
Bug Mode: compatibility mode is disabled

Visualizza la configurazione corrente.

$ xsetroot

xsetroot [<opzioni>]

xsetroot permette di gestire le caratteristiche della, cosiddetta, finestra di root, ovvero la superficie su cui si appoggiano le finestre normali.

Alcune opzioni

-display <identificatore-del-server>

Permette di definire esplicitamente le coordinate necessarie a raggiungere il server che su cui si desidera intervenire.

-def

Ripristina l'impostazione predefinita.

-cursor <file-cursore> <file-maschera>

Permette di definire una immagine diversa per il cursore che appare quando il puntatore si trova sulla superficie della finestra di root. Per realizzare questi file si può usare il programma bitmap (vedere bitmap(1)), e in particolare, il file della maschera è opportuno sia completamente nero.

-bitmap <immagine-bitmap>

Permette di definire una piccola immagine da usare ripetitivamente come fondale.

-gray | -grey

Rende lo sfondo grigio.

-solid <colore>

Definisce il colore dello sfondo.

Esempi

$ xsetroot -solid gold

Colora lo sfondo con la tinta gold.

41.6 Andamento dell'utilizzo del sistema

Il controllo dell'utilizzo delle risorse di sistema può essere fatto attraverso programmi molto semplici che però hanno il pregio della immediatezza espressiva.

$ xidle

xidle [<opzioni>]

xidle consente di visualizzare un grafico dell'inattività di sistema.

$ xload

xload [<opzioni>]

xload consente di visualizzare un grafico del carico di sistema.

$ xmem

xmem [<opzioni>]

xmem consente di visualizzare un grafico della memoria disponibile.

41.7 Eliminazione di applicazioni

A volte si ha la necessità di concludere l'esecuzione di una applicazione in modo più o meno ``violento'' perché questa è sfuggita al controllo. Di solito, per questo, si utilizza l'invio di un segnale attraverso una shell. Quando si tratta di applicazioni per X Window System si può utilizzare una tecnica in più: si comunica al server di terminare la connessione con l'applicazione che si desidera concludere. Ciò si può ottenere attraverso una funzione fornita dal gestore di finestre o da un programma apposito: xkill.

$ xkill

xkill [<opzioni>]

xkill permette di eliminare un programma funzionante in una finestra del sistema grafico X Window System. Quando viene utilizzato senza argomenti, xkill trasforma il cursore in una immagine speciale (solitamente si tratta di un teschio nero) e permette di indicare direttamente la finestra da eliminare. Basta un clic e si ottiene il risultato.

41.8 Utilità varie

Alcuni programmi, per quanto semplici, sono di grande utilità.

$ xbiff

xbiff [<opzioni>]

xbiff è un programma molto semplice che si limita ad avvisare quando il file utilizzato per ricevere la posta risulta contenere qualcosa. Il programma è altamente configurabile, sia attraverso le opzioni che attraverso le risorse. In particolare, vale la pena di considerare l'opzione -file <file>, attraverso cui si può indicare a xbiff di controllare un file differente rispetto a quello predefinito.


xbiff quando il file della posta è vuoto.


xbiff quando c'è della posta.

Alcuni gestori di finestre forniscono già questo tipo di informazione; in questi casi non serve utilizzare xbiff.

$ xclock

xclock [<opzioni>]

xclock è un programma molto semplice che si occupa di visualizzare l'ora. Dal momento che è possibile visualizzare l'ora in modo digitale (numerico), l'opzione -font ha significato e può essere utile per cambiare l'aspetto dei caratteri utilizzati.


xclock -digital -font '-adobe-times-bold-i-*--24-*'

Alcune opzioni

-analog

Mostra l'ora in modo analogico.

-digital

Mostra l'ora in forma numerica.

Alcune risorse

*analog: {on|off}

Mostra l'ora in modo analogico (on) oppure digitale (off).

Alcuni gestori di finestre forniscono già un orologio attraverso i loro componenti; in questi casi non serve utilizzare xclock.

Esistono almeno altri due programmi per visualizzare l'ora: oclock e rclock.

$ xcalc

xcalc [<opzioni>]

xcalc è una semplice, ma potente calcolatrice. Il suo funzionamento è abbastanza intuitivo, a meno di non utilizzare la notazione polacca inversa, ma si tratta di un programma altamente configurabile ed eventualmente vale la pena di consultare la documentazione originale: xcalc(1).

Alcune opzioni

-rpn

Imposta l'aspetto ed il funzionamento secondo la notazione polacca inversa.

Alcune risorse

*rpn: {on|off}

Imposta o annulla l'aspetto ed il funzionamento secondo la notazione polacca inversa.

 

1997.10.26 - Scritto da Daniele Giacomini   daniele@calion.com   (vedi copyright: Appunti Linux).


Capitolo successivo Capitolo precedente Indice