Window managers -2- Openbox

Dopo le necessarie premesse del post introduttivo, inizio ora ad esaminare uno per uno i window manager elencati partendo da un componente della famiglia “*box”: Openbox.

Openbox (home page) deriva dal window manager Blackbox, non citato nell’introduzione in quanto lo sviluppo è fermo al 2005 (rel. 0.70.1). A partire dalla versione 3 il codice è stato riscritto interamente, distaccandosi del tutto da Blackbox.

A dispetto dello sviluppo lento, Openbox (di seguito “OB”) è molto apprezzato ed utilizzato come base per tante distribuzioni anche di recente sviluppo. Ad esempio Lubuntu, la variante di Ubuntu con ambiente LXDE, è basata su Openbox con l’aggiunta dei tanti “accessori”, sviluppati dal team di LXDE, che le forniscono le funzionalità non native di questo WM.

OB si è guadagnato una base di utenti ampia ed un discreto numero di distribuzioni (la pagina linkata è un po’ datata ma rende l’idea) che ne hanno fatto il loro ambiente principale. Stabilità, leggerezza, facilità di configurazione, conformità agli standard e ampio parcheggio all’ingresso ne fanno un ambiente ideale per un desktop funzionale adattabile a tutte le esigenze.


Installazione

openbox_installAndiamo per ordine: vediamo prima cosa ci dà l’installazione dai repo di Ubuntu: l’aggiunta al sistema base (minimal install di Ubuntu 12.10 Quantal) in termini di spazio su disco è davvero modesta, come ci si poteva aspettare, con i due metapacchetti responsabili più o meno nella stessa misura del totale. Al termine dell’installazione si può immediatamente avviare la sessione grafica con startx al prompt.

sticky_notes_128Nota: l’avvio automatico della sessione grafica con Openbox si può ottenere aggiungendo un login manager (che ho scelto qui di non includere) o aggiungendo lo stesso comando startx alla fine del file ~/.profile. Un login manager molto semplice e leggero è Slim (home page).

Salvo eventuali differenza di disponibilità o nome dei pacchetti nei repository delle diverse distribuzioni, le indicazioni che darò di seguito sono valide per qualunque distribuzione equipaggiata con Openbox.

Fonte icona: http://findicons.com/pack/1035/human_o2


Desktop

openbox_desktop

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

La prima impressione non è proprio incoraggiante: solo il cursore sullo sfondo grigio di un desktop completamente vuoto. Ad un click del tasto destro compare il menu di sistema, piuttosto scarno. Le applicazioni elencate sono solo il terminale ed il gestore delle configurazioni Obconf  (c’è la voce per avviare il browser predefinito ma non c’è nessun browser installato!).

Il sottomenu “Desktop” elenca le finestre aperte su ciascuno spazio di lavoro: in assenza di barre degli strumenti (per ora) questo menu è l’unico modo per spostarsi tra le finestre usando il mouse. Questo o il buon vecchio Alt-Tab. Da qui inoltre si possono aggiungere e rimuovere desktop virtuali senza intervenire direttamente sui file di configurazione.

Partiamo proprio dal terminale per ottenere un po’ di informazioni (in parentesi [ ] il comando usato):

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

In RAM Openbox è un peso piuma: per confronto la minimal pura, solo a linea di comando, occupa circa 22 MB. Questo dato è comprensibile per un ambiente così “spoglio” e sembra un ulteriore invito ad “agghindare” il sistema per renderlo più comodo da usare (e più bello da vedere!). La galleria di screenshot sulla pagina del progetto mostra una notevole varietà di personalizzazioni.


Configurazione

Una volta per tutte: come per tutti i WM essenziali c’è bisogno di molto RTFM 😉 e di un buono spirito da “esploratori” per mettere a punto OB. Niente di tragico, ma bisogna impegnarsi. Il primo posto in cui guardare è la sezione della documentazione di Openbox, che fornisce un quadro completo sulle sue funzionalità e le voci ad esse relative nei file di configurazione. La wiki è completa ma mi dà l’idea di non essere stata ben manutenuta negli ultimi rilasci. Molte informazioni si riferiscono alla release 3.4 ed alcune pagine non sono facilissime da trovare; comunque c’è di tutto, basta un po’ di pazienza!

