Je suis l'heureux propriétaire d'un moniteur pivot, lequel écran peut être pivoté (physiquement). Quel est le moyen le plus simple de faire tourner mon écran lorsque je tourne mon moniteur?
Pour le moment, je lance d'abord l'application "Displays", puis modifie les paramètres et confirme. Mais c’est en fait une procédure assez laborieuse, car je souhaite changer d’orientation quelques fois par minute.
Y a-t-il un indicateur pour cela ou un équivalent? Puis-je définir un raccourci clavier pour lancer une commande dédiée? En fait, je pense à quelque chose de similaire au programme Windows iRotate .
Allez dans Clavier -> Raccourcis, sélectionnez "Raccourcis personnalisés" et appuyez sur "+" pour ajouter un nouveau raccourci.
"Nom" est un nom descriptif pour l'action ("Rotate monitor"). Dans "Commande", tapez la commande personnalisée à exécuter lorsque le raccourci est activé.
Une fois que le raccourci est dans la liste, sélectionnez sa ligne, appuyez sur Entrée, puis sur la combinaison de touches de votre choix pour activer le raccourci. En cas de conflit, le gestionnaire de raccourcis vous le dira et vous pourrez choisir une combinaison différente.
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 en savez assez, écrire une commande qui maintient l’état et permute simplement entre verticalité et rotation.
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 auquel 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, mon --putput serait LVDS1, car tous les autres sont déconnectés.
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
Voici un bel exemple sur la façon de le faire en fonction de l’entrée du capteur: https://linuxappfinder.com/blog/auto_screen_rotation_in_ubunt
Donc, fondamentalement, essayez ce qui précède pour identifier l’écran que vous souhaitez voir pivoté. Selon le modèle de moniteur, il peut y avoir un capteur qui envoie un signal?
Cela fonctionne bien pour mon Lenovo Yoga 2 11 avec capteur de rotation intégré et déplace également le dock Unity.
Le scénario:
#!/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 prérequis pour les capteurs:
Sudo apt install iio-sensor-proxy inotify-tools
J'ai écrit un script shell pour le faire. (Requiert 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 one-liners:
[ "$(xrandr -q|grep -v dis|grep con|awk '{print $4}')" == 'inverted' ] && xrandr -o normal || xrandr -o inverted