Devil's Pie ou l'art de manipuler ses fenêtres

.: Devil’s Pie ou l’art de manipuler ses fenêtres :.

0. Pour la petite histoire

Qu’est-ce que Devil’s Pie?

Et bien pour faire simple nous dirons que c’est un utilitaire de fenêtres (“A window-matching utility”); il permet par exemple de dire qu’une telle fenêtre sera toujours en dessous (ou au dessus) des autres, qu’au chargement d’une telle application elle doit directement aller sur le deuxième workspace ou encore qu’une autre doit se retrouver sur tous les workspace.

Petit historique

Jusqu’à la version 0.12 de Devil’s Pie, le fichier de configuration était en XML. Je n’aborderais pas cette possibilité vu qu’au fur et à mesure, toutes les distributions GNU/Linux proposeront une version supérieure à la 0.12, ce qui est déjà le cas de Debian en testing.

A partir de la version 0.13, Devil’s Pie a été complétement réécris est utilise dorénavant les S-EXPRESSIONS: plus simple, plus concis, plus clair. Je ne traiterais donc que des S-EXPRESSIONS dans ce how-to et donc de Devil’s Pie à partir de la version 0.13 et supérieure.

Concrétement que puis-je faire avec Devil’s Pie?

Personnellement, je l’utilise en complément à Eterm pour en faire une console transparente incrustée dans le bureau mais aussi pour automatiquement envoyer Thunderbird sur le deuxième workspace. Autrefois, je l’ai également utilisé pour XMMS.
En réalité, les possibilités sont quasi infinies à partir du moment où vous avez le besoin de manipuler de façon automatique certaines applications.

Y’a t-il un site officiel de Devil’s Pie?

Oui, celui de Ross Burton, son auteur: burtonini.com/blog/computers/devilspie

1. Installer Devil’s Pie

Et bien, faisons simple et rapide, je vous passe les détails d’une installation depuis les sources :stuck_out_tongue:

Si vous êtes en Debian stable, je vous invite à ajouter les dépots testing le temps d’installer Devil’s Pie. En effet, la Debian stable est resté à la version 0.8 …

(avec privilèges root)

2. Configurer Devil’s Pie

C’est dans ce repertoire que nous mettrons nos fichiers de configuration.
pour chaque configuration, nous créerons un fichier dont l’extension sera “.ds”.
J’ai par exemple un fichier thunderbird.ds et xterm.ds

Alors, nous allons commencer avec un exemple concret, les miens :slightly_smiling:

thunderbird.ds

dira à Devil’s Pie que si il rencontre une application dont le nom est “mozilla-thunderbird-bin” alors il doit la déplacer dans le coin supérieur gauche de l’écran et la mettre sur le deuxième workspace.

eterm.ds

dira à Devil’s Pie que si il rencontre une application dont le nom est “Eterm” alors il doit l’enlever de la tasklist, du pager, la mettre sur tous les workspace et qu’elle reste toujours en dessous des autres applications.

pour tester vos (premiers) essais, tapez simplement dans un terminal:

ou encore

et admirez le résultat …

3. Toutes les actions possible

Vous aurez remarqué certaines actions déjà comme “below”, ou encore “set_workspace”.
Quelles sont donc toutes les actions possibles (à l’heure où j’ecris ces quelques lignes)?

action — valeur attendue (exemple) — commentaire

  • “geometry” — “80x15+0-18” (chaine de caractères) — geométrie de la fenêtre
  • “fullscreen” — / — plein ecran
  • “maximize” — / — maximiser la fenêtre
  • “maximize_vertically” — / — maximiser verticalement la fenêtre
  • “maximize_horizontally” — / — maximiser horizontalement la fenêtre
  • “minimize” — / — minimiser la fenêtre
  • “shade” — / — enrouler la fenêtre
  • “unshade” — / — dérouler la fenêtre
  • “pin” — / — afficher sur tous les workspace
  • “unpin” — / — ne pas afficher sur tous les workspace
  • “set_workspace” — 2 (entier) — envoyer vers le worspace spécifé
  • “skip_pager” — / — ignorer l’affichage dans le pager (Workspace Switcher de Gnome par exemple)
  • “skip_tasklist” — / — ignorer la liste des tâches (Windows Selector de Gnome par exemple)
  • “above” — / — toujours au dessus des autres fenêtres
  • “below” — / — toujours en dessous des autres fenêtres
  • “undecorate” — / — supprimer toutes les décorations de fenêtre (dock panel)
  • “wintype” — ? — type de fenêtre

A l’heure où j’ecris ces quelques lignes, il n’existe malheureusement pas de manuel, de documentation.
Cela viendra, mais Ross Burton étant seul à travailler sur ce projet, pas tout de suite …

