Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
devilspie [Le 24/09/2009, 13:12]
ljere
devilspie [Le 24/01/2024, 14:10] (Version actuelle)
141.227.26.230 [Devil's Pie]
Ligne 1: Ligne 1:
-{{tag>dapper ​personnalisation}}+{{tag>Xenial ​personnalisation}}
  
 ---- ----
 +====== Devil'​s Pie =====
  
-====== ​Devil'​s Pie : ouvrir une fenêtre ​dans le bureau ​======+Devil'​s Pie est un logiciel ((de **Ross Burton**, [[http://​www.burtonini.com|Site de l'​auteur]],​ [[ross@burtonini.com|Contact]])) publié sous licence GNU GPL, 
 +qui permet de détecter les caractéristiques des fenêtres et de leur appliquer des règles de comportement. Il permet donc d'ouvrir une fenêtre ​sur un bureau ​spécifique et / ou de lui définir une option d'​affichage (taille de la fenêtre, transparence,​ focus, minimisation ...). 
 +Une fois paramétré pour un logiciel donné, Devil'​s Pie peut s'​oublier (il doit cependant être lancé en mémoire au démarrage) : on se contente de lancer le programme sur lequel on souhaite une action, et celle-ci s'​applique de façon totalement transparente.
  
-Devil'​s Pie permet d'ouvrir une fenêtre dans le bureau et le format choisi.+Devil'​s Pie marche normalement avec n'importe quel [[:​gestionnaire de fenêtres]] (xfwm, metacity, compiz ...) X11, mais :!: PAS avec [[wayland|Wayland]]. Devilspie ne fonctionne donc pas sous [[gnome-shell|Gnome-Shell]] pour Wayland (il faut alors utiliser l'​extension gnome-shell [[https://​extensions.gnome.org/​extension/​16/​auto-move-windows/​|auto-move-windows]]) :!:.
  
-===== Introduction ​=====+<note Important>​Cet article porte sur **Devilspie**,​ mais il existe également un fork de Devilspie, nommé [[http://​www.nongnu.org/​devilspie2/​|Devilspie2]],​ qui se configure différemment,​ via des scripts Lua simples. __Attention à ne pas les confondre__.</​note>​ 
 +===== Installation ​=====
  
-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.+[[:​tutoriel:​comment_installer_un_paquet|Installez ​le paquet]] **[[apt>​devilspie]]**.
  
-Il s'agit d'un logiciel libre de **Ross Burton** (http://​www.burtonini.com ​, <ross@burtonini.com>) publié sous la license GNU GPL.+Pour que Devilspie soit actif à chaque démarrageil faudra ajouter 
 +<code>devilspie</​code>​ dans la liste des applications [[:​tutoriel:​application_demarrage|démarrées automatiquement]] par votre session.
  
-**Ceci ​est un résumé ​de 2 how-tos absolument remarquables ​(en anglais) :**+===== Configuration manuelle simple ​ ===== 
 +L'​utilisation la plus courante de devilspie, c'est d'​affecter un logiciel à un bureau spécifique,​ ou de positionner sa fenêtre ​(mode "​minimisé",​ centré, ​en haut à gauche, ...). Pour ce faire :
  
-http://ubuntuforums.org/showthread.php?t=75749+  * Créer un [[:fichier_cache|répertoire caché]] **/.devilspie** dans votre //Dossier Personnel// (si vous préférez le terminal : **mkdir ~/.devilspie)**. \\ :!: Si les fichiers de règles ne sont pas placés dans le répertoire **~/.devilspie** mais dans  **/​etc/​devilspie**,​ les règles s'​appliqueront alors à **tous** les utilisateurs. Mais les règles devront alors être manipulées en mode [[:​sudo|administrateur]]. :!: 
 +  * Dans ce répertoire caché, créer avec un éditeur de texte quelconque ([[gedit|gedit]],​ [[mousepad|mousepad]],​ [[nano|nano]],​ ...) 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**. 
 +  * À l'​intérieur du fichier, **on colle les commandes** pour engendrer le comportement souhaité. Voir les exemple ci-dessous.
  
-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.+Gardons l'​exemple ​de Thunderbird pour la suite :
  
 +__**Démarrer Thunderbird sur le bureau 3.**__
  
-http://​wiki.foosel.net/​linux/​devilspie ou http://​live.gnome.org/​DevilsPie+<​file>​ 
 +(if 
 +  (is (application_name) "​Thunderbird"​) 
 +  (set_workspace 3) 
 +
 +</file>
  
-Les fichiers de la doc (/​usr/​share/​doc/​devilspie) sont malheureusement trop succincts pour être d'une quelconque utilité.+__**Démarrer Thunderbird en mode minimisé**__
  
 +<​file>​
 +(if
 +  (is (application_name) "​Thunderbird"​)
 +  (minimize)
 +)
 +</​file>​
 +On peut remplacer (minimize) par (center) si on veut centrer la fenêtre.
  
-===== Pré-requis =====+__**Démarrer Thunderbird avec la fenêtre positionnée en haut à gauche**__
  
-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). À noter que le dépôt Ubuntu 6.06 universe contient la version 0.16 qui été utilisée pour ce résumé (avril 2006).+<​file>​ 
 +(if 
 +  (is (application_name) "​Thunderbird"​) 
 +  (geometry "​+1+0"​) 
 +
 +</​file>​ 
 +Dans cet exemple, ​ "​+1"​ positionne la fenêtre ​à 1 pixel du bord gauche ​de l'​écran,​ et "​+0" ​la positionne à pixel du hautLa fenêtre n'pas de dimension imposée.
  
-===== Lancement du logiciel =====+Pour démarrer en haut et à **droite** de l'​écran : **(geometry "​-1+0"​)**. En **bas** et à **droite** : **(geometry "​-1-1"​)**. En **bas** et à **gauche** : **(geometry "​+0-1"​)**.
  
-On peut lancer le logiciel ponctuellement en tapant « **devilspie** » dans un terminal.+__**Démarrer Thunderbird avec la fenêtre positionnée en haut à gauche __ET__ avec une dimension imposée**__
  
-En revanche, pour qu'il soit lancé automatiquement à chaque session, aller dans : +<​file>​ 
-Système ​Préférences / Sessions / onglet Programmes au démarrage +(if 
-Cliquer sur le bouton « Ajouter » et dans la ligne « Commande de démarrage »taper « devilspie ».+  (is (application_name) "​Thunderbird"​) 
 +  (geometry "​1200x1150+1+0"​) 
 +
 +</file> 
 +Dans cet exemple "​1200x1150"​ est la taille imposée à la fenêtre ; "​+1+0"​ est sa position (en haut à gauche).
  
 +__**Démarrer Thunderbird sur le bureau 3 __ET__ en mode minimisé**__
  
 +<​file>​
 +(if
 +  (is (application_name) "​Thunderbird"​) ​
 +  (begin (set_workspace 3) (minimize) )
 +)
 +</​file>​
  
 +Dans cet exemple, il y a __2 actions__ (bureau 3 ET minimiser), et elles doivent être __encadrées__ par un **(begin ...)**. (begin) est inutile pour une seule action (cf. exemples 1et 2).
  
 +__**Démarrer TOUS les logiciels avec une fenêtre centrée**__
  
 +<​file>​
 +(debug
 +  (center)
 +)
 +</​file>​
  
 +__**ASTUCE**__ : on peut avoir __un seul__ fichier de configuration pour tous ses logiciels, à condition de l'​encadrer par une fonction (begin). Exemple :
 +<​file>​
 +(begin
  
-===== Utilisation/​Configuration =====+  (if 
 +    (is (application_name) "​Thunderbird"​)  
 +    (set_workspace 3) 
 +  )
  
-Il faut d'​abord créer un dossier :+  (if 
 +   (is (application_name) "​gmusicbrowser"​) 
 +      (begin (minimize) (set_workspace 2) ) 
 +  )
  
-- 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]).+  ​(if 
 +    (is (application_name) "​Firefox"​) 
 +    (geometry "​1200x1150+1+0"​) 
 +  ​)
  
-- Soit **/​etc/​devilspie**, ce qui s'​appliquera alors à tous les utilisateurs.+
 +</​file>​ 
 +Ici, Thunderbird et gmusicbrowser sont envoyés sur 2 bureaux différents (et gmusicbrowser est en plus minimisé), Firefox est affiché en haut à gauche avec une fenêtre de taille 1200x1150. Comme le montrent 2 des exemples plus haut, **(begin)** permet soit de regrouper plusieurs programmes dans un seul fichiersoit de regrouper plusieurs options pour un même programme ; on peut tout à fait (cf. l'​exemple avec gmusicbrowser) mettre un begin (fonction1 fonction2) __dans__ un begin (programme1 programme2).
  
-Dans ce dossier on enregistrera les règles qui s'​appliqueront aux fenêtres ​de Gnome sous forme de fichier ​nommés ​(à votre choix arbitraire, exemple : gThumb.ds) nom_de_la_regle.ds avec une seule règle ​par fichier (à l'​heure actuelle).+En fonction ​de votre besoin, créez le nombre ​de fichier ​nécessaire ​(1 fichier ​par programme, ou un fichier ​global) et adaptez le **nom du programme** et le N° de bureau ​(**set_workspace**qu'on trouve dans les exemples précédents.
  
-==== La syntaxe des règles est la suivante ==== 
  
-La règle ​et ses éléments doivent être entre parenthèses ​: **//(règle)//**+__**Une fois un fichier de paramétrage créé, il faut démarrer devilspie pour que cela fonctionne :**__ 
 +  * __ponctuellement__ : ouvrir une invite de commande via alt+F2, ​et y taper **devilspie**. 
 +  * __Paramétrer un démarrage automatique via votre interface graphique__ ​: 
 +     - dans XFCE : "​gestionnaire de paramètre > session et démarrage > démarrage automatique d'​application > ajouter" ​ ;  
 +     - dans Ubuntu gnome : "​Applications > Applications au démarrage > ajouter"​ 
 +     Puis dans la zone "**commande**",​ ajouter la commande "​**devilspie**" ​(Devilspie se lancera alors à chaque démarrage de votre session Ubuntu)
 +  * __Paramétrer un démarrage automatique via le terminal__ : 
 +<​code>​ln -s -f /usr/share/​applications/​devilspie.desktop ~/​.config/​autostart/​devilspie.desktop</​code>​ 
 +Paramétrer votre démarrage automatique en mode graphique ou en mode texte est équivalent,​ mais ne faite pas les 2 méthodes à la fois.
  
-La règle peut être :+__**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 casse : **F**irefox marche, mais pas firefox (sans majuscule). Certains logiciels demandent une majuscule (**F**irefox),​ et d'​autres non (**g**musicbrowser). 
 +  * 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]).
  
-  * une simple action (elle s'applique alors à toutes ​les fenêtres) : **//​(debug)//​** ou+Pour d'autres fonctionnalités,​ voir les chapitres suivants.
  
-  * une condition : **//(if (condition) (action))//​** : si la condition est vraie alors l'​action est réalisé par devilspie.+===== Configuration avancée =====
  
-//(if (is (application_name) "​gThumb"​) (maximize))//​ +==== Commentaires ==== 
-(si l'​application qui ouvre la fenêtre est gThumb alors devilspie va maximiser la fenêtre). +Une ligne de **commentaire** peut-être introduite dans le fichierElle commence ​par un **;**
- +
-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.+
  
 +Par exemple :
 +<​file>​
 +; ceci est un commentaire
 +( if
 +  ( is ( application_name ) "​Thunderbird"​ )
 +  ( set_workspace 3 )
 +)
 +</​file>​
 ==== Les actions possibles ==== ==== Les actions possibles ====
  
Ligne 111: Ligne 166:
 (set_workspace 2)    # Déplace la fenêtre vers le bureau n° 2 (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) (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 (pin)                # Rend la fenêtre présente sur tous les bureaux
Ligne 123: Ligne 180:
 (undecorate) ​        # Supprime les décorations du gestionnaire de fenêtres (Barre de titre et bordures) (undecorate) ​        # Supprime les décorations du gestionnaire de fenêtres (Barre de titre et bordures)
 </​file>​ </​file>​
 +
 +Par exemple faire apparaître [[gedit|Gedit]] sur TOUS les bureaux (option **pin** - le contenu de chaque fenêtre sera identique aux autres) :
 +<​file>​
 +; Duplique la fenêtre Gedit sur chaque bureau
 +( if
 +  ( is ( application_name ) "​Gedit"​ )
 +  ( pin )
 +)
 +</​file>​
 +==== 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 ==== ==== Obtenir le nom d'une application ====
Ligne 130: Ligne 227:
  
 Ensuite, lancez "​devilspie -d" dans une console et observez les lignes apparaissant à l'​écran lorsque vous lancez une application. Exemple pour Firefox : Ensuite, lancez "​devilspie -d" dans une console et observez les lignes apparaissant à l'​écran lorsque vous lancez une application. Exemple pour Firefox :
-''​Window Title: 'Forum :: Voir le sujet - Devil'​s Pie ou l'art de manipuler ses fen?tres - Mozilla Firefox Beta 1'; Application Name: '​Firefox';​ Class: '​Firefox-bin';​ Geometry: 1014x692+5+46''​+''​Window Title: '​Mozilla Firefox Beta 1'; Application Name: '​Firefox';​ Class: '​Firefox-bin';​ Geometry: 1014x692+5+46''​
  
 La partie à retenir est : "​Application Name: '​Firefox'"​. La partie à retenir est : "​Application Name: '​Firefox'"​.
  
-pour finir voici un exemple avec gajim qui associe and et or:+pour finir voici un exemple avec gajim qui associe and et or :
  
 <​file>​ <​file>​
 (if (if
   (and (contains (application_name) "​gajim.py"​) (or(contains(window_name) "salon 1") (contains(window_name) "salon 2")))   (and (contains (application_name) "​gajim.py"​) (or(contains(window_name) "salon 1") (contains(window_name) "salon 2")))
-    ​(begin+   (begin
     (set_workspace 1)     (set_workspace 1)
     (below)     (below)
Ligne 153: Ligne 250:
 ===== Astuces ===== ===== Astuces =====
  
-Si vous désirez avoir une application sur tous les bureaux en utilisant Compiz, utilisez les éléments ​suivant ​:+Si vous désirez avoir une application sur tous les bureaux en utilisant Compiz, utilisez les éléments ​suivants ​:
 <​file>​ <​file>​
 (stick) (stick)
Ligne 170: Ligne 267:
 Pour Metacity : Pour Metacity :
 <​file>​ <​file>​
-(workspace ​X)+(set_workspace ​X)
 </​file>​ </​file>​
  
-<note tip>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:+<note tip>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"​).</​note>​ 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"​).</​note>​
 +
 +
 + 
 +===== Liens =====
 +  * [[http://​live.gnome.org/​DevilsPie|une présentation détaillée de Devilspie]]
 +  * [[http://​www.nongnu.org/​devilspie2/​|Le site officiel de Devilspie2]] (devilspie 2 est dans les dépôts, mais n'est __pas__ la version décrite dans cette page d'​aide).
 +
 ---- ----
  
-//​Contributeur : [[utilisateurs:​epictete]],​ [[utilisateurs:​mcpeter|McPeter]],​ [[utilisateurs:​ljere|ljere]]//​+//​Contributeur : [[utilisateurs:​epictete]],​ [[utilisateurs:​mcpeter|McPeter]],​ [[utilisateurs:​ljere|ljere]], [[utilisateurs:​Fenouille84]]//
  • devilspie.1253790759.txt.gz
  • Dernière modification: Le 18/04/2011, 14:55
  • (modification externe)