Vous appréciez la configuration multi-moniteurs à la maison et au travail, mais vous vous demandez comment déplacer la mise au point entre des moniteurs individuels (c'est-à-dire des "écrans") sans souris?
Les raccourcis clavier sont excellents pour la commutation de bureaux virtuels, et j’ai examiné diverses options dans ccsm
, mais rien ne m’est venu à l’esprit.
Je regarde aussi d’autres questions telles que commutateur de focus entre écrans X séparés ou des liens vers dualscreenmouseutils et switchscreen mais tous semblent concerner écrans séparés par xorg.conf
. De nos jours, Unity "fonctionne" avec plusieurs moniteurs (via un port d'affichage), ce qui est un peu gênant pour les richesses.
Mais tout conseil pour naviguer entre plusieurs écrans (physiques) dans un seul écran Unity (virtuel) serait le bienvenu.
Le script ci-dessous bascule (et "met l'accent") entre les écrans gauche et droit si les deux écrans sont plus ou moins alignés au centre ou en haut, et plus ou moins de la même résolution verticale.
Je suppose que dans la quasi-totalité des cas de configuration d’un écran gauche/droit, cela fonctionnera.
#!/usr/bin/env python3
import subprocess
# just a helper function
get = lambda cmd: subprocess.check_output(cmd).decode("utf-8")
# get the current mouse position
current = [int(n) for n in [it.split(":")[1] for it in get(["xdotool", "getmouselocation"]).split()[:2]]]
# get the x/y size of the left screen
screendata = [(s.split("x")[0], s.split("x")[1].split("+")[0]) for s in get(["xrandr"]).split() if "+0+0" in s ][0]
xy = [int(n) for n in screendata]
# see if the mouse is on the left- or right screen
if current[0] < xy[0]:
# if the mouse currently is on the left screen, move it to the right (from the middle of the left screen)
command = ["xdotool", "mousemove", "--sync", str(current[0]+xy[0]), str(xy[1]/2)]
else:
# if the mouse currently is on the left screen, move it to the right (from the middle of the left screen)
command = ["xdotool", "mousemove", "--sync", str(current[0]-xy[0]), str(xy[1]/2)]
subprocess.Popen(command)
# optional: click after the mouse move: comment out if not needed / wanted
subprocess.Popen(["xdotool", "click", "1"])
Le script nécessite xdotool
pour être installé (!)
Sudo apt-get install xdotool
Copiez le script dans un fichier vide, enregistrez-le sous le nom toggle_screenloc.py
Testez-le avec la commande:
python3 /path/to/toggle_screenloc.py
Si tout fonctionne correctement, ajoutez-le à une touche de raccourci: Choisissez: Paramètres système> "Clavier"> "Raccourcis"> "Raccourcis personnalisés". Cliquez sur le "+" et ajoutez la commande:
python3 /path/to/toggle_screenloc.py
Si le script est exécuté, il:
xrandr
.il voit si la souris est sur l'écran de gauche ou de droite en cochant la commande (xdotool
):
xdotool getmouselocation
Si le pointeur de la souris est situé sur l'écran de gauche:
Si le pointeur de la souris est sur l'écran de droite:
Ensuite, la souris clique une seule fois pour définir le focus sur l'application (possible) plein écran (facultatif).
La réponse de Jacob Vlijm a la bonne idée, mais il existe d'autres moyens. Voici ma prise:
#!/bin/bash
eval $(xdotool getmouselocation --Shell)
if [ $Y -gt 1080 ]
then
theta=0
else
theta=180
fi
xdotool mousemove_relative --polar $theta 1080
eval $(xdotool getmouselocation --Shell)
xdotool windowfocus $WINDOW
La simplification provient de l’utilisation de xdotool getmouselocation --Shell
, qui permet de transférer les variables dans le script en cours. Cela nous permet également de focaliser la fenêtre sans cliquer, ce qui pourrait avoir des effets secondaires indésirables.
Notez que dans mon cas, mes écrans sont empilés verticalement, donc je déplace la souris vers le haut (thêta = 0) ou vers le bas (thêta = 180). J'ai aussi choisi 1080px comme ligne de démarcation.
ce référentiel peut vous aider
https://github.com/Eitol/screen_focus_changer
Vous placez le script gauche focus_changer.py à un endroit fixe (/ opt par exemple), puis ajoutez le raccourci clavier/raccourci/raccourci clavier dans vos paramètres.
python3 /opt/focus_changer.py left # Se concentrer sur la gauche
python3 /opt/focus_changer.py right # Se concentrer sur la droite