Ceci est une ancienne révision du document !



Devil's Pie est un logiciel qui permet de détecter les caractéristiques des fenêtres et de leur appliquer des règles de comportement. Il permet donc d'envoyer une fenêtre qu'on ouvre dans un bureau spécifique et / ou de lui définir une option d'affichage (taille de la fenêtre, transparence, focus, …).

Il marche normalement avec tous les gestionnaires de fenêtres (xfwm, metacity, compiz …).

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

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 de l'Ubuntu store (ou de Synaptic). Le dépôt "Universe" doit être activé.

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

sudo apt-get install devilspie

ou

sudo apt-get install gdevilspie

si vous voulez la version avec interface graphique.

L'utilisation la plus courante de devilspie, c'est d'affecter un logiciel à un bureau spécifique, ou de le démarrer en mode "minimisé". Pour ce faire :

  • installer devilspie par la commande sudo apt install devilspie (ou passer par la logithèque).
  • Créer un répertoire caché dans le répertoire utilisateur par défaut (/Home/vous/), appelé .devilspie (pour voir les répertoires cachés : ctrl + H).
  • Dans le répertoire caché, créer un fichier par logiciel qu'on souhaite manipuler. Le fichier est un fichier texte avec un extension .ds Le nom n'a pas d'importance, mais il est logique de donner le nom du programme manipulé. Par exemple Thunderbird.ds.
  • A l'intérieur du fichier, on colle les commandes pour engendrer le comportement souhaité. Voir les exemple ci-dessous.

Gardons l'exemple de Thunderbird pour la suite :

Démarrer Thunderbird sur le bureau 3.

; generated_rule Thunderbird
( if 
  ( begin ( contains ( application_name ) "Thunderbird" ) ) 
  ( begin ( set_workspace 3 ) ( println "match" ) )
)

Démarrer Thunderbird en mode minimisé

; generated_rule Thunderbird
( if 
  ( begin ( contains ( application_name ) "Thunderbird" ) ) 
  ( begin ( minimize ) ( println "match" ) )
)

Démarrer Thunderbird sur le bureau 3 ET en mode minimisé

; generated_rule Thunderbird
( if 
  ( begin ( contains ( application_name ) "Thunderbird" ) ) 
  ( begin ( set_workspace 3 ) ( minimize ) ( println "match" ) )
)

Créez le nombre de fichier nécessaire (1 par programme) et adaptez le nom du programme et le N° de bureau (set_workspace) qu'on y trouve en fonction de votre besoin.

Une fois un fichier de paramétrage créé pour chaque programme qu'on souhaite manipuler, il faut démarrer devilspie pour que cela fonctionne :

  • ponctuellement : ouvrir une invite de commande via alt+F2, et y taper devilspie.
  • Démarrage automatique : gestionnaire de paramètre > Session et démarrage > ajouter une commande devilspie (Devilspie se lancera alors à chaque démarrage de votre session Ubuntu).

3 remarques importantes :

  • Il ne faut pas faire de faute dans le nom du logiciel, ou cela ne marchera pas.
  • Les noms de programmes sont sensibles à la case : Firefox marche, mais pas firefox (sans majuscule).
  • un fois lancé, devilspie ne prend plus en compte les modifications ou ajouts des fichiers .ds. Pour que ces modifications / ajouts prennent effet, il faut donc redémarrer devilspie (rédémarrage de session, ou pour les adeptes du terminal : pkill devilspie [tue le processus], suivi d'un devilspie [redémarre le processus]).

Pour d'autres fonctionnalités qu'une minimisation ou placer un programme sur un bureau précis, voir les chapitres suivants.

Pour la version graphique gdevilspie, vous la trouvez dans votre menu, section accessoire.

Si le répertoire pour les fichiers de règle n'est pas ~/.devilspie mais /etc/devilspie, les règles s'appliqueront alors à tous les utilisateurs. Mais les règles devront alors être manipulées en mode super-utilisateur (root).

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)

Par exemple faire apparaître Gedit sur TOUS les bureaux (option pin - le contenu de chaque fenêtre sera identique aux autres) :

; generated_rule Gedit
( if 
  ( begin ( contains ( application_name ) "Gedit" ) ) 
  ( begin ( pin ) ( println "match" ) )
)

Syntaxe des règles

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.

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

Il est 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").

Si l'application ne se lance pas, Appuyez sur ALT+F2, ouvrez avec les droits d'administrateur le fichier: /usr/bin/gdevilspie. Cherchez a ligne contenant "self.UpdateAutostartStatus()" et commentez la en tapant un dièse en début de ligne (ce qui donne "# self.UpdateAutostartStatus()" sans les guillemets). Enregistrer le fichier et relancer gdevilpsie. (Merci à hrvooje de la communauté de Linux Mint)

Un changement de paramétrage n'est pris en compte qu'après un redémarrage de devilspie. Le plus simple est de redémarrer la session.

  • devilspie.1477729015.txt.gz
  • Dernière modification: Le 29/10/2016, 10:16
  • par christophe c