Personalizzare il comportamento delle finestre con Devil's Pie: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
mNessun oggetto della modifica
 
(18 versioni intermedie di 6 utenti non mostrate)
Riga 1: Riga 1:
=Introduzione=
{{Versioni compatibili|Squeeze|Wheezy}}
Questa pagina vuole raccogliere tutte quelle cose ''simpatiche'' (EasterEggs) presenti nei programmi Debian e non solo ...
==Introduzione==
[http://www.burtonini.com/blog/computers/devilspie Devil's Pie] è un programma che permette di personalizzare il comportamento delle finestre dei programmi.<br/>
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 file 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 oppure scrivere semplicemente da [[shell]]:


=apt-get=
==apt-get moo==
<pre>
<pre>
$ apt-get moo
# apt-get install devilspie
        (__)
</pre>
        (oo)
  /------\/
  / |    ||
*  /\---/\
    ~~  ~~
...."Have you mooed today?"...</pre>


==apt-get --help==
== Configurazione ==
La versione attuale di Devil's Pie è la 0.17.
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:
<pre>
<pre>
$ apt-get --help | grep Powers
# man devilspie
                      This APT has Super Cow Powers.
</pre>
</pre>
Nella sezione '''Bugs''', leggiamo un incoraggiante:
<pre>This manpage is useless, as it was thrown together on a train.</pre>
Per fortuna ci viene in aiuto il file README, che troviamo nella directory <code>/usr/share/doc/devilspie</code>.
Per ogni finestra su cui vogliamo eseguire un'operazione, creiamo un file <code>nomeprogramma.ds</code> nella directory <code>.devilspie</code> della nostra home, in cui scriviamo il comando con l'operazione da eseguire, formattata come [http://en.wikipedia.org/wiki/S-expression s-expression].


==bug==
In attesa della guida, per sapere i comandi disponibili bisogna spulciare il file <code>src/parser.c</code> nei sorgenti di Devil's Pie, e fare tante prove :-).<br/>
Interessante la segnalazione presente nella wishlist di apt-get:<br/>
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.
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=134156


{{Box|Aggiornamento:|È disponibile un [http://wiki.foosel.net/linux/devilspie tutorial completo] in lingua inglese.}}


=aptitude=
=== Azioni ===
==aptitude moo==
<pre>$ aptitude moo
There are no Easter Eggs in this program.</pre>


==aptitude -v moo==
Questo è l'elenco delle azioni che possono essere applicate da devilspie all'apertura di una finestra:
<pre>$ aptitude -v moo
There really are no Easter Eggs in this program.</pre>


==aptitude -vv moo==
; <code>(geometry geo)</code>: Setta la dimensione e il posto in cui verrà visualizzata la finestra.
<pre>$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?</pre>


==aptitude -vvv moo==
; <code> (fullscreen) </code>: Visualizza la finestra a pieno schermo.
<pre>$ aptitude -vvv moo
Stop it!</pre>


==aptitude -vvvv moo==
; <code> (focus) </code>: Seleziona la finestra.
<pre>$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?</pre>


==aptitude -vvvv moo==
; <code> (center) </code>: Posiziona la finestra al centro dello schermo.
<pre>$ aptitude -vvvvv moo
All right, you win.


                              /----\
; <code> (maximize) </code>: Massimizza la finestra.
                      -------/      \
                      /              \
                    /                |
  -----------------/                  --------\
  ----------------------------------------------


Happy?</pre>
; <code> (maximize_vertically) </code>: Massimizza la finestra verticalmente.


==aptitude -vvvvvv moo==
; <code> (maximize_horizontally) </code>: Massimizza la finestra orizzontalmente.
<pre>$ aptitude -vvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course.</pre>


==aptitude --help==
; <code> (minimize) </code>: Minimizza la finestra.
<pre>$ aptitude --help | grep Powers
                  This aptitude does not have Super Cow Powers.</pre>


=apt-build=
; <code> (pin) </code>: Visualizza la finestra iin tutti i workspaces.
==apt-build moo==
<pre>$ apt-build moo
        (__)   ~
        (oo)  /
    _____\/___/
    /  /\ / /
  ~  /  * /
    / ___/
*----/\
    /  \
  /  /
  ~    ~
..."Have you danced today? Discow!"...</pre>


=Pagine di Man=
; <code> (unpin) </code>: Il contrario di pin.
==funny-manpages==
 
Per installare queste simpatiche pagine di ''man'' � sufficiente un
; <code> (set_workspace num) </code>: Setta il workspace (al posto di num va messo il numero del workspace).
 
; <code> (skip_pager) </code>: Non fa visualizzare la finestra nel [[pager]].
 
; <code> (skip_tasklist) </code>: Non fa visualizzare la finestra nella tasklist.
 
; <code> (above) </code>: Visualizza la finestra sempre sopra altre.
 
; <code> (below) </code>: Visualizza la finestra sempre sotto altre.
 
; <code> (undecorate) </code>: Toglie le decorazioni del window manager.
 
=== Esempi ===
Supponiamo di avere <code>gkrellm</code> su tutti i workspace, ma di non voler vedere la sua miniatura nel pager.<br/>
Creiamo un file <code>gkrellm.ds</code> e scriviamo:
<pre>
<pre>
# apt-get install funny-manpages
(if (is (application_name) "gkrellm") (begin skip_pager (skip_tasklist)))
</pre>
</pre>
Questo comando fa svolgere 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.


che, una volta terminata l'installazione, metter� a disposizione le seguenti manpage:
Se vogliamo svolgere una sola operazione, ad esempio aprire <code>XMMS</code> nel workspace 2 e nient'altro, basta il solo comando senza 'begin':
* man 1fun date
* man 1fun echo
* man 1fun gong
* man 1fun grope
* man 1fun party
* man 1fun rescrog
* man 1fun rtfm
* man 1fun rm
* man 1fun tm
* man 1fun xkill
* man 1fun baby
* man 1fun celibacy
* man 1fun flog
* man 1fun uubp
* man 1fun condom
* man 1fun flame
* man 1fun xlart
* man 6fun sex
* man 3fun strfry


sono tutte in inglese, ma vale la pena leggerle ;)
==asr-manpages==
Simile a ''funny-manpages'', ma un po' pi tecniche, sono le '''asr-manpages''':
<pre>
<pre>
A set of humorous manual pages developed on
(if (is (application_name) "XMMS") (set_workspace 2))
alt.sysadmin.recovery (don't treat them seriously!).
They document a set of really useful tools that for some
strange reason are not included in any implementation of
Unix. This includes such famous commands as lart, sysadmin,
luser, bosskill and others.
The authors recommend these man pages should be installed
on every system.
</pre>
</pre>


Per installarle, basta un semplice
Un altro esempio un po' più complesso, se si vuole mostrare la lista contatti di <code>gaim</code> su tutti i workspaces, una grandezza di 340x630 alla posizione (4, 150), il comando è questo:
<pre>
<pre>
# apt-get install asr-manpages
(if
    (and
        (is (application_name) "gaim")
        (is (window_name) "Lista contatti")
    )
    (begin
        (pin)
        (geometry "340x630+4+150")
    )
)
</pre>
</pre>


* man 8fun guru
=== Determinare il nome della finestra ===
* man 8fun nuke
Negli esempi precedenti, le azioni vengono associate a delle applicazioni o a delle finestre attraverso le voci (<code>application_name</code>) o (<code>window_name</code>). Se la personalizzazione si riferisce alla finestra di un programma, solitamente è sufficiente usare (<code>application_name</code>) con il nome del programma, come negli esempi precedenti <code>xmms, gkrellm, gaim.</code>
* man 8fun bosskill
* man 8fun knife
* man 8fun pmsd
* man 8fun ctluser
* man 8fun luser
* man 5fun normality
* man 2fun people
* man 1fun lart
* man 1fun c
* man 1fun vslave
* man 1fun sysadmin
* man 1fun think
* man 1fun whack
* man 3fun chastise


=ddate=
Nel caso si voglia definire un comportamento di un'applicazione di cui non si è sicuri del nome, oppure di una finestra specifica di un'applicazione, si possono avere tutte le informazioni necessarie avviando devilspie con l'opzione debug:
'''ddate''' � un programma che converte una data nel formato Discordiano (''cfr.: [http://it.wikipedia.org/wiki/Discordianesimo Discordianesimo].</br>
<pre>$devilspie --debug</pre>
Ecco un esempio:
A questo punto, aprendo la finestra desiderata, si leggerà una cosa del tipo:
<pre>$ ddate
<pre>
Today is Sweetmorn, the 50th day of Confusion in the YOLD 3171
Window Title: 'XMMS - 48. Alanis Morissette - No pressure over cappucino (4:45)'; Application Name: 'XMMS - 48. Alanis Morissette - No pressure over cappucino (4:45)'; Class: 'xmms'; Geometry: 275x116+0+0
Celebrate Confuflux
Window Title: 'GDancer'; Application Name: 'Xmms'; Class: 'dancer'; Geometry: 100x173+562+132
Skipping pager
Skipping tasklist
Setting pinned
</pre>
Nell'esempio si vedono le informazioni relative all'applicazione <code>xmms</code> e al suo plugin [http://figz.com/gdancer/ gDancer], e viene anche indicato che sono già state applicate delle azioni su quest'ultimo: non compare nel pager né nella barra delle applicazioni, e viene visualizzato in tutti i workspaces.
I comandi corrispondenti del file <code>gdancer.ds</code> sono:
<pre>
(if (is (window_class) "dancer")
  (begin
(skip_pager)
(skip_tasklist)
(pin)
  )
)
</pre>
</pre>


=fortune=
== Automazione ==
'''fortune''' � un programma che eseguito da in output delle citazioni famose.
Una volta eseguito devilspie, tutte le volte che si apre un programma per cui è stata definita un'operazione questa viene eseguita.<br/>
 
Per fare in modo che queste siano sempre eseguite bisogna far partire Devil's Pie automaticamente all'avvio del sistema.
Per installarlo:
<pre>$ su
Password:
# apt-get install fortune
</pre>
In esecuzione:
<pre>$ fortune
For the fashion of Minas Tirith was such that it was built on seven levels,
each delved into a hill, and about each was set a wall, and in each wall
was a gate.
                -- J.R.R. Tolkien, "The Return of the King"


        [Quoted in "VMS Internals and Data Structures", V4.4, when
Con gli ambienti desktop che seguono gli standard freedesktop (come <code>Xfce</code>), è sufficiente creare un link all'eseguibile di devilspie nella directory <code>Desktop/Autostart</code> della nostra home.<br/>
        referring to system overview.]</pre>
In generale, molto più semplicemente, al momento dello spegnimento si può salvare la sessione con devilspie avviato, in modo da ritrovarselo a ogni accesso successivo.


=man sex=
{{Autori
'''man sex''' � un comando eseguibile senza bisogno di installare nulla. Eseguendolo da linea di comando oterremo un manuale a luci rosse.
|Autore = [[Utente: Gnappa|Gnappa]] 17:21, Dic 8, 2005 (EST)
|Estesa_da =  
:[[Utente: ilbeppe|ilbeppe]] 21:05, Mar 31, 2006 (EST)
|Verificata_da =
|Numero_revisori = 0
}}


Peccato che non ci sia l'eseguibile!


=Varie=
[[Categoria:Window Manager]]
Parlando di mucche (cosa molto frequente in Debian, a quanto si vede) � d'obbligo visitare la seguente pagina: [[Cows]]

Versione attuale delle 18:17, 22 mag 2015

Edit-clear-history.png Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.

Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione.


Debian-swirl.png Versioni Compatibili

Debian 6 "squeeze"
Debian 7 "wheezy"

Introduzione

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 file 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 oppure scrivere semplicemente da shell:

# apt-get install devilspie

Configurazione

La versione attuale di Devil's Pie è la 0.17. 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.

Info.png Aggiornamento:
È disponibile un tutorial completo in lingua inglese.


Azioni

Questo è l'elenco delle azioni che possono essere applicate da devilspie all'apertura di una finestra:

(geometry geo)
Setta la dimensione e il posto in cui verrà visualizzata la finestra.
(fullscreen)
Visualizza la finestra a pieno schermo.
(focus)
Seleziona la finestra.
(center)
Posiziona la finestra al centro dello schermo.
(maximize)
Massimizza la finestra.
(maximize_vertically)
Massimizza la finestra verticalmente.
(maximize_horizontally)
Massimizza la finestra orizzontalmente.
(minimize)
Minimizza la finestra.
(pin)
Visualizza la finestra iin tutti i workspaces.
(unpin)
Il contrario di pin.
(set_workspace num)
Setta il workspace (al posto di num va messo il numero del workspace).
(skip_pager)
Non fa visualizzare la finestra nel pager.
(skip_tasklist)
Non fa visualizzare la finestra nella tasklist.
(above)
Visualizza la finestra sempre sopra altre.
(below)
Visualizza la finestra sempre sotto altre.
(undecorate)
Toglie le decorazioni del window manager.

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 svolgere 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 svolgere 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))

Un altro esempio un po' più complesso, se si vuole mostrare la lista contatti di gaim su tutti i workspaces, una grandezza di 340x630 alla posizione (4, 150), il comando è questo:

(if
    (and 
        (is (application_name) "gaim")
        (is (window_name) "Lista contatti")
    )
    (begin
        (pin)
        (geometry "340x630+4+150")
    )
)

Determinare il nome della finestra

Negli esempi precedenti, le azioni vengono associate a delle applicazioni o a delle finestre attraverso le voci (application_name) o (window_name). Se la personalizzazione si riferisce alla finestra di un programma, solitamente è sufficiente usare (application_name) con il nome del programma, come negli esempi precedenti xmms, gkrellm, gaim.

Nel caso si voglia definire un comportamento di un'applicazione di cui non si è sicuri del nome, oppure di una finestra specifica di un'applicazione, si possono avere tutte le informazioni necessarie avviando devilspie con l'opzione debug:

$devilspie --debug

A questo punto, aprendo la finestra desiderata, si leggerà una cosa del tipo:

Window Title: 'XMMS - 48. Alanis Morissette - No pressure over cappucino (4:45)'; Application Name: 'XMMS - 48. Alanis Morissette - No pressure over cappucino (4:45)'; Class: 'xmms'; Geometry: 275x116+0+0
Window Title: 'GDancer'; Application Name: 'Xmms'; Class: 'dancer'; Geometry: 100x173+562+132
Skipping pager
Skipping tasklist
Setting pinned

Nell'esempio si vedono le informazioni relative all'applicazione xmms e al suo plugin gDancer, e viene anche indicato che sono già state applicate delle azioni su quest'ultimo: non compare nel pager né nella barra delle applicazioni, e viene visualizzato in tutti i workspaces. I comandi corrispondenti del file gdancer.ds sono:

(if (is (window_class) "dancer") 
  (begin 
	(skip_pager)
 	(skip_tasklist)
	(pin)
  ) 
)

Automazione

Una volta eseguito devilspie, tutte le volte che si apre un programma per cui è stata definita un'operazione questa viene eseguita.
Per fare in modo che queste siano sempre eseguite bisogna far partire Devil's Pie automaticamente all'avvio del sistema.

Con gli ambienti desktop che seguono gli standard freedesktop (come Xfce), è sufficiente creare un link all'eseguibile di devilspie nella directory Desktop/Autostart della nostra home.
In generale, molto più semplicemente, al momento dello spegnimento si può salvare la sessione con devilspie avviato, in modo da ritrovarselo a ogni accesso successivo.




Guida scritta da: Gnappa 17:21, Dic 8, 2005 (EST) Swirl-auth20.png Debianized 20%
Estesa da:
ilbeppe 21:05, Mar 31, 2006 (EST)
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized