Dopo anni, stanco del mio ambiente desktop nativo: fluxbox, ho deciso di sperimentare per curiosità un nuovo wm di X. La prima scelta è ricaduta su openbox. Scelta dettata anche dal fatto che mi sono accorto della quasi moda che si stava sviluppando attorno a questo wm che continua ad essere tutt’ora poco conosciuto in dettaglio.

Openbox è un wm davvero ben fatto, con un ampia possibilità di personalizzazione. L’interfaccia nativa è decisamente minimale, con mia grande sorpresa; ancora più minimale di fluxbox (cosa che non mi dispiace affatto).

NB: Openbox si presenta senza una dockbar e traybar (per capirci quella barra che in fluxbox al primo avvio è posta in basso al centro, __ che implementa: “desktop in uso, dock,tray icons e orologio”). L’utilizzo e/o la scelta di un pannello è strettamente personale. Esistono una miriade di soluzioni al momento. Più avanti verranno elencate alcune delle soluzioni che reputo valide per carattersistiche e personalizzazione.

Chiaramente come tutte le cose ci sono dei pro e dei contro. Tanto per cominciare Openbox è pensato in .xml (linguaggio che non amo particolarmente). Detto questo, vediamo in dettaglio. L’installazione non prevede particolari attenzioni oltre ai soliti:

~$ ./configure NB: configure che prevede opzioni aggiuntive, vedi ./configure --help ~$ make ~$ su - Password: ~# make install

E’ consigliata l’installazione di obconf che facilità l’utente nella configurazione delle parti principali del wm oltre che del focus,delle finestre, dei temi e della dockbar.

NB: Come sempre mi sento di consigliare la compilazione manuale dei pacchetti. In ogni caso  sono disponibili gli Slackbuilds e/o i pacchetti precompilati per Arch.

Per il primo caso non credo sia necessaria una spiegazione; idem per l’utilizzo degli slackbuilds. Nel caso siate archmuniti:

~# pacman -S openbox obconf

Per eventuali temi aggiuntivi

~# pacman -S openbox-themes

Installato, provvederemo a modificare il nostro ~/.xinitrc nel caso di slackware attraverso il solito xwmconfig, oppure come da esempio:

~$ vi ~/.xinitrc
exec openbox-session

NB: Se in slackware non si fosse creato il link simbolico a openbox.init richiamato da xwmconfig (normalmente non autogenerato in fase di compilazione manuale di un de e/o wm) si modificherà a mano .xinitrc come da esempio precedente oppure bisognerà creare il file di init manualmente (per file di init intendiamo la scelta di menù richiamata da xwmconfig; in slackware i vari init risiedono nella directory /etc/X11/xinit). Per dubbi consultare i post realtivi all’analogo problema su fluxbox dopo la compilazione manuale. L’articolo è presente nel blog. Se ci fossero particolari dubbi e incertezze sono ovviamente sempre disponibile a rispondere ad una richiesta di aiuto tramite commento pubblico :> .

BASE:

NB: Prima di lanciare openbox è bene chiarire che la directory di riferimento di openbox è ~/.config/openbox. All’interno della directory dovranno essere presenti 2 file necessari al corretto funzionamento del wm + 1 script bash, che sono rispettivamente:

autostart.sh > contenente le direttive dei programmi da runnare all'avvio di openbox
menu.xml > menu classico nativo
rc.xml > file di configurazione: generale/settaggi Keys&Mouse/proprietà applicazioni - modificabile in parte anche attraverso l'uso di obconf

NB: Potrebbe capitare che la directory di riferimento generale non sia stata autocreata in fase compilatoria, in tal caso:

$ mkdir -p ~/.config/openbox/

Se al primo avvio del wm non siano stati autogenerati i 2 file principali e/o manca uno di essi è sufficiente copiare quello di sistema presente nella directory /etc/xdg/openbox/ come da esempio:

$ cp /etc/xdg/openbox/rc.xml ~/.config/openbox/rc.xml
$ cp /etc/xdg/openbox/menu.xml ~/.config/openbox/menu.xml