Il existe cependant une alternative viable à cela: le code source.
N’ayez crainte, ce n’est pas si compliqué que cela.
Vous téléchargez la dernière archive disponible sur le site officiel, l’ouvrez et allez dans le repertoire /src où vous trouverez le fichier parser.c: vous y trouverez toutes les actions disponibles ainsi que le type de paramètre à donner.

4. Déterminer le nom des applications & fenêtres

Vous avez remarquez que dans les exmples fournis, le nom des applications sont bien définies: “mozilla-thunderbird-bin” et “Eterm”.
Pour determiner le nom des applications & fenêtres, il vous suffit de créer le fichier ~/.devilspie/test.ds en y ajoutant la ligne i[/i]
Relancez Devil’s Pie pour obtenir toutes les infos nécessaires sur vos applications & fenêtres:

5. Les “matchers”

Nous avons vu dans les deux exemples un matcher du type:

Ce qui permet de déjà faire pas mal de chose.

Cependant certains trouveront probablement que c’est trop limité pour leurs besoins. Pas de problème.

Tout comme expliqué ci-dessus, vous trouverez plus d’informations dans le fichier /src/parser.c de l’archive devilspie.tar.gz que vous trouverez sur le site officiel et également dans le README de cette même archive.

A titre d’exemple, vous pourriez utiliser une telle expression:

6. Executer Devil’s Pie automatiquement au démarrage

Et oui, c’est quand-même mieux que de lancer manuellement Devil’s Pie depuis une console à chaque démarrage …

Pour les utilisateurs de Gnome, il vous suffit d’aller dans Preferences / Sessions et de vous rendre dans le dernier onglet “Startup programs”.
Là, vous ajoutez ceci: Startup command: devilspie; Order: 40

Pour les utilisateurs de KDE, je ne sais pas: quelqu’un dans la salle?

Pour les utilisateurs de BlackBox, FluxBox, …, il vous suffit d’ajouter dans le fichier ~/.xinitrc la ligne devilspie &

7. Partager son expérience Devil’s Pie

Maintenant que tout a été dit et que vous êtes devenu un as de l’utilisation de Devil’s Pie, je vous invite à partager votre expérience et ainsi vos fichiers .ds (enfin, leur contenu).

Inutile de me poser des questions sur Eterm ici, je ferais prochainement un how-to à ce sujet (console transparente incrustée dans le bureau).
Par contre, si vous avez toute autre question sur Devil’s Pie, vous pouvez toujours les poser ici, j’essaierais d’y répondre.

Enjoy 8)

Disons qu’avec KDE on peut faire pareil : on clique sur l’icône de la fenêtre->avancé->réglages spéciaux de la fenêtre…

En conséquence, les utilisateurs de KDE/Qt peuvent ignorer ce how-to.

Il ne s’applique qu’à tous les autres window manager: FVWM, FVWM95, TWM/VTWM, MWM, CTWM, OLWM/OLVWM, wm2/wmx, AfterStep, AmiWM, Enlightenment, WindowMaker, SCWM, IceWM, Sawfish, Blackbox, Fluxbox, Metacity, BadWM, XIGE, JWM, WWM, WMI, Stumpwm, TrsWM, Kahakai, PyWM, XWEM, MIWM, Eclipse, Framer, Mavosxwm, WindowLab, Openbox, Hackedbox, Matchbox, Pekwm, Waimea, Clementine, Interface WM, ZWM, HaZe, PAWM, aewm++, NovaWM, Golem, Oroborus, Treewm, GwML, Heliwm, 5dwm, Mosquito, Maewm, QLWM, Phluid, Alloywm, Amaterus, Evilwm, Ratpoison, Ion, Perlwm, Efsane II, 3Dwm, Swm, Puppet, YAWM, w9wm, larswm, PWM, PLWM, EPIwm, wmG, aewm, B4step, flwm, lwm, mlvwm, qvwm, mwm 2.0, GWM, 9wm, OSWM, awm, rtl, dxwm, hpwm, tekwm, m_swm, pswm, swm, tvtwm, mvwm, NCDwm, XDSwm, vuewm, 4Dwm, piewm, pmwm, uwm, wm, xwm, …

KDE ou Gnome ?
Gnome ou KDE ?
:laughing: :laughing: :laughing:

En conséquence, les utilisateurs de KDE/Qt peuvent ignorer ce how-to.

