Tengo 2 pantallas en mi PC: un IDE está abierto a pantalla completa en una pantalla y Firefox está abierto a pantalla completa en otra pantalla.
Como uso principalmente el teclado, es molesto tener que agarrar el mouse para cambiar el foco a Firefox y volver al IDE todo el tiempo.
¿Hay un atajo que podría usar para cambiar el foco a la "ventana más grande" en la pantalla 2 si el foco está en algún lugar de la pantalla 1 y viceversa?
Hoy recibí un voto positivo para esta pregunta, así que publico mi solución que he estado usando todo el tiempo durante más de un año y estoy bastante contento.
Paso 1: crea un script bash (por ejemplo, escríbelo ~/swap.shy hazlo ejecutable) para establecer el foco en una ventana que está en el medio de la otra pantalla:
#!/bin/bash
getwindowat() {
# move mouse to coordinates provided, get window id beneath it, move mouse back
eval `xdotool mousemove $1 $2 getmouselocation --shell mousemove restore`
echo $WINDOW
}
# get active app
active=`xdotool getactivewindow`
# get coordinates of an active app
eval `xdotool getwindowgeometry --shell $active`
# if left border of an app is less than display width
# (e.g. one display is 1920px wide, app has x = 200 - means it's 200px to the right from the left border of left monitor
# if it has x = 1920 or more, it's on the right window), it's on screen 0, and we need to focus to screen 1, otherwise to screen 0
(( $X >= $WIDTH )) && focustoscreen=0 || focustoscreen=1;
# get coordinates of the middle of the screen we want to switch
searchx=$[ ($WIDTH / 2) + $focustoscreen * $WIDTH ]
searchy=$[ $HEIGHT / 2 ]
# get window in that position
window=`getwindowat $searchx $searchy`
# activate it
xdotool windowactivate $window
Paso 2: agregue un atajo de teclado para llamar a este script, puse el mío para Super-Tab
Paso 3: use el acceso directo para cambiar las pantallas como un jefe
Esto ayuda mucho, sin embargo, el mouse no se mueve a la otra pantalla, lo que sería genial si lo hiciera.
samarth
2
@samarth Puede lograr eso quitando el mousemove restorede la evaluación, de modo que sea "eval` xdotool mousemove $ 1 $ 2 getmouselocation --shell` "
Fluffy
Intenté el paso 1, luego ejecutésh swap.sh , recibo un mensaje de error: swap.sh: 17: swap.sh: 288: no encontrado swap.sh: 20: swap.sh: Error de sintaxis: "(" inesperado , creando un texto archivo con = como título y nada ¿Alguna idea? ¡Gracias!
Matifou
@Matifou intentabash swap.sh
Fluffy
Esto es útil; ¿Hay alguna manera de detectar cuándo se gira una pantalla? Tengo mi monitor izquierdo girado (con xrandr --rotate) pero xdotool no usa la rotación y no sé cómo detectarlo. Si el foco está en la pantalla girada, necesito usar la combinación de teclas dos veces en lugar de una.
GTK
0
Puede usar AltTabpara cambiar entre ventanas.
AltTabTambién recuerda qué dos ventanas cambió por última vez. Si cambia a una ventana (navegue con las teclas de flecha), luego regrese, solo presionando AltTable permitirá saltar entre ellas, sin más navegación.
Quiero cambiar las pantallas en la configuración de doble monitor, no en las ventanas. Tengo varias aplicaciones abiertas, y no quiero presionar alt-tab muchas veces hasta que llegue a la de la otra pantalla.
Coloca el script izquierdo de focus_changer.py en un lugar fijo (/ opt por ejemplo) y luego agrega la combinación de teclas / acceso directo / tecla de acceso rápido en su configuración
python3 /opt/focus_changer.py left # Enfoque a la izquierda
python3 /opt/focus_changer.py right # Enfoque a la derecha
mousemove restore
de la evaluación, de modo que sea "eval` xdotool mousemove $ 1 $ 2 getmouselocation --shell` "sh swap.sh
, recibo un mensaje de error: swap.sh: 17: swap.sh: 288: no encontrado swap.sh: 20: swap.sh: Error de sintaxis: "(" inesperado , creando un texto archivo con = como título y nada ¿Alguna idea? ¡Gracias!bash swap.sh
xrandr --rotate
) pero xdotool no usa la rotación y no sé cómo detectarlo. Si el foco está en la pantalla girada, necesito usar la combinación de teclas dos veces en lugar de una.Puede usar AltTabpara cambiar entre ventanas.
AltTabTambién recuerda qué dos ventanas cambió por última vez. Si cambia a una ventana (navegue con las teclas de flecha), luego regrese, solo presionando AltTable permitirá saltar entre ellas, sin más navegación.
fuente
este repositorio puede ayudarlo
https://github.com/Eitol/screen_focus_changer
Coloca el script izquierdo de focus_changer.py en un lugar fijo (/ opt por ejemplo) y luego agrega la combinación de teclas / acceso directo / tecla de acceso rápido en su configuración
python3 /opt/focus_changer.py left # Enfoque a la izquierda
python3 /opt/focus_changer.py right # Enfoque a la derecha
fuente