Un file manager grafico può essere uno strumento molto utile se è configurato bene. Ciò significa che non è conveniente utilizzare un programma del genere se prima non è stato predisposto nella maniera ottimale, o peggio quando non si conoscono ancora i dettagli sul funzionamento del proprio sistema.
Un'amministratore di una rete interna potrebbe predisporre una configurazione standard per tutti gli utenti che ne farebbero uso anche senza essere esperti. Ma questo solo perché c'è sempre qualcuno, l'amministratore, che sa rispondere alle domande e sa risolvere i problemi.
In situazioni diverse è meglio stare lontani dai file manager e usare piuttosto la finestra di terminale tradizionale.
xfm è il file manager più comune nei sistemi Unix. Se configurato correttamente è di grande aiuto. Oltre a svolgere le normali funzioni di un programma del genere (copiare, spostare e cancellare file e directory) permette di gestire delle applicazioni attraverso icone. In generale, i gestori di finestre offrono già la possibilità di configurare un menu grafico di comandi, attraverso il quale l'avvio dei programmi può essere più elegante. Sotto questo aspetto, l'abilità di xfm di gestire un menu di applicazioni passa un po' in secondo piano.
Prima di avviare xfm la prima volta, a meno che qualcun altro abbia già provveduto a configurare correttamente il suo funzionamento, conviene utilizzare il programma xfm.install. Si tratta in realtà di uno script che si occupa di creare una serie di file di configurazione collocati nella directory ~/.xfm/.
Un amministratore di sistema potrebbe creare una configurazione standard preparando i file necessari collocati nella directory /etc/skel/.xfm/, in modo che con l'inserimento di un nuovo utente, questi vengano automaticamente collocati nella giusta posizione della directory home.
Il contenuto di questi file vale solo come esempio. Probabilmente, si tratta già di una buona configurazione di partenza, ma questo non basta. Più avanti si vedrà il significato di questi file.
xfm [<opzioni>]
xfm è contemporaneamente un file manager e un gestore di applicazioni attraverso un sistema di icone. Quando viene avviato senza argomenti mostra due finestre: una a sinistra che consente di accedere alle tipiche funzionalità di un file manager e una a destra (di solito) che permette di utilizzare alcune applicazioni semplicemente facendo riferimento alle icone corrispondenti.
La figura (seguente) dovrebbe dare l'idea di come possa apparire xfm quando viene avviato normalmente, senza opzioni.
-
appmgr
Avvia esclusivamente il sistema di gestione delle applicazioni.
-
filemgr
Avvia esclusivamente il file manager.
<!>
Se si tenta di utilizzare l'opzione standard -
geometry,
si riesce ad intervenire solo sulla finestra che riguarda le applicazioni.
*defaultEditor: <programma>
Permette di definire il programma standard per la modifica di file. Normalmente, dovrebbe trattarsi di qualcosa in grado di gestire i normali file di testo.
*defaultViewer: <programma>
Permette di definire il programma predefinito per la visualizzazione di file. Normalmente, dovrebbe trattarsi di qualcosa in grado di leggere i normali file di testo.
*BourneShells: <shell>[,<shell>]
Normalmente, xfm è in grado di funzionare anche senza questa indicazione. Se si riscontrano problemi nell'avvio di programmi, conviene indicare il nome completo di una o più shell compatibili con quella di Bourne.
xfm si compone di una finestra per la gestione di applicazioni, che può
essere nascosta se si utilizza l'opzione -
filemgr da sola, e da un
numero indeterminato di finestre per la gestione di file e directory.
Per compiere un'azione su un determinato oggetto, è possibile selezionarlo e quindi richiamare una funzione del menu, oppure si possono effettuare operazioni di trascinamento.
La configurazione è la parte delicata di questo programma: tutto dipende da questa. Come accennato in precedenza, attraverso l'esecuzione di xfm.install viene creata la directory ~/.xfm/, all'interno della quale vengono collocati alcuni file con una configurazione di esempio. Segue una breve descrizione per ognuno di questi file.
Contiene una serie di regole per riconoscere i file in base al loro contenuto. Il nome stesso ricorda il file omonimo /usr/lib/magic che ha lo stesso scopo, a livello di sistema. Questo file, apparentemente ridondante, viene usato per evitare problemi di compatibilità e di interferenze con il sistema sottostante: volendo può essere modificato senza timore di coinvolgere anche la funzionalità di altri programmi.
Contiene le informazioni necessarie a comporre il menu di icone del gestore di applicazioni. Questo file può fare riferimento ad altri che compongono menu di livelli inferiori.
Contiene la configurazione della parte di xfm che riguarda la gestione dei file.
Si abbina a xfmrc e contiene le notizie utili a permettere un semplice meccanismo di mount e unmount automatico.
Le tipiche azioni (configurabili) che si possono ottenere attraverso l'uso del file manager sono quelle di visualizzare e modificare il contenuto di un file di testo (o presunto tale). Per questo si utilizzano programmi esterni, ed è importante definirli attraverso le risorse defaultViewer e defaultEditor.
Il simbolo # viene utilizzato per iniziare un commento, fino alla fine della riga.
Il file ~/.xfm/magic serve per stabilire un metodo di riconoscimento dei file. La documentazione originale parla di magic header, attraverso le quali si definiscono dei nomi utilizzabili all'interno di xfmrc. L'esempio seguente rappresenta il contenuto normale di questo file.
0 mode&0xF000 0x4000 DIR
>0 lmode&0xF000 0xA000 LNK
0 mode&0777 ^0111 EXEC
>0 lmode&0xF000 0xA000 LNK
0 short 0x1F9D COMPRESS
0 short 0x1F8B GZIP
0 string <MakerFile FRAME
0 string <MIFFile FRAME
0 string <MML FRAME
0 long 0x59A66A95 RAS
0 string P1 PBM
0 string P2 PGM
0 string P3 PPM
0 string P4 PBM
0 string P5 PGM
0 string P6 PPM
0 short 0x4D4D TIFF
0 short 0x4949 TIFF
0 string GIF87a GIF
0 string GIF89a GIF
0 long 0xFFD8FFE0 JPG
0 long 0xFFD8FFEE JPG
0 long 0x01666370 PCF
0 string STARTFONT\ 2.1 BDF
0 string From MAIL
0 string #FIG FIG
0 string #XFM XFM
0 string <HTML> HTML
0 string /*\ XPM\ */ XPM
0 regexp \
^#define[\ \t]+[^\ \t]+_width[\ \t]+[0-9]+ XBM
0 regexp&512 (^|\n)\\.SH\ NAME MAN
0 regexp&512 \
(^|\n)begin[\ \t]+[0-7][0-7][0-7] UUENC
0 string %! PS
I nomi dell'ultima colonna sono quelli che servono per fare riferimento ai tipi di file. Oltre a questi nomi ne esistono altri, predefiniti, che non devono apparire all'interno di questo file:
Quando si utilizzano questi nomi, sia quelli elencati all'interno del file ~/.xfm/magic che quelli predefiniti, si utilizzano le parentesi angolari per delimitarli.
Il file ~/.xfm/xfmrc serve per stabilire le icone da utilizzare per ogni tipo di file e il risultato delle azioni di push (doppio clic) e di drop (rilascio di un oggetto trascinato).
Il file contiene una serie di record, corrispondenti a normali righe, contenenti campi separati attraverso il simbolo : (due punti). La sintassi del contenuto dei record è la seguente.
<tipo-di-file>:<icona>:<azione-push>:<azione-drop>
Se c'è la necessità di utilizzare il simbolo :, lo si può proteggere con la barra inclinata rovescia, per cui si dovrà scrivere \:. Nello stesso modo, se si ha la necessità di indicare la barra inclinata rovescia, si deve utilizzare la forma \\.
Uno, o entrambi i campi delle azioni possono essere vuoti. In tal caso si intende che non debba essere compiuta alcuna azione per l'evento corrispondente.
L'esempio seguente mostra un file ~/.xfm/xfmrc, volutamente molto semplice.
# I file di applicazioni vengono caricati nella finestra delle applicazioni.
<XFM>:xfm_sys.xpm:LOAD:
# Immagini.
<PS>:xfm_ps.xpm:exec ghostview $1:
<GIF>:xfm_gif.xpm:exec xloadimage $1:
<JPG>:xfm_data.xpm:exec xloadimage $1:
# Alcuni tipi di archivi.
<ascii>*.tar:xfm_tar.xpm:exec tar -xfv $1:exec tar -cfv $*
<GZIP>*.tar.gz:xfm_taz.xpm:exec tar -xfvz $1:exec tar -cfvz $*
<GZIP>*.tgz:xfm_taz.xpm:exec tar -xfvz $1:exec tar -cfvz $*
<GZIP>:xfm_z.xpm:exec gunzip $1:
# Definizioni predefinite (devono stare in coda).
<unreadable>:::
<ascii>::EDIT:
<data>:xfm_data.xpm:VIEW:
<empty>::EDIT:
I tipi che servono a includere i tipi di file non riconoscibili diversamente, devono essere posti alla fine, perché altrimenti non permetterebbero l'utilizzo degli altri tipi di definizione. Vale la pena di analizzare dettagliatamente alcuni record di questo file di esempio.
---------
<GIF>:xfm_gif.xpm:exec xloadimage $1:
<JPG>:xfm_data.xpm:exec xloadimage $1:
Se si tratta di file riconosciuti come immagini GIF o JPG, in caso di ``doppio clic'', si avvia il programma xloadimage seguito dal nome del file stesso. In pratica, si ottiene la visualizzazione del file. Nessun comando è previsto nel caso si scarichi qualcosa sull'icona di questi tipi di file.
---------
<ascii>*.tar:xfm_tar.xpm:exec tar -xfv $1:exec tar -cfv $*
<GZIP>*.tar.gz:xfm_taz.xpm:exec tar -xfvz $1:exec tar -cfvz $*
<GZIP>*.tgz:xfm_taz.xpm:exec tar -xfvz $1:exec tar -cfvz $*
Si tratta dei file di archiviazione più comuni. Nel caso di un ``doppio clic'', si avvia il programma tar in modo da estrarre il contenuto dell'archivio, mentre nel caso di uno ``scarico'' si ottiene la sostituzione del contenuto dell'archivio con questi file.
I comandi indicati nei campi delle azioni da compiere, iniziano tutti con exec. Ciò non è strettamente necessario, ma così facendo si ottiene che la shell, utilizzata per avviare il programma, sia subito sostituita dal programma stesso. Questo fa risparmiare memoria, considerato che è perfettamente inutile che la shell resti attiva durante l'esecuzione del programma desiderato.
Il file ~/.xfm/xfmdev serve a definire le directory che si vogliono gestire automaticamente come mount point. In pratica, in base alle indicazioni di questo file, xfm è in grado di montare e smontare automaticamente i dischi quando si entra e si esce da una directory utilizzata come mount point.
Il file contiene una serie di record, corrispondenti a normali righe, contenenti campi separati attraverso il simbolo : (due punti). La sintassi del contenuto dei record è la seguente.
<directory>:<azione-mount>:<azione-unmount>
Il significato dovrebbe essere abbastanza chiaro così. L'esempio seguente dovrebbe chiarirlo ulteriormente.
---------
Supponendo che il file /etc/fstab contenga, tra gli altri, i record seguenti,
/dev/cdrom /mnt/cdrom iso9660 ro,user,noauto 0 0
/dev/fd0 /mnt/dosfloppy vfat user,noauto,quiet 0 0
/dev/fd0 /mnt/ext2floppy ext2 user,noauto 0 0
il file ~/.xfm/xfmdev potrebbe essere preparato nel modo seguente.
/mnt/cdrom:mount /mnt/cdrom:umount /mnt/cdrom
/mnt/dosfloppy:mount /mnt/dosfloppy:umount /mnt/dosfloppy
/mnt/ext2floppy:mount /mnt/ext2floppy:umount /mnt/ext2floppy
Il file ~/.xfm/Apps ed altri eventuali, servono per costruire una sorta di menu di applicazioni a icone, in cui siano stati stabiliti comportamenti diversi a seconda che si utilizzi un doppio clic del mouse, oppure venga scaricato qualcosa. Il contenuto di questi file, una volta selezionati, appare nella finestra delle applicazioni.
Un file di questo tipo inizia con l'indicazione #XFM, in modo da poter essere riconosciuto dallo stesso xfm. Contiene una serie di record, corrispondenti a normali righe, contenenti campi separati attraverso il simbolo : (due punti). La sintassi del contenuto dei record è la seguente.
<nome>:<directory>:<file>:<icona>:<azione-push>:<azione-drop>
In questo tipo di file, il programma xfm riconosce quattro tipi di azioni predefinite:
xfm è in grado da solo di generare un nuovo record all'interno del file di menu aperto nella finestra delle applicazioni, quando si trascina e si scarica l'icona di un file o di una directory in una zona libera. Se per esempio si scarica il file /home/pippo/lettera.doc che veniva rappresentato con l'icona xfm_data.xpm e per il quale era prevista l'azione EDIT in caso di doppio clic, si ottiene il record seguente.
lettera.doc:/home/pippo:lettera.doc:xfm_data.xpm:EDIT:
Se invece si trattava della directory /home/pippo/prove/, si dovrebbe ottenere il il record seguente.
prove:/home/pippo:prove::OPEN:
In pratica, la generazione automatica dei record di nuove applicazioni dipende molto da come i file che vengono scaricati sono riconosciuti per mezzo del file ~/.xfm/xfmrc.
Sempre per mezzo di xfm è possibile aggiungere un record nel file corrente delle applicazioni. Si utilizza il terzo tasto del mouse per fare apparire un menu a scomparsa e si seleziona la voce Install....
Si ottiene una maschera simile a quella della figura (seguente) che permette in pratica di compilare i vari campi del record.
Anche in corrispondenza delle icone della finestra delle applicazioni è disponibile un menu a scomparsa ottenibile attraverso il terzo tasto del mouse. Le funzioni che appaiono permettono di accedere alla modifica del record del file di applicazioni corrispondente, di cancellare l'applicazione (cioè il record) di copiarla o spostarla in un altro file del genere.
All'interno del file di configurazione ~/.xfm/xfmrc e in quelli delle applicazioni, nei campi delle azioni, possono essere indicati dei parametri corrispondenti a nomi delimitati dal simbolo di percentuale (%). La sintassi precisa di questi parametri è la seguente.
%<nome-parametro>[
-
-
<valore-predefinito>]%
In pratica, si tratta di indicare qualcosa tra due segni di percentuale. Se appare un doppio trattino, quello che c'è dopo è il valore predefinito di questo parametro.
Per esempio, il record seguente, di un file di applicazioni, permette di avviare il programma xterm con l'indicazione libera delle opzioni.
Xterm::::xterm %Inserire le opzioni eventuali-- -geometry =80x30+10+10:
Come già accennato in precedenza, se c'è l'esigenza di utilizzare il simbolo : (due punti), lo si può proteggere con la barra inclinata rovescia.
Utilizzando un programma del genere per avviare i programmi, si ha l'inconveniente di perdere un eventuale emissione di dati attraverso lo standard output o attraverso lo standard error. Se xfm venisse avviato attraverso una finestra di terminale, questi flussi di dati apparirebbero in quella finestra, ma se ciò non è possibile o non è conveniente, si può ridirigere altrove questo flusso.
Se il server X è stato avviato con una finestra di console, allora si può avviare xfm nel modo seguente.
#
xfm >/dev/console 2>&1
In generale, si potrebbe ridirigere il flusso direttamente su una console virtuale inutilizzata, come nell'esempio seguente.
#
xfm >/dev/tty8 2>&1
Come si vede dagli esempi, per poter compiere una ridirezione del genere, è normalmente necessario operare come utente root.
Attraverso un esempio semplificato, è possibile riassumere l'utilizzo di xfm.
Si suppone che il file /etc/fstab contenga le righe seguenti di definizione dei mount point di uso comune.
/dev/cdrom /mnt/cdrom iso9660 ro,user,noauto 0 0
/dev/fd0 /mnt/dosfloppy vfat user,noauto,quiet 0 0
/dev/fd0 /mnt/ext2floppy ext2 user,noauto 0 0
Si tratta di:
I dischetti vanno utilizzati sempre con la stessa unità hardware, ma a seconda del tipo di filesystem presente vengono montati in posizioni differenti. Questo permette di montarli senza dover specificare altrimenti il tipo.
Il file ~/.xfm/xfmdev necessario ad automatizzare il mount e unmount, in base alla configurazione del file /etc/fstab visto prima, potrebbe essere fatto nel modo seguente.
/mnt/cdrom:mount /mnt/cdrom:umount /mnt/cdrom
/mnt/dosfloppy:mount /mnt/dosfloppy:umount /mnt/dosfloppy
/mnt/ext2floppy:mount /mnt/ext2floppy:umount /mnt/ext2floppy
Un file ~/.xfm/xfmrc molto semplice potrebbe essere il seguente.
# File di applicazioni.
<XFM>:xfm_sys.xpm:LOAD:
# Immagini.
<PS>:xfm_ps.xpm:exec ghostview $1:
<GIF>:xfm_gif.xpm:exec xloadimage $1:
<TIFF>:xfm_tiff.xpm:exec xv $1:
<FIG>:xfm_fig.xpm:exec xfig $1:
<XBM>:xfm_xbm.xpm:exec bitmap $1:
<XPM>:xfm_xpm.xpm:exec xloadimage $1:
<JPG>:xfm_data.xpm:exec xloadimage $1:
# Archivi.
<ascii>*.tar:xfm_tar.xpm:exec TkZip $1:
<data>*.zip:xfm_zip.xpm:exec TkZip $1:exec zip -r $*
<COMPRESS>*.tar.Z:xfm_taz.xpm:exec TkZip $1:
<COMPRESS>:xfm_z.xpm:exec TkZip $1:
<GZIP>*.tar.gz:xfm_taz.xpm:exec TkZip $1:
<GZIP>*.tgz:xfm_taz.xpm:exec TkZip $1:
<GZIP>:xfm_z.xpm:exec TkZip $1:
# Definizioni predefinite.
<unreadable>:::
<ascii>:xfm_text.xpm:EDIT:
<data>:xfm_data.xpm:EDIT:
<empty>::EDIT:
Quasi in nessun caso è stato specificato un comando corrispondente ad un'operazione di drop (scarico di file). È importante tenere presente che le definizioni generali vanno messe alla fine, come un modo per catturare i tipi di file che non sono stati presi in considerazione da definizioni più dettagliate. Se non si facesse così, le definizioni generali prenderebbero il sopravvento su tutte le altre.
Nella prima parte viene definito il tipo di file <XFM>, cioè il tipo usato per definire le icone di applicazioni da utilizzare nella finestra apposita. L'azione LOAD in caso di doppio clic, carica questo fine nella finestra delle applicazioni (non potendo esistere più di una finestra di questo tipo, quello che poteva esserci prima viene sostituito).
Il gruppo di record che definisce i formati grafici è piuttosto semplice. Per ogni tipo viene abbinato un comando in grado di visualizzare il file di immagine, in corrispondeza di una azione di push (il solito doppio clic).
La gestione degli archivi, normali o compressi che siano, è più complicata. In questo esempio, si utilizza sempre il programma TkZip in grado di accedere al contenuto di questi file e di permettere una decisione sul da farsi (visualizzarne semplicemente l'elenco, leggere il contenuto di un file, estrarre parte o tutti i file, ...). TkZip non è particolarmente pratico nel suo utilizzo, ma è almeno un esempio di come si potrebbe fare in questi casi. Solitamente, la configurazione predefinita di ~/.xfm/xfmrc associa direttamente l'estrazione del contenuto dell'archivio, e forse questa non è la scelta migliore.
Il file ~/.xfm/Apps, come primo file di applicazioni, potrebbe essere utilmente configurato per la gestione di un ``cestino'' e dei mount point, utili per accedere immediatamente al contenuto di un dischetto senza dover pensare alla directory di mount.
#XFM
Riciclaggio:~:.riciclaggio:recycle.xpm:OPEN:shift; ricicla $*
CD-ROM:/mnt:cdrom:cdrom.xpm:OPEN:
Floppy Dos FAT:/mnt:dosfloppy:disk.xpm:OPEN:
Floppy EXT2:/mnt:ext2floppy:disk.xpm:OPEN:
Nell'esempio proposto, il primo record definisce proprio il cestino (Riciclaggio). Questo sistema di eliminazione controllata dei file si rifà ad uno script descritto nella sezione `Cestino personale' e non al tipo proposto dalle impostazioni predefinite di xfm. Per comprendere il senso di questo record bisogna almeno rivedere come si comporta questo script ricicla. In ogni caso, una azione di push apre semplicemente la directory dalla quale si diramano altre sottodirectory di file cestinati, mentre una azione di drop cestina i file scaricati sull'icona.
I tre record successivi sono solo riferimenti a directory utilizzate per il montaggio di CD-ROM e dischetti. Viene prevista solo l'azione di push con la quale si vuole aprire una finestra del gestore di file per accedere al loro contenuto. Il fatto di accedere a tali directory, ne attiva automaticamente la gestione del mount e unmount perché queste posizioni sono state preventivamente definite nel file ~/.xfm/xfmdev.
1997.10.26 - Scritto da Daniele Giacomini daniele@calion.com (vedi copyright: Appunti Linux).