Sie sind auf Seite 1von 17

Guida pratica alla configurazione di fvwm2

Versione 1.0 10/3/2005


Antonio Frecentese
Moltissimi utenti di Linux utilizzano desktop environments completi come Gnome o KDE
per il loro lavoro, ma per non appesantire il mio piuttosto vecchio computer preferisco il solo
window manager. La mia scelta caduta su fvwm2: abbastanza leggero e offre quasi tutto quello di
cui ho bisogno (e anche qualcosa che non mi serve).
La sua configurazione si pu modificare tramite alcuni file di testo: il file .fvwm2rc, nella
directory principale dellutente, ed eventualmente altri file secondari. Per comodit, io preferisco
avere tutta la configurazione in un unico file. Non ho messo a disposizione il mio file .fvwm2rc
come file separato per il download per una serie di motivi:
molte cose sono identiche al file di configurazione generale che si ha installando fvwm2,
quindi sarebbe una inutile ripetizione;
il vostro sistema certamente configurato in modo diverso dal mio, e inoltre voi avete delle
esigenze e/o dei gusti diversi dai miei;
credo che per imparare veramente qualcosa sia meglio studiare le istruzioni poco per volta e
da soli, senza basarsi troppo su file di configurazione altrui, strettamente legati a uno
specifico ambiente di lavoro e soprattutto a specifiche esigenze e/o gusti.
Pertanto ho preferito suddividere una vecchia versione del mio file di configurazione in
diverse sezioni per mostrarvi come si pu crearne uno adatto alle nostre esigenze.
Questa piccola guida alla configurazione di fvwm2 il risultato dei miei sforzi. Vi mostrer
alcuni comandi da me usati, vi indicher anche altre opzioni disponibili (ma non tutte).
Siete liberissimi di utilizzare il codice da me fornito per adattarlo alle vostre esigenze e alla
configurazione del vostro sistema, ma tenete presente che la versione a cui mi riferisco in questa
guida quella in mio possesso, la 2.4.6-2, installata su un sistema Debian Woody da pacchetti
binari, non da sorgenti: se avete versioni pi datate o pi recenti, o anche una distribuzione diversa
dalla mia, ci potranno quindi essere delle differenze, ma non credo cos grandi da rendere inutile la
lettura.
Per una maggiore chiarezza, troverete le varie istruzioni allinterno di un riquadro e scritte
con questo font, con evidenziato in rosso tutto ci a cui di volta in volta bene fare attenzione:
nuovi comandi, nuovi parametri e cos via.
Solo due consigli, prima di cominciare:
1. non arrendendetevi mai se qualcosa non va per il verso giusto: se state leggendo questa
guida, molto probabilmente avete scelto di configurare fvwm2 a mano, invece di scaricare da
Internet un Theme (se non sapete cosa siano, fate conto che siano una sorta di skin di
Winamp o XMMS), quindi dovete essere pronti a fare tutto da soli, provando e riprovando,
come quando decidete di programmare un software o di creare un sito web da soli;
2. potete leggere questa guida dallinizio alla fine e usare il codice presentato cos com, ma
in questo modo non imparereste un granch, e anzi correte il rischio di avere errori per
programmi o moduli non installati o installati in modi o directory differenti rispetto al mio
sistema; vi consiglio invece di seguire questordine:
a. leggete la guida poco per volta e senza modificare la vostra configurazione, giusto
per avere una vaga idea di quello che potete fare e di come farlo; prendetela un po
come uno svago, come una lettura per pura curiosit: se alla fine tutto vi sembra cos
complicato da risultare al di sopra delle vostre forze, niente vi vieta di cambiare
window manager o scaricarvi un Theme da Internet;
b. visitate il sito di fvwm2 (www.fvwm.org), in particolare osservate bene le screenshots
e i relativi .fvwm2rc, e in base ad essi decidete in modo pi o meno definitivo cosa
volete/vi serve e come lo volete/vi serve (per esempio: mi serve una barra delle
1

applicazioni, non mi serve un Pager, voglio che le finestre siano fatte cos e non
cos, che abbiano questi bottoni e non altri, e che facciano questo e non questaltro,
e cos via);
c. annotate tutto su un foglio di carta; tenete presente che ogni funzione particolare
come il pannello delle applicazioni o le finestre di dialogo si ha mediante dei
moduli (delle specie di sotto-programmi) che occupano ulteriore memoria, quindi
cercate di limitarvi a ci che vi veramente necessario: potrete sempre aggiungere in
seguito qualcosaltro, o trovare un sistema migliore per ottenere lo stesso risultato;
d. infine riprendete in mano questa guida per dei consigli su come fare le vostre
modifiche/aggiunte/rimozioni (e tenete comunque a portata di mano le pagine man di
fvwm2 per ulteriori dettagli: sono sempre insostituibili).
E ora buon lavoro!
Indice
Inizio dei lavori ....................................................................................................................................3
Commenti.........................................................................................................................................3
I percorsi per le immagini ................................................................................................................3
Alcune impostazioni globali: pagine e desktop virtuali ...............................................................3
Lo stile delle finestre............................................................................................................................5
I menu ..................................................................................................................................................8
Collegare i menu e i comandi al mouse e ai tasti...............................................................................11
Alcuni moduli di fvwm2 ....................................................................................................................14
FvwmPager ....................................................................................................................................14
FvwmForm.....................................................................................................................................14
FvwmButtons .................................................................................................................................15
FvwmTaskBar................................................................................................................................16
Considerazioni finali ..........................................................................................................................17

Inizio dei lavori


Commenti
Ogni riga che inizia con il carattere # contiene un commento e viene quindi ignorata da
fvwm2. E buona pratica usarli di frequente, come si fa nei sorgenti di un programma in un
qualunque linguaggio di programmazione: tra qualche tempo potreste non ricordare pi perch
avete configurato il programma in quel modo o dove si trova quella dannata opzione che sapete
essere quella da modificare per ottenere quello che vi serve ma che non riuscite a trovare in mezzo a
una marea di altre... Fateci caso: molti file di configurazione di esempio trovati su Internet (lo stesso
sito di fvwm2 ne ha alcuni mandati dai suoi utenti) sono commentati, pi o meno bene.
Il mio file di configurazione comincia dunque cos:
####################################
# File di configurazione per fvwm2 #
####################################

I percorsi per le immagini


Trovo molto utili quelle piccole icone che compaiono sulla barra del titolo delle finestre e
permettono di chiudere il programma e compiere altre operazioni. Posso ordinare a fvwm2 di usare
tali immagini, ma devo prima indicargli dove pu trovarle:
############################
# Percorso per le immagini #
############################
ImagePath /usr/share/icons:/usr/share/pixmaps:/usr/include/X11/pixmaps:/usr/include/X11/bitmaps

Si usa dunque il comando ImagePath seguito da un elenco di percorsi per le directory con le
immagini, separati luno dallaltro dal carattere :. Tenete presente che il vostro sistema potrebbe
essere configurato in modo diverso, o che potreste voler usare delle mini-icone che si trovano in
altre cartelle (magari perch le avete create voi o le avete scaricate da Internet).

Alcune impostazioni globali: pagine e desktop virtuali


Specificheremo ora alcune caratteristiche generali:
####################
# Settaggi globali #
####################

Avrete certamente avuto occasione di vedere lo schermo pieno zeppo di finestre aperte
(spesso e volentieri dei pop-up mentre si naviga su Internet, ma non solo) e la barra delle
applicazioni altrettanto affollata.
Con fvwm2 non possibile solo ridurre a icona i programmi aperti, ma anche avere dei
desktop virtuali, ovvero degli schermi aggiuntivi, adiacenti a quello iniziale, in cui possibile aprire
le finestre di programmi di un certo genere (e avere quindi, per esempio, uno schermo con aperti dei
programmi di grafica, un altro con degli editor e cos via), oppure spostare quelle di programmi che
al momento non vogliamo vedere.1 In realt non si tratta di veri e propri desktop virtuali, bens di
pagine. Per evitare confusione, le chiamer allora con questo nome.
Io voglio avere 9 pagine in tutto, disposte in una griglia di 3x3:
DeskTopSize 3x3

Come vedete, si usa il comando DeskTopSize seguito da due numeri separati dal carattere x:
il primo numero indica le righe, il secondo le colonne.
Come ci si sposta da una pagina a unaltra? Semplice: basta spostare il puntatore del mouse
sul bordo dello schermo e poi soffermarsi l per un po, come per spingerlo via, e poco dopo fvwm2
ci mostrer la pagina successiva.2 Non a caso ho usato la parola spingere: come se fvwm2
1

C anche la possibilit di utilizzare pi monitor affiancati fisicamente luno allaltro: si tratta della funzione
Xinerama, supportata da fvwm2 ma di cui non parler perch non la conosco, non avendo opportunit n necessit di
usarla.
2
Si pu anche impostare una scorciatoia da tastiera, ma questo lo vedremo pi avanti.

opponesse una certa resistenza, vinta la quale si passa alla pagina successiva. Si usano allora le
due istruzioni seguenti:
EdgeScroll 100 100
EdgeResistance 250 100

La prima istruzione indica la percentuale di scorrimento: il primo valore in orizzontale e il


secondo in verticale. Se dopo il numero viene aggiunta una p (esempio: 100p), allora il valore non
espresso in percentuale ma in pixel.
La seconda istruzione, invece, indica lentit di questa resistenza. Il primo valore il
numero di millisecondi che il puntatore del mouse deve trascorrere sul bordo dello schermo prima
che fvwm2 si sposti su un altra pagina; il secondo valore indica di quanti pixel oltre il bordo dello
schermo si deve muovere il bordo di una finestra perch si sposti in unaltra pagina.3

In seguito ho modificato la prima riga in EdgeScroll


mouse ma per potermi spostare manualmente, da tastiera.

0 0

affinch non scrollasse spingendo col puntatore del

Lo stile delle finestre


Nellimmagine qui a lato potete vedere la finestra
principale del programma Gimp quando ha il focus, ovvero
quando attiva.
Siamo noi a decidere che aspetto dovranno avere le
finestre, sia quelle attive che quelle inattive. Indicheremo quindi
a fvwm2 caratteristiche come
il font per la barra del titolo e il suo colore
il colore della barra del titolo e dei bordi
lo spessore dei bordi, se ci sono
quanti pulsanti ci sono sulla barra del titolo, come sono
fatti e che funzione devono avere
e svariate altre cose, quali le modalit di comparsa sullo
schermo, come devono essere attivate, e cos via. Tutto questo viene deciso con il comando Style.
Osservate:
########################
# Stile delle finestre #
########################
Style "*" Font -adobe-helvetica-bold-r-*-*-12-*

Il parametro "*" indica che la propriet specificata dovr riferirsi a tutte le finestre gestite da
fvwm2. E la classica wildcard che si trova in molti linguaggi di programmazione. Con la precedente
istruzione abbiamo deciso quale font dovr essere usato per la barra del titolo delle varie finestre.
Per sapere come dovete indicare il font, potete utilizzare xfontsel, che vi mostra un esempio di
scritta con il font di vostra scelta e il suo nome completo.
Style "*" HilightFore white

Questo il colore del testo della barra del titolo quando la finestra attiva.
Style "*" HilightBack steelblue

Questo il colore di fondo della barra del titolo quando la finestra attiva.
Style "*" Color Black/DarkGrey

Per le etichette delle finestre: il primo colore quello del titolo della finestra, il secondo
quello di fondo.
E possibile creare delle barre del titolo dotate di sfumature di colore, ma almeno sotto
Linux vorrei evitare questo aspetto simil-Windows. Se volete vedere come si fa, consultate le
pagine man.
Style "*" BorderWidth 5, HandleWidth 5

