Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
devilspie [Le 14/08/2018, 08:10] 78.222.221.86 [Installation] |
devilspie [Le 28/10/2018, 00:25] 88.182.40.86 [Liens] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | {{tag>Xenial personnalisation}} | ||
- | ---- | ||
- | ====== Devil's Pie ===== | ||
- | 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 marche normalement avec n'importe quel [[:gestionnaire de fenêtres]] (xfwm, metacity, compiz ...). | ||
- | <note>Il existe une version avec interface graphique pour créer les règles de devilspie : [[http://code.google.com/p/gdevilspie/|gdevilspie]] | ||
- | À noter également qu'un fork de Devilspie, nommé [[http://www.gusnan.se/devilspie2/|Devilspie2]] existe et qu'il se configure différemment, via des scripts Lua simples.</note> | ||
- | <note Important>Cette page décrit les règles de paramétrage à **partir de la version 0.13**. Auparavant le paramétrage était totalement différent. | ||
- | Devilspie n'est PAS compatible avec [[wayland|Wayland]] (session par défaut de Ubuntu 17.10, mais pas de la 18.04). Il a besoin d'une session [[xorg|X.org]]</note> | ||
- | ===== Installation ===== | ||
- | [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt>devilspie]]** ou si vous voulez la version avec interface graphique **[[apt>gdevilspie]]**. | ||
- | Pour que Devilspie soit actif à chaque démarrage, il faudra ajouter | ||
- | <code>devilspie</code> aux applications [[:tutoriel:application_demarrage|démarrées automatiquement]] à votre session. | ||
- | ===== 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 : | ||
- | * Créer un [[:fichier_cache|répertoire caché]] **/.devilspie** dans votre //Dossier Personnel//. \\ :!: 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 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. | ||
- | Gardons l'exemple de Thunderbird pour la suite : | ||
- | __**Démarrer Thunderbird sur le bureau 3.**__ | ||
- | <file> | ||
- | (if | ||
- | (is (application_name) "Thunderbird") | ||
- | (set_workspace 3) | ||
- | ) | ||
- | </file> | ||
- | |||
- | __**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. | ||
- | |||
- | __**Démarrer Thunderbird avec la fenêtre positionnée en haut à gauche**__ | ||
- | |||
- | <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 à 0 pixel du haut. La fenêtre n'a pas de dimension imposée. | ||
- | |||
- | Pour démarrer en haut et à **droite** de l'écran : **(geometry "-1+0")** | ||
- | |||
- | __**Démarrer Thunderbird avec la fenêtre positionnée en haut à gauche __ET__ avec une dimension imposée**__ | ||
- | |||
- | <file> | ||
- | (if | ||
- | (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 | ||
- | |||
- | (if | ||
- | (is (application_name) "Thunderbird") | ||
- | (set_workspace 3) | ||
- | ) | ||
- | |||
- | (if | ||
- | (is (application_name) "gmusicbrowser") | ||
- | (set_workspace 4) | ||
- | ) | ||
- | |||
- | (if | ||
- | (is (application_name) "Firefox") | ||
- | (geometry "1200x1150+1+0") | ||
- | ) | ||
- | |||
- | ) | ||
- | </file> | ||
- | Ici, Thunderbird et gmusicbrowser sont envoyés sur 2 bureaux différents, Firefox est affiché en haut à gauche avec une fenêtre de taille 1200x1150. Comme le montre 2 des exemples plus haut, **(begin)** permet soit de regrouper plusieurs programmes dans un seul fichier, soit de regrouper plusieurs options pour un même programme. | ||
- | |||
- | 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. | ||
- | |||
- | 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**. | ||
- | * __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 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]). | ||
- | |||
- | Pour d'autres fonctionnalités, voir les chapitres suivants. | ||
- | |||
- | ===== Configuration avancée ===== | ||
- | |||
- | ==== Commentaires ==== | ||
- | Une ligne de **commentaire** peut-être introduite dans le fichier. Elle commence par un **;** | ||
- | |||
- | Par exemple : | ||
- | <file> | ||
- | ; ceci est un commentaire | ||
- | ( if | ||
- | ( is ( application_name ) "Thunderbird" ) | ||
- | ( set_workspace 3 ) | ||
- | ) | ||
- | </file> | ||
- | ==== Les actions possibles ==== | ||
- | |||
- | <file> | ||
- | (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) | ||
- | </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> | ||
- | |||
- | Placer systématiquement [[firefox|Firefox]] en haut à gauche ("+0+0"), avec une largeur de 1300 px et une hauteur de 1150 px ("1200x1150") : | ||
- | <file> | ||
- | ; Positionne les fenêtres Firefox en haut à gauche et avec une certaine taille | ||
- | ( if | ||
- | ( is ( application_name ) "Firefox" ) | ||
- | (geometry "1200x1150+0+0") | ||
- | ) | ||
- | </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 ==== | ||
- | |||
- | 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 : | ||
- | |||
- | <file> | ||
- | (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") | ||
- | ) | ||
- | ) | ||
- | </file> | ||
- | |||
- | ===== Astuces ===== | ||
- | |||
- | 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. | ||
- | <file> | ||
- | (begin | ||
- | (if (contains (application_name) "toto") | ||
- | (begin (set_workspace 1) | ||
- | (geometry "+0+0"))) | ||
- | | ||
- | (if (contains (application_name) "titi") | ||
- | ...) | ||
- | | ||
- | .... | ||
- | ) | ||
- | </file> | ||
- | |||
- | Si vous désirez avoir une application sur tous les bureaux en utilisant Compiz, utilisez les éléments suivants : | ||
- | <file> | ||
- | (stick) | ||
- | (wintype "dock") | ||
- | </file> | ||
- | Pour Metacity : | ||
- | <file> | ||
- | (pin) | ||
- | (wintype "desktop") | ||
- | </file> | ||
- | |||
- | Si vous voulez lancer une application sur un bureau précis en utilisant Compiz (__**X** est le numéro du bureau visé__) : | ||
- | <file> | ||
- | (set_viewport X) | ||
- | </file> | ||
- | Pour Metacity : | ||
- | <file> | ||
- | (set_workspace X) | ||
- | </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 : | ||
- | 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> | ||
- | |||
- | ===== Problèmes connus ===== | ||
- | |||
- | Si l'application graphique ne se lance pas, [[:tutoriel:comment_modifier_un_fichier|ouvrez]] avec les [[:sudo|droits d'administrateur]] le fichier **/usr/bin/gdevilspie**.\\ | ||
- | Commentez ((ajouter un # au début de ligne)) la ligne suivante: | ||
- | <file># self.UpdateAutostartStatus()</file> | ||
- | Enregistrer le fichier et relancer gdevilpsie. (Merci à [[http://community.linuxmint.com/user/view/73879|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. | ||
===== Liens ===== | ===== Liens ===== |