Window managers -3- Fluxbox

A Fluxbox devo l’origine del mio interesse per i window manager: dopo un paio d’anni di “ambientamento” su Linux grazie a (K)Ubuntu, cominciai a giocherellare con altri ambienti grafici non usati nelle derivate ufficiali, primo fra tutti Fluxbox. In un panorama di altri progetti apparentemente abbandonati, probabilmente mi attirò la data di release abbastanza recente (ramo 1.3.*).

Fluxbox stesso (in breve: FB – da non confondere con quel sito dove si regala la propria privacy ad “amici” perfetti sconosciuti) è rimasto in stand by per circa tre anni (2008 – 2011) prima di rimettersi in moto e regalare recentemente ai suoi utilizzatori tre release in poco più di due mesi. Nel momento in cui scrivo la versione più recente (1.3.5 – 13/Feb/2013) non è ancora nei repository di Ubuntu Raring. Si può trovare invece nei backports di Debian stabile (wheezy) e in testing (jessie) / unstable (sid). A leggere gli annunci dei rilasci, comunque, dopo la 1.3.3 c’è stato per lo più qualche bugfix.

Come per Openbox (oggetto della precedente “puntata” sui window manager) anche la nascita di Fluxbox si deve ad un fork di Blackbox.


Installazione

fluxbox_installI pacchetti fluxbox ed xorg sono quanto basta per il sistema: pochissimi MB da scaricare e siamo già pronti a partire.

Il metapacchetto del WM richiama anche alcuni strumenti utili come feh (visualizzatore di immagini ed impostazione immagine di sfondo), fbsetbg (impostazione immagine di sfondo) e fbsetroot (impostazione colore di sfondo).

Non c’è molto altro, come da buona tradizione dei WM minimali.


Desktop

fluxbox_desktop

Desktop di Fluxbox – Clicca per vedere l’immagine a dimensione reale (1024 x 768)

Il benvenuto che ci riserva FB è, al solito, freddino: unico elemento presente la barra delle applicazioni in basso, che contiene anche (a partire da sinistra) selettore del desktop, orologio, selettore delle finestre e lista delle applicazioni in esecuzione. Tranquilli, è tutto modificabile, a partire da contenuto e dimensione di quest’unico  “segno di vita” del desktop.

Il menu delle applicazione “spunta” sotto il cursore del mouse premendo il tasto destro e contiene il sottomenu di configurazione, tramite il quale possiamo cominciare a lavorare sull’aspetto e sulle funzioni di FB.

L’opzione più rilevante, a mio parere, è quella relativa al tabbing delle finestre, ovvero il raggruppamento di più finestre in una sola, in modo da “fare ordine” sul desktop ed anche risparmiare un po’ di spostamenti del mouse. Le schede o “linguette” di ciascuna finestra possono essere integrate nella barra del titolo (nell’immagine sopra una finestra di terminale è stata raggruppata con la calcolatrice) oppure attaccate ad uno dei bordi della finestra. Oltre che su FB, ho trovato finora questa funzione solo su KDE e Compiz (via plugin).

Altra dotazione “di serie” di FB è il lanciatore di programmi fbrun (al centro) richiamato dalla scorciatoia “Alt + F2“.

Di seguito le informazioni di sintesi al momento dell’installazione:

  • RAM in uso [free -m]: 47 MB (incluso il terminale ~ 4 MB)
  • Spazio su disco totale [df -h]: 1.1 GB
  • Versione del pacchetto “fluxbox” [dpkg-query -W -f='${Version}\n' fluxbox]: 1.3.2-4
  • Kernel in uso [uname -a]: 3.5.0.25-generic

Configurazione

A differenza di Openbox che poggia su 4 soli file di configurazione, FB ne utilizza ben 8, posizionati in ~/.fluxbox, ciascuno dedicato ad un aspetto del sistema e dunque contenente un numero più limitato di opzioni. Ciò rende i file (a mio parere) un po’ più “maneggevoli” rispetto, ad esempio, al corposo rc.xml che in Openbox contiene gran parte delle impostazioni.

