Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/11/2016, à 12:11

yeb

Assigner un bureau à un logiciel [Résolu]

Bonjour, je viens de changer d'ordi et j'en ai profité pour installer xubuntu.
J'en suis tout à fait satisfait à part pour une chose : j'aimerais pouvoir assigner à chaque logiciel que j'utilise un bureau particulier.
Par exemple, j'aimerais que quand je clique sur un fichier texte dans le navigateur, il s'ouvre dans mon bureau "Texte" et pas dans le bureau contenant le navigateur.
Il faudra aussi que les fenêtres soient dans le bureau lors du redémarrage de l'ordi (lors de la restauration de session).
Kubuntu faisait ça très bien mais je n'ai pas encore trouvé comment faire avec xubuntu.

Merci d'avance.

Dernière modification par yeb (Le 11/12/2016, à 18:25)

Hors ligne

#2 Le 29/11/2016, à 13:59

Christophe C

Re : Assigner un bureau à un logiciel [Résolu]

Facile : devilspie

C'est assez simple. Si tu n'y arrives pas, n'hésite pas à demander.

Dernière modification par Christophe C (Le 30/11/2016, à 14:20)


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

Hors ligne

#3 Le 30/11/2016, à 16:44

yeb

Re : Assigner un bureau à un logiciel [Résolu]

Génial, merci Christophe, ça va me changer la vie (en mieux).

Yves (du bureau Email mais plus pour longtemps).

Hors ligne

#4 Le 04/12/2016, à 22:22

yeb

Re : Assigner un bureau à un logiciel [Résolu]

Bon ça marche pas mal mais il reste quelques détails agaçants :
- si j'ouvre un fichier géré par firefox alors la fenêtre de firefox se retrouve sur mon bureau "gestion de fichiers" ;
- quand j'ouvre un fichier .tex, associé chez moi à texworks, la partie édition reste sur mon bureau "gestion de fichiers" (bien que devilspie -d indique "Changing workspace ...") et la partie visualisation pdf est bien envoyée vers un autre bureau ; mais quand je relance devilspie après avoir ouvert texworks, les deux fenêtres changent bien de bureau !

J'ai aussi essayé d'installer devilspie2 mais le résultat est le même.

Hors ligne

#5 Le 05/12/2016, à 15:08

Christophe C

Re : Assigner un bureau à un logiciel [Résolu]

Tu as peut-être créé trop de règles et elles se contredisent ? Il existe des options AND et OR qui permettent d'affiner. C'est décrit dans la doc.

Tu peux par exemple sélectionner une appli et/ou un titre de fenêtre. Par exemple une fenêtre (window_name) avec un nom spécial, qui ne sera pas gérée comme le logiciel. Exemple (and (contains (application_name) "gajim.py") (or(contains(window_name) "salon 1") (contains(window_name) "salon 2"))).

mais là on rentre dans des trucs qui commencent à me dépasser. Je reste beaucoup plus simple : j'envoie thunderbird sur un bureau, j'affiche firefox en haut à gauche, et ça me va bien.


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

Hors ligne

#6 Le 05/12/2016, à 16:23

erresse

Re : Assigner un bureau à un logiciel [Résolu]

yeb, tu peux peut-être montrer une ou deux règles que tu as écrites et qui ne fonctionnent pas comme tu veux ?


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#7 Le 08/12/2016, à 11:01

yeb

Re : Assigner un bureau à un logiciel [Résolu]

Merci Christophe, en effet window_class marche mieux que application_name dans le cas de Texworks (car il ouvre deux applications, l'une avec pour nom "TeXWorks" et l'autre "Texworks", bref.)

Voici quelques règles :

; generated_rule firefox
( if 
( begin 
( is ( application_name ) "Firefox" )
) 
( begin 
( set_workspace 1 )
( println "match" )
)
)
; generated_rule texworks
( if 
( begin 
( is ( window_class ) "Texworks" )
) 
( begin 
( set_workspace 2 )
( println "match" )
)
)

Une règle pour devilspie2 :

-- Envoyer Texworks sur le bureau 2.
if (get_window_class()=="Texworks") then
   set_window_workspace(2);
end

Ces règles fonctionnent bien quand je relance devilspie dans un terminal après que mes fenêtres soient déjà ouvertes.
Si devilspie est déjà démarré et que j'ouvre texworks, une seule des deux fenêtres est déplacée (peut-être que ça va trop vite pour lui...).

Hors ligne

#8 Le 08/12/2016, à 13:03

erresse

Re : Assigner un bureau à un logiciel [Résolu]

À la lecture de la doc sur "devilspie", j'avais cru comprendre que "(set_workspace 2)" déplaçait la fenêtre sur l'espace de travail 2, mais que pour afficher cet espace de travail 2, il fallait une commande "(change_workspace 2)".
Pour expliquer que l'affichage ne bascule pas automatiquement vers l'espace de travail 2...
Mais dans les exemples que tu donnes, je trouve des commandes inconnues de la doc, peut-être faisant partie de la nouvelle version "devilspie2" : println, match, get_windows... Du coup je pense que mon idée ne vaut pas trois sous. roll
J'espère que Christophe C pourra t'aider.


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#9 Le 08/12/2016, à 14:11

Christophe C

Re : Assigner un bureau à un logiciel [Résolu]

Je ne suis pas un expert de devilspie.

Commençons par simplifier le code :

(if 
  (is (application_name) "Firefox")
  (set_workspace 1)
)

et pour textworks, je ferais juste un

(if 
  (is (application_name) "Texworks")
  (set_workspace 2)
)

Avec cela, normalement Fx part sur le bureau1 et Textworks sur le B2.

Si le fichier textworks ne marche pas, cela veut dire que le nom du programme lu par devilspie est autre chose que Texworks. Sans majuscule, peut-être ? Il y a une technique pour récupérer ce nom avec (debug) (voir la doc).
Je pense que cela marche quand tu demande le nom de la fenêtre car le nom fenêtre récupéré est différent du nom programme, et là il est conforme à ce que tu as écrit. Mais c'est un simple contournement. Mieux vaux revenir au plus simple : le nom système du programme.
Le nom de fenêtre, c'est surtout quand on veut agir différemment sur une fenêtre particulière par rapport aux règles génériques du logiciel (genre firefox sur le B2, sauf les fenêtre "wikipedia" sur le B3).

Dernière modification par Christophe C (Le 08/12/2016, à 14:15)


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

Hors ligne

#10 Le 10/12/2016, à 14:20

yeb

Re : Assigner un bureau à un logiciel [Résolu]

Merci à vous mais la problématique reste la même : devilspie fait parfaitement (enfin presque) ce que je lui demande quand je le redémarre après que mes fenêtres soient déjà ouvertes : il les range là où il faut.
Par contre, si devilspie est déjà démarré (dans un terminal avec devilspie -d), seul une des deux fenêtres de texworks est déplacée... alors que la sortie du logiciel indique "Changing workspace to 2" pour chacune des deux fenêtres (ce qui confirme que la règle est bien comprise) !
On dirait que devilspie n'est pas assez "rapide" pour gérer deux fenêtres qui s'ouvrent en simultané.
Tant pis, j'essaierai d'aller voir du côté de wmctrl quand j'aurai plus de temps (ou je changerai d'éditeur LaTeX...).

Hors ligne

#11 Le 10/12/2016, à 20:42

Christophe C

Re : Assigner un bureau à un logiciel [Résolu]

Bon, alors en cas de conflit entre les démarrages un contournement possible : tu démarres l'un des programmes avec un léger décalage. Dans ta gestion du démarrage automatique des programmes, tu remplaces le nom de ton programme (devilspie, par exemple) par un mini script d'attente :
sh -c " sleep 1; devilspie "

Le sleep 1 veut dire que que tu demandes à devilspie d'attendre 1 seconde avant de se lancer. Si cela ne marche pas, tu passes à 2 secondes, puis 3 ...

Mais à mon avis c'est bien devilspie que tu doit démarrer en 1er, et les fenêtre textworks un peu plus tard. Bon, essaie les 2, tu verras bien smile.

Dernière modification par Christophe C (Le 10/12/2016, à 20:43)


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

Hors ligne

#12 Le 11/12/2016, à 18:24

yeb

Re : Assigner un bureau à un logiciel [Résolu]

C'est bon, j'ai trouvé ce qu'il me faut : j'ai fait en sorte que mes fichiers LaTeX s'ouvrent avec le script suivant :

#!/bin/sh
texworks $1 &
wmctrl -r texworks -t 2

Par ailleurs, en tapant l'instruction suivante dans un terminal :

xfconf-query -c xfwm4 -p /general/activate_action -s switch

il n'y a plus de déplacement de fenêtre (exemple : quand un lien dans un message lu dans thunderbird ouvrait Firefox, la fenêtre de Firefox se retrouvait sur le bureau de Thunderbird).
Merci de m'avoir parlé de devilspie, qui fait quand le gros du boulot (au démarrage).

Dernière modification par yeb (Le 13/12/2016, à 11:25)

Hors ligne

#13 Le 12/12/2016, à 14:03

Christophe C

Re : Assigner un bureau à un logiciel [Résolu]

Oui, j'aurais du te parler de wmctrl. Mais c'est moins souple. Par contre si cela t'ajoute ce qui te manquait dans devilspie, c'est parfait smile


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

Hors ligne