Con questi due comandi abbiamo deciso lo spessore in pixel del bordo (BorderWidth) e
quello delle maniglie (HandleWidth) che si trovano agli angoli delle finestre per poterle
ridimensionare. Le maniglie e i bordi avranno comunque un aspetto 3D, come si vede dalla figura
(se usate come dimensione 1 o 2, leffetto 3D sar meno evidente, ma chiaramente sar pi difficile
puntare il mouse sui bordi delle finestre). Notate infine che stata usata una virgola per separare
due istruzioni: non necessario metterne una sola per riga.
Style "*" DecorateTransient

Questa istruzione serve per ordinare a fvwm2 di applicare lo stile che stiamo definendo anche
alle finestre Transient, ovvero quelle finestre temporanee aperte da un programma durante il suo
utilizzo (per chiedere conferme o come splash-screen o altro).4
Style "*" SmartPlacement

Ho trovato questa opzione pi di una volta, ma onestamente non ho idea di cosa provochi.
La pagina man non mi sembra la spieghi, dice solo che attualmente supportata ma in futuro sar
rimossa. Se qualcuno sa darmi delucidazioni in merito, me lo faccia sapere. Credo che indichi a
fvwm2 di cercare di posizionare una finestra appena aperta in modo da non sovrapporla ad altre gi
presenti, per quanto possibile.
Style "*" ClickToFocus
4

In seguito ho eliminato questa istruzione.

Con questa istruzione diciamo a fvwm2 di rendere attiva una finestra solo quando ci si clicca
sopra. Il comportamento di default invece MouseFocus, ovvero una finestra diventa attiva quando
il puntatore del mouse si sposta su di essa e perde il focus se il puntatore non si trova pi sopra di
essa. C anche SloppyFocus, simile a MouseFocus ma con la differenza che una volta dato il focus
a una finestra possibile spostare il puntatore al di fuori di essa senza renderla inattiva.5
Style "*" NoPPosition

Questo comando fa s che una nuova finestra di programma, al suo apparire, ignori la
posizione suggerita dal programma stesso: molti programmi aprono infatti la loro finestra
nellangolo superiore sinistro dello schermo, e se lo facessero tutti, bisognerebbe spostare
manualmente ogni nuova finestra aperta...
Style "*" IconBox 0 0 50 1

IconBox definisce una regione dello schermo in cui fvwm2 cerca di mettere licona di una
finestra, se non si sovrappone a unaltra icona. Con questo comando indichiamo le dimensioni di
questa regione.6
Style "Fvwm*" NoTitle

La propriet NoTitle indica che quella data finestra (o tipo di finestre) non dovr avere la
barra del titolo (di default ce lhanno). Notate che in questo caso viene assegnata alle finestre il cui
nome comincia per Fvwm, tipicamente i moduli di fvwm2. Pi avanti vedremo meglio cosa sono.
Style "Fvwm*" WindowListSkip
Style "Fvwm*" CirculateSkip

Onestamente, non ho capito cosa vogliano dire di preciso queste due righe, cos le ho
lasciate cos comerano. Se qualcuno sa spiegarmelo, ben venga! Fanno comunque parte di un
gruppo di istruzioni che riguardano una lista di finestre che fvwm2 deve ignorare quando si ricorre
ad alcuni moduli (per esempio: non visualizzare determinate finestre nel modulo informativo sulle
finestre attualmente gestite da fvwm2, FvwmWinList).
Style "FvwmButtons" NoHandles, Sticky, StaysOnTop, NeverFocus
Style "FvwmForm" NoHandles
Style "FvwmTaskBar" Sticky, StaysOnTop, NeverFocus, WindowSkipList, CirculateSkip

Settiamo poi alcune propriet per i soli moduli chiamati FvwmButtons, FvwmForm e
FvwmTaskBar (notate infatti che compare il nome completo e non lasterisco), che vedremo meglio
pi avanti. Notare le opzioni per non far comparire le maniglie agli angoli (NoHandles), per
renderle i moduli visibili anche se si cambia desktop virtuale (Sticky), per far s che siano sempre
in primo piano (StaysOnTop) e perch non abbiano mai il focus (NeverFocus).7
TitleStyle -- Flat

Questa propriet indica che la barra del titolo delle finestre dovr avere un aspetto piatto
(Flat), quindi quando vi si cliccher sopra non si avr leffetto grafico tipico di un pulsante
premuto. I due caratteri -- servono solo per introdurre un flag, unopzione per il comando.
Vediamo ora lo stile dei pulsanti della barra del titolo delle finestre: ecco a voi il comando
ButtonStyle:
ButtonStyle 1 MiniIcon -- Flat
ButtonStyle 2 Pixmap mini.cross.xpm -- Flat
ButtonStyle 4 Pixmap mini.lower2.xpm -- Flat

Compare di nuovo lopzione Flat, gi vista per la barra del titolo: nemmeno i bottoni
avranno un effetto 3D quando saranno premuti.
Io voglio che le fineste abbiano tre pulsanti, uno a sinistra e due a destra. Il primo di questi
pulsanti sar identificato da un numero dispari, gli altri da dei numeri pari. Infatti, un numero
dispari indica a fvwm2 che il pulsante si dovr trovare sul lato sinistro della barra del titolo (numero

Detto tra noi, stata una delle prime cose che ho modificato, dato che come comportamenti li trovo piuttosto scomodi
entrambi. Pare che abbiano un discreto seguito, comunque, in particolare SloppyFocus.
6
Io comunque ho lasciato questa riga cos comera nel file di configurazione generale.
7
Per esempio, il modulo FvwmButtons pu essere usato per creare una finestra con dei pulsanti per lanciare delle
applicazioni: se non venisse settato NeverFocus, la finestra di questo modulo resterebbe attiva anche dopo aver lanciato
un programma tramite di essa, e bisognerebbe prima cliccarvi sopra una volta per selezionarla e poi ancora per lanciare
il programma desiderato.

pi piccolo = bottone pi a sinistra), mentre un numero pari indica che si dovr trovare sul lato
destro (numero pi piccolo = bottone pi a destra).
Per i bottoni che si trovano sul lato destro della barra del titolo voglio unimmagine ben
precisa (infatti ho fornito il nome del file), pertanto queste immagini saranno le stesse per ogni
finestra. Per il bottone di sinistra, invece, compare lopzione MiniIcon: ci significa che verr usata
unimmagine che dipende dal programma aperto. Ecco come:
##############
# Mini-icone #
##############
Style "*"
Style "emacs"
Style "gv"
Style "Gimp"
Style "kterm"
Style "mutt"
Style "xjdic"
Style "XMMS"
Style "xterm"

MiniIcon
MiniIcon
MiniIcon
MiniIcon
MiniIcon
MiniIcon
MiniIcon
NoTitle,
MiniIcon

mini.x.xpm
emacs.mini.xpm
mini-gv.xpm
wilber.mini.xpm
mini.term2.xpm
mutt.mini.xpm
mini.books.xpm
MiniIcon xmms_mini.xpm
mini.xterm.xpm

Prima viene specificata la mini-icona generale, indicata da "*", usata per tutti i programmi.
Dopodich viene data una mini-icona personalizzata per alcune applicazioni.
Questa mini-icona viene usata per la barra del titolo ma anche in moduli come FvwmTaskBar
(che vedremo pi avanti).
Notate inoltre che per XMMS ho specificato non solo la mini-icona, ma anche la propriet
NoTitle, affinch la sua finestra non abbia la barra del titolo: infatti XMMS ne ha gi una sua,
perci quella fornita da fvwm2 non necessaria (e anzi anti-estetica).
Abbiamo cos deciso quanti bottoni ci saranno e il loro aspetto, ma non la loro funzione. Io
voglio che uno dei pulsanti chiuda la finestra, uno la riduca a icona e uno faccia comparire un menu
di operazioni relative alla finestra stessa. Prima di definire luso dei pulsanti, allora, vediamo i
menu.

I menu
Il comando per decidere laspetto e il comportamento dei menu MenuStyle:
################
# Sezione menu #
################
MenuStyle "*" Foreground black, Background grey, Greyed white, \
Font -adobe-helvetica-bold-r-*-*-12-*, PopupOffset 0 100, TrianglesSolid, HilightBack Blue

Anche qui, "*" indica che le propriet valgono per


ogni menu che andremo poi a definire. I menu avranno la
scritta (Foreground) in nero (black) su uno sfondo
(Background) grigio (grey), oppure una scritta bianca
(white) nel caso il menu non sia accessibile (Greyed).
Quando il mouse passer sopra unopzione, questultima
sar evidenziata con uno sfondo blue (HilightBack blue),
e ogni sottomenu sar indicato da un triangolino pieno senza
effetto 3D (TrianglesSolid). Fate anche attenzione a quel
carattere \ posto a fine riga: esso indica a fvwm2 che il
comando non ancora terminato ma prosegue nella riga
successiva.
PopupOffset serve per indicare la posizione dei
sotto-menu rispetto al menu da cui hanno origine. Se
entrambi i due parametri sono 0, il bordo sinistro del sottomenu va sopra il bordo sinistro del menu principale. Se
invece il primo numero diverso da 0, allora il sotto-menu sar spostato verso destra di quel
numero di pixel (o verso sinistra se il valore negativo). Se il secondo valore diverso da 0, esso
indica di che percentuale della larghezza del menu principale il sotto-menu sar spostato a destra (o
a sinistra) rispetto al menu principale stesso. Devo dire che piuttosto complicato da spiegare (e da
capire: questa la traduzione dalla pagina man...): fate degli esperimenti, meglio!
Nellimmagine qui sopra potete vedere il risultato dei comandi precedenti sul menu
principale e su un suo sottomenu. Notate come molte caratteristiche appena spiegate valgano per
entrambi, e come il menu dei giochi abbia in alto la dicitura Giochi, mentre il menu principale
non ce lha. Qui sta la differenza tra il nome e il titolo del menu: il secondo del tutto facoltativo,
mentre il primo necessario, in quanto il parametro che bisogna fornire a fvwm2 affinch apra
quel menu piuttosto che un altro.
Bene, cominciamo col menu principale. Innanzitutto lo distruggiamo, per assicurarci che
le sue opzioni vengano definite qui per la prima volta. Basta fornire come parametro del comando
DestroyMenu il nome del menu. Dopodich ri-creiamo il menu ex-novo, fornendo il nome del menu
come parametro del comando AddToMenu:8
DestroyMenu Hal2003
AddToMenu Hal2003

Ora vediamo le opzioni che dovranno comparire nel menu.


Non c un comando per indicare a fvwm2 la fine della definizione di un menu, quindi le sue
opzioni andranno aggiunte alla lista, una dopo laltra: ecco perch allinizio di ogni riga
successiva si trova il carattere +:
+

"%mini.xterm.xpm%XTerm"

Exec exec xterm

Lespressione contenuta tra i due simboli % indica il nome del file della mini-icona che dovr
comparire in quel dato punto del menu.9 Di seguito troviamo la dicitura che deve comparire nel
8

Il fatto di distruggere la definizione di un menu per poi ricrearla non sciocco o ridondante come potrebbe sembrare
a prima vista, anzi, utile soprattutto nel caso in cui si usino anche file di configurazione secondari. Si tratta solo di
stare attenti affinch non si abbiano due differenti definizioni di menu con lo stesso nome.
9
Volendo, possibile mettere la mini-icona dopo il nome del programma (ad esempio: + "XTerm%mini.xterm.xpm%"),
o anche metterne una prima e una dopo. Si possono anche inserire delle immagini sul lato sinistro del mene (le sidepics), come nel menu di Windows, ma io preferisco evitarle.

menu (XTerm) e infine il comando da eseguire: Exec exec xterm. Questo equivale ad aprire una
finestra di terminale e lanciare xterm &, ma qui non consigliabile farlo: meglio inserire un altro
exec prima del comando da eseguire. Tralasciandolo, la shell invocata da fvwm2 per eseguire il
comando resterebbe attiva fino alla fine del comando stesso. Alcune shell sono sufficientemente
intelligenti da evitare questo comportamento anche senza exec, ma per sicurezza meglio inserirlo.
Le righe successive seguono lo stesso schema:
+
+

"%mini.term2.xpm%KTerm"
""

Exec exec kterm


Nop

Qui notiamo una riga un po diversa, ma il significato si pu intuire facilmente: non


compare nessuna dicitura (infatti le virgolette "" racchiudono una stringa vuota, come viene definita
nei linguaggi di programmazione), e al posto del comando Exec c Nop, ovvero nessuna
operazione. Una riga simile in un menu indica che in quel punto comparir un separatore: lo potete
verificare osservando la figura di prima.
Vediamo ora le righe successive:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

"OpenOffice"
Exec exec openoffice
"%emacs.mini.xpm%XEmacs"
Exec exec xemacs -geometry 80x39+170+0
"%mini.term2.xpm%jVim"
Exec exec kterm -e jvim
"%mini.books.xpm%xjdic"
Exec exec kterm -fg green -bg black -geometry 67x12+524+454 -e xjdic
"XDVI (jp)"
Exec exec xdvi-ja -geometry 792x710
""
Nop
"Lynx (jp)"
Exec exec kterm -e lynx
"%mutt.mini.xpm%Mutt (jp)"
Exec exec kterm -e mutt
""
Nop
"%xmms_mini.xpm%XMMS"
Exec exec xmms
""
Nop
"%wilber.mini.xpm%The GIMP" Exec exec gimp
"%mini.colors.xpm%xbmbrowser" Exec exec xbmbrowser -label
""
Nop
"%mini.happy.xpm%Giochi"
Popup Giochi
""
Nop
""
Nop
"%mini.exit.xpm%Esci da Fvwm" Popup Quit-Verify

E inutile che vi dica che ho installato anche altri programmi, non solo questi. Quello che mi
preme farvi notare con queste righe che si possono fornire dei parametri ai programmi da lanciare
(ad esempio per eseguire jvim in una finestra kterm).
Incontriamo inoltre il nuovo comando Popup, che serve a richiamare un sottomenu il cui
nome (non il titolo) compare subito dopo. Io qui ne propongo solo due, Giochi e Quit-Verify.
Ecco le loro definizioni:
# Menu Giochi
#############
DestroyMenu Giochi
AddToMenu Giochi "Giochi" Title
+ "XBubble"
Exec exec xbubble
+ "XPuyoPuyo"
Exec exec xpuyopuyo
# Menu Quit-Verify
##################
DestroyMenu Quit-Verify
AddToMenu Quit-Verify "Vuoi davvero uscire?" Title
+ "%no.xpm%No, resetta FVWM2"
Restart
+ ""
Nop
+ "%yes.xpm%Esci!!"
Quit

Anche i sottomenu, come vedete, si definiscono nello stesso modo. A differenza del menu
principale, per, questi sottomenu hanno un titolo racchiuso tra virgolette, Giochi nel primo caso
e Vuoi davvero uscire? nel secondo: essi saranno visualizzati allapertura dei sottomenu. Notate i
nuovi comandi Restart (per far ripartire fvwm2) e Quit (per uscire da fvwm2 e da X).
Prima abbiamo deciso che il bottone di sinistra della barra del titolo deve far comparire, se
premuto, un menu con le operazioni che possibile compiere sulla finestra. Ecco allora il menu
Window-Ops:10
DestroyMenu Window-Ops
AddToMenu Window-Ops "Alt-F1: Window Ops" Title
+ "Alt-F2: Main Menu"
Popup Hal2003
10

Menu che ho mantenuto identico allo script di esempio fornito da fvwm2, a parte il fatto che questo richiama il menu
Hal2003 come menu principale.

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

"Alt-F3:
"Alt-F4:
"Alt-F5:
"Alt-F6:
"Alt-F7:
"Alt-F8:
"Alt-F9:
"Alt-F10:
"Alt-F11:
"Alt-F12:
"
"
"
""
"
""
"
"

Lower"
Window List"
Previous"
Next"
Move"
Resize"
(De)Iconify"
(Un)Maximize to screen"
Raise"
(Un)Stick"
(Un)Maximize vertical"
(Un)Maximize horizontal"
(Un)Shade"
ScrollBar"
Destroy"
Close"

Lower
WindowList
Prev
Next
Move
Resize
Iconify
Maximize 100 100
Raise
Stick
Maximize 0 100
Maximize 100 0
WindowShade
Nop
Module FvwmScroll 2 2
Nop
Destroy
Close

I comandi in rosso sono tutti comandi interni di fvwm2, dai nomi autoesplicativi. Prestate
attenzione solo al comando Module, che naturalmente richiama il modulo specificato (in questo
caso FvwmScroll),11 a Stick,12 a WindowList13 e a WindowShade.14
Ora che i menu sono definiti, giunta lora di collegarli ai tasti del mouse e ai bottoni della
barra del titolo delle finestre.

11

Serve a dotare ogni finestra di barre di scorrimento.


Per fare in modo che quella finestra resti appiccicata (Sticky) in qualunque pagina ci si sposti, o per tornare al suo
normale comportamento.
13
Serve a far aprire un menu pop-up in cui compaiono il titolo, le dimensioni e la posizione delle finestre attualmente
visibili. E possibile configurare laspetto di questo menu, ma a me andava bene cos com e quindi non lho
modificato. Per maggiori informazioni, consultate le pagine man.
14
Per far s che la finestra venga oscurata, mostrando solo la barra del titolo (oppure ritorni allo stato normale).
12

10

Collegare i menu e i comandi al mouse e ai tasti


Io voglio fare in modo che sia possibile svolgere alcune funzioni premendo i tasti del mouse
non solo su una finestra ma anche sullo sfondo. In questo caso, per lesattezza, se premo il tasto
destro deve apparire un elenco delle finestre attualmente gestite (casomai non riuscissi per un
motivo o per un altro a trovarne o a chiuderne una), se premo il sinistro deve apparire il menu
principale, da cui scegliere quale programma lanciare, e se premo tutti e due i tasti insieme (per chi
ce lha: il tasto centrale del mouse) deve apparire un menu con le operazioni principali che
possibile compiere sulle finestre. Ecco come dovr procedere:
#
# Section: Mouse bindings
#
Mouse 1
R A Menu Hal2003
Mouse 2
R A Menu Window-Ops
Mouse 3
R A WindowList

Il comando Mouse serve per specificare le operazioni da compiere quando viene premuto un
pulsante del mouse. La sintassi completa del comando :
Mouse pulsante contesto modificatore funzione
Al posto di pulsante va indicato quale tasto del mouse associare a quella data istruzione: 1
il tasto sinistro, 2 il tasto centrale (se si ha un mouse con solo due tasti, allora indica la pressione
simultanea dei due) e 3 il tasto destro. Se il numero 0, allora un qualunque tasto del mouse

produrr quelleffetto.
Contesto indica il punto in cui deve essere premuto il tasto del mouse per produrre leffetto
voluto: la R indica la Root Window, ovvero lo sfondo, ma possibile specificare anche altre
opzioni, per esempio W (Window, quindi una finestra), T per la barra del titolo di una finestra, F
per il contorno e A per un punto qualunque esclusi i bottoni della barra del titolo. Un numero tra 0 e
9 indica invece un pulsante della barra del titolo, come vedremo dopo.
Modificatore indica il tasto che deve essere premuto assieme al tasto del mouse scelto per
poter eseguire quel comando: per esempio, N indica nessun modificatore, C sta per Control, S
per Shift, M per Meta e A per uno qualunque. Se specifico CS, vorr quindi dire che sia il tasto
Control che il tasto Shift devono essere premuti.
La differenza tra il commando Menu e il commando Popup visto prima che Menu fa s che il
menu sia Sticky, ovvero che resti visualizzato anche se il pulsante del mouse non viene tenuto
premuto, mentre Popup fa s che il menu venga mostrato solo temporaneamente, finch il puntatore
del mouse si trova su di esso. E per questo che ora abbiamo dato a fvwm2 il comando Menu per far
comparire il menu.
Adesso potrete capire anche le istruzioni seguenti, che riguardano la pressione di un tasto del
mouse su determinati punti di una finestra (ho mantenuto quelle del file di esempio):
#
# Moving and resizing, depending on which part of the window
# you grab (T=title bar, S=side/top/bottom, F=corner).
#
Mouse 0 T A move-and-raise-or-raiselower
#This caused problems with emacs selection (Bug #17668).
#Mouse 0 W M move-and-raise-or-raiselower
Mouse 0 W M
Mouse 0 F A resize-or-raiselower
Mouse 0 S A resize-or-raiselower
#
# Move or de-iconify an icon.
#
Mouse 0 I A move-or-winmenu-or-deiconify

Ora passiamo ai bottoni della barra del titolo delle finestre. Io voglio che il bottone pi a
destra serva a chiudere la finestra, quello vicino a ridurla a icona e il bottone di sinistra a far
comparire il menu delle operazioni che si possono compiere sulla finestra. Ecco come devo
procedere:
11

#
# Buttons on the title bar (1,3,5,7,9 are on the left, 0,8,6,4,2 on
# the right side of the title bar). Note that the bindings here
# make more sense if the ButtonStyle's defined earlier are retained.
#
Mouse 0 1 A Popup Window-Ops
Mouse 0 2 A Close
Mouse 0 4 A Iconify

Ho lasciato le indicazioni sullordine e la disposizione dei bottoni che comparivano nel file
di configurazione generale: sono utilissime come promemoria.
Come avevamo anticipato, possibile configurare anche delle operazioni eseguibili da
tastiera. Lo si fa con il comando Key, che ha la stessa sintassi di Mouse (anche qui ho mantenuto i
comandi originali, a parte il nome del mio menu principale, Hal2003):
#
# Section: Key bindings
#
Key
Key
Key
Key
Key
Key
Key
Key
Key
Key
Key
Key
Key
Key
Key
Key
Key
Key
Key
Key

Tab
Tab
Tab
Tab
Left
Up
Right
Down
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
F11
F12

A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A

M
MS
CM
CMS
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M

Next [CurrentPage !iconic] focus-and-raise


Prev [CurrentPage !iconic] focus-and-raise
Next [CurrentPage] deiconify-and-focus
Prev [CurrentPage] deiconify-and-focus
Scroll -100 +0
Scroll +0 -100
Scroll +100 +0
Scroll +0 +100
Popup Window-Ops
Popup Hal2003
Lower
WindowList
Prev
Next
Move
Resize
Iconify
Maximize 100 100
Raise
Stick

Vediamo ora alcune funzioni di fvwm2. Non ve le spiegher in dettaglio, anche perch mi
andavano bene comerano e quindi non ho cambiato nulla nel file di configurazione generale:
#
#
#
#
#
#
#
#

Section: Functions
The following functions operate on a window or menu. The
names are systematic: foo means "do foo"; foo-or-bar means
"do foo, if mouse is moving, bar if click"; and foo-or-bar-or-baz
adds "baz, if double-clicked".

DestroyFunc move-or-winmenu-or-deiconify
AddToFunc
move-or-winmenu-or-deiconify
+ "M" Move
+ "C" Popup Window-Ops
+ "D" Iconify
DestroyFunc deiconify-and-focus
AddToFunc
deiconify-and-focus
+ "I" Iconify -1
+ "I" Focus
DestroyFunc deiconify-and-raise
AddToFunc
deiconify-and-raise
+ "I" Iconify -1
+ "I" Raise
DestroyFunc focus-and-raise
AddToFunc
focus-and-raise
+ "I" Focus
+ "I" Raise
DestroyFunc move-or-raiselower
AddToFunc
move-or-raiselower
+ "M" Move
+ "C" RaiseLower
DestroyFunc move-and-raise-or-raiselower

12

AddToFunc
move-and-raise-or-raiselower
+ "M" Move
+ "M" Raise
+ "C" RaiseLower
DestroyFunc move-or-raiselower-or-maximize-vertical
AddToFunc
move-or-raiselower-or-maximize-vertical
+ "M" Move
+ "C" RaiseLower
+ "D" Maximize 0 100
DestroyFunc resize-or-raiselower
AddToFunc
resize-or-raiselower
+ "M" Resize
+ "C" RaiseLower

Non dovrebbero esserci problemi, giusto? Le stesse righe di commento mostrano il


funzionamento di queste funzioni. Credo siano utili cos, senza modifiche, per la maggior parte
degli utenti.

13

Alcuni moduli di fvwm2


I moduli sono una specie di sotto-programmi che aggiungono utili funzioni e ci semplificano
la vita (o semplicemente abbelliscono il nostro desktop!). Ce ne sono diversi, ma io ne uso
pochissimi. Qui vedremo il Pager, il Form, la TaskBar e un modulo che consente di creare una barra
dei bottoni per lanciare i nostri programmi.

FvwmPager
Sostanzialmente si tratta una specie di monitor per avere
sottocchio le pagine di fvwm2, con tutte le finestre aperte in ognuna di
esse. Osservando limmagine qui a lato (un po ingrandita rispetto alle
dimensioni reali) potete vedere che:
come deciso allinizio, le pagine sono 9 e sono disposte in una
griglia di 3x3;
al momento stiamo guardando la prima, cio quella in alto a sinistra (ha un colore di fondo
diverso dalle altre);
vi sono delle finestre aperte, anche se si riesce a distinguere chiaramente solo quella di
kterm; l a fianco si vede la finestra attiva in questo momento, distinguibile per il diverso
colore di fondo e del titolo;
in basso a destra compare la finestra del Pager stesso.
#######################
# Configura FvwmPager #
#######################
Module FvwmPager

Innanzitutto, notate che listruzione Module non associata a un pulsante del mouse o a
unopzione di un menu o altro, quindi il Pager partir automaticamente allapertura di fvwm2.
Ora definiamo alcune sue caratteristiche. Se siete riusciti ad arrivare fin qui senza ammattire,
dovreste riuscire a capire le istruzioni senza grosse difficolt.
Style "FvwmPager" Sticky, NoTitle, StaysOnTop, NoHandles, BorderWidth 4
*FvwmPagerBack SlateGrey
*FvwmPagerFore Black
*FvwmPagerFont none
*FvwmPagerHilight SlateBlue4
*FvwmPagerGeometry 120x80-0-30
*FvwmPagerSmallFont -*-times-medium-r-*-*-*-80-*-*-*-*-*-*
*FvwmPagerDeskTopScale 32

Notate la propriet StaysOnTop per far s che il Pager sia sempre in primo piano, e che non
viene specificata la disposizione delle pagine: fvwm2 usa quella definita in precedenza tramite
DeskTopSize. Qui viene decisa solo la dimensione in pixel del Pager.
DeskTopScale 32 indica che gli oggetti mostrati nel Pager avranno 1/32 delle dimensioni
corrette. Viene usata quando non vengono date le dimensioni con Geometry.

FvwmForm
Questo modulo fa comparire una finestra del tutto
particolare per chiedere informazioni allutente. Io uso questo
modulo per verificare se lutente vuole veramente uscire da fvwm2
oppure no, un po come avviene nel mondo Windows.
#####################
# Modulo per uscire #
#####################
DestroyModuleConfig Form-Quit-Verify: *
*Form-Quit-Verify:
*Form-Quit-Verify:
*Form-Quit-Verify:
*Form-Quit-Verify:
*Form-Quit-Verify:
*Form-Quit-Verify:
*Form-Quit-Verify:

14

GrabServer
WarpPointer
Command
Beep
Line
Center
Text
"Vuoi davvero uscire?"
Line
expand
Button
quit "Certo!" ^M

*Form-Quit-Verify:
*Form-Quit-Verify:
*Form-Quit-Verify:
*Form-Quit-Verify:
*Form-Quit-Verify:

Command
Button
Command
Button
Command