Nota: sticky_notes_128Attenzione ad alcuni strumenti grafici di configurazione, richiamati nella wiki ma totalmente obsoleti (fluxspace, fluxconf, fluxmenu). Bisogna rassegnarsi a modificare a mano le configurazioni di sistema: in questo ci aiuta il buon numero di HOW-TO presenti nella wiki, sia in inglese che in italiano.

[apps]

Definisce le caratteristiche delle finestre per specifiche applicazioni: posizione, dimensioni, presenza delle decorazioni, raggruppamento (tabbing) e layer. L’applicazione delle “regole” è determinata dalle proprietà delle finestre (nome, titolo, classe, ruolo) rilevabili tramite xprop.

Nel file di default c’è l’esempio di fbrun che è impostato per comparire sempre centrato e sopra le altre finestre. La flessibilità delle configurazioni e le possibilità sono notevoli: tabbing delle istanze di applicazioni specifiche, presenza delle decorazioni, desktop su cui aprire un programma, aggiunta alla lista di finestre, numero massimo di istanze a cui applicare una regola e molto altro.

I dettagli e numerosi esempi sono nel manuale di fluxbox-apps e nella pagina wiki dedicata al file apps, da cui riporto la sintassi da utilizzare:

[app] (app-name) {count - optional}
          [Property1]  {value1}
          [Property2]  {value2}
          ...
[end]

Alcune impostazioni possono essere applicate alle finestre già aperte (e riportate nel file) tramite la voce “Ricorda…” del window menu (ne parliamo dopo…).

[init]

Contiene le definizioni generali dei parametri per fluxbox e soprattutto il percorso degli ulteriori file di configurazione da richiamare (di default quelli in ~/.fluxbox). Questo file è probabilmente quello su cui si faranno meno modifiche dirette: la maggioranza dei parametri in esso contenuti sono modificabili dal sottomenu di configurazione del root menu, come mostrato nell’immagine iniziale.

Il contenuto del file init è ben documentato nella pagina wiki, utile per i pochi parametri non accessibili direttamente (per esempio la posizione dei bottoni sulla barra del titolo).

Se vi va di fare una cosa stupidamente nerd, eseguite questo comando in un terminale mentre giocherellate con la trasparenza della toolbar dal menu:

watch -t -n 1 'cat ~/.fluxbox/init | grep toolbar.alpha'

Così, giusto per dimostrare che io vado pure a guardare il capello…

[keys]

FB è molto focalizzato sull’utilizzo da tastiera, come il “cugino” Openbox, coerentemente con il proprio obiettivo di fornire un ambiente leggero e “produttivo”.

Il file keys contiene già molti default utili e sicuramente noti (come il classico ALT + F4) a chi è abituato ad usare anche qualche scorciatoia da tastiera. La scelta delle scorciatoie è molto soggettiva, soprattutto di quelle per l’avvio delle applicazioni più usate. Mi limito a suggerire, come ho fatto per Openbox, di aggiungere le combinazioni per mostrare il menu dei programmi (root menu) e per l’utile “Mostra Desktop”, ad esempio:

# Visualizza il root menu
Mod4 M :RootMenu
# Mostra desktop
Mod4 D :ShowDesktop

La pagina wiki dedicata contiene tutte le keywords usate nella sintassi per individuare azioni (alza, abbassa, ridimensiona, …), eventi (click sinistro, destro, …), posizioni sullo schermo (angoli, centro, bordi, …) ed elementi grafici (desktop, toolbar, decorazioni, bordi, …).

Peculiari di FB sono le possibilità di creare keychain (combinazioni di tasti per eseguire un’azione – sono esclusi il codice Konami e la fatality di Scorpion ;-))macrocmd (macro commands – scorciatoia per eseguire più comandi contemporaneamente) e togglecmd (toggle commands – scorciatoie per eseguire alternatamente due comandi).

