<- IGLOO - Intro - Indice Generale - Copertina - PW - Intro ->

IGLOO


Il mio desktop

a cura di Francesco Bochicchio


L'articolo...

In questo articolo presento un paio di programmi non molto noti, ma che sono diventati parti essenziali dell'interfaccia grafica (il cosiddetto Graphical Desktop Environment) del mio PC sia a casa sia al lavoro.



Introduzione

Uno dei maggiori vantaggi (e piaceri) nell'essere un utilizzatore di software libero è quello di trovarsi a disposizione una grande quantità di programmi con cui potere trasformare il proprio computer in uno strumento di lavoro e di svago che si adatti in modo unico alle proprie esigenze. Laddove un sistema operativo basato su software proprietario è un qualcosa di rigido a cui adattarsi, un sistema operativo basato sul software libero è più simile ad una scatola di montaggio, composto da tanti splendidi pezzi che puoi comporre a tuo piacimento. Certo, occorrono studio e lavoro, anche se meno di quanto afferma chi discredita il software libero, qualche volta il disordine creativo tipico della cultura del software libero rende le cose più difficili di quando potrebbero essere, ma questo, semplicemente, è il prezzo da pagare per la libertà (scusate la retorica :-).

In questo spirito, voglio presentare brevemente due programmi che in tempi più o meno recenti sono giunti a diventare componenti essenziali del mio desktop, con la speranza di poter essere di aiuto a chi ha esigenze simili a quelle che mi hanno portato a sceglierli. Si tratta in entrambi i casi di software non molto conosciuto, che però per la sua utilità si è guadagnato un piccolo, ma fedele gruppo di utenti:

Le prossime due sezioni presentano queste due applicazioni. Prima, però, eccovi uno snapshot del mio desktop: le finestre sono gestite da Ion, e nella parte superiore dello schermo potete vedere tre versioni della finestra principale di Rox: una che mostra i file come icone, una che mostra i file incolonnati in tabella ed una che mostra una directory di immagini con abilitata l'opzione di visualizzazione delle miniature (thumbnail).

Snapshot del mio desktop

Ion : un window manager diverso dagli altri.