Bene, innanzitutto armiamoci di terminale (questo passa il convento, per ora…) e copiamo i file di configurazione di default nella cartella di OB all’interno della nostra home (per avere impostazioni personalizzate per il nostro utente):

~$ cp /etc/xdg/openbox/* ~/.config/openbox

I file necessari a “trasformare” il sistema sono solo quattro:

  • rc.xml (impostazioni grafiche, scorciatoie di tastiera e mouse, etc.)
  • menu.xml (struttura e voci del menu di sistema)
  • autostart (avvio automatico delle applicazioni al boot)
  • environment (variabili d’ambiente: lingua, percorsi predefiniti, etc.)

È consigliabile modificare i file copiati nella propria cartella di configurazione piuttosto che gli originali (che impongono configurazioni a tutto il sistema) in modo da avere sempre un riferimento sicuro e funzionante, che non si sa mai ;-). E un backup ogni tanto, mentre traffichiamo con le impostazioni…

[rc.xml]

Partiamo da rc.xml che contiene la maggior parte delle impostazioni d’ambiente. Questo file è diviso essenzialmente in quattro blocchi, su ciascuno dei quali è possibile intervenire con un programma GUI (oltre che, ovviamente, con modifiche “a manina”):

  1. aspetti grafici e gestione finestre: tema grafico, posizione del dock, numero e nome dei desktop virtuali ed ancora altre opzioni si controllano facilmente tramite ObConf (vedi immagine sopra) già parte del metapacchetto openbox;
  2. scorciatoie di tastiera e mouse (keybindings e mousebindings, sezioni <keyboard> e <mouse>): Obkeys (home page) gestisce solo le scorciatoie da tastiera. Per le azioni del mouse ci si può riferire alla sezione “Bindings” nella wiki;
  3. comportamento del menu (sezione <menu>): è possibile indicare qui il file del menu di sistema (menu.xml) ed eventuali altri file che ne costituiranno i sottomenu. Si possono inoltre regolare alcune proprietà di visualizzazione (ritardo di apertura e chiusura delle voci, posizione dei sottomenu rispetto alle voci principali, etc.). ObMenu (vedi sotto) si occupa di organizzare la struttura dei file di menu richiamati;
  4. impostazioni specifiche per applicazione (sezione <applications>): ObApps (home page) ci aiuta ad associare configurazioni particolari alle finestre di specifiche applicazioni (esempio: terminale sempre in una finestra senza decorazioni o massimizzato).

tipSuggerimento: è comodo aggiungere alle scorciatoie di tastiera una combinazione per visualizzare il menu. La scorciatoia di default del click destro sul desktop potrebbe costringerci a minimizzare una finestra a pieno schermo (ad esempio un browser) per ricavare una zona “libera” dove cliccare. Tramite un’opportuna scorciatoia (ad esempio ‘tasto Windows’ + ‘m’) ci evitiamo questo piccolo fastidio. Il codice da aggiungere (e personalizzare) alla sezione <keyboard> di rc.xml è il seguente:

<keybind key="W-m">
  <action name="ShowMenu">
    <menu>root-menu</menu>
  </action>
</keybind>

Il file rc.xml è ben corredato di commenti a ciascuna voce o sezione, cosa che semplifica molto la vita a chi volesse guardarci dentro, e la relativa pagina wiki è altrettanto esaustiva: buona lettura :-).

Fonte icona: http://findicons.com/pack/1035/human_o2

[menu.xml]

Se Obconf si occupa dell'”apparenza”, Obmenu (pkg: obmenu) si occupa invece della “sostanza” ovvero della gestione delle voci del menu (contenute in menu.xml). L’immagine sotto mostra la struttura del menu alla quale ho aggiunto una voce per lanciare l’editor di testi Leafpad (pkg: leafpad – consigliato per la sua semplicità e leggerezza).

obmenu

Obmenu – voce di menu aggiunta

Trovo particolarmente comodo ed utile Obmenu dato che permette di visualizzare la struttura di menu e sottomenu, cosa che non appare evidente se si modificano manualmente i file.

Obmenu non può tuttavia associare l’icona del programma alla corrispondente voce del menu. Per questo bisogna agire manualmente sulle voci contenute nel file modificandole come nell’esempio qui sotto:

<item label="ObConf" icon="/usr/share/pixmaps/obconf.png">
  <action name="Execute">
    <execute>obconf</execute>
  </action>
</item>

icone_menuIn pratica si aggiunge accanto al “label” (la descrizione della voce di menu) la definizione “icon” con l’indicazione del percorso completo dell’icona da associare. Le icone possono essere sia .png che .xpm (ho sperimentato questi due formati, ma potrebbero esserne supportati altri – gli .svg non lo sono) di qualunque dimensione: nel menu saranno comunque scalate a 16×16. La presenza di icone nel menu è una funzionalità nuova, introdotta a partire dalla release 3.5.0 (changelog).

Qui ne ho messe giusto un paio perché era tardi e avevo sonno…

Fonte dell’informazione la ricchissima e sempre utile wiki di Arch, grazie ad un utente con il mio stesso avatar: una specie di “epic win”! 😎

Nel frattempo, proprio grazie ad ObMenu, ho aggiunto qualche altra voce al menu ed ho cominciato a strutturarlo in sezioni.

Questo Openbox comincia davvero a piacermi. 😆

[autostart]

Finalmente un file semplice semplice: ~/.config/openbox/autostart contiene una lista di comandi da eseguire all’avvio, uno per riga. Niente formati, tag o sintassi particolari. Tramite questo file tipicamente avvieremo un pannello/taskbar (per esempio tint2 – pkg: tint2home page), le applicazioni agganciate al dock (ne parliamo tra poco…) ed imposteremo un’immagine di sfondo tramite feh (pkg: feh) o programmi simili, come si vede dall’esempio riportato sotto (dockapps wmwork, wmnet e wmweather dai repository, qui per maggiori informazioni).

feh --bg-scale ~/wallpaper.jpg
wmwork &
wmnet -w --txcolor=RED --rxcolor=BLUE --label=Rete -d 200000 &
wmweather --station=LIRN -m --proxy=my.proxy.com:8080 -g &
tint2 &

In genere le applicazioni agganciabili al dock hanno un’opzione specifica per questo comportamento (di solito “-w“: windowed) senza la quale comparirebbero in una normale finestra.

[environment]

Nel file ~/.config/openbox/environment trovano posto le definizioni di tutte le variabili di sistema che vogliamo assegnare all’avvio. Innanzitutto la lingua in uso (LANG=it_IT.UTF8), eventuali integrazione del PATH. In generale l’esportazione di una variabile segue la sintassi: export Nome_Variabile=Valore. Anche la pagina wiki non ha molto altro da dire in proposito…

Feature interessanti

openbox_dock_hor

Un dock D.O.C.!

Il dock (wiki OB) può diventare l’equivalente del cosiddetto “vassoio di sistema” (system tray) in assenza di un pannello. Nel dock possono trovare posto molti tipi di applicazioni (informative come meteo, informazioni di sistema, etc. o un pager per i desktop) che integrano alcune funzionalità di cui OB è sprovvisto nativamente. Il dock può essere posizionato su tutti i lati e gli angoli dello schermo ma sarà visibile solo quando gli si agganceranno delle applicazioni.

Una funzionalità particolarmente versatile è il “pipe menu“, caratteristico di OB. Si tratta in pratica di menu dinamici, ovvero generati ogni volta alla loro apertura, tramite i quali si può mettere a portata di clic qualunque funzione si riesca a tradurre in uno script (bash, PERL, Python, etc.). L’output dello script, opportunamente inserito nella sintassi delle voci di menu, ne crea il contenuto.

Pipemenu

Pipemenu

Le possibilità sono praticamente infinite: si può andare dalle semplici informazioni sul sistema (RAM, carico CPU, etc.) al controllo di altre applicazioni (per esempio la playlist del lettore multimediale). Chi sa, fa, chi non sa, cerca su Google: la lista di pipe menu riportati dagli utenti è lunghissima e varia. Potete trovarne a decine qui o sulla wiki, tanto per cominciare. Oppure potete provare a farvene di vostri, come ho vergognosamente fatto io:

freemem=$(free -m | grep cache: | cut -c27-29)
upt=$(uptime | awk -F\  '{ print $3 $4 }')
io=$(whoami)
echo "<openbox_pipe_menu>"
echo "<item label=\"Utente: $io\"/>"
echo "<item label=\"collegato da $upt\"/>"
echo "<item label=\"Memoria in uso:$freemem MB\"/>"
echo "</openbox_pipe_menu>"

La struttura essenzialmente è definita dalle righe evidenziate (tag di inizio e fine menu e righe di contenuto).


Distribuzioni e Ulteriori risorse di informazione

Bene, pare proprio che sia finita qui: adesso siete prontissimi a vestire il vostro pinguino con un Openbox perfettamente su misura. Questo WM è già disponibile nei repository di qualunque distribuzione (sennò ci toccava compilarlo da sorgente!). Se poi siete pigri, ecco una lista (l’avevo promesso) di alcune distribuzioni già pronte con OB (oltre a quelle già richiamate nella pagina linkata all’inizio):

  • Crunchbang (Debian): buona base di utenti e wiki molto ricca di spunti;
  • Archbang (Arch): gli utenti Arch sembrano gradire molto Openbox, la wiki di Archbang (per non parlare di quella di Arch) sono una miniera di informazioni;
  • Lubuntu (Ubuntu – LXDE): pronta, completa, leggera, Ubuntu, l’ultima nata delle derivate ufficiali ha riscosso un buon successo tra gli utenti;
  • PCLinuxOS (Mandriva – LXDE): non conosco bene la distribuzione originaria (che è comunque tra le “storiche” della famiglia, tra vari cambi di nome) ma ho visto che anche qui c’è una buona base di utenti, sebbene la maggior parte usi la versione “ammiraglia” con KDE;
  • Semplice Linux (Debian unstable) e SalentOS (Ubuntu): mi fa particolarmente piacere citarle perché sono italiane! Si avvantaggiano ovviamente della vasta comunità Debian e Ubuntu, dunque non c’è da cercare troppo se c’è bisogno d’aiuto.

Potete scoprirne molte altre tramite Distrowatch (sì, questo link è già la ricerca bella e pronta,PIGRONI!).

Infine, se non avete già letto abbastanza:

  • Community portal, che riporta i collegamenti alle pagine di software  sviluppati per OB;
  • la guida ad OB sul blog di Urukrama (leggermente datata, ma nel blog ci sono informazioni aggiornate).

Penso (e spero per voi!) di non avere altro da dire per ora su Openbox: di certo usarlo mi ha dato un’ottima impressione che lo mette in ottima posizione nella mia lista di alternative al mio caro KDE. Vi tengo informati in caso di aggiornamenti o nuove scoperte, sempre su queste pagine.

A presto per i prossimi sudatissimi, documentatissimi ed interminabili post sui window manager.

Informazioni su Man from Mars

https://extendedreality.wordpress.com/

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

  2. Pingback: Window managers -2- Openbox (ENG) | Extended Reality

  3. Pingback: Window managers -3- Fluxbox | Extended Reality

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

  5. Pingback: Linux parla italiano: recensione di Semplice Linux 7.0 ‘Comfortably Numb’ | 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 hanno fatto clic su Mi Piace per questo: