Personalizzare il comportamento delle finestre con Devil's Pie
Cos'è Devil's Pie
Devil's Pie è un programma che permette di personalizzare il comportamento delle finestre dei programmi. Ad esempio si può scegliere in quale workspace far partire un'applicazione, o impedire che compaia nella taskbar.
Ogni volta che viene aperta un'applicazione, e quindi creata la sua finestra, Devil's Pie legge nei files di configurazione l'operazione da eseguire su di essa.
Installazione
Devil's Pie è presente nell'archivio ufficiale Debian, quindi per installarlo basta usare il gestore di pacchetti preferito (aptitude, synaptic, kpackage...) oppure scrivere semplicemente da shell:
# apt-get install devilspie
Configurazione
La versione attuale di Devil's Pie è la 0.16. Dalla 0.13 è stato modificato completamente il sistema di configurazione, passando da un file di configurazione xml a un sistema a s-expressions.
Questo crea qualche problema perchè le guide che si trovano su internet si riferiscono al vecchio sistema, e l'autore non ha ancora scritto una guida per il sistema nuovo.
Significativo in questo senso il manuale, accessibile con:
# man devilspie
Nella sezione Bugs, leggiamo un incoraggiante:
This manpage is useless, as it was thrown together on a train.
Per fortuna ci viene in aiuto il file README, che troviamo nella directory /usr/share/doc/devilspie.
Per ogni finestra su cui vogliamo eseguire un'operazione, creiamo un file nomeprogramma.ds nella directory .devilspie della nostra home, in cui scriviamo il comando con l'operazione da eseguire, formattata come [s-expression].
In attesa della guida, per sapere i comandi disponibili bisogna spulciare il file src/parser.c nei sorgenti di devil's pie, e fare tante prove :-). Per le prove, basta richiamare devilspie da shell seguito dal file di configurazione che si vuole provare, e lanciare l'applicazione su cui deve eseguire l'operazione
Esempi
Supponiamo di avere gkrellm su tutti i workspace, ma di non voler vedere la sua miniatura nel pager. Creiamo un file gkrellm.ds e scriviamo:
(if (is (application_name) "gkrellm") (begin skip_pager (skip_tasklist)))
Questo comando fa svogere due operazioni, l'eliminazione dal pager e dalla taskbar. Per applicare operazioni multiple è stato necessario iniziare l'elenco dei comandi con 'begin'. Da notare anche l'annidamento delle parentesi.
Se vogliamo svoglere una sola operazione, ad esempio aprire XMMS nel workspace 2 e nient'altro, basta il solo comando senza 'begin':
(if (is (application_name) "XMMS") (set_workspace 2))