59 votes

Comment puis-je faire pivoter mon écran de la manière la plus simple qui soit ?

Je suis l'heureux propriétaire d'un moniteur pivotant, dont l'écran peut être tourné (physiquement). Quel est le moyen le plus simple de faire tourner mon écran lorsque je le fais pivoter ?

Pour l'instant, je lance d'abord l'application "Écrans", puis je modifie les paramètres et je confirme. Mais c'est en fait une procédure assez laborieuse, car je veux changer d'orientation jusqu'à plusieurs fois par minute.

Existe-t-il un indicateur pour cela, ou un équivalent ? Puis-je définir un raccourci clavier qui lancerait une commande dédiée ? En fait, je pense à quelque chose de similaire au programme Windows iRotate .

101voto

roadmr Points 32606

Allez dans Clavier -> Raccourcis, sélectionnez "Raccourcis personnalisés", et appuyez sur "+" pour ajouter un nouveau raccourci.

Le "Nom" est un nom descriptif de l'action (par exemple, "Faire pivoter le moniteur"). Dans "Commande", tapez la commande personnalisée à exécuter lorsque le raccourci est activé.

Une fois le raccourci dans la liste, sélectionnez sa ligne, appuyez sur la touche ENTRÉE, puis la combinaison de touches que vous voulez activer le raccourci. S'il y a un conflit, le gestionnaire de raccourcis vous le signalera et vous pourrez choisir une autre combinaison.

Vous pouvez avoir un raccourci pour activer l'affichage pivoté et un autre pour le ramener en position verticale. Vous pouvez même, si vous êtes suffisamment expérimenté, écrire une commande qui maintient l'état et bascule simplement entre la position verticale et la position pivotée.

Maintenant, en ce qui concerne la commande que vous devez utiliser, c'est probablement xrandr :

xrandr --output HDMI1 --rotate left

xrandr --output HDMI1 --rotate normal

Le paramètre de sortie dépend du port sur lequel votre moniteur est branché. Pour voir ce que vous avez actuellement, tapez :

xrandr -q

Le mien dit :

Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 309mm x 174mm
   1366x768       60.0*+
   1360x768       59.8     60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA2 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)

Dans ce cas, ma --sortie serait LVDS1, car toutes les autres sont déconnectées.

16voto

jubr Points 1

Fonctionne très bien avec

xrandr --output LVDS1 --rotate left
xrandr --output LVDS1 --rotate right
xrandr --output LVDS1 --rotate inverted
xrandr --output LVDS1 --rotate normal

6voto

Vincent Gerris Points 942

Voici un bel exemple de la façon de procéder en fonction de l'entrée d'un capteur : https://linuxappfinder.com/blog/auto_screen_rotation_in_ubuntu

Donc, en gros, essayez ce qui précède pour identifier l'écran que vous voulez voir tourner. Selon le modèle de moniteur, il peut y avoir un capteur qui envoie un signal ?

Cela fonctionne très bien pour mon Lenovo Yoga 2 11 avec le capteur de rotation intégré et cela déplace le dock de l'unité aussi.

Le script :

#!/bin/sh
# Auto rotate screen based on device orientation

# Receives input from monitor-sensor (part of iio-sensor-proxy package)
# Screen orientation and launcher location is set based upon accelerometer position
# Launcher will be on the left in a landscape orientation and on the bottom in a portrait orientation
# This script should be added to startup applications for the user

# Clear sensor.log so it doesn't get too long over time
> sensor.log

# Launch monitor-sensor and store the output in a variable that can be parsed by the rest of the script
monitor-sensor >> sensor.log 2>&1 &

# Parse output or monitor sensor to get the new orientation whenever the log file is updated
# Possibles are: normal, bottom-up, right-up, left-up
# Light data will be ignored
while inotifywait -e modify sensor.log; do
# Read the last line that was added to the file and get the orientation
ORIENTATION=$(tail -n 1 sensor.log | grep 'orientation' | grep -oE '[^ ]+$')

# Set the actions to be taken for each possible orientation
case "$ORIENTATION" in
normal)
xrandr --output eDP1 --rotate normal && gsettings set com.canonical.Unity.Launcher launcher-position Left ;;
bottom-up)
xrandr --output eDP1 --rotate inverted && gsettings set com.canonical.Unity.Launcher launcher-position Left ;;
right-up)
xrandr --output eDP1 --rotate right && gsettings set com.canonical.Unity.Launcher launcher-position Bottom ;;
left-up)
xrandr --output eDP1 --rotate left && gsettings set com.canonical.Unity.Launcher launcher-position Bottom ;;
esac
done

et la condition préalable pour les capteurs :

sudo apt install iio-sensor-proxy inotify-tools

1voto

Alexx Roche Points 253

J'ai écrit un Shell Shell pour faire cela. (Nécessite xrandr grep awk)

#!/bin/sh
# invert_screen copyright 20170516 alexx MIT Licence ver 1.0
orientation=$(xrandr -q|grep -v dis|grep connected|awk '{print $4}')
display=$(xrandr -q|grep -v dis|grep connected|awk '{print $1}')
if [ "$orientation" == "inverted" ]; then
   xrandr --output $display --rotate normal
else
   xrandr --output $display --rotate inverted
fi

Si vous aimez les bonnes blagues :

[ "$(xrandr -q|grep -v dis|grep con|awk '{print $4}')" == 'inverted' ] && xrandr -o normal || xrandr -o inverted

1voto

Victor Moroz Points 111

Une variante un peu plus simple de La réponse de Vincent Gerris en fonction de l'entrée du capteur :

#!/bin/bash
# Auto rotate screen based on device orientation

monitor-sensor | \
while IFS= read -r str; do
  if [[ $str =~ orientation\ changed:\ (.*)$ ]]; then
    case "${BASH_REMATCH[1]}" in
    normal)
      xrandr --output eDP-1 --rotate normal ;;
    bottom-up)
      xrandr --output eDP-1 --rotate inverted ;;
    right-up)
      xrandr --output eDP-1 --rotate right ;;
    left-up)
      xrandr --output eDP-1 --rotate left ;;
    esac
  fi
done

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X