Fluxbox è un window manager per X della famiglia *box (black-box e fratellini, tutti nipotini del 'modello AfterStep'); all'oggi nel suo genere è sicuramente quello più completo se usato da solo, OpenBox trova la sua forza nell'integrazione in LXDE, Enlightenment è un quasi-DE completo.
Primo appunto che non si dice mai quindi forse qualcuno non lo sa...
Che differenza c'è tra un window-manager e un desktop-environment (...un po' più tecnico di "uno fa solo le finestre e l'altro fa tutto lui")?
Tutto quanto è un file, da un'immagine a una directory a un eseguibile, ogni file viene letto da una apposita applicazione, come un formato .jpg viene letto da un visualizzatore allo stesso modo un 'formato directory' viene letto da un file-manager.
L'interfaccia grafica principale è il display (cioè lo schermo che avete davanti); un window-manager ha il compito di visualizzare sul display le varie applicazioni in modo che siano gestibili dall'utente in maniera interattiva (spostate, allargate, chiuse ecc.).
Tra le varie applicazioni directory ne esiste una particolare (`inventata` da Apple) che è il desktop, la directory desktop nella vostra /home così come la cartella Desktop di Windows; un desktop-environment è in grado di trasporre quella directory sul display in maniera che esista una sorta di file-manager sempre aperto da cui lavorare; quando infatti cliccate con il tasto destro sul desktop e create un file (indipendentemente dal SO) state modificando quella directory senza che sia eseguita da un file-manager, allo stesso modo modificando la directory desktop da file-manager risulta modificata la rappresentazione a schermo (quindi sono necessarie apposite librerie tipo Gtk/Qt che gestiscano in maniera comune l'interoperatività).
Fluxbox è disponibile per quasi tutte le distribuzioni, nel caso di debian-based installabile con:
CODICE
# apt-get install fluxbox
al successivo login ci si ritrova catapultati in un orribile interfaccia grigia e triste (mai capito perché devono farlo così brutto) dove si possono scoprire le funzioni di base:
- tasto_dx sul desktop --> menu delle applicazioni
- tasto_dx sulla barra inferiore --> impostazioni della barra (da ora in poi 'toolbar') e dell'orologio
- tasto_dx sul bordo superiore di una qualunque finestra aperta --> impostazioni della finestra
Se avete esperienze con altri *box vi renderete subito conto che anche la modifica via GUI è decisamente più avanzata.
Per avere una base su cui discutere vi posto il mio screen...
A partire da Lenny (vado a memoria) l'installazione dovrebbe creare un directory ~/.fluxbox che sarà quella letta al login. Ogni modifica manuale di configurazione viene fatta in quella directory.
Le tre directory /backgrounds, /pixmaps e /styles servono a gestire i temi grafici e le vedremo in seguito, molto più importanti i file di configurazione veri e propri:
> apps
questo file imposta le proprietà delle finestre delle singole applicazioni. In linea di principio non è necessario modificarlo a manina perché andando nelle impostazioni della finestra e selezionando 'Ricorda...' > dimensioni/posizione/trasparenza/ecc. + 'Salva alla chisura' il file viene aggiornato automaticamente.
Giusto per la cronaca vi mostro l'impostazione di Synaptic avviato a tutto schermo e di Geany in finestra piccola:
CODICE
[app] (name=synaptic) (class=Synaptic)
[Dimensions] {100% 100%}
[Position] (UPPERLEFT) {0% 0%}
[Close] {yes}
[end]
[app] (name=geany) (class=Geany)
[Dimensions] {43% 53%}
[Position] (UPPERLEFT) {18% 13%}
[Close] {yes}
[end]
non credo occorra dare spiegazioni se non per quel '[Close] {yes}' che riguarda l'impostazione del 'Livello' della finestra (diciamo da sopra tutte a sotto tutte), opzioni non molto usate ma che invece consiglio vivamente di scoprire.
> init
questo file imposta la struttura della visulizzazione generale di sistema, tutte le opzioni le potete trovare nella sezione RESOURCES di 'man fluxbox'.
Come abbiamo visto il tasto_dx sulla toolbar ci permette di impostare anche per via grafica parecchie proprietà (posizione, visualizzazione, dimensione, tarsparenza ecc.); una nota particolare va ad esempio alla possibilità di rendere visibile oppure no la toolbar che sembra assurda... la possibilità di una toolbar non visibile vi permette di abbinare a Fluxbox altri pannelli (ie. fbpanel, perlpanel ecc.) e avere un'interfaccia simile ad altri wm/de 'classici' con barra e menu programmi.
Rinviando alle man-pages alcune opzioni sono però da segnalare:
CODICE
session.screen0.toolbar.tools: prevworkspace, workspacename, nextworkspace, iconbar, systemtray, clock
questa che ho scritto è la struttura tipica di una toolbar che vedrete più o meno in ogni screen, compreso il mio, ed è diversa da quella di default; la struttura indica l'ordine di visualizzazione degli elementi della toolbar, nel caso: freccia per il desktop precedente, nome del desktop attuale, freccia per il desktop successivo, barra delle finestre aperte, systray delle apps, orologio.
Altra cosa importante è la definizione nel numero dei desktop (potete modificarli enche con tasto_centrale sul desktop), nel mio caso 6 con nome da 'one' a 'six':
CODICE
session.screen0.workspaces: 6
session.screen0.workspaceNames: one,two,three,four,five,six,
Ultima cosa, sicuramente la meno utile, è la gestione delle trasparenze di sistema (la trasparenza può essere modificata anche per ogni singola finestra, poi salvata al chiusura) con valori da 0 a 255; sono possibili diverse combinazioni tra menu, toolbar, finestre ecc. nel mio caso ho impostato tutto uguale a 187.
Nell'ultima riga trovate l'impostazione della trasparenza forzata, è una cosa che mi porto dietro negli anni a copia/incolla ma è utile solo in macchine oggi superate.
CODICE
session.screen0.menu.alpha: 187
session.screen0.toolbar.alpha: 187
session.screen0.window.focus.alpha: 187
session.screen0.window.unfocus.alpha: 187
session.screen0.slit.alpha: 187
session.forcePseudoTransparency: true
Altre modifiche di solito non sono necessarie, per tutto il resto rimando al man.
> keys
questo file è uno dei più importanti di Fluxbox, va necessariamente configurato a mano, è quello che garantisce la maggior personalizzazione d'uso.
Il file imposta una combinazione di hotkey per fare le azioni più svariate, nelle prime righe di default trovate infatti le impostazioni di combianzione mouse_su_desktop dette fino ad ora:
CODICE
# click on the desktop to get menus
OnDesktop Mouse1 :HideMenus
OnDesktop Mouse2 :WorkspaceMenu
OnDesktop Mouse3 :RootMenu
I tasti hanno i nomi tipici di X, non li scrivo tutti per brevità, più o meno quelli che servono sono:
CODICE
Mouse1 --> tasto sinistro
Mouse2 --> tasto centrale (o tutti e due sui laptop)
Mouse3 --> tasto destro
Mod1 --> alt
Mod4 --> ctrl
per la totalità dele opzioni si rinvia al solito manuale, due cose però sono importanti:
- il tabbing:
CODICE
# middle click a window's titlebar and drag to attach windows
OnTitlebar Mouse2 :StartTabbing
OnTitlebar Double Mouse2 :ActivateTab
il tabbing è la possibilità di inserire una finestra come tab dentro altre finestre, nel mio desktop di esempio infatti potete vedere che nella stessa finestra ci sono Calc (visualizzato), VLC e PcmanFM. Di default il tabbing è attivato con il tasto centrale sulla barra superiore della finestra, il doppio click sul tab attiva la sub-window
- la proprietà :Exec
questa funzione ci permette di assegnare un qualunque comando alla combinazione di tasti, nel mio caso
CODICE
Mod1 F1 :Exec x-terminal-emulator
Mod1 F2 :RootMenu
Mod1 F3 :Exec /usr/bin/urxvt -geometry 20x24 -rv -tr +sb -sh 30 -fn "xft:Liberation Mono:pixelsize=9" -T "Mixer" -e /usr/bin/alsamixer -D hw:1
con alt+F2 apro il menu, importantissimo per avere il menu anche quando il desktop è coperto da altre applicazioni; alt+F3 (la finestra di alsamixer dello screen) mi permette il controllo del volume senza caricare applet.
> menu
è il file del menu di Fluxbox che alla prima installazione assume questa forma:
CODICE
[begin] (fluxbox)
[include] (/etc/X11/fluxbox/fluxbox-menu)
[end]
di prassi si usa copiare il file da /etc (salvato come 'menu') per eventuali modifiche, da tenere conto che il file di sistema si aggiorna in caso di aggiunta/rimozione programmi mentre quello in ~/.fluxbox va modificato manualmente.
La struttura di un menu è la seguente:
CODICE
[begin] (Fluxbox)
[submenu] (Submenu 1) {}
[submenu] (Submenu 2) {}
[exec] (Applicazione (occhio a eventuali parentesi --> \)) {comando -b -l abla} <icona.img>
[end]
[end]
[end]
giusto come esempio riporto il mio submenu 'Grafica' visualizzato nello screen:
CODICE
[submenu] (Grafica) {}
[exec] (LibreOffice Draw) {/usr/bin/libreoffice --draw} </usr/share/icons/hicolor/32x32/apps/libreoffice-draw.xpm>
[exec] (The GIMP) {/usr/bin/gimp} </usr/share/pixmaps/gimp.xpm>
[exec] (X Window Snapshot) {xwd | xwud} <>
[end]
non credo occorra altro...
> startup
il menu di avvio di Fluxbox perfettamente analogo a qualunque .xinitrc, nel mio caso:
CODICE
#!/bin/sh
#
# fluxbox startup-script:
#
# Lines starting with a '#' are ignored.
# Change your keymap:
xmodmap "/home/dante/.Xmodmap"
fbsetbg -l
....
/usr/bin/nm-applet --sm-disable &
/usr/bin/xscreensaver -nosplash &
/usr/bin/conky &
/usr/bin/x-terminal-emulator -T "Screen" -e /usr/bin/screen &
# And last but not least we start fluxbox.
# Because it is the last app you have to run it with ''exec'' before it.
exec fluxbox
qui è da notare la gestione dello sfondo: fluxbox usa un proprio script 'fbsetbg' per modificare lo sfondo del desktop, quindi inserendo all'avvio fbsetbg decidete la vostra immagine.
Per facilitarvi la vita vi passo uno scriptino che usa l'opzione '-l' (carica l'ultima immagine salvata in ~/.fluxbox/lastwallpaper) e richiede Zenity:
CODICE
#!/bin/bash
FLUX_DIR="$HOME/.fluxbox"
IMG_CHOSEN=$(zenity --title="Change FB Background" --file-selection) || exit 0
fbsetbg -f $IMG_CHOSEN
echo -e "\$full \$full|$IMG_CHOSEN||:0.0" > "$FLUX_DIR/lastwallpaper"
exit 0
Conclusa qui la parte sui file di configurazione ci resta il discorso legato ai temi per Fluxbox.
Su questo argomento le mie pessime competenze da grafico sinceramente non mi permettono di fare una grande analisi :O
Innanzitutto per i pezzenti come me c'è la fortuna di trovare temi un po' ovunque; per chi volesse specializzarsi linko la guida di ArchLinux:
https://wiki.archlinux.org/index.php/Fluxb..._%28Italiano%29I temi sono installati in in due modalità:
- si può inserire una directory 'miotema' dentro ~/.fluxbox/styles, in questa directory si inserisce un file miotema.cfg e una directory 'pixmaps' con le icone; nella sezione 'styles' del menu di Fluxbox apparirà il tema 'miotema'
- si può inserire direttamente 'miotema.cfg' nella directory 'styles' con eventuali icone dentro ~/.fluxbox/pixmaps
Una cosa non così immediata da capire è la gestione dei colori; prendiamo ad esempio una forma del genere:
CODICE
toolbar: Sunken Gradient Vertical Bevel1
toolbar.color: #242424
toolbar.colorTo: #fbeeb1
flat, raised, sunken --> un aspetto piatto, in rilievo, affondato dell'elemento
solid, gradient --> un colore unico oppure una sfumatura (ie 'flat solid' indica un colore semplice unico)
horizontal, vertical, diagonal, crossdiagonal, pipecross, elliptic, rectangle, pyramid --> se è impostato gradient, la direzione che deve prendere la sfumatura tra i due colori
bevel1, bevel2 --> l'ombreggiatura 'in giù' o 'in su'... non so nemmeno come spiegarlo, se vi va provate :O