B.3.1 Personalizzazione dei cursori del mouse

I cursori (o puntatori) del mouse sono i simboli caratteristici (spesso frecce) che si spostano sull’interfaccia grafica seguendo il movimento del dispositivo di puntamento (mouse) e permettono all’utente di impartire i comandi. Ogni simbolo viene visualizzato in corrispondenza di un’opportuno stato: ad esempio, se il cursore è in prossimità del bordo di una finestra, esso assume un aspetto diverso da quando è lontano da esso, in modo da far capire all’utente che è possibile spostare il bordo della finestra per ridimensionarla.


pict
Figura B.1: I cursori del dispositivo di puntamento.

Dunque i file dei cursori sono raggruppati in insiemi detti temi (theme), che contengono un’immagine per ogni stato in cui può trovarsi il cursore.

Ogni cursore è caratterizzato da un punto sensibile (hot spot), che è il pixel dell’immagine del cursore preso come riferimento, cioè il pixel che determina la posizione dello schermo individuato in ogni momento dal cursore. Ad esempio, nel caso di una freccia generalmente l’hot spot è posizionato sulla punta della freccia.

XFree86 gestisce le immagini da associare al dispositivo di puntamento, ricercandole, nell’ordine indicato, nelle seguenti directory

  1. ~/.icons
  2. /usr/share/icons
  3. /usr/share/pixmaps
  4. /usr/X11R6/lib/X11/icons

In ognuna delle directory viene ricercata la directory che ha il nome del tema desiderato ed all’interno di tale directory, viene ricercata la directory cursors, che conterrà i file relativi ai cursori. Ad esempio, se si vuole utilizzare il tema “MyTheme”, verrà ricercata la directory ~/.icons/MyTheme e se non esiste viene tentato con la directory /usr/share/icons/MyTheme, e così via. Non appena viene trovata la directory MyTheme, vengono considerati i file presenti nella sottodirectory cursors. Per il cursore viene sempre utilizzato il relativo file presente nella prima directory trovata nell’elenco precedentemente riportato. Se qualcuna delle directory relative al tema non esiste, vengono utilizzati i cursori di default.

Se esiste un file index.theme all’interno di una directory relativa ad un tema, esso deve contenere i riferimenti ad un altro tema da cui si vogliono ereditare i cursori. La sintassi di tale file è la seguente

 
[Icon Theme]
Inherits=theme_name  
dove theme_name è il nome del tema (directory) a cui fare riferimento nel caso in cui alcuni file relativi ai cursori non esistano nella sottodirectory cursors.

Se nessun tema è stato indicato, viene considerato il tema “default”.

I file che rappresentano i cursori hanno un formato particolare (formato Xcursor), che può essere ottenuto trasformando una o più immagini in formato PNG in un file Xcursor, tramite il comando xcursorgen.

____________________________________________________________________

Comando: xcursorgen
Path: /usr/X11R6/bin/xcursorgen

SINTASSI  
# xcursorgen [config_file] [Xcursor_file]  
DESCRIZIONE

__________

Il file di configurazione contiene righe con il seguente formato

 
size Xhot Yhot filename [delay]  
dove

I file che rappresentano i cursori nei loro vari stati, devono rispettare la nomenclatura riportata nella fig. B.1.

Si supponga dunque di voler sostituire il cursore visualizzato nello stato “standard”, ovvero in quello meno particolare di tutti, che è spesso rappresentato da un freccia rivolta verso l’alto a sinistra. La prima cosa da fare è quella di creare un’immagine quadrata (ad esempio 24 × 24 pixel) avente l’hot spot posizionato nel pixel più in alto a sinistra, con la quale sostituire il cursore e salvarla in un file in formato PNG (ad es. mycursor.png). Quindi si crea un file di testo (ad es. mycursor.conf) contenente la seguente riga

 
24 0 0 mycursor.png  
e si crea il file left_ptr con il comando

 
$ xcursorgen mycursor.conf left_prt  
Adesso non rimane altro creare una directory (ad es. ~/.icons/mycursors/cursors) nella quale copiare il dile left_ptr appena creato. Dopodiché si deve indicare al sistema di utilizzare il tema “mycursors”, creando il file di testo ~/.icons/default/index.theme, inserendovi le seguenti righe

 
[Icon Theme]
Inherits=mycursors  
Dopo aver riavviato il server grafico, al successivo accesso all’interfaccia grafica da parte dell’utente considerato, si vedrà il cursore creato.

Se si avesse voluto creare un cursore animato, si sarebbero dovuti creare più file contenenti altrettante immagini in formato PNG che rappresentano i fotogrammi (frame) dell’animazione. Si consideri ad esempio un cursore animato composto da 3 frame, ognuno di 24 × 24 pixel (ad es. mycursor1.png, mycursor2.png e mycursor3.png). Il corrispondente file di configurazione (ad es. mycursor.conf) potrebbe essere composto dalle seguenti righe

 
24 0 0 mycursor1.png 400
24 0 0 mycursor2.png 300
24 0 0 mycursor3.png 300  
così da far visualizzare, nell’animazione del cursore, il primo frame per una durata di 400 ms ed il secondo ed il terzo per 300 ms.