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 | ||
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émarrage, il 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 a é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 à 0 pixel du haut. La fenêtre n'a 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 fichier, soit 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 fichier. Elle 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]]// |