FVWM: il window manager.

di C.Merlano


 




Un window manager e' un programma che consente di aprire, chiudere, ingrandire, ridurre a icona o spostare le finestre: un gestore di finestre dunque; finestre che invece pensa l'X Window System (detto anche X o X11) a creare. Pertanto X e' l'ambiente grafico che fornisce le finestre, la grafica, l'uso del mouse e molte applicazioni come xterm e xcalc, mentre il window manager consente a noi di interagire con X in maniera semplice. L'X Window System per i sistemi basati sui processori Intel e compatibili (386, 486, Pentium, Pentium Pro, PentiumII,...) prende il nome di XFree86.

Quando digitiamo startx per prima cosa parte il server X con la configurazione contenuta nel file XF86Config e successivamente si passa a leggere il file .xinitrc contenuto nella propria home directory (se esiste). Solo alla fine di tutto cio' si passa all'apertura di un window manager.

Per curiosita' proviamo a vedere com'e' X senza un window manager: si modifichi il nome del file .xinitrc in .xinitrc.bak con il comando

# mv .xinitrc .xinitrc.bak
e si dia il comando
# xinit
In questo modo X partira' con una configurazione di default che prevede la sola presenza di una finestra xterm nella quale scrivere e null'altro. Per uscire dovremo premere contemporaneamente Ctrl+Alt+Backspace. 

Il gestore di finestre per X forse piu' conosciuto, semplice e leggero (e inoltre e' il mio preferito) e' FVWM, ovvero Feeble (Fine?) Virtual Window Manager nella sua versione 1.24r.  Sono uscite altre versioni come FVWM95, molto simile nell'aspetto a Windows95,  che permettono alcune finezze grafiche come le icone nei menu', e altre cose, ma FVWM e' l'ideale per chi possiede una piccola macchina e non vuole usare tutte le risorse del sistema per aprire una finestra...

Bisogna inoltre aggiungere che con il progresso di Gnome e del suo pannello di controllo applicabile a qualsiasi window manager, sara' sempre piu' utile possedere un ambiente grafico leggero e la presenza di icone, tools e effetti luminosi varii potrebbe diventare presto superfluo, dal momento che pensera' a tutto il Gnome.
E' principalmente per questo che ho deciso di parlare di FVWM e non ad esempio dei successivi FVWM2 o 95 (che una barra delle applicazioni la possiedono gia') o di Enlightenment (bello, ha forse la migliore grafica attualmente in circolazione, e assieme a Gnome sarebbe certamente un gioiello, ma per macchine molto potenti), o del KDE che va per la sua strada in relativa concorrenza con Gnome): la prospettiva di installare il Gnome porta all'esigenza di un gestore di finestre veloce e leggero.



Prima di passare alla descrizione del programma e della sua configurazione vorrei dare un po' i numeri :-) Vediamo un po' quanto spazio occupano i window manager (dati tratti dagli rpm di Red Hat 5.2):
fvwm               563336Kb
fvwm2             1506939Kb
enlightenment0.14 2733855Kb
after step 1.5    3466170Kb
Ho recentemente provato un programma ancora piu' piccolo dell'FVWM che si chiama FLWM (Fast Light Window Manager) il cui eseguibile e' leggermente piu' grande ma che effettivamente sembra occupare meno memoria di FVWM. Purtroppo non e' ancora molto configurabile. Poi c'e' TWM (Tab Window Manager, fornito assieme a X Window System), veramente spartano e che occupa piu' memoria di FVWM.


Veniamo ora alla installazione e soprattutto alla configurazione del nostro window manager. Installarlo e' in genere facilissimo e il piu' delle volte non necessario, visto che e' considerato ormai lo standard di Linux e per questo e' quasi sempre installato assieme al sistema operativo. Solo la presenza di TWM e' piu' certa di quella di FVWM. Comunque se dovesse mancare nel sistema sara' certamente nel CDROM della distribuzione.

In ogni caso e' veramente uno sforzo economico minimo scaricare dai seguenti siti la versione del programma adatta al proprio sistema operativo.

L'installazione e' anch'essa semplice come scompattare un file rpm... Infatti gli utenti Red Hat e SUSE devono semplicemente eseguire il comando

# rpm -ivh fvwm-1.24r-15.i386.rpm 
Gli utenti di Debian e di Slackware guardino la pagina di HELP della rivista.


