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 17/04/2015, 18:27] 176.186.233.180 [Lancement du logiciel] |
devilspie [Le 24/01/2024, 14:10] (Version actuelle) 141.227.26.230 [Devil's Pie] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | {{tag>Precise 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 ===== | + | |
- | + | ||
- | 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. | + | |
- | + | ||
- | <note warning>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 ;-)</note> | + | |
- | + | ||
- | 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 : [[http://www.debian-fr.org/devil-s-pie-ou-l-art-de-manipuler-ses-fenetres-t1662.html|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/]]) | + | |
- | + | ||
- | ===== Pré-requis ===== | + | |
- | + | ||
- | 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). | + | |
+ | <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 ===== | ===== Installation ===== | ||
- | Il est possible d'installer Devil's pie à partir du gestionnaire de paquet Synaptic, après avoir [[synaptic#ce_que_synaptic_est_capable_de_faire|activé le dépôt "Universe" ]]. | + | [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt>devilspie]]**. |
- | Alternativement, une installation en ligne de commande est possible en rentrant dans un terminal la commande suivante : | + | Pour que Devilspie soit actif à chaque démarrage, il faudra ajouter |
- | <code> | + | <code>devilspie</code> dans la liste des applications [[:tutoriel:application_demarrage|démarrées automatiquement]] par votre session. |
- | sudo apt-get install devilspie | + | |
- | </code> | + | |
- | Pour installer l'interface graphique dont il est fait mention plus haut, il faut télécharger le fichier tar.bz2 disponible | + | ===== Configuration manuelle simple ===== |
- | sur cette page: [[http://code.google.com/p/gdevilspie/downloads/list]]. | + | 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 : |
- | Une fois le fichier sur votre ordinateur, il suffit [[archivage#archiver_et_extraire_une_archive|d'en extraire le contenu ]] | + | * 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]]. :!: |
- | et d' exécuter le fichier "gdevilspie" qui se trouve dans le dossier "gdevilspie-0.5". | + | * 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. | ||
- | Il est possible d'installer l'interface grâce à un script d'installation. Dans un terminal, lancez les commandes suivantes : | + | Gardons l'exemple de Thunderbird pour la suite : |
- | <code> | + | __**Démarrer Thunderbird sur le bureau 3.**__ |
- | cd /répertoire_ou_se_trouve_gdevilspie-0.5 | + | <file> |
+ | (if | ||
+ | (is (application_name) "Thunderbird") | ||
+ | (set_workspace 3) | ||
+ | ) | ||
+ | </file> | ||
- | sudo python setup.py install | + | __**Démarrer Thunderbird en mode minimisé**__ |
- | </code> | + | <file> |
+ | (if | ||
+ | (is (application_name) "Thunderbird") | ||
+ | (minimize) | ||
+ | ) | ||
+ | </file> | ||
+ | On peut remplacer (minimize) par (center) si on veut centrer la fenêtre. | ||
- | Il vous est désormais possible de lancer l'interface graphique en tapant, dans un terminal : | + | __**Démarrer Thunderbird avec la fenêtre positionnée en haut à gauche**__ |
- | <code> | + | <file> |
- | gdevilspie | + | (if |
- | </code> | + | (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")**. En **bas** et à **droite** : **(geometry "-1-1")**. En **bas** et à **gauche** : **(geometry "+0-1")**. | ||
- | ===== Lancement du logiciel ===== | + | __**Démarrer Thunderbird avec la fenêtre positionnée en haut à gauche __ET__ avec une dimension imposée**__ |
- | On peut lancer le logiciel ponctuellement en tapant « **devilspie** » dans un terminal. | + | <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). | ||
- | En revanche, pour qu'il soit lancé automatiquement à chaque session, aller dans : | + | __**Démarrer Thunderbird sur le bureau 3 __ET__ en mode minimisé**__ |
- | 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 ». | + | |
- | <note> | + | <file> |
- | 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". | + | (if |
- | </note> | + | (is (application_name) "Thunderbird") |
+ | (begin (set_workspace 3) (minimize) ) | ||
+ | ) | ||
+ | </file> | ||
- | <note help>Si l'application ne se lance pas, Appuyez sur ALT+F2, ouvrez avec les droits d'administrateur le fichier: /usr/bin/gdevispie. 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 à [[http://community.linuxmint.com/user/view/73879|hrvooje]] de la communauté de Linux Mint)</note> | + | 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). |
- | ===== Utilisation/Configuration ===== | + | |
- | Il faut d'abord créer un dossier : | + | __**Démarrer TOUS les logiciels avec une fenêtre centrée**__ |
- | - 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]). | + | <file> |
+ | (debug | ||
+ | (center) | ||
+ | ) | ||
+ | </file> | ||
- | - Soit **/etc/devilspie**, ce qui s'appliquera alors à tous les utilisateurs. | + | __**ASTUCE**__ : on peut avoir __un seul__ fichier de configuration pour tous ses logiciels, à condition de l'encadrer par une fonction (begin). Exemple : |
+ | <file> | ||
+ | (begin | ||
- | 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). | + | (if |
+ | (is (application_name) "Thunderbird") | ||
+ | (set_workspace 3) | ||
+ | ) | ||
- | ==== La syntaxe des règles est la suivante ==== | + | (if |
+ | (is (application_name) "gmusicbrowser") | ||
+ | (begin (minimize) (set_workspace 2) ) | ||
+ | ) | ||
- | La règle et ses éléments doivent être entre parenthèses : **//(règle)//** | + | (if |
+ | (is (application_name) "Firefox") | ||
+ | (geometry "1200x1150+1+0") | ||
+ | ) | ||
- | La règle peut être : | + | ) |
+ | </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). | ||
- | * une simple action (elle s'applique alors à toutes les fenêtres) : **//(debug)//** ou | + | 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 condition : **//(if (condition) (action))//** : si la condition est vraie alors l'action est réalisée par devilspie. | ||
- | //(if (is (application_name) "gThumb") (maximize))// | + | __**Une fois un fichier de paramétrage créé, il faut démarrer devilspie pour que cela fonctionne :**__ |
- | (si l'application qui ouvre la fenêtre est gThumb alors devilspie va maximiser la fenêtre). | + | * __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 condition 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]). | ||
- | * **is** (identité) | + | Pour d'autres fonctionnalités, voir les chapitres suivants. |
- | * **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 : | + | ===== Configuration avancée ===== |
- | * **application_name** | + | ==== Commentaires ==== |
- | * **window_name** ou | + | Une ligne de **commentaire** peut-être introduite dans le fichier. Elle commence par un **;** |
- | * **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 159: | 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 175: | Ligne 236: | ||
(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 188: | Ligne 249: | ||
===== Astuces ===== | ===== Astuces ===== | ||
- | |||
- | 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. | ||
- | <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 : | Si vous désirez avoir une application sur tous les bureaux en utilisant Compiz, utilisez les éléments suivants : | ||
Ligne 227: | Ligne 274: | ||
- | <note tip>Pour Compiz, une autre solution, sans devilspie mais sur le même principe, est d'utiliser le [[http://doc.ubuntu-fr.org/compizconfig-settings-manager|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. | ||
- | </note> | ||
- | |||
===== Liens ===== | ===== 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). | ||
- | Tutos et exemples de configurations de Devilspie (regorgeant d'informations): http://foosel.org/linux/devilspie | ||
- | |||
---- | ---- | ||
- | |||
//Contributeur : [[utilisateurs:epictete]], [[utilisateurs:mcpeter|McPeter]], [[utilisateurs:ljere|ljere]], [[utilisateurs:Fenouille84]]// | //Contributeur : [[utilisateurs:epictete]], [[utilisateurs:mcpeter|McPeter]], [[utilisateurs:ljere|ljere]], [[utilisateurs:Fenouille84]]// |