Deblan blog

[Astuce] i3wm : Switcher entre 2 moniteurs

On est capable de déplacer le focus vers un workspace donné mais je n'ai pas encore trouver comment basculer d'un moniteur à l'autre dans i3 (sans indiquer le nom du workspace cible).

J'ai écrit un script qui reçoit deux paramètres : la largeur (en pixels) du premier moniteur et celle du second. Par le biais de xdotool, je récupère la position en X du pointeur et je déduis le moniteur à atteindre.

Note : il est nécessaire d'installer xdotool et bc.

#!/bin/sh

MONITOR1_WIDTH=$1
MONITOR2_WIDTH=$2

getMouseX() {
	xdotool getmouselocation 2>/dev/null | awk '{ print $1 }' | cut -d: -f2
}

getMouveNextX() {
	if [ $(getMouseX) -lt $MONITOR1_WIDTH ]; then
		echo "$MONITOR1_WIDTH+$MONITOR2_WIDTH/2" | bc
	else
		echo "$MONITOR1_WIDTH/2" | bc
	fi
}

moveTo() {
	xdotool mousemove $1 540
}

moveTo $(getMouveNextX)

Il suffit maintenant de mapper une combinaison de touches pour exécuter le script. Par exemple :

bindsym $mod+c exec ~/bin/i3_switch_monitor.sh 1920 1920


Ajouter un commentaire

Vous pouvez utiliser du markdown.Afficher l'aide.