NBautostart.sh è un banale script.sh che racchiude gli applicativi da runnare all’avvio di openbox, analogalmente a ciò che succedeva con il file ~/.fluxbox/startup.

Potreste infatti scegliere di utilizzare lo stesso file per dire ad openbox quali applicativi runnare al suo avvio come da esempio:

~$ cp ~/.fluxbox/startup ~/.config/openbox/autostart.sh
o anche tramite link simbolico:

~$ ln -s ~/.fluxbox/startup ~/.config/openbox/autostart.sh
Lo script in ogni caso sarà nello standard classico degli script bash:

#!/bin/sh
#
# openbox startup-script:
# Lines starting with a '#' are ignored.

# Eliminare momentanea modulo pcspkr (campanella di sistema)
xset -b
# Statistiche
conky &
gkrellm &
# Aggiungere altre applicazioni e/o comandi secondo l'ordine prescelto.

Startando openbox  noteremo l’estrema snellicità e semplicità di interfaccia. A questo punto avvieremo dal menù desktop o da un terminale obconf per modificarei settaggi principali compresi il focus delle finestre, lo spostamento del focus attraverso il mouse etc.

RC.XML:

Questo file contiene le direttive principali riguardo l’associazione dei tasti e del mouse. Il file è opportunamente commentato dai tag <!commento ->. Nel file rc.xml risiedono anche le proprietà specifiche per le applicazioni stabilite (bordi,numero desktop,shade,sticky, etc..)

NB: La configurazione è davvero intuitiva. In ogni caso ci saranno altri post successivi al seguente, dove saranno viste in specifico queste funzionalità.

MENU:

Come detto precedentemente la configurazione del menù avviene attraverso la modifica del file ~/.config/openbox/menu.xml con un editor preferito. Il menù è rappresentato in ordine come da esempio seguente:

<?xml version="1.0" encoding="UTF-8"?>
<openbox_menu>
     <menu id="root-menu" label="OpenBox">   
           <separator label="ax" />
              <item label="Shell"> <action name="Execute">
                <execute>urxvt</execute>
              </action> </item>
     </menu>
</openbox_menu>

In specifico le parti di codice e i  tag definiscono:

NB: A destra dei tag “il codice racchiuso tra i caratteri <> ci sono i commenti “ciò che segue il simbolo !.

NB: I commenti non vanno inseriti nel menù di test, servono solo a far capire ogni voce a cosa si riferisce. Per facilità di comprensione le parti di menù sono state suddivise per colori. In questo modo avrete una più chiara idea di dove comincia un menu **** e dove lo stesso viene chiuso **</chiusura>** . La differenza tra l'aprire e il chiudere una sezione in .xml sta nel precedere la chiusura del tag aperto precedentemente con il simbolo  **/** .

<?xml version="1.0" encoding="UTF-8"?> !versione xml e codifica charset <openbox_menu> !apre il menu nativo di openbox <menu id="root-menu" label="OpenBox"> !definisce l'id di menu e il nome dello stesso  <separator label="ax" />  !inserisce un separatore con intestazione "ax". Si usa anche per separare e titolare il menu base di openbox. 
          <item label="Shell"> <action name="Execute"> !titolo 1° applicazione di menu
          <execute>urxvt</execute> !programma relativo alla 1° applicazione di menu
  </action> </item> !chiusura tag 1° applicazione di menu <item label="Home"> <action name="Execute"> !titolo 2° applicazione <execute>pcmanfm</execute> !programma relativo alla 2° applicazione  </action> </item> !chiusura tag 2° applicazione di menu </menu> !chiude il root-menu aperto precedentemente
 </openbox_menu> !chiude definitivamente il menù openbox 

Volendo aggiungere un sottomenu contenente le voci native di openbox, compresi tools e uscita dal wm:

Esempio:

