BETA


BETA

Copertina
Sommario
Internet ID
Informazioni
Browser
Guida

Indici
Redazione
Mailing
Dove come
Mirror

Licenza
Cerca
Stampa


BETA sul Web

Più stile nell'interfaccia standard di Linux

Basato su Fvwm2, e sull'esperienza personale, una piccola rivistazione dei valori predefiniti e l'utilizzo di Moduli del X client. Il risultato? Giudicatelo voi stessi..

di Luciano Giustini Articolista Senior, BETA

Molti di voi al primo approccio all'interfaccia grafica di Linux avranno trovato che le impostazioni di default spesso non sono soddisfacenti. La prima reazione a questo è di cercare un altro window manager (per Linux ormai ce ne sono diversi), ma a mio parere non è la via migliore. Questo poichè come praticamente ogni singolo componente di Linux, anche il window manager più diffuso, Fvwm (2.0), può essere personalizzato notevolmente, temperando la diffusa abitudine a cambiare, invece di modificare, mutuata da Windows, e migliorando consistentemente l'aspetto e le funzionalità.
In particolare fvwm2 può fare molte belle cose: vedremo i moduli che forse sono più utili in assoluto, la barra bottoni e la taskbar, e daremo un'occhiata ad un Fvwm2 run control file piuttosto personalizzato (il mio! :-) per capire come e dove intervenire per  alcune impostazioni predefinite del client.


Modulo FvwmButtons

FvwmButtons
Fig. 1 - FvwmButtons, la barra bottoni di Fvwm2, così come personalizzata secondo il codice mostrato nell'articolo
(vedi le Note di Attenzione in fondo per le modifiche ai file di configurazione)

L'installazione che prendo in considerazione è la SuSE, anche perchè è quella che ho installato per ultima. Così come lo YaST (Yet another Setup Tool, come nella migliore delle tradizioni) prevede, il modulo FvwmButtons predefinito è già abbastanza completo, e permette di lavorare subito col sistema in modo completo e consistente. Tuttavia, come sempre, molto ancora si può fare, soprattutto dal punto di vista estetico e funzionale. Vediamo nella figura 1 come appare dopo una customizzazione spinta e l'uso del set di icone AfterStepIcons (.tar.gz), secondo il seguente codice, che ne descrive anche il comportamento.

Se non sono già presenti, dobbiamo inserire queste due righe nel file .fvwm2rc per far partire il modulo all'avvio.
I moduli possono essere lanciati solo dal fvwm e non da linea di comando.

  AddToFunc InitFunction
    +  "I"  Module FvwmButtons
   . . .

  AddToFunc RestartFunction
    +  "I"  Module FvwmButtons
 

# .fvwm2rc, FvwmButtons Module configuration

*FvwmButtonsFont        -*-helvetica-medium-r-normal-*-10-*-*-*-*-*-iso8859-1
*FvwmButtonsFore        Black
*FvwmButtonsBack        grey50
*FvwmButtonsGeometry    +10+28
*FvwmButtonsPadding     2 2
*FvwmButtonsFrame       1
*FvwmButtonsRows        1
*FvwmButtons  - - Swallow "FvwmXclock" Exec xclock -name "FvwmXclock" -geometry +0+0 -padding 1
*FvwmButtons  - - Swallow "asclock" Exec asclock -position +0+0 -shape &
*FvwmButtons PPP-on PhoneTTOffhook.xpm Exec xterm -e ppp-on
*FvwmButtons CheckMail LetterEnvelope.xpm Function CheckMailFunc
*FvwmButtons "Mail Func" LetterEnvelopeWithPencilAndPaper.xpm Function MailFunc
*FvwmButtons Netscape3 netscape3.xpm Function NS3Func
*FvwmButtons Packages ClosedPackageBox.xpm Exec xterm -ls -fn 7x14 -bg black -fg white -e mc /dl
*FvwmButtons(Title Tools Icon RayTracedGear.xpm Action bartoolspopupfunc)
*FvwmButtons Files FileManager_N.xpm exec fr
*FvwmButtons(Title Docs Icon FolderDeposit.xpm Action docspopupfunc)
*FvwmButtons NEdit Pencils.xpm Exec nedit
*FvwmButtons XTerm LightBlueShellWindow.xpm Exec xterm -ls -geometry 90x30+220+125 -T bash
*FvwmButtons Calendar LetterCStarLogoOnPaperWithPencil.xpm Exec /opt/communicator/nscal
*FvwmButtons DesignTec Monalisa.xpm Exec netscape /designtec/index.htm l
*FvwmButtons Gruppo ThreePeopleBehindPencilTablet.xpm Exec nedit incarichi.beta
*FvwmButtons(Container())
    *FvwmButtons(Icon small.pinguin_suse.xpm Action systeminfopopupfunc)
    *FvwmButtons(Icon small.Shell.xpm Action barshellpopupfunc)
    *FvwmButtons(Icon small.logo_suse_3d.xpm Action barsusepopupfunc)
    *FvwmButtons(Icon small.fvwm_suse_3d.xpm Action barthiswmpopupfunc)
