Atajo para cambiar de pantalla

12

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?

Mullido
fuente

Respuestas:

11

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

Mullido
fuente
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.

Aaron Hill
fuente
2
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.
Fluffy
0

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

Hector oliveros
fuente