Ion (http://modeemi.cs.tut.fi/~tuomov/ion/) è un Window Manager, scritto principalmente dal finlandese Tuomo Valkonen per verificare alcune sue idee su come poter gestire in modo più efficiente le finestre aperte dalle applicazioni grafiche in X.

In sintesi, queste idee sono:

Frame e client windows

Per implementare i principi di cui sopra, Ion permette all'utente di dividere lo schermo in diverse aree (frame). Ognuna di queste aree può ospitare una o più finestre (client windows); di queste finestre, una è pienamente visibile (attiva) ed occupa l'intera dimensione dell'area in cui è ospitata. Le altre sono visibili solo attraverso il loro titolo, che è mostrato nella barra in testa al frame. Tale barra si comporta come una taskbar, permettendo di cambiare la finestra visibile all'interno semplicemente cliccando sul relativo titolo. Quando una applicazione apre una nuova finestra, essa viene mostrata nel frame correntemente attivo, la cui barra di testa di solito è evidenziata rispetto alle altre con un diverso colore. È possibile spostare una finestra da un frame ad un altro semplicemente trascinando il titolo della finestra nel nuovo frame. Quando una finestra cambia frame, Ion cambia le sue dimensioni per adattarla al nuovo frame.

È possibile ridimensionare un frame orizzontalmente o verticalmente con il mouse, trascinando il bordo o la barra del titolo, tenendo però premuto il pulsante di destra del mouse, invece del pulsante di sinistra, durante il trascinamento.

Ion gestisce multipli workspace, che corrispondono più o meno ai desktop virtuali di altri window manager. Ion però non supporta il concetto di sticky window, per cui una finestra è sempre presente in un solo workspace.

Tutto (e di più) via tastiera

Ion è un window manager orientato agli utenti esperti, che non si spaventano ad usare la tastiera, ed anzi apprezzano la flessibilità e la potenza di questa interfaccia. Tutte le operazioni di Ion sono associate a delle combinazioni di tasti. Nel cominciare ad usare Ion è utile memorizzare almeno le principali combinazioni, dato che alcune operazioni chiavi per usare Ion, come la creazione di nuovi frame, non sono al momento eseguibili via mouse. È anche possibile associare a sequenze di tasti l'esecuzione di determinati programmi: alcune di queste associazioni sono già nella configurazione di default (ad esempio, F2 apre una nuova finestra terminale). Modificando i file di configurazione (vedi sezione Configurazione) è possibile fare altre associazioni del genere.

Ion include inoltre un minibuffer per l'esecuzione dei comandi. Premendo l'opportuna combinazione di tasti (F3 nella configurazione di default) in fondo al frame attivo appare una riga editabile con il prompt 'Run:': è possibile a questo punto digitare il comando, che viene eseguito premendo "Enter". Il mini-buffer ha le stesse facility che rendono così comoda la linea di comando in Linux: buffer dei comandi (limitato però alla sessione corrente) e auto-completamento del comando (le opzioni appaiono in una finestra a tendina subito sopra il minibuffer). Premettendo il carattere ':' al comando, lo stesso viene eseguito in una finestra terminale.

Il minibuffer è usato anche per altre funzioni, a parte l'esecuzione dei comandi:

Usabilità

Io mi trovo molto bene con Ion, al punto che ne ho fatto il mio window manager di default, sia sul laptop sia sul desktop. Usare Ion è stata per me una esperienza molto simile a quando ho iniziato ad usare Emacs: gli stessi problemi iniziali con la memorizzazione dei comandi necessari. La stessa soddisfazione finale nella quieta efficienza con cui lo spazio video è gestito, permettendoti di concentrarti quasi esclusivamente sul tuo lavoro.

Ovviamente Ion non è indicato per coloro che vogliono desktop spettacolari dal punto di vista grafico: pur non avendo un brutto aspetto, Ion cede sempre alle applicazioni gran parte dell'area visibile, rivelando la sua presenza solo attraverso i bordi e le barre di testa dei frame. Consiglio però di provare Ion a tutti coloro che sono alla ricerca di un modo efficiente di organizzare il proprio desktop.

Vanno comunque citati alcuni problemi di usabilità, per lo più dovuti al modo non convenzionale con cui Ion posiziona e dimensiona le finestre delle applicazioni:

Per limitare questi inconvenienti, Ion mette a disposizione due strumenti:

Prestazioni

Essendo scritto in C e basato sulle sole librerie di X, ed essendo privo di elementi grafici pesanti, Ion è tra i Window Manager più veloci e leggeri che io abbia mai usato.

Installazione

Al momento in cui scrivo, sul sito di Ion trovate disponibili tre versioni:

È possibile installare insieme sia la versione stabile sia una delle versioni di sviluppo, dato che usano path diversi per i file di configurazione e per gli eseguibili.

Della versione stabile esistono pacchetti binari non ufficiali per Red Hat e Mandrake (reperibili sul sito di Ion); questa versione è anche negli archivi ufficiali Debian (unstable e testing). È in preparazione anche un pacchetto Debian per la versione di sviluppo di Ion.

È abbastanza facile installare la versione stabile o quella intermedia di Ion dai sorgenti, visto che richiede solo l'ambiente di sviluppo di X (librerie e header file). Il programma non usa i classici autoconf+automake, per cui può essere necessario editare il file system.mk per compilarlo. Sulle mie debian-box, con testing ed unstable, questo non è stato tuttavia necessario.

Per poter compilare le ultime versioni di sviluppo dovete avere un compilatore C che supporti lo standard C99, di cui il codice di Ion fà saltuariamente uso. Le versioni di gcc superiori alla 3.0 vanno bene in tal senso. Inoltre, è necessario avere installata una versione recente (=5.0) di Lua (http://www.lua.org), un interprete che la versione di sviluppo di Ion usa per gestire i file di configurazione e fornire capacita' di scripting agli utenti esperti (e smanettoni). Ma di di questo parliamo nella prossima sezione.

Configurazione

Ion è pienamente configurabile. Alla partenza cerca il suo file di configurazione sia a livello utente (sotto /.ion o /.ion-devel a seconda della versione che si sta usando) sia a livello di sistema (sotto prefix/etc/ion o root/ion-devel/etc/ion-devel, dove prefix è la directory di installazione di Ion, e.g. /usr/local). Nel caso sia presente, la configurazione a livello utente deve essere completa, in quanto quella a livello di sistema non viene più considerata.

In teoria, tutta la configurazione è contenuta in un file (ion.conf per la vestione stabile, ion-core.lua per la versione di sviluppo). In realtà però, questo file è solo una serie di direttive di inclusione che richiamano altri file di configurazione. Di questi, i principali sono (con riferimento all versione di sviluppo):

Il modo migliore di customizzare la configurazione di Ion è quello di copiarsi la configurazione a livello di sistema sotto /.ion o /.ion-devel e poi usare il proprio editor preferito per studiare e modificare i vari file di configurazione.

La versione stabile e quella intermedia utilizzano per i file di configurazione un mini-linguaggio 'fatto in casa', dalla sintassi abbastanza intuitiva. In genere, studiando la configurazione esistente, si riesce a modificarla come si vuole.

Nella versione di sviluppo, i file di configurazione sono scritti nel linguaggio Lua. Difatti vi trovate non solo direttive di configurazione, ma vere e proprie funzioni, che tra l'altro sono richiamabili attraverso il minibuffer di Ion: se fate Alt+F3 e poi TAB, vi appare la lista delle funzioni Lua disponibili in Ion.

Quelli che vogliono solo apportare piccole modifiche ai file di configurazione (ad esempio cambiare l'associazione di qualche sequenza di tasti) non si spaventino: Lua è un linguaggio abbastanza intuitivo, ed i file di configurazione sono molto leggibili e facilmente modificabili a questo scopo.

Gli utenti smanettoni potranno invece divertirsi a creare funzioni Lua che interagiscono in modo complesso con il window manager, per poi lanciarle con una semplice sequenza di tasti. E chissa' che un giorno Ion non diventi l'Emacs dei window manager :-).

Moduli

Ion è espandibile attraverso moduli, che poi sono semplici librerie dinamiche. Attraverso le API del core window manager (di cui al momento c'è poca documentazione) i moduli possono registrare le loro funzioni (che quindi sono accessibili via minibuffer) ed interagire con Ion in vari modi.

Alcuni di questi moduli sono inclusi in Ion: ad esempio il modulo query è quello che gestisce buona parte delle funzioni legate al mini-buffer.

Altri moduli sono reperibili in rete. Vi consiglio ad esempio il modulo 'ion-dock' (http://kanin.dsv.su.se/ion/dock/), che permette di gestire le stesse docklet di Window Maker (ne trovate di tutti i tipi al sito http://dockapps.org) all'interno di una barra laterale che puo essere fatta apparire e scomparire con una sequenza di tasti.

Dato il rapido sviluppo di Ion negli ultimi tempi, gli autori dei vari moduli sono rimasti un po' indietro ed a volte i moduli non sono allineati all'ultima versione. Ad ogni modo le cose sono in via di stabilizzazione.

Documentazione

La documentazione di Ion è principalmente nella sua pagina di manuale (tra l'altro, richiamabile con Mod+F1), al momento piuttosto scarna, nonchè nei README che accompagnano il codice sorgente. Il tutto in inglese.

Di recente è stato creato un sito Wiki dedicato a Ion (http://wiki.ael.be/ion/) in cui si puo' trovare documentazione aggiuntiva (o anche crearne, se ne avete voglia :-).

Licenza

Le ultime versioni di sviluppo di Ion sono distribuite con la Lesser GNU Public Licence (LGPL).
Precedentemente, Ion era distribuito con la Clarified Artistic Licence.


ROX-Filer : utile e leggero

ROX-Filer (http://rox.sourceforge.net/) è un file manager scritto in C e basato sulle librerie Gtk+ (1.2 per la versione stabile, 2.0 per la versione in sviluppo). L'autore è Thomas Leonard, inglese, che si è ispirato al file manager del RiscOS (da cui il nome: ROX sta per RiscOS on X).

In realtà il progetto ROX, a parte il file manager, consiste anche di altre funzioni e componenti, quale un pannello per lanciare applicazioni ed ospitare applet, un session manager e un paio di applicazioni che sfruttano le stesse infrastrutture di ROX. Dato che io uso solo ROX-Filer in qualità di file manager, è di questo che parlerò, limitandomi a qualche cenno sul resto.

Un menu per tutte le occasioni

Come si può vedere dalla figura all'inizio dell'articolo, la finestra principale del ROX-Filer è abbastanza classica: una finestra che visualizza i file della directory corrente, corredata di una toolbar, che permette di modificare la vista sui file, navigare nel file system e eseguire operazioni sui file. Una cosa che spicca è la mancanza di una barra menu: l'autore ha preferito farne a meno, aumentando così lo spazio disponibile per la visualizzazione di file.

Dietro questa facciata semplice si nasconde un ragguardevole insieme di funzioni, la totalità delle quali è disponibile attraverso il pop-up menu che appare cliccando con il bottone di destra del mouse in un qualsiasi punto dell'area di visualizzazione dei file. Questo menu si divide in due parti:

È possibile associare una sequenza di tasti ad una opzione del menu semplicemente tenendo aperto il menu con la voce selezionata ed eseguendo la combinazione di tasti da associare, che verrà visualizzata a fianco dell'opzione. Questa è una caratteristica di tutti i menu fatti con Gtk+, che però è poco sfruttata da altre applicazioni. Con la versione 2.0 della libreria Gtk+, tale caratteristica è disabilitata di default, per cui per poterla usare occorre editarsi il proprio file di configurazione di Gtk+2.x (/.gtcrc-2.0) ed inserirci la riga gtk-can-change-accels=1.

Ecco, a grandi linee, le cose che potete fare con ROX:

Il mini-buffer del ROX-Filer

Una caratteristica abbastanza particolare di ROX è l'utilizzo di un mini-buffer che permette di usare in modo integrato mouse e tastiera, in modo molto efficace.

Ad esempio, scegliendo l'opzione Windows-Enter Path, viene visualizzato in fondo alla finestra un mini-buffer in cui è possibile scrivere il percorso della directory da visualizzare. Oltre ad avere il classico auto-completamento, il mini-buffer interagisce con la parte grafica della finestra: ad esempio, come si comincia ad inserire un nome, viene selezionato il primo file o la prima directory che corrisponde ai caratteri digitati; premendo 'enter' a questo punto, il nome viene completato con quello del file selezionato e l'azione corrispondente è eseguita; se sì è inserito il nome di una directory e si preme il backspace, viene cancellato l'ultimo segmento del percorso inserito, e la finestra viene aggiornata per mostrare la directory che corrisponde al percorso visualizzato nel minibuffer.

Analogamente, scegliendo l'opzione Windows-Shell Command si apre un minibuffer in cui inserire il comando da eseguire: cliccando su un file o una directory della parte grafica, il nome corrispondente viene inserito nel minibuffer.

Le Application Directory

ROX supporta il concetto di Application Directory, ideato dall'autore stesso ma non molto ben accolto dal resto del mondo del free software (capita :-). Il concetto è semplice: invece di sparpagliare i file di una applicazione (eseguibili, sorgenti, librerie, configurazione, documentazione) per tutto il file system, sia pure seguendo degli standard, li si lascia tutti insieme in una 'Application Directory', organizzata in sotto-directory dai nomi standardizzati (Help, Doc, eccetera ). Pro e contro di questa idea sono evidenti, e non sto qui a discuterli. Chi è interessato, puo ripescarsi dagli archivi di Freshmeat l'articolo di Thomas Leonard ed i relativi commenti (un link all'articolo è anche presente sul sito di ROX).

Il file manager di ROX supporta questa idea nel seguente modo: se una directory contiene un file eseguibile chiamato AppRun, quella directory è considerata una Application Directory e visualizzata con un icona particolare (una cartella con un ingranaggio all'interno). Cliccando sull'icona di una Application Directory si ha l'effetto di lanciare il corrispondente file AppRun (per visualizzarne il contenuto occorre invece selezionare l'opzione di menu Look Inside).

Opzionalmente, ROX fà uso di altri file presenti all'interno dell'Application Directory:

Naturalmente, ROX riconosce anche i semplici file eseguibili Unix-style. Tuttavia, per sfruttare il supporto speciale per le application directory, alcuni utenti di ROX hanno scritto una serie di Wrapper per le applicazioni Linux più diffuse: si tratta di semplicissime Application Directory il cui file AppRun è uno script di poche righe che lancia la corrispondente applicazione. Tali wrapper sono particolarmente utili se si usa anche il pannello di ROX (vedere sezione: Il resto di ROX).

I tipi MIME

ROX associa ai file un tipo MIME e permette di associare ad ogni tipo una icona ed una applicazione particolare. Il riconoscimento del tipo MIME è effettuato in base allo standard per i tipi MIME definito da freedesktop.org (http://freedesktop.org), a cui in futuro si allineeranno KDE e GNOME (se continuano a rimanere d'accordo in proposito); questo non a caso, dato che Thomas Leonard è anche co-autore di tale standard. Va notato comunque che al momento ROX implementa la specifica solo relativamente alle estensioni dei nomi dei file, non per quanto riguarda il contenuto di essi.

Freedesktop.org distribuisce un pachetto che contiene le più comuni definizioni di tipo MIME. Per poter utilizzare appieno la versione di sviluppo di ROX è necessario scaricare ed installare questo pacchetto.

Il resto di ROX

Come ho gia detto, io utilizzo ROX come puro file manager, per cui è questo che ho descritto finora. Comunque, ecco una sintesi delle altre funzioni e componenti di ROX:

Installazione

Esistono due versioni del ROX-Filer, una stabile ed una di sviluppo. Della versione stabile sono disponibili pacchetti binari dei vari formati più diffusi. Della versione di sviluppo vengono fatti snapshot periodici dei sorgenti presenti nel CVS. Ci si può anche collegare anonimamente al CVS e scaricare l' ultima copia della versione di sviluppo.

La versione di sviluppo presenta più funzionalità di quella stabile. Dato che è quella che utilizzo, la mia descrizione del ROX-Filer fà riferimento alla versione di sviluppo. Comunque Thomas Leonard rilascia una nuova versione stabile ogni pochi mesi, in modo che le due versioni non siano mai troppo differenti tra loro.

ROX utilizza autoconf/automake, ma aggiunge un wrapper esterno. Per compilare ROX da sorgente occorre lanciare il suo file AppRun con l'opzione -compile. È necessario avere gli ambienti di sviluppo (librerie e include file) almeno di X, di Gtk+ (=2.0 per la versione di sviluppo, 1.2 per quella stabile) e libxml2 (la libreria XML di Gnome). Opzionalmente, ROX puo fare uso di altre librerie, quali gnome-VFS, abilitando funzioni che le utilizzano.

Dato che ROX segue la filosofia delle Application Directory, non esiste alcun 'make install' o equivalente. Per lanciare ROX, basta semplicemente eseguire il suo AppRun (questo può non essere vero con i pacchetti binari se essi seguono gli standard della distribuzione per cui sono stati preparati).

Configurazione

La configurazione di ROX si basa principalmente su file XML, organizzati su tre livelli (in gergo ROX, questo è chiamato the Choice system):

I tre livelli contengono gli stessi elementi di configurazione. Quando presente, un elemento del livello utente ha la precedenza sullo stesso elemento configurato a livello sito o a livello globale, mentre un elemento a livello sito ha la precedenza sullo stesso elemento presente a livello globale.

Un utente può cambiare gran parte delle opzioni del livello utente scegliendo la voce di menu Options... e poi adoperando il pannello multiplo di configurazione che appare. Ci sono però un paio di aspetti della configurazione che vanno configurati a mano:

Documentazione

La documentazione di ROX consiste essenzialmente nelle pagine di manuale e nello user manual in HTML. Il tutto, per ora, solo in lingua inglese. I messaggi del programma sono invece localizzati in varie lingue, tra cui l'italiano.

Licenza

GPL.



L'autore

Francesco Bochicchio, nato a Lagopesole (PZ) nel 1962, fà il programmatore per una azienda del settore Aereonautica/Spazio/Difesa con sede a Taranto, dove scrive software per macchine Unix (ultimamente anche Linux).
Utente Linux da circa dieci anni, quando i neuroni ormai in riserva glielo consentono cerca di aggiungere qualche goccia all'oceano di conoscenze che è il software libero, da cui attinge a piene mani.


<- IGLOO - Intro - Indice Generale - Copertina - PW - Intro ->