I Consigli della Nonna Pinguina: nulla vieta di fare tutto a colpi di mouse. Tuttavia, per esperienza, imparare anche poche scorciatoie velocizza davvero le azioni ed evita inutili viaggi del puntatore alla ricerca di bottoncini. Un paio di combinazioni per lanciare magari il browser ed il file manager, un altro paio per chiudere un programma e minimizzare tutte le finestre: basta concentrarsi sulle azioni abituali per capire quanto sia comodo non dover staccare le mani dalla tastiera.

[menu]

Ogni elemento che compone una voce di menu è racchiuso da specifici caratteri, ad indicare la sua funzione. Un esempio tratto dal menu di default mostra come si possano suddividere a piacimento i menu in tanti sottomenu. Le icone associate alle voci sono supportate in tutti i formati gestiti dalle librerie xpm (formato di immagine omonima) e imlib2 (png, jpg ed altro), se FB è stato compilato con il supporto di tali librerie.

[submenu] (Monitoraggio) {}
[exec] (Alsamixergui) {/usr/bin/alsamixergui} </usr/share/pixmaps/alsamixergui.xpm>
[end]

Tra i tag disponibili mi sembra interessante [include], tramite il quale si possono “innestare” nel menu principale sottomenu creati in file separati, per comodità di gestione.

Tutto il resto è pagina wiki anche se, capito il principio e viste le voci già presenti, è abbastanza facile riorganizzare il menu predefinito a nostro gusto: magari cominciamo con l’aggiungere in cima alla lista le applicazioni più usate per non doverle andare a cercare nei gruppi.

[overlay]

Molto in breve: opzioni di stile che “scavalcano” le analoghe del tema scelto. Ad esempio: imporre un font per il titolo delle finestre indipendentemente da quello indicato nel tema, senza dunque essere costretti a modificare ciascun tema usato. Utile in qualche raro caso di cambio ossessivo-compulsivo del tema ogni cinque minuti. La pagina wiki lo sa ed infatti liquida rapidamente la faccenda.

[slitlist]

fluxbox_slitlistOrdine delle applicazioni agganciate alla slit (o dock che dir si voglia), indipendentemente dalla sequenza in cui vengono avviate nel file startup. Più facile di così…

Per confronto, in Openbox lo stesso effetto è solitamente ottenuto lanciando le applicazioni nell’ordine voluto, con una pausa (un’istruzione sleep) di qualche secondo tra ciascuno dei comandi.

Nell’esempio ho aggiunto alla slit un monitor di rete (wmnd) dopo il pager (fbpager): l’ordine è da sinistra a destra con slit orizzontale e dall’alto in basso con slit verticale.

[startup]

fluxbox_startupApplicazioni (fbpager, volumeicon, nm-applet, …) e comandi da lanciare all’avvio (fbsetbg ad esempio): non è altro che uno script bash, come il corrispondente in Openbox.

Interessanti nella pagina wiki gli accorgimenti necessari a lanciare le applicazioni dopo l’avvio del window manager, contrariamente al normale uso del file.

[windowmenu]

Click destro sulla barra del titolo ed ecco spuntare il window menu, contenente le azioni eseguibili sulla finestra attiva. L’ordine (e la presenza nel menu) di tali azioni è appunto determinata dal contenuto del file.

fluxbox_winmenu

Window menu (e tabbing estremo!)

Similmente al root menu, il window menu si può strutturare secondo le proprie necessità, aggiungendo lanciatori di programmi, sottomenu ed etichette per ciascuna voce presente.

[begin]
  [exec] (terminal) {xterm}
  [maximize] (maximize)
  [iconify] (minimize)
  [submenu] (advanced)
    [layer] (layer)
    [extramenus] (remember)
    [sendto] (send to)
  [end]
  [separator]
  [close] (close)
[end]

Come ho accennato prima, la voce “Ricorda…” permette di aggiungere (e rimuovere) in modo semplice le caratteristiche delle finestre aperte al file apps, senza modificarlo direttamente. Le finestre sono individuate per nome e classe:

[app] (name=pcmanfm) (class=Pcmanfm)
  [Position]    (UPPERLEFT)     {235 246}
[end]

Quando si fanno “dimenticare” le proprietà di un programma, la relativa sezione viene svuotata senza rimuoverla completamente (restano la riga [app]… e la [end] finale) per riutilizzarla in caso si vogliano nuovamente “ricordare” proprietà della stessa applicazione. Pagina wiki e… sipario!


Feature interessanti

fluxbox_trasparenza

Trasparenze delle decorazioni

Trasparenze: Fluxbox fornisce già un supporto alle trasparenze, anche se l’effetto è limitato alle sole decorazioni delle finestre ed ai menu, come mostrato dall’immagine qui di fianco.

Potrebbe comunque bastare: chi sceglie un WM come questo in genere non dà molta importanza ai mirabolanti effetti di compositing vero à la KDE o Compiz (buonanima…). E magari, aggiungo, questi piccoli abbellimenti potrebbero far desistere molti dall’usare compositor esterni come Compton (o peggio il più vecchio xcompmgr) che ogni tanto fanno le bizze.

Purtroppo io sono totalmente dipendente dalle “finestre tremolanti”, per cui mi risulta difficile rinunciare a qualche effetto grafico😉.

fluxbox_toolbarToolbar: la toolbar di FB è abbastanza funzionale: c’è perfino il “system tray” per le applicazioni come volumeicon (nell’immagine) o NetworkManager. Si potrebbero così evitare i soliti tint2, pypanel e compagnia (e risparmiare qualche MB di RAM) a meno di non volere toolbar multiple o icone di lanciatori.


Distribuzioni e Ulteriori risorse di informazione

Ci sono ben poche distribuzioni basate su Fluxbox, al quale viene normalmente preferito Openbox quando si vuol creare un sistema a basso consumo. Perfino Distrowatch non elenca distribuzioni con questo WM. È davvero un peccato che anche progetti come Fluxbuntu e Mint Fluxbox siano stati abbandonati: avevo provato quest’ultima, basata su Ubuntu 10.04, con vera soddisfazione.

Forse l’unica distro in questo desolato scenario è la ben curata Antix, basata su Debian Testing, che arriva corredata anche di altri WM. Per chi vuole un sistema già pronto con Fluxbox, completo e solido, questa è un’ottima scelta. L’ho provata per qualche tempo ricavandone un’impressione più che positiva. In aggiunta ai software disponibili nei repository ufficiali Debian, gli sviluppatori di Antix integrano alcuni loro componenti, disponibili nei repository della distribuzione stessa.


Conclusioni

Ritengo Fluxbox un ottimo WM, leggero, solido ed esteticamente accattivante (con relativamente pochi sforzi). Un ulteriore punto a suo favore è il fatto che il suo sviluppo non si è fermato (a differenza di Openbox) anche se procede lentamente.

Secondo me è da preferire ad Openbox per diversi motivi: ha un consumo di risorse pressoché identico, integra nativamente qualche funzionalità in più (basta pensare alla toolbar, che alla fine serve sempre!) e fornisce un ambiente che, anche senza nessuna modifica, è più “amichevole” anche per utenti abituati ad interfacce più complete e tradizionali.


Prossima puntata della saga dei window manager? Non lo so ancora, ma bisognerà aspettare un po’ di tempo, presumo…🙂

Informazioni su Man from Mars

https://extendedreality.wordpress.com/

  1. Scugnizzo

    Azz ti stai dando da fare eh!?!?🙂
    Vediamo se qui funzionano i commenti.😉

    Mi piace

  2. Pingback: Window managers -1- Introduzione | Extended Reality

  3. Pingback: Window managers -3- Fluxbox (ENG) | Extended Reality

Dimmi che ne pensi o fai "Ciao ciao!" con la manina // Share your thoughts or just say "Hello!"

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: