Raccourci pour basculer entre les affichages

12

J'ai 2 écrans sur mon PC - un IDE est ouvert en plein écran sur un écran et Firefox est ouvert en plein écran sur un autre écran.

Étant donné que j'utilise principalement le clavier, il est ennuyeux d'avoir à saisir la souris pour basculer le focus sur Firefox et revenir à l'IDE tout le temps.

Existe-t-il un raccourci que je pourrais utiliser pour basculer le focus sur la "plus grande fenêtre" sur l'affichage 2 si le focus est quelque part sur l'affichage 1 et vice versa?

Duveteux
la source

Réponses:

11

Aujourd'hui, j'ai obtenu un vote positif pour cette question, donc je poste ma solution que j'utilise tout le temps depuis plus d'un an et j'en suis très satisfait.

Étape 1: créez un script bash (par exemple, écrivez-le ~/swap.shet rendez-le exécutable) pour définir le focus sur une fenêtre qui se trouve au milieu de l'autre affichage:

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

Étape 2: ajoutez un raccourci clavier pour appeler ce script, je mets le mien Super-Tab

Étape 3: utilisez le raccourci pour changer d'écran comme un boss

Duveteux
la source
Cela aide beaucoup mais la souris n'est pas déplacée vers l'autre écran, ce qui serait génial si c'était le cas.
samarth
2
@samarth Vous pouvez y parvenir en supprimant le mousemove restorede l'eval, pour qu'il soit "eval` xdotool mousemove $ 1 $ 2 getmouselocation --shell` "
Fluffy
J'ai essayé l'étape 1, puis j'exécutesh swap.sh , je reçois un message d'erreur: swap.sh: 17: swap.sh: 288: introuvable swap.sh: 20: swap.sh: Erreur de syntaxe: "(" inattendu , création d'un texte fichier avec = comme titre et rien Aucune idée? Merci!
Matifou
@Matifou trybash swap.sh
Fluffy
C'est utile; existe-t-il un moyen de détecter quand un affichage est tourné? J'ai mon moniteur gauche tourné (avec xrandr --rotate) mais xdotool n'utilise pas la rotation et je ne sais pas comment le détecter. Si le focus est dans l'affichage pivoté, j'ai besoin d'utiliser la touche deux fois au lieu d'une fois.
GTK
0

Vous pouvez utiliser AltTabpour basculer entre les fenêtres.

AltTabse souvient également de la dernière fenêtre entre laquelle vous avez basculé. Si vous passez à une seule fenêtre (naviguez avec les touches fléchées), puis revenez en arrière, une simple pression AltTabvous permettra de passer d'une fenêtre à l' autre, sans autre navigation.

Aaron Hill
la source
2
Je souhaite basculer entre les affichages dans la configuration à deux moniteurs, pas les fenêtres. J'ai plusieurs applications ouvertes et je ne veux pas appuyer plusieurs fois sur alt-tab jusqu'à ce que j'atteigne celle sur l'autre écran.
Fluffy
0

ce référentiel peut vous aider

https://github.com/Eitol/screen_focus_changer

Vous placez le script focus_changer.py gauche dans un endroit fixe (/ opt par exemple) Et puis ajoutez le raccourci clavier / raccourci / raccourci clavier dans vos paramètres

python3 /opt/focus_changer.py left # Focus à gauche

python3 /opt/focus_changer.py droite # Focus vers la droite

Hector Oliveros
la source