Il ne s’applique qu’à tous les autres window manager: FVWM, FVWM95, TWM/VTWM, MWM, CTWM, OLWM/OLVWM, wm2/wmx, AfterStep, AmiWM, Enlightenment, WindowMaker, SCWM, IceWM, Sawfish, Blackbox, Fluxbox, Metacity, BadWM, XIGE, JWM, WWM, WMI, Stumpwm, TrsWM, Kahakai, PyWM, XWEM, MIWM, Eclipse, Framer, Mavosxwm, WindowLab, Openbox, Hackedbox, Matchbox, Pekwm, Waimea, Clementine, Interface WM, ZWM, HaZe, PAWM, aewm++, NovaWM, Golem, Oroborus, Treewm, GwML, Heliwm, 5dwm, Mosquito, Maewm, QLWM, Phluid, Alloywm, Amaterus, Evilwm, Ratpoison, Ion, Perlwm, Efsane II, 3Dwm, Swm, Puppet, YAWM, w9wm, larswm, PWM, PLWM, EPIwm, wmG, aewm, B4step, flwm, lwm, mlvwm, qvwm, mwm 2.0, GWM, 9wm, OSWM, awm, rtl, dxwm, hpwm, tekwm, m_swm, pswm, swm, tvtwm, mvwm, NCDwm, XDSwm, vuewm, 4Dwm, piewm, pmwm, uwm, wm, xwm, …[/quote]
Franchement ghostintheshell Je ne vois pas pourquoi tu pinailles à propos des 2 ou 3 concurrents à KDE/Gnome :laughing: :laughing: :laughing:

Avec KDE 3.4, je ne trouve pas.
Qu’appelles-tu “icône de la fenêtre”, un des bureaux multiples ?
Je n’ai trouvé nulle part de “règlages spéciaux de la fenêtre”

[quote=“ricardo”]KDE ou Gnome ?
Gnome ou KDE ?
:laughing: :laughing: :laughing:[/quote]

Gnome et certaines applis KDE en ce qui me concerne.
Mais je pense revenir sous Fluxbox très prochainement.

En conséquence, les utilisateurs de KDE/Qt peuvent ignorer ce how-to.

Il ne s’applique qu’à tous les autres window manager: FVWM, FVWM95, TWM/VTWM, MWM, CTWM, OLWM/OLVWM, wm2/wmx, AfterStep, AmiWM, Enlightenment, WindowMaker, SCWM, IceWM, Sawfish, Blackbox, Fluxbox, Metacity, BadWM, XIGE, JWM, WWM, WMI, Stumpwm, TrsWM, Kahakai, PyWM, XWEM, MIWM, Eclipse, Framer, Mavosxwm, WindowLab, Openbox, Hackedbox, Matchbox, Pekwm, Waimea, Clementine, Interface WM, ZWM, HaZe, PAWM, aewm++, NovaWM, Golem, Oroborus, Treewm, GwML, Heliwm, 5dwm, Mosquito, Maewm, QLWM, Phluid, Alloywm, Amaterus, Evilwm, Ratpoison, Ion, Perlwm, Efsane II, 3Dwm, Swm, Puppet, YAWM, w9wm, larswm, PWM, PLWM, EPIwm, wmG, aewm, B4step, flwm, lwm, mlvwm, qvwm, mwm 2.0, GWM, 9wm, OSWM, awm, rtl, dxwm, hpwm, tekwm, m_swm, pswm, swm, tvtwm, mvwm, NCDwm, XDSwm, vuewm, 4Dwm, piewm, pmwm, uwm, wm, xwm, …[/quote]
Franchement ghostintheshell Je ne vois pas pourquoi tu pinailles à propos des 2 ou 3 concurrents à KDE/Gnome :laughing: :laughing: :laughing:[/quote]

Gnome est compris dedans (cfr Metacity).

Avec KDE 3.4, je ne trouve pas.
Qu’appelles-tu “icône de la fenêtre”, un des bureaux multiples ?
Je n’ai trouvé nulle part de “règlages spéciaux de la fenêtre”[/quote]
http://yanou002.free.fr/reglages_fenetre.png

En parlant de KDE, je répondais à la question

Ok, merci

Pas mal ce devilspie :slightly_smiling:

Par contre, en creusant la question, je lui trouve un inconvénient : si l’on détermine une dimension précise d’une fenêtre, Thunderbird par exemple, toutes les boîtes de dialogues de cette application vont avoir aussi les mêmes dimensions (même les simples messages d’erreur).
C’est dommage qu’on ne puisse pas l’éviter. :question:

[quote=“Korben Dallas”]Pas mal ce devilspie :slightly_smiling:

Par contre, en creusant la question, je lui trouve un inconvénient : si l’on détermine une dimension précise d’une fenêtre, Thunderbird par exemple, toutes les boîtes de dialogues de cette application vont avoir aussi les mêmes dimensions (même les simples messages d’erreur).
C’est dommage qu’on ne puisse pas l’éviter. :question:[/quote]

