Ceci est une ancienne révision du document !



Devil's Pie : ouvrir une fenêtre dans le bureau

Devil's Pie permet d'ouvrir une fenêtre dans le bureau et le format choisi.

Devil's Pie est un logiciel qui, dans le gestionnaire de fenêtres Metacity (gestionnaire utilisé par Gnome) permet de détecter les caractéristiques des fenêtres et de leur appliquer des règles de comportement.

Devil's Pie n'est pas exclusif à Metacity. Il fonctionne avec tous les gestionnaires de fenêtres. Je l'utilise avec OpenBox. Avis aux amateurs ;-)

Il s'agit d'un logiciel libre de Ross Burton (http://www.burtonini.com , ross@burtonini.com) publié sous la license GNU GPL.

Ceci est un résumé de 2 how-tos absolument remarquables (en anglais) :

http://ubuntuforums.org/showthread.php?t=75749

Ce how-to de Wolki extrêmement complet et détaillé fournit aussi la technique de paramétrage basée sur des fichiers xml des versions antérieures à la 0.13. :

http://wiki.foosel.net/linux/devilspie ou http://live.gnome.org/DevilsPie

Il existe également cette page en français du forum Debian : Devil's Pie ou l'art de manipuler ses fenêtres

Les fichiers de la doc (/usr/share/doc/devilspie) sont malheureusement trop succincts pour être d'une quelconque utilité.

A noter qu'il existe une version avec interface graphique pour créer les règles de devilspie : gdevilspie (http://code.google.com/p/gdevilspie/)

Ce texte décrit les règles de paramétrage de devilspie à partir de la version 0.13 (complète réécriture du logiciel ; auparavant le paramétrage était totalement différent).

Il est possible d'installer Devil's pie à partir du gestionnaire de paquet Synaptic, après avoir activé le dépôt "Universe" .

Alternativement, une installation en ligne de commande est possible en rentrant dans un terminal la commande suivante :

sudo apt-get install devilspie

Pour installer l'interface graphique dont il est fait mention plus haut, il faut télécharger le fichier tar.bz2 disponible sur cette page: http://code.google.com/p/gdevilspie/downloads/list.

Une fois le fichier sur votre ordinateur, il suffit d'en extraire le contenu et d' exécuter le fichier "gdevilspie" qui se trouve dans le dossier "gdevilspie-0.5".

Il est possible d'installer l'interface grâce à un script d'installation. Dans un terminal, lancez les commandes suivantes :

cd /répertoire_ou_se_trouve_gdevilspie-0.5 

sudo python setup.py install

Il vous est désormais possible de lancer l'interface graphique en tapant, dans un terminal :

gdevilspie

On peut lancer le logiciel ponctuellement en tapant « devilspie » dans un terminal.

En revanche, pour qu'il soit lancé automatiquement à chaque session, aller dans : Système / Préférences / Sessions / onglet Programmes au démarrage Cliquer sur le bouton « Ajouter » et dans la ligne « Commande de démarrage », taper « devilspie ».

Cette manipulation est inutile si vous utilisez l'interface graphique "gdevilspie". Il suffit dans ce cas de cocher la case "Start devilspie daemon automatically at login".

Il faut d'abord créer un dossier :

- Soit ~/.devilspie c'est-à-dire dans le dossier d'un utilisateur précis les autres n'étant pas concernés (le point initial faisant que le dossier sera un dossier caché [dans nautilus, on peut faire apparaître les fichiers cachés par Ctrl+H ou par le menu Affichage / Afficher les fichiers cachés]).

- Soit /etc/devilspie, ce qui s'appliquera alors à tous les utilisateurs.

Dans ce dossier on enregistrera les règles qui s'appliqueront aux fenêtres de Gnome sous forme de fichiers nommés (à votre choix arbitraire, exemple : gThumb.ds) nom_de_la_regle.ds avec une seule règle par fichier (à l'heure actuelle).

La syntaxe des règles est la suivante

La règle et ses éléments doivent être entre parenthèses : (règle)

