J'exécute un Matlab
script dans le workspace 1
. Cela génère plusieurs tracés. En attendant, je passe workspace 2
et travaille là-bas. Mon problème est que les complots apparaissent workspace 2
. Est-il possible de verrouiller le logiciel dans un espace de travail. Donc, tout en Matlab
générant les parcelles workspace 1
, je peux travailler workspace 2
sans perturber les parcelles pop-up?
14.04
unity
workspaces
matlab
OH LA LA
la source
la source
xprop WM_CLASS
, puis cliquer sur la fenêtre?) Veuillez également ajouter le WM_CLASS de Matlab.Réponses:
MODIFICATION IMPORTANTE
Ci-dessous une version réécrite du script de la première réponse (ci-dessous). Les différences:
WM_CLASS
et l'espace de travail ciblé sont désormais des arguments pour exécuter le script. N'utilisez que la première ou la deuxième partie (identifiante) duWM_CLASS
(voir ci-dessous: comment utiliser)Lorsque le script démarre, il affiche une notification (exemple
gedit
):Le scénario
Comment utiliser
Le script a besoin des deux
wmctrl
etxdotool
:Copiez le script ci-dessus dans un fichier vide, enregistrez-le sous
lock_towspace.py
De votre application spécifique, découvrez
WM_CLASS
: ouvrez votre application, exécutez dans un terminal:La sortie ressemblera (dans votre cas):
Utilisez la première ou la deuxième partie de la commande pour exécuter le script.
La commande pour exécuter le script est alors:
Dans la commande, la dernière section;
2,2
est l'espace de travail dans lequel vous souhaitez verrouiller l'application (sans espaces: (!) colonne, ligne ), au format "humain"; la première colonne / ligne est1,1
RÉPONSE ANCIENNE:
(deuxième) VERSION D'ESSAI
Le script ci-dessous verrouille une application spécifique sur son espace de travail initial. Si le script est démarré, il détermine sur quel espace de travail se trouve l'application. Toutes les fenêtres supplémentaires produites par l'application seront déplacées vers le même espace de travail en une fraction de seconde.
Le problème de mise au point est résolu en se recentrant automatiquement sur la fenêtre qui a été mise au point avant la production de la fenêtre supplémentaire.
Le scénario
Comment utiliser
Le script a besoin à la fois de
wmctrl
etxdotool
Copiez le script dans un fichier vide, enregistrez-le sous
keep_workspace.py
déterminez le WM_CLASS de votre application en ouvrant l'application, puis ouvrez un terminal et exécutez la commande:
Cliquez ensuite sur la fenêtre de votre application. Copiez la sortie, comme
"sun-awt-X11-XFramePeer", "MATLAB R2015a - academic use"
dans votre cas, et placez-la entre guillemets simples dans la section head du script, comme indiqué.Exécutez le script avec la commande:
Si cela fonctionne comme vous le souhaitez, je vais ajouter une fonction bascule. Bien que cela fonctionne déjà depuis quelques heures sur mon système, il pourrait cependant avoir besoin de quelques ajustements en premier.
Remarques
Bien que vous ne devriez pas le remarquer, le script fait ajouter un peu de charge du processeur au système. Sur mon système âgé, j'ai remarqué une augmentation de 3 à 10%. Si vous aimez la façon dont cela fonctionne, je vais probablement l'ajuster davantage pour réduire la charge.
Le script, en l'état, suppose que les fenêtres secondaires sont de la même classe que la fenêtre principale, comme vous l'avez indiqué dans un commentaire. Avec un changement (très) simple, les fenêtres secondaires peuvent cependant être d'une autre classe.
Explication
Bien que probablement pas très intéressant pour un lecteur moyen, le script fonctionne en calculant en vecteurs. Au démarrage, le script calcule:
wmctrl -d
wmctrl -lG
A partir de là, le script recherche de nouvelles fenêtres de la même application, avec la sortie de
xprop WM_CLASS
, recherche leur position de la même manière que ci-dessus et les déplace vers l'espace de travail "d'origine".Étant donné que la fenêtre nouvellement créée "a volé" le focus de la dernière fenêtre utilisée sur laquelle l'utilisateur travaillait, le focus est ensuite défini sur la fenêtre qui avait le focus auparavant.
la source
application
et définir desworkspace
paramètres. Si vous rencontrez des bugs possibles, merci de le mentionner!WM_CLASS
est identique, le second sera déplacé vers celui que vous avez défini dans la commande.