A questo punto siamo pronti a configurare il sistema per avviare FVWM con X. Sono necessari due file:
.xinitrc e .fvwmrc solitamente presenti nella home directory /home/nomeutente.
Fare attenzione ai file che iniziano con . (punto) perche' sono invisibili e per scovarli bisogna dare il comando ls -la. Se i file non sono presenti, allora si trovano da qualche altra parte: in Red Hat i file di default sono /etc/X11/xinit/xinitrc e /etc/X11/fvwm/system.fvwmrc ... In questo caso bisogna copiare i file nella propria home directory per poterli modificare. Ad esempio, dalla propria home si possono dare i comandi
# cp /etc/X11/xinit/xinitrc ./.xinitrc
# cp /etc/X11/fvwm/system.fvwmrc ./.fvwmrc
Ora che abbiamo i file .xinitrc e .fvwmrc bisogna modificarli con il proprio editor.
Nel file .xinitrc bisogna cancellare tutto quello che c'e' scritto dopo
# start some nice programs
anche se si potrebbe benissimo cancellare tutto o addirittura creare un nuovo file. Un file .xinitrc contenente la sola stringa
/usr/X11/bin/fvwm
dovrebbe essere sufficiente (se, com'e' probabile, la directory /usr/X11/bin e' nel PATH del sistema, basta addirittura la stringa fvwm). 

Nel file system.fvwmrc non e' necessario nessun cambiamento, almeno per avviare il gestore di finestre, ma molti cambiamenti sono auspicabili per personalizzare l'ambiente di lavoro. Comunque diamo pure startx e vediamo cosa succede. Cio' che vedremo dipendera' molto dal file .fvwmrc,  ma solitamente appare una piccola finestra chiamata Pager divisa in 4 o piu' parti e possono anche essere presenti delle icone. 
Il Pager permette di muoversi tra i desktop virtuali: infatti la parola Virtual di FVWM indica proprio la possibilita' di avere piu' schermi a disposizione e in ognuno di essi inserire diverse finestre. Basta cliccare su una delle parti in cui e' diviso il Pager per ragginugere il corrispondente desktop.
Premendo poi il tasto sinistro del mouse in un punto vuoto dello schermo appare un menu' contenente i nomi di alcune applicazioni che si attivano semplicemente rilasciando il tasto sinistro sopra ai nomi stessi.  Il tasto centrale del mouse porta invece ad un menu' contenente operazioni tipiche sulle finestre come Move, Resize, Copy,...

Naturalmente e' probabile che il nostro programma preferito non compaia nel menu', come e' possibile che non ci piaccia vedere apparire una finestra in un posto qualunque dello schermo mentre preferiremmo sciegliere dove metterla. Dobbiamo mettere mano al file .fvwmrc...
Possiamo anche aprirlo da un terminale in X attivato in precedenza (nel menu' non manca certamente un Xterm o un Color Xterm o un Rxvt) chiamando l'editor vi o quello che ci pare. Di seguito riporto un file .fvwmrc davvero minilalista al quale possiamo aggiungere successivamente altre opzioni:

#now define the menus - defer bindings until later

# This menu will fire up some very common utilities
Popup "Utilities"
        Exec    "Rxvt"          exec rxvt &
        Quit    "Exit Fvwm"
EndPopup

# This defines the most common window operations
Popup "Window Ops"
        Move            "Move"
        Close           "Close"
EndPopup
##############################################################################
# This defines the mouse bindings

# First, for the mouse in the root window
# Button 1 gives the Utilities menu
# Button 2 gives the Window Ops menu
# I use the AnyModifier (A) option for the modifier field, so you can hold down
# any shift-control-whatever combination you want!

#     Button    Context Modifi  Function
Mouse 1         R       A       PopUp "Utilities"
Mouse 2         R       A       PopUp "Window Ops"
Il primo pezzo genera i menu' a scomparsa (PopUp) Utilities e Window Ops. Il primo menu' contiene la possibilita' di avviare il terminale rxvt e di uscire da X (Quit), mentre il secondo menu' consente di spostare una finestra e di chiuderla. Il secondo pezzo attribuisce a 2 tasti del mouse i due menu', esattamente premendo il tasto sinistro (Mouse 1) appare il menu' delle Utilities e premendo il tasto centrale (Mouse 2) appare l'altro menu'. La seguente figura mostra il risultato non certo impressionante...
...ma possiamo fare molto per migliorare le cose. Iniziamo ad aggiungere le seguenti righe all'inizio del file:
Function "InitFunction"
  Exec      "I"     xsetroot -solid  SteelBlue
  Module    "I"     FvwmPager 0 0
EndFunction
Avviando X con il file .fvwmrc modificato in questo modo vedremo che ora appare anche il Pager (modulo FvwmPager) e che il colore dello sfondo e' diventato azzurro (grazie al comando xsetroot). Il file system.fvwmrc e' in genere piuttosto ricco di funzioni e qui ho preso in esame quello trovato di default nella versione 5.2 di Red Hat. I commenti dell'autore li ho tradotti o integrati.
Procedendo per passi successivi e' possibile creare un ambiente di lavoro su misura per le proprie esigenze e scrivendo semplicemente "panel &" nel file .xinitrc, subito prima della chiamata di fvwm otteniamo un ambiente di lavoro davvero professionale, grazie a Gnome.