Trés bonne question. Et je ne m’y suis jamais penché dessus.
Je n’ai pas le problème dont tu parles avec Tb (redimensions des boîtes de dialogue & autres) par contre, en effet, mes mails ou boites de dialogue s’ouvrent automatiquement dans le coin superieur haut gauche vu que j’ai mis “0+0” en geometry.

Pour affiner cela, tu dois te referer au point 5 de ce how-to et ainsi ne plus utiliser le matcher “application_name” mais “window_name” et eventuellemenyt jouer avec des expressions regulieres :smiley:

[quote=“ghostintheshell”][…]

5. Les “matchers”

Nous avons vu dans les deux exemples un matcher du type:

Ce qui permet de déjà faire pas mal de chose.

Cependant certains trouveront probablement que c’est trop limité pour leurs besoins. Pas de problème.

Tout comme expliqué ci-dessus, vous trouverez plus d’informations dans le fichier /src/parser.c de l’archive devilspie.tar.gz que vous trouverez sur le site officiel et également dans le README de cette même archive.

A titre d’exemple, vous pourriez utiliser une telle expression:

[…][/quote]

tu trouveras les valeurs possibles du matcher “window_name” de thunderbird (p.e.) en executant:

ou encore

apparement, il faudrait une expr. reg. qui demande de tout prendre à condition que cela se termine par " - Thunderbird" (pour Tb 1.5 en tout cas). Cela ne doit pas etre tres difficile à construire comme reg. exp.

il est donc tout à fait possible et envisageable d’eviter le probleme que tu decris :smiley:

tant qu’on y est, je vais mettre ici les .ds que j’avais créés en son temps:

oclock.ds

concky.ds

[quote](if (is (application_name) “conky”) (begin skip_tasklist skip_pager pin below))
[/quote]

En conséquence, les utilisateurs de KDE/Qt peuvent ignorer ce how-to.

Il ne s’applique qu’à tous les autres window manager: FVWM, FVWM95, TWM/VTWM, MWM, CTWM, OLWM/OLVWM, wm2/wmx, AfterStep, AmiWM, Enlightenment, WindowMaker, SCWM, IceWM, Sawfish, Blackbox, Fluxbox, Metacity, BadWM, XIGE, JWM, WWM, WMI, Stumpwm, TrsWM, Kahakai, PyWM, XWEM, MIWM, Eclipse, Framer, Mavosxwm, WindowLab, Openbox, Hackedbox, Matchbox, Pekwm, Waimea, Clementine, Interface WM, ZWM, HaZe, PAWM, aewm++, NovaWM, Golem, Oroborus, Treewm, GwML, Heliwm, 5dwm, Mosquito, Maewm, QLWM, Phluid, Alloywm, Amaterus, Evilwm, Ratpoison, Ion, Perlwm, Efsane II, 3Dwm, Swm, Puppet, YAWM, w9wm, larswm, PWM, PLWM, EPIwm, wmG, aewm, B4step, flwm, lwm, mlvwm, qvwm, mwm 2.0, GWM, 9wm, OSWM, awm, rtl, dxwm, hpwm, tekwm, m_swm, pswm, swm, tvtwm, mvwm, NCDwm, XDSwm, vuewm, 4Dwm, piewm, pmwm, uwm, wm, xwm, …[/quote]

Personnellement, j’aurai mis OpenBox en premier sur la liste, parcequ’il est mieux, c’tout.

Dailleurs, la liste est trop longue, on peut la réduire… jusqu’à un seul élément… OpenBox… :laughing:

rofl :laughing: :wink:

[quote=“ghostintheshell”]Pour les utilisateurs de Gnome, il vous suffit d’aller dans Preferences / Sessions et de vous rendre dans le dernier onglet “Startup programs”.
Là, vous ajoutez ceci: Startup command: devilspie; Order: 40

Pour les utilisateurs de KDE, je ne sais pas: quelqu’un dans la salle?
[/quote]Sous kde il suffit de faire un script lançant devilspie et de le rajouter dans ~/.kde/Autostart/

Exemple de script

#!/bin/sh nohup devilspie&

~/.kde/Autostart/ total 16K drwx------ 2 ash ash 4,0K 2005-10-25 15:50 . drwx------ 4 ash ash 4,0K 2005-06-23 23:35 .. -rw-r--r-- 1 ash ash 1,6K 2005-11-13 21:04 .directory -rwxr-xr-x 1 ash ash 63 2005-12-03 18:47 script

super, merci pour l’info!

Tutoriaux Devil’s Pie

1/ wiki.foosel.net/linux/devilspie
2/ x2.zuavra.net/index.php/48/

tu es sûr de la nécessité du nohup ?
c’est dangereux de rendre un processus “immortel”.

Non je ne suis pas sur de la nécessité du nohup donc il est tout a fait possible de l’enlever :slightly_smiling: et de ne laisser que

#!/bin/sh devilspie&