Quit
restart "Resetta" ^R
Restart
quit "NO!" ^[
Nop

Io uso questo modulo solo per questo scopo, ma possibile sfruttarlo anche per dellaltro.
Per maggiori informazioni e qualche altro esempio, vi rimando alle pagine man. In ogni caso, tenete
presente che questo modulo non opera alcun controllo di validit sui dati eventualmente immessi
dallutente.
Fate attenzione a GrabServer e a WarpPointer: il primo comando serve affinch fvwm2
prenda il controllo del puntatore del mouse allapertura del form, mentre il secondo porta
automaticamente il puntatore allinterno della finestra del form; sono due comandi molto utili
proprio nel caso di form con lo scopo di verificare lintenzione di uscire da fvwm2 e da X.
Notate inoltre che qui sto solo decidendo come dovr essere formato il modulo, ma devo poi
decidere come richiamarlo. Io ho scelto di farlo apparire non quando scelgo di uscire scegliendo
lapposita opzione dal menu definito prima (devo gi passare per un sottomenu, ricordate? Questo
semplice fatto mi obbliga a sapere cosa faccio), ma quando clicco su un apposito pulsante in una
sorta di barra delle applicazioni, in modo da evitare leventualit di aver cliccato su quel bottone per
puro caso. Ma quale barra delle applicazioni?, potreste chiedermi. Quella che creeremo ora con
un altro modulo, FvwmButtons.

FvwmButtons
Ho utilizzato questo modulo per costruire una sorta di pannello,
posizionato sul lato destro dello schermo, da cui lanciare le applicazioni che uso
pi di frequente (se me ne servono delle altre, uso il menu). Lo potete ammirare
nellimmagine qui a lato.15
In realt i pulsanti li ho creati pi piccoli, qui li ho fatti apposta cos grandi
e sproporzionati rispetto al testo in essi contenuto per mostrarvi meglio il
funzionamento di questo modulo.
############################
# Configura barra laterale #
############################
Module FvwmButtons -g 120x500-0+0

Con questa riga si indica a fvwm2 di lanciare il modulo FvwmButtons con


le dimensioni specificate. Le dimensioni si riferiscono alla finestra di
FvwmButtons, quindi laltezza dei vari bottoni inseriti dallutente varia a seconda
del loro numero: ecco perch i bottoni che vedete nellimmagine sono cos grandi.
Si pu comunque specificare le dimensioni dei vari pulsanti con ButtonGeometry
(vedere come nelle pagine man).
*FvwmButtons: Columns 1
*FvwmButtons: Back Grey

Una volta indicato lorientamento e la forma di FvwmButtons (una singola


colonna) e il colore di fondo (grigio), possiamo cominciare a definire i vari
pulsanti che dovranno comparire al suo interno:
*FvwmButtons: (Title (Side) "XTerm", Left, Icon mini.xterm.xpm, \
Action 'Exec exec xterm')

La riga precedente indica a fvwm2 di creare un pulsante che reca il testo Xterm, e tale
dicitura (Title) non deve comparire, come di default, sotto allicona bens di lato (Side), per
lesattezza a sinistra (Left); licona il file mini.xterm.xpm, e quando il bottone viene premuto
deve eseguire il comando indicato come parametro di Action (il comando scritto secondo le
specifiche di fvwm2).

15

Detto tra noi, in seguito ho eliminato questo pannello perch pu occupare molto spazio. Lo riporto comunque a titolo
di esempio.

15

Le righe successive seguono lo stesso schema. Notate che possibile passare dei parametri
ai programmi lanciati e anche lanciare un modulo di fvwm2 (nellultima riga, per eseguire il modulo
FvwmForm spiegato prima).
*FvwmButtons:
*FvwmButtons:
*FvwmButtons:
Action
*FvwmButtons:
Action
*FvwmButtons:
*FvwmButtons:
Action
*FvwmButtons:
Action
*FvwmButtons:
*FvwmButtons:
*FvwmButtons:
Action

(Title (Side) "OpenOffice", Left, Action 'Exec exec openoffice')


(Title (Side) "jVim", Left, Action 'Exec exec kterm -e jvim')
(Title (Side) "xjdic", Left, \
'Exec exec kterm -fg green -bg black -geometry 67x12 -e xjdic')
(Title (Side) "Mutt (JP)", Left, Icon mutt.mini.xpm, \
'Exec exec kterm -e mutt')
(Title (Side) "Lynx (JP)", Left, Action 'Exec exec kterm -e lynx')
(Title (Side) "The GIMP", Left, Icon wilber.mini.xpm, \
'Exec exec gimp')
(Title (Side) "XMMS", Left, Icon xmms_mini.xpm, \
'Exec exec xmms')
(Title (Side) "XBubble", Left, Action 'Exec exec xbubble')
(Title (Side) "XPuyoPuyo", Left, Action 'Exec exec xpuyopuyo')
(Title (Side) "Esci da FVWM2", Left, Icon mini.exit.xpm, \
'Module FvwmForm Form-Quit-Verify')

FvwmTaskBar
Si tratta di una barra delle applicazioni analoga a quella di Windows. Potete vederne
unimmagine qui sotto:
A sinistra compare un pulsante per il menu di avvio, mentre a destra si possono vedere lora
e unimmagine che indica la presenza o lassenza di messaggi di posta.
E possibile creare una barra con pi di una riga, e volendo possibile ampliarla (fino a 8
righe) o ridurla manualmente durante la sessione di lavoro, ma io preferisco avere una sola riga
(opzione di default, quindi non occorre specificarla).
#####################
# Configura TaskBar #
#####################
Module FvwmTaskBar
*FvwmTaskBarGeometry +0-0
*FvwmTaskBarBack SlateGrey
*FvwmTaskBarUseSkipList
*FvwmTaskBarScreenOnly
*FvwmTaskBarShowTips

Listruzione ScreenOnly fa s che nella TaskBar vengano visualizzate solo le finestre dello
schermo Xinerama in cui ci si trova al momento (cambiando schermo, le finestre visualizzate
cambiano di conseguenza; in effetti, qui io avrei potuto anche usare PageOnly), mentre ShowTips
attiva le finestre di tooltip quando il puntatore si trova su una finestra presente nella TaskBar.
*FvwmTaskBarStartName Hal 2003
*FvwmTaskBarStartMenu Hal2003
*FvwmTaskBarStartIcon mini.penguin.xpm

La prima di queste righe specifica il testo che deve apparire sul pulsante per aprire il menu
di avvio (senza virgolette, come vedete), la seconda il nome del menu che deve essere aperto
cliccando su tale pulsante e la terza il file con licona da visualizzare nel pulsante.
Ecco fatto: per avere una barra delle applicazioni non necessario altro. Facile, no?
Ovviamente ci sono altre cose da configurare, volendo: il comando da eseguire quando si clicca due
volte sullicona della posta (per aprire un altro programma invece di mail, o per specificare un altro
percorso per la posta, per esempio), il formato dellora, e altre cosette, ma a me va bene anche cos.
Per ulteriori informazioni, vi rimando alle pagine man. Ricordate che, oltre alle opzioni appena
viste, ce ne erano altre allinizio del file di configurazione, come il fatto che non abbia la barra del
titolo.

16

Considerazioni finali
Come avete visto, fvwm2 un window manager con un gran numero di funzioni utili e
configurabili senza troppe difficolt, fatta eccezione per alcuni moduli.
Non ho descritto tutte le opzioni disponibili, sia perch io stesso non le conosco tutte (ne uso
solo alcune e non ho grandi pretese), sia perch la versione in mio possesso ormai un po datata
(nellultima disponibile sono state aggiunte molte caratteristiche interessanti), sia perch le opzioni
di configurazione sono cos tante che non basterebbe un enciclopedia per coprirle tutte in dettaglio,
sia infine perch mi sembra giusto che ognuno abbia degli elementi di base ma anche voglia di
smanettare un po da solo per scoprire cosa fare e come farlo.
Ho cercato comunque di essere il pi chiaro possibile, e se sono riuscito a farvi capire come
potete sfruttare queste funzioni per personalizzare il vostro desktop e migliorare il vostro lavoro,
allora avr centrato il bersaglio.
Naturalmente, ogni messaggio, critica o apprezzamento sempre bene accetto.
Buon lavoro!

17

Das könnte Ihnen auch gefallen