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
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.
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.
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
mousemove restore
de eval, para que seja "eval` xdotool mousemove $ 1 $ 2 getmouselocation --shell` "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!bash swap.sh
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.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.
fonte
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
fonte