Je suis assez certain que c'est impossible à faire. La raison semble être que les environnements de fenêtrage comme GNOME s'attendent à ce que le logiciel gère cela, et les fabricants de logiciels s'attendent à ce que les environnements de fenêtrage le gèrent.
Devilspie est une bonne idée, mais il fait correspondre les modèles (c'est-à-dire si le nom == 'google-chrome'). Que se passe-t-il donc si j'ouvre deux navigateurs? Ils sont tous les deux déplacés vers le même espace de travail? J'ai 6x3 = 18 espaces de travail, chacun avec une instance particulière de chrome. Cela aiderait si je pouvais renommer ces programmes (c'est-à-dire 'google-chrome1', 'google-chrome2' ...) mais je ne trouve pas de moyen de le faire. Nous devons donc utiliser wmctrl.
wmctrl est un peu meilleur b / c en plus d'utiliser des titres de fenêtre, vous pouvez également utiliser des ID de fenêtre ou simplement utiliser la fenêtre actuellement en surbrillance. Les identifiants de fenêtre sont difficiles à obtenir car ils ne sont pas immédiatement générés. Voir ci-dessous
gedit 1.txt
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1
mais le contrôle n'est pas renvoyé à la ligne de commande jusqu'à ce qu'APRÈS gedit se termine. Tout ce que nous devons faire pour contourner ce problème est de mettre un &
signe
gedit 1.txt &
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1
mais maintenant le contrôle est, 99,999% du temps, retourné à la ligne de commande AVANT que les gestionnaires de fenêtres ne lancent la fenêtre et il n'y a aucun moyen de trouver l'ID de la fenêtre. Il faut mettre en place une technique de bouclage très complexe pour tester pour voir si de nouvelles fenêtres ont été créées, et pour deviner si c'est la fenêtre que nous recherchons.
La vérification de la fenêtre active via l'indicateur :ACTIVE:
a le même problème, il n'attend pas que le programme se termine.
wmctrl
me semble être un programme très bizarre. Il semble qu'il ait été conçu pour les personnes sans souris ou incapables de faire glisser physiquement leurs programmes sur les espaces de travail.