La règle peut être :

  • une simple action (elle s'applique alors à toutes les fenêtres) : (debug) ou
  • une condition : (if (condition) (action)) : si la condition est vraie alors l'action est réalisée par devilspie.

(if (is (application_name) "gThumb") (maximize)) (si l'application qui ouvre la fenêtre est gThumb alors devilspie va maximiser la fenêtre).

La condition peut être :

  • is (identité)
  • contains (contient) ou
  • matches (indique que le second terme de la condition est une expression régulière).

L'objet de la condition peut être :

  • application_name
  • window_name ou
  • window_role

Il peut être utile de combiner des conditions, par exemple traiter toutes les fenêtres de Firefox dont le titre contient ubuntu ; on peut à cet effet utiliser and et or.

(and (is (application_name) "Firefox") (contains (window_name) "Ubuntu"))

De la même façon, on peut faire appliquer plusieurs actions en faisant débuter la liste par begin :

(if (is (application_name) "gThumb") (begin (maximize) (set_workspace 4)))

Quand une action comporte un argument l'ensemble doit être entre parenthèses.

Les actions possibles

(debug)              # Renvoie les informations sur les fenêtres ouvertes

(maximize) (maximize_horizontally) (maximize_vertically)

(minimize)

(fullscreen)         # Plein-écran

(center)             # Centre la fenêtre sur l'écran

(geometry largeur[x]hauteur[+]abcisse[+]ordonnée)

  * (geometry "400x200+0+0") # Placera la fenêtre en 400 de large par 200 de haut en haut à gauche

  * (geometry "400x200")

  * (geometry "+10+10")

(set_workspace 2)    # Déplace la fenêtre vers le bureau n° 2
(set_viewport 2)     # Déplace la fenêtre vers le bureau n° 2 (Compiz)

(change_workspace 2) # Affiche le bureau n°2

(pin)                # Rend la fenêtre présente sur tous les bureaux
(stick)              # Rend la fenêtre présente sur tous les bureaux (Compiz)

(opacity 80)         # Donne une opacité à 80%

(above)              # Met la fenêtre en avant-plan

(focus)              # Met le focus sur la fenêtre

(undecorate)         # Supprime les décorations du gestionnaire de fenêtres (Barre de titre et bordures)

Obtenir le nom d'une application

Pour obtenir le nom exacte d'une application (à utiliser avec application_name) il vous suffit de créer un fichier ~/.devilspie/debug.ds et d'y ajouter : (debug)

Ensuite, lancez "devilspie -d" dans une console et observez les lignes apparaissant à l'écran lorsque vous lancez une application. Exemple pour Firefox : Window Title: 'Mozilla Firefox Beta 1'; Application Name: 'Firefox'; Class: 'Firefox-bin'; Geometry: 1014x692+5+46

La partie à retenir est : "Application Name: 'Firefox'".

pour finir voici un exemple avec gajim qui associe and et or :

(if
  (and (contains (application_name) "gajim.py") (or(contains(window_name) "salon 1") (contains(window_name) "salon 2")))
    (begin
    (set_workspace 1)
    (below)
    (undecorate)
    (skip_pager)
    (skip_tasklist)
    (wintype "utility")
    (geometry "900x450+375+55")
  )
)

Contrairement à ce qui écrit précédemment, il est bien possible d'avoir plusieurs règles dans un seul fichier. Il faut pour cela englober les règles dans un "begin" général.

(begin
  (if (contains (application_name) "toto")
      (begin (set_workspace 1)
             (geometry "+0+0")))
      
  (if (contains (application_name) "titi")
      ...)
      
  ....
)

Si vous désirez avoir une application sur tous les bureaux en utilisant Compiz, utilisez les éléments suivants :

(stick)
(wintype "dock")

Pour Metacity :

(pin)
(wintype "desktop")

Si vous voulez lancer une application sur un bureau précis en utilisant Compiz (X est le numéro du bureau visé) :

(set_viewport X)

Pour Metacity :

(set_workspace X)
si set_viewport ne fonctionne pas il y a une autre solution, il suffit de savoir que compiz n'est en fait qu'un seul bureau exemple : pour un bureau de 800x600 compiz le considère comme un bureau de 3200x600, donc si je veux ouvrir mon application sur le second bureau (geometry "800x600+800+0").
Pour Compiz, une autre solution, sans devilspie mais sur le même principe, est d'utiliser le Gestionnaire de Configuration CompizConfig. Il y a ensuite beaucoup de sections, avec parfois des recoupements, mais pour ce qu'on veut faire ici on peut utiliser (au moins) :
  • "Placer des fenêtres", pour maximiser toutes les fenêtres (sur un netbook par exemple) ou placer une fenêtre sur un viewport particulier (avec des paramètres comme le titre, la classe, l'ID de la fenêtre, à l'instar de devilspie),
  • "Window Rules" pour créer des règles (maximisation, taille, focus) en fonction de ces mêmes paramètres.

Tutos et exemples de configurations de Devilspie (regorgeant d'informations): http://foosel.org/linux/devilspie

—-

Contributeur : epictete, McPeter, ljere, Fenouille84

  • devilspie.1420471691.txt.gz
  • Dernière modification: Le 05/01/2015, 16:28
  • par 109.190.97.30