Entonces, tengo 8 escritorios virtuales en Unity (con Compiz) porque tengo muchos proyectos en los que estoy trabajando simultáneamente.
El problema es que cada vez que necesito reiniciar o cerrar accidentalmente Chrome (que constituye una gran parte de las ventanas que necesito para trabajar) tengo que abrir manualmente esas ventanas nuevamente y luego configurarlas (abrir archivos, ir a la correcta urls, etc.).
¿Cómo harías para escribir un guión que haga todo eso por mí? Es decir: 1) Abra ventanas 2) Colóquelas en las coordenadas correctas en las pantallas virtuales correctas
(1) es obvio, para Google Chrome simplemente ejecutas 'google-chrome'. Pero entonces, ¿cómo lo pones en el lugar correcto? (2)
¿O hay un script / software que ya existe que lo haría por mí?
wmctrl
, que es como un software para controlar ventanas a través de script o terminal. Pero en cuanto al reinicio de una ventana, eso podría ser un poco más desafianteRespuestas:
Se puede hacer muy bien, pero necesita un poco de comprensión sobre Unity / viewports. Espero que la historia a continuación sea comprensible, si no, deje un comentario.
El siguiente script se puede usar para abrir una ventana de cualquier aplicación en cualquiera de sus ventanas gráficas, en cualquier posición, si la ejecuta con los argumentos correctos. El script es una versión editada de este , pero ahora está preparado para colocar ventanas en el escritorio virtual .
1. Comprender las ventanas gráficas y las coordenadas de la ventana
Espacios de trabajo en la unidad
En Unity, a diferencia de otros administradores de ventanas, en realidad solo tiene un área de trabajo que se divide, que se divide en ventanas gráficas. En su caso, su espacio de trabajo se divide en ocho ventanas gráficas.
Cómo se define la posición de las ventanas
La posición de la ventana, como la salida del comando:
se describe como la posición, en relación con la esquina superior izquierda de la ventana gráfica actual :
Entonces, si está en la ventana gráfica
1
:una ventana en la ventana gráfica 2 podría colocarse, por ejemplo, en 1700 (x-wise) x 500 (y-wise)
(mi pantalla es 1680x1050)
Sin embargo, si está en la ventana gráfica 6:
la misma ventana se colocaría en 20 (x), -550 (y)
Usar estas coordenadas correctamente es importante para ejecutar el script con los argumentos correctos, como se describe a continuación:
2. Cómo usar el script
La secuencia de comandos a continuación se puede utilizar para colocar una nueva ventana de una aplicación en su espacio de trabajo virtual (de expansión).
Asegúrese de que
wmctrl
esté instalado:Copie el script a continuación en un archivo vacío, guárdelo como
setwindow
(sin extensión) en~/bin
. Cree el directorio si aún no existe. Haga que el script sea ejecutable .~/bin
, ejecute el comandosource ~/.profile
o cierre la sesión / inicie sesión para que el directorio esté disponible$PATH
.Prueba ejecutar el comando:
p.ej
Debería aparecer una ventana gedit en la ventana gráfica actual.
Notas:
gedit
ventana en mi sistema es, por ejemplo, appr. 470 px.<x_position>
para colocar ventanas a la izquierda de las ventanas gráficas actuales<y_position>
para colocar ventanas sobre las ventanas de visualización actualesPara abrir nuevas ventanas en diferentes ventanas gráficas a la vez, simplemente puede encadenar comandos. Mirando la configuración de la ventana gráfica en el ejemplo "Larga historia", si estoy en la ventana gráfica 1, puedo abrir las ventanas gedit en la ventana gráfica 1, 2, 3 y 4 con el comando:
La secuencia de comandos
EDITAR: la versión perezosa
En caso de que prefiera ingresar solo las coordenadas y el tamaño, simplemente como si abriera una ventana en la vista actual, y diera la vista objetivo como argumento (sin tener que calcular nada), luego use la versión a continuación ...
Si lo configura como la primera versión del script, puede ejecutarlo con el comando:
Un ejemplo: para abrir una
Google-Chrome
ventana posicionada en20, 20
, tamaño300x300
, en la ventana gráfica5
:La configuración es más o menos la misma que la primera versión del script.
Tenga en cuenta que también este script solo funciona correctamente si la ventana definida (posición / tamaño) se ajusta completamente dentro de la ventana de visualización de destino.
La secuencia de comandos:
Abrir ventanas de aplicaciones con argumentos
Para finalizar el trabajo, responde tu pregunta por completo:
Si ejecuta el script como, por ejemplo:
abrirá una ventana predeterminada en los escritorios de destino.
Sin embargo, con la última versión del script, puede agregar un argumento adicional para abrir la ventana de la aplicación, por ejemplo, un
url
:p.ej:
Si el argumento (extra) contiene espacios, use comillas. El ejemplo anterior abrirá una
google-chrome
ventana en la ventana gráfica 3, abriendo elurl
http://askubuntu.com
.Puede encadenar comandos para abrir múltiples ventanas / URL en diferentes espacios de trabajo en un solo comando, por ejemplo:
fuente
Esto se expande en la gran respuesta de @Jacob Vlijim anterior con un
setwindow
script ligeramente modificado :Una descripción de los cambios:
python3
apython
(solo una preferencia personal)sys.argv
aargparse
una interfaz de línea de comandos mejorwhile
bucle 0.5 segundos a 1 segundo de tiempo de sueño completoxrandr
dependenciaNOTA: Esta es solo una versión ligeramente mejorada que escribí para uso personal en Debian Jessie LXDE. Sus resultados pueden variar.
fuente
Para aquellos interesados, he implementado Desktopen: github.com/snitko/desktopen
Le permite escribir una secuencia de comandos para abrir ventanas en diferentes ventanas gráficas y pantallas de una manera muy amigable.
fuente