Tengo dos ventanas, A y B. ¿Es posible vincular de alguna manera dos ventanas, de modo que cambiar a A también genere B o cambiar a B también genere A?
Entiendo que usar múltiples espacios de trabajo es una opción alternativa, pero me preguntaba si esto también es posible.
command-line
scripts
shortcut-keys
window-manager
window
Simon Tong
fuente
fuente
Respuestas:
Introducción
El siguiente script permite seleccionar dos ventanas, y aunque ambas ventanas están abiertas, las abrirá cuando el usuario enfoque cualquiera de ellas. Por ejemplo, si uno vincula a las viudas A y B, las brujas con A o B harán que ambas se eleven por encima de otras viudas.
Para detener el script, puede usarlo
killall link_windows.py
en la terminal, o cerrar y volver a abrir una de las ventanas. También puede cancelar la ejecución presionando el botón Cerrar Xen cualquiera de los cuadros de diálogo emergentes de selección de ventana.Ajustes potenciales:
Uso
Ejecute el script como:
El script es compatible con Python 3, por lo que también puede ejecutarse como
Hay dos opciones de línea de comando:
--quiet
o-q
, permite silenciar las ventanas de la GUI. Con esta opción, puede hacer clic con el mouse en cualquiera de las dos ventanas y el script comenzará a vincularlas.--help
o-h
imprime la información de uso y descripción.La
-h
opción produce la siguiente información:Se puede ver información técnica adicional a través de
pydoc ./link_windows.py
, donde./
significa que debe estar en el mismo directorio que el script.Proceso de uso simple para dos ventanas:
Aparecerá una ventana emergente pidiéndole que seleccione una ventana # 1, presione OKo presione Enter. El puntero del mouse se convertirá en una cruz. Haga clic en una de las ventanas que desea vincular.
Aparecerá una segunda ventana emergente pidiéndole que seleccione la ventana # 2, presione OKo presione Enter. Nuevamente, el puntero del mouse se convertirá en una cruz. Haga clic en la otra ventana que desea vincular. Después de esa ejecución comenzará.
Cada vez que enfoca cualquiera de las ventanas, el script elevará la otra ventana, pero volverá a enfocarse en la seleccionada originalmente (nota: con un cuarto de segundo de retraso para obtener el mejor rendimiento), creando así la sensación de que las ventanas están unidas.
Si selecciona la misma ventana las dos veces, el script se cerrará. Si en cualquier momento hace clic en el botón Cerrar del cuadro de diálogo emergente, el script se cerrará.
Fuente de script
También disponible como GitHub Gist
Notas :
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
Estos pueden ignorarse.fuente
time.sleep
bit entre cambios, ¿puedo poner eso a cero? ¿Hay alguna razón para la demora?# time.sleep(0.25)
y no se ejecutará. La razón de esto es garantizar que cada ventana se levante correctamente. En mi experiencia en el pasado, necesitaba tener retrasos para operar en Windows. Creo que un cuarto de segundo de retraso no es tanto. En realidad, permítanme agregar solo una línea más al script, que podría acelerarlo. DE ACUERDO ?Elevar un número arbitrario de ventanas como una
La solución a continuación le permitirá elegir cualquier combinación de dos, tres o más ventanas para combinar y elevar como una con un atajo de teclado.
El script hace su trabajo con tres argumentos:
para agregar la ventana activa al grupo
para elevar el grupo establecido
para borrar el grupo, listo para definir un nuevo grupo
La secuencia de comandos
Cómo utilizar
El script necesita
wmctrl
yxdotool
:groupwindows.py
Prueba: ejecuta el script: abre dos ventanas de terminal, ejecuta el comando:
en los dos. Cúbralos con otras ventanas (o minimícelas). Abra una tercera ventana de terminal, ejecute el comando:
Las dos primeras ventanas se levantarán como una.
Si todo funciona bien, cree tres teclas de acceso directo personalizadas: Elija: Configuración del sistema> "Teclado"> "Accesos directos"> "Accesos directos personalizados". Haga clic en "+" y agregue los siguientes comandos a tres accesos directos separados:
en mi sistema, usé:
Alt+ A, ejecutando el comando:
... para agregar una ventana al grupo.
Alt+ R, ejecutando el comando:
... para levantar el grupo.
Alt+ C, ejecutando el comando:
... para limpiar el grupo
Explicación
El guión funciona de manera bastante simple:
add
, el script almacena / agrega el id de la ventana de la ventana activa en un archivo oculto~/.windowlist
Cuando se ejecuta con el argumento
raise
, el script lee el archivo, levanta las ventanas de la lista con el comando:clear
, el script elimina el archivo oculto~/.windowlist
.Notas
¿Más flexibilidad?
Como se mencionó, el script anterior permite agregar ventanas en cualquier momento a las ventanas agrupadas. La versión siguiente también permite eliminar cualquiera de las ventanas (en cualquier momento) de la lista agrupada:
El argumento adicional para ejecutar el script es
delete
, entonces:elimina la ventana activa de las ventanas agrupadas. Para ejecutar este comando, en mi sistema, configuro Alt+ Dcomo acceso directo.
fuente