Ejecuto un Matlab
script en el workspace 1
. Esto genera varias parcelas. Mientras tanto me cambio workspace 2
y trabajo allí. Mi problema es que las tramas están apareciendo workspace 2
. ¿Es posible bloquear el software en un espacio de trabajo? Entonces, mientras Matlab
genera las parcelas workspace 1
, ¿puedo trabajar workspace 2
sin la interrupción de las parcelas emergentes?
14.04
unity
workspaces
matlab
OH LA LA
fuente
fuente
xprop WM_CLASS
y luego hacer clic en la ventana?) Agregue también el WM_CLASS de Matlab.Respuestas:
EDICION IMPORTANTE
A continuación, una versión reescrita del guión de la primera respuesta (a continuación). Las diferencias:
WM_CLASS
y el espacio de trabajo objetivo ahora son argumentos para ejecutar el script. Solo use la primera o la segunda parte (identificación) de laWM_CLASS
(vea más abajo: cómo usar)Cuando se inicia el script, muestra una notificación (ejemplo
gedit
):La secuencia de comandos
Cómo utilizar
El script necesita ambos
wmctrl
yxdotool
:Copie el script anterior en un archivo vacío, guárdelo como
lock_towspace.py
De su aplicación específica, descubra
WM_CLASS
: abra su aplicación, ejecute en una terminal:La salida se verá así (en su caso):
Utilice la primera o la segunda parte del comando para ejecutar el script.
El comando para ejecutar el script es:
En el comando, la última sección;
2,2
es el espacio de trabajo donde desea bloquear la aplicación (sin espacios: (!) columna, fila ), en formato "humano"; la primera columna / fila es1,1
RESPUESTA ACTUALIZADA:
(segundo) VERSIÓN DE PRUEBA
El siguiente script bloquea una aplicación específica en su espacio de trabajo inicial. Si se inicia el script, determina en qué espacio de trabajo reside la aplicación. Todas las ventanas adicionales que produce la aplicación se moverán al mismo espacio de trabajo en una fracción de segundo.
El problema de enfoque se resuelve reenfocando automáticamente la ventana que se enfocó antes de que se produjera la ventana adicional.
La secuencia de comandos
Cómo utilizar
El script necesita ambos
wmctrl
yxdotool
Copie el script en un archivo vacío, guárdelo como
keep_workspace.py
determine el `WM_CLASS 'de su aplicación abriendo la aplicación, luego abra una terminal y ejecute el comando:
Luego haga clic en la ventana de su aplicación. Copie el resultado, como
"sun-awt-X11-XFramePeer", "MATLAB R2015a - academic use"
en su caso, y colóquelo entre comillas simples en la sección principal del script, como se indica.Ejecute el script con el comando:
Si funciona como desea, agregaré una función de alternar. Aunque ya funciona durante algunas horas en mi sistema, sin embargo, podría necesitar algunos ajustes primero.
Notas
Aunque no se debe notar que, el guión hace añadir un poco de carga del procesador al sistema. En mi sistema de ancianos noté un aumento del 3-10%. Si te gusta cómo funciona, probablemente lo ajustaré aún más para reducir la carga.
El script, tal como está, supone que las ventanas secundarias son de la misma clase que la ventana principal, como indicó en un comentario. Sin embargo, con un cambio (muy) simple, las ventanas secundarias pueden ser de otra clase.
Explicación
Aunque probablemente no sea muy interesante para un lector promedio, el script funciona calculando en vectores. En el inicio, el script calcula:
wmctrl -d
wmctrl -lG
A partir de ese momento, el script busca nuevas ventanas de la misma aplicación, con la salida de
xprop WM_CLASS
, busca su posición de la misma manera que antes y las mueve al espacio de trabajo "original".Dado que la ventana recién creada "robó" el foco de la última ventana utilizada en la que estaba trabajando el usuario, el foco se establece posteriormente en la ventana que tenía foco anteriormente.
fuente
application
y establecerworkspace
. Si se encuentra con posibles errores, ¡menciónelo!WM_CLASS
es idéntico, el segundo se moverá al que configuró en el comando.