<?xml version="1.0" encoding="UTF-8"?> !versione xml e codifica charset <openbox_menu> !apre il menu nativo di openbox
    <menu id="root-menu" label="OpenBox"> !definisce l'id di menu e il nome dello stesso <separator label="ax" />  !inserisce un separatore con intestazione "ax". Si usa anche per separare e titolare il menu base di openbox. 
          <item label="Shell"> <action name="Execute"> !titolo 1° applicazione di menu
          <execute>urxvt</execute> !programma relativo alla 1° applicazione di menu </action> </item> !chiusura tag 1° applicazione di menu  <item label="Home"> <action name="Execute"> !titolo 2° applicazione <execute>pcmanfm</execute> !programma relativo alla 2° applicazione  </action> </item> !chiusura tag 2° applicazione di menu      <menu id="40" label="OpenBox"> !Nuovo menu titolato OpenBox <menu id="client-list-menu"/> !sottomenu desktop
          <item label="ObConf"> <action name="Execute"> !applicazione 1 <execute>obconf</execute> </action> </item> !chiusura applicazione 1
           <item label="ObMenu"> <action name="Execute"> !applicazione 2  <execute>obmenu</execute> </action> </item> !chiusura applicazione 2
      </menu> !chiusura sottomenu OpenBox
        <separator/> !Linea di separazione semplice
  <item label="Reconfigure"> <action name="Reconfigure"/> </item> !rilegge la configurazione di openbox senza riavviare X
  <item label="Exit"> <action name="Exit"/> </item> !uscita   </menu> !chiude il root-menu aperto precedentemente
  </openbox_menu> !chiude il menù generale openbo

NB: Non lasciatevi impressionare, è molto più semplice di quel che sembra. In ogni caso, se dovreste riscontrare particolari problemi  c’ è sempre l’alternativa. Esistono vari tools infatti per la configurazione di un menu completo. Gli strumenti che ci vengono messi a disposizione sono principalmente due.

Il primo è nativo: ObMenu

NB: stesso discorso di prima per installarlo su slackware; solite procedure. Per gli archmuniti:

~# pacman -S obmenu

Una volta installato sarà sufficiente lanciarlo ed aggiungere le voci di menu desiderate.

Il secondo è utile allo scopo finale, anche se non nasce specificamente per openbox, bensì per molti wm, tra cui fluxbox,pekwm,openbox ed altri e si chiama: MenuMaker

NB: anche in questo, come il precedente caso; vai di configure,make,etc.. In arch:

~# pacman -S menumaker

Installato procederemo alla creazione di un menu completo con il comando:

~$ mmaker -vf OpenBox3

NB: l’opzione -f forza menumaker a sovrascrivere un aventuale menu esistente nella directory di riferimento openbox. E’ bene creare una copia di backup “menu.xml_backup” prima di procedere con la creazione del nuovo menu.

Note relative: OpenBox non prevede l’utilizzo e quindi la visualizzazione di icone nel menu. Ci sono tanti altri tips relativi alla customizzazione del menu di openbox che saranno trattati in altri post.

PANNELLI:

Come **precedentemente descritto, **OpenBox non prevede l’avvio di un pannello nativo. Esistono tanti pannelli e la scelta del quale usare ricade solo sul gusto personale oltre magari alle risorse disponibili della macchina che si sta usando. Per capire meglio ed eventualmente scegliere, vi rimando al link dell’apposito post riguardo i pannelli non nativi in generale e tint2 (uno dei migliori a mio modesto parere).

Considerazioni:

Così come Fluxbox, Openbox si può considerare un cugino che combatte per lo stesso fine. Anche se l’approccio è diverso, entrambi sono wm ampiamente configurabili e stabili. Offrono leggerezza, snellicità e ampia customizzazione. Entrambi se pur con alcune limitazioni “molto piccole e che verrano spiegate più avanti” (per alcuni utenti linuxdipendenti fastidiose, me compreso) sono ciò che più si avvicina al mio concetto di desktop oltre che dell’usabilità chiaramente inclusa nel discorso. La perfezione sicuramente non esiste. Ma devo dire che in questo ambito ciò che più ci si avvicina è un altro cugino della stessa discendenza: Pekwm; se ne parlerà più avanti. In tutto questo, non si capisce “non mi capisco…sarò un conservatore” come mai gira e rigira cambiano i wm ma l’aspetto fondamentalmente è sempre lo stesso :P.

Al prossimo post!

# End