Comment dire à une application de s'ouvrir dans un espace de travail spécifique?
Plus d'informations:
J'aime avoir mon IDE C ++ dans l'espace de travail 2, mon IDE Java dans l'espace de travail 3 et mon courrier électronique, navigateur et divers dans l'espace de travail quatre. J'utilise également un script shell qui s'exécute lors de la connexion:
#!/bin/bash
gnome-terminal & # WS 1
netbeans-6-9-1 & # WS2
qtcreator-2-0-1 & # WS 3
firefox & # WS 4
thunderbird & # WS 4
Bien sûr, actuellement, tout s'ouvre dans l'espace de travail actuel ... Existe-t-il un moyen pour moi de spécifier dans quel espace de travail chaque commande doit commencer?
Merci d'avance!
Réponses:
Vous pouvez utiliser devilspie pour définir des règles pour les fenêtres sur quel espace de travail.
Voir les documents pour un exemple exact de cela.
Mais MrStatic a aussi une bonne suggestion. Essayez-le d'abord, vous n'aurez peut-être même pas besoin de votre script shell.
Si vous en avez besoin pour être une commande que vous pouvez utiliser dans un script shell, jetez un œil à wmctrl .
la source
J'ai essayé l'
wmctrl
outil et j'ai constaté que la solution la plus simple qui fonctionnait pour moi était de déplacer la fenêtre avec la commande suivante:Notez que les numéros d'espace de travail commencent à 0. Enfin, vous pouvez passer à votre espace de travail préféré avec la commande:
la source
J'utilise cette structure de base dans des scripts pour ouvrir un ensemble spécifique d'applications dans des espaces de travail spécifiques ... l'exemple ouvre mon terminal et le déplace vers l'espace de travail 1 ...
la source
Installer wmctrl
Et créez un script (dans cet exemple thunderbird sur le deuxième espace de travail (
-t 1
)):Pour connaître le nom de votre application sur wmctrl, vous pouvez le voir en tapant sur votre terminal:
Et remplacez-le par le nom correct dans le script.
Soyez prudent avec la lettre majuscule ("Thunderbird" pas "thunderbird") !!
Autre exemple avec Firefox sur l'espace de travail 3D (
-t 2
):Travaillez sur Debain 10 avec Cannelle. Mais devrait fonctionner pour tous
la source
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
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
&
signemais 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.la source