Era una grigia giornata d'autunno di qualche anno fa, probabilmente, quando un
"amico esperto di computer" (chi non ha mai avuto un "amico
esperto di computer"?)
si presentò raggiante alla porta di casa mia con in mano una copia di Linux,
all'epoca da me sconosciuto.
L'antefatto risaliva ad alcuni giorni prima quando, incontrandolo per caso, mi
lanciai in uno sproloquio sulla precoce obsolescenza dei PC e dei programmi e
sulla mia
ferrea quanto donchischiottesca ostinazione a non cadere nel ricatto della continua
spesa per stare al passo con le ultime trovate di marketing dal mondo dell'information
tecnology... ...in poche parole, avevo un computer non più nuovissimo he
i più o meno recenti sistemi operativi e programmi Windows avevano reso
di una lentezza estenuante!!
E fu a questo punto che l'"amico esperto di computer" entrò prepotentemente
sulla scena affermando che "...ho io la soluzione, ti porto un sistema operativo
che gira bene anche su vecchi PC...". Il risultato fu che con Linux il PC
sembrava essere ancora più lento!!!
Lasciando stare gli aneddoti divertenti, ce n'é voluto poi di tempo
per capire che in fondo l'amico aveva ragione: con Linux si possono riutilizzare
vecchi pc a patto però di
essere in grado di configurarli e di ottimizzarli.
In questo senso tanti e di varia natura sono gli accorgimenti da adottare ma in
questo breve articolo mi soffermerò sull'analisi di TWM (Tab Window
Manager), il gestore di finestre più leggero (e spartano) di Linux fornito
insieme al server x, che risulta essere un ottimo strumento in computer
non molto potenti.
Per quelli di voi che non hanno mai utilizzato TWM è necessario dire
che per lanciarlo (almeno su red hat) occorre prima digitare da console il comando:
switchdesk TWM
e poi:
startx
TWM ha un file di configurazione che si trova generalmente in
/etc/X11/twm/system.twmrc
che permette una buona configurazione del gestore di finestre.
Il file, composto da variabili e funzioni, puo' essere diviso in 4 parti:
- nella prima vengono dichiarate alcune variabili generali (font, icona, colori
dei vari elementi)
- nella seconda vengono definite le funzioni composte che riguardano il movimento
- nella terza vengono abbinate le funzioni precedenti con i tasti del mouse
- nella quarta vengono definiti i menu e gli eventuali sottomenu e la funzione
attribuita a ciascuna voce.
Per entrare nel dettaglio, di seguito vi mostro un esempio di file system.twmrc
che non esaurisce certo tutte le opzioni di configurazione ma può essere
una buona base di partenza (ricordatevi che la pagina man
di TWM è piuttosto dettagliata).
##################
#### system.twmrc
####################################
### Definizione di alcune variabili
NoGrabServer
# non coinvolge il server durante la visualizzazione di menu', ecc.
# (notate che ho usato l'apostrofo, i caratteri accentati non sono
# consentiti nemmeno nei commenti)
RestartPreviousState
# riporta lo schermo allo stato precedente lo spengimento del
# gestore di finestre
DecorateTransients
# inserisce la barra del titolo per le finestre in movimento
# indica il font, l'icona, ecc..
TitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
ResizeFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
MenuFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
IconFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*"
IconManagerFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*"
# di seguito i colori dei vari elementi
Color
{
BorderColor "lavender"
DefaultBackground "azure"
DefaultForeground "darkgreen"
TitleBackground "azure"
TitleForeground "darkgreen"
MenuBackground "azure"
MenuForeground "darkgreen"
MenuTitleBackground "darkgreen"
MenuTitleForeground "azure"
IconBackground "azure"
IconForeground "darkgreen"
IconBorderColor "darkgreen"
IconManagerBackground "azure"
IconManagerForeground "darkgreen"
}
# visualizza l'immagine indicata sulla barra della finestra
# al passaggio del puntatore
Pixmaps
{
TitleHighlight "/root/immagine.bmp"
}
##################################
# Definizione di alcune funzioni composte utili per azioni basate sul movimento
# (utilizzate nella sezione successiva)
MoveDelta 3
# questa variabile specifica il numero di pixel che il puntatore
# deve percorrere prima che la funzione f.move inizi a funzionare;
# provate a dargli valore 0 e vedrete la sottile differenza!
Function "sposta-sotto" { f.move f.deltastop f.lower
}
Function "sposta-sopra" { f.move f.deltastop f.raise }
Function "sposta-icona" { f.move f.deltastop f.iconify }
# Le funzioni sopra dichiarate sono composte da un gruppo di tre funzioni
# ciascuna; vediamone alcune nel dettaglio:
# f.move ----> permette di trascinare il contorno
della finestra selezionata mentre il
# pulsante del mouse indicato è premuto
# f.lower ----> abassa la finestra selezionata
# f.deltastop ----> permette di terminare una
funzione definita dall'utente se
# il puntatore è stato mosso più del numero di pixel definito
# in MoveDelta
# f.raise ----> alza la finestra selezionata
# f.iconify ----> riduce a icona o ripristina
la finestra o l'icona selezionata
#################################
# Definizione di alcuni abbinamenti di funzioni viste in precedenza con i tasti
# del mouse.
# La sintassi è:
# Pulsante = TASTI : CONTESTO : FUNZIONE
# I pulsanti sono ovviamente il sinistro, il destro e il centrale del mouse;
# i tasti sono indicati da una lettera che si riferisce ad un tasto (s
indica il ta
# sto shift, c il tasto control, ecc.); il contesto indica l'elemento visualizza
# to da considerare (root e' lo sfondo); la funzione è la funzione assegnata.
#################################
Button1 = : root : f.menu "principale"
Button1 = c : window|icon : f.function "sposta-sotto"
Button2 = c : window|icon : f.iconify
Button3 = c : window|icon : f.function "sposta-sopra"
Button1 = : title : f.function "sposta-sopra"
Button2 = : title : f.raiselower
Button1 = : icon : f.function "sposta-icona"
Button2 = : icon : f.iconify
Button1 = : iconmgr : f.iconify
Button2 = : iconmgr : f.iconify
####################################
# Definizione dei menù; ad ogni menù e sottomenù viene attribuito
un nome e i
# colori che acquisiscono i nomi degli elementi e lo sfondo al passaggio del pun
# tatore; ad ogni elemento del menù viene attribuita una funzione che svolge
un
# determinato compito (per alcune funzioni non sarà necessaria una descrizione)
####################################
menu "principale" ("mediumblue" : "orange")
{
"MENU PRINCIPALE" f.title # indica il titolo del menu'
"" f.raise # esegue la funzione lasciando uno spazio vuoto nel menu
"TERMINALE" f.exec "exec xterm &" # esegue il programma
xterm
"Programmi" f.menu "Programmi" # esegue la funzione che apre
un
sottomenu'
"" f.nop # serve solo per lasciare uno spazio vuoto
"Riduci a icona" f.iconify
"Ridimensiona" f.resize
"Sposta sotto" f.lower
"Messa a fuoco" f.focus
"Fuori fuoco" f.unfocus
"Mostra riepilogo finestre" f.showiconmgr
"Nascondi riepilogo finestre" f.hideiconmgr
"Termina" f.destroy # termina l'applicazione
"Cancella" f.delete # chiude la finestra
"Riavvia" f.restart
"Esci" f.quit
}
menu "Programmi" ("mediumblue" : "pink")
{
"Mozilla" f.exec "exec mozilla &"
"Open Office" f.exec "exec ooffice &"
"Calcolatrice" f.exec "exec xcalc &"
"Grafica" f.menu "Grafica"
}
menu "Grafica" ("mediumblue" : "gold")
{
"Gimp" f.exec "exec gimp &"
"Bitmap" f.exec "exec bitmap &"
}
###########
# Fine - Buona configurazione!
|