Atalho para alternar exibições

12

Eu tenho 2 monitores no meu PC - um IDE é aberto em tela cheia em um monitor e o Firefox é aberto em tela inteira em outro monitor.

Como uso principalmente o teclado, é irritante ter que pegar o mouse para mudar o foco para o Firefox e voltar ao IDE o tempo todo.

Existe um atalho que eu poderia usar para mudar o foco para a "maior janela" da tela 2 se o foco estiver em algum lugar da tela 1 e vice-versa?

Fofo
fonte

Respostas:

11

Hoje recebi um voto positivo para esta pergunta, por isso estou postando minha solução que uso o tempo todo há mais de um ano e estou muito feliz com isso.

Etapa 1: crie o script bash (por exemplo, escreva-o ~/swap.she torne-o executável) para definir o foco em uma janela que fica no meio da outra tela:

#!/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

Etapa 2: adicione um atalho de teclado para chamar esse script, coloquei o meu em Super-Tab

Etapa 3: use o atalho para alternar as exibições como um chefe

Fofo
fonte
Isso ajuda muito, no entanto, o mouse não é movido para a outra tela, o que seria ótimo se o fizesse.
Samarth 7/03
2
@ samarth Você pode conseguir isso removendo o mousemove restorede eval, para que seja "eval` xdotool mousemove $ 1 $ 2 getmouselocation --shell` "
Fluffy
Eu tentei a etapa 1 e, em seguida, executando sh swap.sh, recebo a mensagem de erro: swap.sh: 17: swap.sh: 288: não encontrado swap.sh: 20: swap.sh: erro de sintaxe: "(" inesperado , criando um texto ? arquivo com = como título e nada Alguma ideia de Graças!
Matifou
@Matifou trybash swap.sh
Fluffy
Isso é útil; existe uma maneira de detectar quando uma tela é girada? Eu tenho meu monitor esquerdo girado (com xrandr --rotate), mas o xdotool não usa a rotação e não sei como detectar. Se o foco estiver na exibição girada, preciso usar o pressionamento de tecla duas vezes em vez de uma vez.
GTK
0

Você pode usar AltTabpara alternar entre janelas.

AltTabtambém lembra quais duas janelas você alternou pela última vez. Se você alternar para uma janela (navegue com as teclas de seta) e voltar, basta pressionar AltTabpara permitir que você pule entre elas, sem nenhuma navegação adicional.

Aaron Hill
fonte
2
Quero trocar as telas na configuração de monitor duplo, não no Windows. Tenho vários aplicativos abertos e não quero pressionar alt-tab várias vezes até chegar ao outro no visor.
Fluffy
0

este repositório pode ajudá-lo

https://github.com/Eitol/screen_focus_changer

Você coloca o script esquerdo focus_changer.py em um local fixo (/ opt por exemplo) E depois adiciona a tecla de atalho / atalho / tecla de atalho nas configurações

python3 /opt/focus_changer.py left # Foco para a esquerda

python3 /opt/focus_changer.py right # Foco para a direita

Hector Oliveros
fonte