*FvwmButtons(End)
*FvwmButtons(Title Devices Icon DiskOptical.xpm Action perpopupfunc)
*FvwmButtons (1x1) - - Swallow "FvwmPager" Module FvwmPager 0 0

Penso che non ci sia bisogno di commentare riga per riga. E' interessante notare che per togliere le didascalie alle icone si può mettere FvwmButtonsFont none, mentre l'intera barra può essere orientata in orizzontale o verticale secondo il parametro FvwmButtonsRows/FvwmButtonsColumns. Se il primo contiene un valore positivo, sarà preso per riferimento e orienterà la barra in senso orizzontale, altrimenti bisogna specificare il numero di colonne di cui si vuole dotata la barra. Questo parametro va a braccetto con la specifica di geometria, giacchè se è orizzontale dovrebbe di norma partire dalla posizione +0+0, mentre in verticale può essere posto sia a sinistra sia, come molti preferiscono, a destra dello schermo.
Un'occhiata, inoltre, alle due righe evidenziate (in grassetto) che aprono e chiudono un'area per descrivere un bottone "speciale", che contiene quattro piccoli bottoni che svolgono ognuno una funzione diversa.
Infine, una raccomandazione: le stringhe singole possono essere sempre scritte senza problemi, ma in caso di spazi fate attenzione a porre gli apici. Questo è particolarmente vero per i titoli delle icone. Nel caso di apici annidati, vanno alternati tra singoli e doppi.

Vale la pena notare che nelle definizioni di stile ho aggiunto queste righe:

Style  "FvwmButtons"  NoTitle, Sticky, BorderWidth 0
Style  "FvwmButtons"  WindowListSkip, CirculateSkip

Che inducono, nell'ordine, i seguenti comportamenti:

Nessun titolo;  Presenza in ogni desktop;  Bordo della barra a zero;  Salta la lista delle finestre aperte; Salta il passaggio in successione di finestre (quello di ALT-F11, per esempio)
Come sempre, un po' di tempo speso su man FvwmButtons darà i risultati voluti, permettendovi di personalizzare questo versatile modulo a vostro piacimento.

Modulo FvwmTaskBar

TaskBar
Fig.2 - FvwmTaskBar, la barra delle applicazioni che rivaleggia con quella di Windows.

Ebbene si, una delle (poche?) cose veramente utili che Microsoft ha introdotto in Windows 95 è stata la barra delle applicazioni. Avere una barra che visivamente mostri cosa gira sul sistema ed eventualmente con che nome sembra ormai indispensabile, e nell'interfaccia di un sistema operativo avanzato non può più mancare (se è multitasking, beninteso). In SuSE hanno pensato che un modulo del genere fosse più gradito a chi sceglie il Fvwm95 (un orrore, per me), e non viene installato predefinito in Fvwm2. Comunque è facile attivarlo, aggiungendo, come per il precedente, due righe nel file di configurazione.

  AddToFunc InitFunction
    +  "I"  Module FvwmTaskBar

  AddToFunc RestartFunction
    +  "I"  Module FvwmTaskBar

Si può scegliere di porre la barra in alto oppure in basso. Non sono previste altre locazioni. Chiaramente la barra applicazioni può serenamente convivere con la barra bottoni, con qualche accorgimento nella geometria di quest'ultima per evitare sovrapposizioni.
Vediamo il codice che ho usato io per renderla "adatta". Le impostazioni di default, come spesso avviene, sono un po' scarne e antiestetiche, ma lavorandoci un po' l'aspetto migliora senz'altro. Una delle prime cose che ho fatto è stata cambiare il bianco di sfondo :-)

*FvwmTaskBarBack        grey60
*FvwmTaskBarFore        black
*FvwmTaskBarTipsBack    bisque
*FvwmTaskBarTipsFore    black

# Poni in fondo:
# *FvwmTaskBarGeometry +0-1

Soffermiamoci un momento su questi parametri. La TaskBar dispone di tooltips ovvero quelle strisce colorate di testo che appaiono vicino al mouse quando ci si sofferma su un bottone. A volte possono essere molto utili per leggere un nome completo che non entra sul bottone, diamo quindi un colore di sfondo adeguato (bisque, che corrisponde ad un giallognolo caldo). Il background dell'intera barra potrà essere lo stesso della barra bottoni vista precedentemente magari più chiaro o più scuro, io consiglio sempre il grigio per questo genere di elementi fissi. E' possibile comunque personalizzare a piacimento lo sfondo, anche ponendo un'immagine.

*FvwmTaskBarUseSkipList
*FvwmTaskBarStartIcon   mini-x.xpm
*FvwmTaskBarButtonWidth 150
*FvwmTaskBarBellVolume  20
*FvwmTaskBarFont        -*-helvetica-medium-r-normal-*-*-100-*-*-*-*-iso8859-*
*FvwmTaskBarSelFont     -*-helvetica-medium-r-normal-*-*-100-*-*-*-*-iso8859-*
*FvwmTaskBarStatusFont  -*-helvetica-medium-r-normal-*-*-100-*-*-*-*-iso8859-*
*FvwmTaskBarAutoStick
*FvwmTaskBarStartName   nome-scelto
*FvwmTaskBarStartMenu   workpopup
*FvwmTaskBarShowTips
*FvwmTaskBarMailBox     propria-mailbox
*FvwmTaskBarAction      Click1 Iconify -1, Raise
*FvwmTaskBarAction      Click2 Iconify +1, Lower
*FvwmTaskBarAction      Click3 Raise, Iconify +1
*FvwmTaskBarMailCommand xterm -fn 7x14 -e mail

Il parametro  StartMenu indica il nome della azione che si vuole intraprendere, quando si seleziona col mouse il primo bottone a sinistra. Il default è "Start", ma sinceramente ho preferito mettere il nome della mia macchina per non creare confusioni! Il parametro indicato con "propria-mailbox" indica il percorso del file di posta personale. Se omesso, è inteso quello dell'utente corrente.
I tre comandi che ho evidenziato in grassetto servono a definire le azioni da intraprendere quando si fa click con il tasto sinistro, centrale e destro del mouse su un bottone, la prima volta, la seconda volta e così via (in genere comunque ci si ferma a due per evidenti ragioni). Il parametro Iconify +1 identifica il comando di "riduci a icona", viceversa se c'è -1.
C'è un comportamento non desiderato in queste azioni, e spulciando nel manuale non ho ancora capito come eliminarlo: quando si fa click sul bottone di un'applicazione non in icona questa va in testa alle altre ma senza avere il focus. Bisogna fare un click sull'applicazione stessa perchè sia quella attiva. Se qualcuno trova il barbatrucco per evitare ciò, è pregato di comunicarmelo in modo da poter aggiornare questo articolo (vedi Note di Licenza in fondo).
Anche qui sono presenti due righe di stile che definiscono il comportamento del modulo TaskBar, autoesplicanti:

Style "FvwmTaskBar"     NoTitle,BorderWidth 4, HandleWidth 4, Sticky, StaysOnTop
Style "FvwmTaskBar"     WindowListSkip, CirculateSkip

Queste righe andrebbero messe nella sezione dedicata allo stile, insieme alle altre definizioni per le applicazioni e i moduli del sistema grafico in uso. Anche per questo modulo, il tempo speso su man FvwmTaskBar non sarà mai perso.

Decorazione delle finestre

No, non sto parlando dei gerani fioriti sul davanzale ma dell'aspetto delle finestre di Fvwm2. Come senz'altro saprete (se non lo sapete lo avrete notato) le principali particolarità dell'interfaccia X-Window sono un sistema client-server e nessuna regola precisa per l'aspetto e le funzionalità delle finestre, tranne per quanto riguarda il contenitore, e cioè i bottoni della finestra (se ne possono definire fino a dieci), la barra del titolo, le funzionalità quali operazioni di movimento, riduzione a icona, ridimensionamento, chiusura, ecc. Tramite il file di configurazione possiamo definire precisamente quale sarà il comportamento e l'aspetto delle finestre. Un buon esempio può essere quello che ho fatto io provando diverse possibilità. Un'immagine val più di mille parole:

Finestra Netscape
Fig.3 - Personalizzazione delle finestre X-Window

Come si può notare l'interfaccia di Netscape Communicator internamente è quella che siamo abituati a vedere, mentre l'aspetto della finestra contenitore è diverso da quello standard. Cosa è cambiato? I più attenti avranno già visto tutto, comunque di seguito ho messo il frammento di codice che definisce questa decorazione.

Ho inserito il codice per quest'aspetto di finestra come una specifica decorazione. In questo modo sarà possibile cambiare l'aspetto generale semplicemente creando una nuova decorazione e variando solo una riga (l'ultima, nel frammento che segue)

AddToDecor LSS_01
  + ButtonStyle All ActiveUp (-- flat) Inactive (-- flat)
  + TitleStyle ActiveUp (-- flat) Inactive (-- flat)
  + TitleStyle ActiveUp (HGradient 128 2 rgb:0/0/400 40 rgb:0/0/800 60 \#6789AF -- \
      Flat) Inactive (HGradient 128 gray35 gray -- Flat)
  + BorderStyle -- HiddenHandles NoInset
  + HilightColor white \#6789AF
  + WindowFont -adobe-helvetica-bold-r-normal-*-12-120-75-75-p-70-iso8859-1
  + IconFont   -adobe-helvetica-medium-r-normal-*-10-*-*-*-*-*-iso8859-1
  + TitleStyle LeftJustified Height 19
  Style "LSS_01" UseDecor LSS_01, Color white/grey60, HandleWidth 5, BorderWidth 4

Style "*" UseStyle LSS_01

Le prime tre righe in pratica dicono questo: tutti rilievi delle finestre, sia attive sia inattive, non devono possedere la scanalatura predefinita, ma essere "flat". La terza riga, in particolare, si occupa dei dei titoli attivi e inattivi, configurando una sfumatura con, secondo il mio gusto personale, un tono dal blu al colore del bordo della finestra (azzurro non troppo vivace) nel caso di attivo, e dal grigio più scuro a quello più chiaro nel caso inattivo. Noto adesso che ho usato in pratica tutti e tre i modi per definire un colore, rgb, esadecimale e con nome. Se vi è poco chiaro, nella terza riga c'e' un "rgb:" seguito da numeri, poi c'è un "\#" che inizia una sequenza esa e infine ad esempio "gray35" è una tonalità di grigio chiamata per nome.
Le rimanenti righe sono piuttosto chiare: la quarta nasconde le scanalature per il ridimensionamento, poi vi è il colore del testo del titolo, il carattere scelto per le finestre e, per quando queste sono ridotte a  icona, il carattere sotto l'icona, lo stile del titolo (a sinistra, mentre predefinito è centrato) e infine la definizione dello stile di nome LSS_01 che usa questa decorazione.
L'ultima riga, invece, è una ridondanza ma serve semplicemente per poter cambiare decorazione/stile al volo quando si fanno modifiche sostanziali.

Una visita alle possibili configurazioni Fvwm2 già fatte da altri è d'obbligo. Si può raggiungere dall'indirizzo della FVWM Home Page:
http://www.hpc.hu.edu/fvwm.

Alla prossima!

___________________________________

NOTE DI ATTENZIONE

Modifiche sui file di configurazione
In fase di configurazione, può accadere che si effettuino modifiche disastrose per il buon funzionamento dell'interfaccia, o del sistema operativo, della rete, ecc. La pericolosità è proporzionale al tipo di login e di permessi: se root è il massimo. Quando qualcosa non funziona come si sperava, è necessario tornare indietro, rivedere il codice riga per riga oppure rimettere direttamente il frammento precedente, funzionante.

Backup!
Per questo, è caldamente consigliato fare sempre delle copie di backup per file di configurazione importanti come ad esempio quelli di sistema, se siete l'amministratore, o quelli personali, dell'interfaccia, del proprio profilo, ecc. se siete un utente. Ad esempio, un buon consiglio è di copiare tutti i file nascosti (quelli che iniziano con il punto) della propria home directory in una directory di backup oppure su dischetto prima di effettuare le modifiche come quelle proposte in questo articolo. Basterà inserire un dischetto formattato DOS e dare:

# mount -t msdos /dev/fd0 /mnt
(nota: se la directory mnt non è presente andrà creata:  mkdir /mnt)
$ cd ~/
$ cp .[a-z]* /mnt
# umount /mnt
E riporre il dischetto in un luogo sicuro. In qualsiasi momento potremo tornare indietro e rimettere una configurazione funzionante. Alcuni programmi, come Midnight Commander (clone di Norton omonimo) possono eseguire delle copie di backup automaticamente quando si modificano dei file di testo (in tal caso i file si riconoscono dall'avere una tilde ~ all'inizio o alla fine del nome).

Note - Il carattere "$" significa che i comandi sono dati da utente. Se sono dati da root si pone il carattere "#".
 


Luciano Giustini è fondatore di BETA, ed è raggiungibile su Internet tramite la redazione oppure all'indirizzo l.giustini@beta.it

Copyright © 1998 Luciano Giustini, tutti i diritti sono riservati. Questo Articolo di BETA, insieme alla Rivista, è distribuibile secondo i termini e le condizioni della Licenza Pubblica Beta, come specificato nel file LPB.


Copertina Sommario Internet ID Informazioni Browser
BETA, La rivista ipertestuale tecnica - Copyright © 1994-1998. BETA Sul Web: http://www.beta.it.