En cherchant si quelqu'un avait déjà posé cette question, j'ai atterri sur ceci pour Windows .
J'aimerais faire quelque chose de similaire (raccourci ou alias de terminal/commande) sous Linux/Ubuntu pour pouvoir basculer rapidement le moniteur externe entre les modes paysage et portrait au lieu de devoir aller à l’affichage le configurant et confirmant la configuration.
Jacob Vlijm a fourni un script Python qui fonctionne. Si vous avez une autre idée, j'aimerais bien la connaître.
Mise à jour : J'ai mis à jour le script de Jacob pour qu'il fonctionne pour deux écrans s'ils sont connectés .
Le script ci-dessous consiste à activer ou désactiver la rotation de l'un de vos écrans:
#!/usr/bin/env python3
import subprocess
# --- set the name of the screen and the rotate direction below
screen = "VGA-1"
rotate = "left"
# ---
matchline = [
l.split() for l in subprocess.check_output(["xrandr"]).decode("utf-8").splitlines()\
if l.startswith(screen)
][0]
s = matchline[
matchline.index([s for s in matchline if s.count("+") == 2][0])+1
]
rotate = "normal" if s == rotate else rotate
subprocess.call(["xrandr", "--output", screen, "--rotate", rotate])
toggle-rotate.py
Dans la section head du script, définissez:
xrandr
)le sens de rotation, soit left
ou right
(entre guillemets, comme dans l'exemple).
# --- set the name of the screen and the rotate direction below
screen = "VGA-1"
rotate = "left"
# ---
Testez-le par la commande (deux fois, depuis un terminal):
python3 /path/to/toggle-rotate.py
Si tout fonctionne bien, 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-rotate.py
à un raccourci de votre choix ...
C'est ça.
Dans la sortie de la commande xrandr
, la rotation actuelle de votre écran (le cas échéant) est mentionnée directement après la position de l'écran, par exemple:
VGA-1 connected 1024x1280+1680+0 left (normal left inverted right x axis y axis) 376mm x 301mm
Dans l'exemple, nous voyons: 1024x1280+1680+0 left
. Le script regarde dans la ligne, correspondant à l'écran, mentionné dans la tête du script. if l'écran est pivoté, le script exécute la commande (xrandr
):
xrandr --output <screen_name> --rotate normal
sinon , il s'exécute (par exemple):
xrandr --output <screen_name> --rotate left
Pour faire pivoter l'écran dans le sens inverse des aiguilles d'une montre
J'ai utilisé le script de Jacob. Cependant, j'utilise maintenant un adaptateur et je veux donc pouvoir basculer l'orientation si le moniteur est connecté à HDMI ou via l'adaptateur. Pour cela, j'ai modifié le script de Javob et emprunté ne autre fonction qu'il a écrite :
import subprocess
def screens():
'''
get connected screens
'''
output = [l for l in subprocess.check_output(["xrandr"]).decode("utf-8").splitlines()]
return [l.split()[0] for l in output if " connected " in l]
# --- set the name of the screen and the rotate direction below
# screen = "HDMI-1" # run "xrandr" to get the screen
rotate = "left" # the desired orientation
if "HDMI-1" in screens():
screen = "HDMI-1"
Elif "DP-1" in screens():
screen = "DP-1"
else:
pass
# ---
# only run if screen is declared (i.e. either HDMI-1 or DP-1 are connected)
if screen:
matchline = [
l.split() for l in subprocess.check_output(["xrandr"]).decode("utf-8").splitlines()\
if l.startswith(screen)
][0]
s = matchline[
matchline.index([s for s in matchline if s.count("+") == 2][0])+1
]
rotate = "normal" if s == rotate else rotate
subprocess.call(["xrandr", "--output", screen, "--rotate", rotate])