web-dev-qa-db-fra.com

Rotation automatique de l'écran sur Dell 13 7000 avec 15.04 (Gnome)

Gnome semble très adapté aux appareils tactiles. Existe-t-il un moyen de faire pivoter automatiquement l'écran lorsque je retourne l'ordinateur portable/la tablette?

4
Dean

Ce logiciel fonctionnait sur de nombreux périphériques 2-en-1. Mais vous devez exécuter les derniers noyaux et gnomes.

1
Yalok Iy

Edit: Je sais que cela ne répond pas directement à votre question car nous avons différents ordinateurs et que Gnome vous intéresse, mais je voulais poster ceci quelque part pour aider les autres.

Ce qui suit a fonctionné pour moi pour Ubuntu 16.10 (Unity) sur un Spectre x 360 (Kaby Lake). Je soupçonne qu'un traitement similaire devrait fonctionner pour d'autres ordinateurs portables.

Comme dans la réponse de @ Yalokly, installez iio-sensor-proxy:

Sudo apt-get install iio-sensor-proxy

Cela peut être une boîte de Pandore pour se mettre au travail. Vous savez que cela fonctionne si, lorsque vous exécutez monitor-sensor, il se passe des choses lorsque vous faites pivoter votre appareil. Ici est le repo où vous pouvez trouver des informations de dépannage. J'ai eu du mal à l'obtenir. Mettre à jour mon noyau de 4.8 à 4.10 a fonctionné pour moi. Rechercher un tutoriel en ligne. Comme beaucoup d’autres, j’ai le bogue suivant lequel la surveillance des capteurs ne fonctionne que lorsque l’ordinateur a été suspendu et repris au moins une fois.

Unity ne fait pas lui-même de rotation automatique ni de mode tablette. J'ai combiné les scripts de ici et ici pour que:

  1. L'écran tourne automatiquement
  2. Le clavier et le trackpad ne fonctionnent que lorsque l'ordinateur portable est normalement orienté; désactivé dans les trois autres orientations
  3. Le lanceur Unity est placé en bas pour les orientations de portrait et à gauche pour les orientations de paysage
  4. Le programme onboard est lancé dans les trois orientations "tablette" et est supprimé pour l'orientation "ordinateur portable" (en plus: il m'a été utile d'activer la fenêtre contextuelle en mode texte dans les préférences intégrées).

Voici le script:

#!/bin/sh
# IH: this script is taken from a combo of:
# https://linuxappfinder.com/blog/auto_screen_rotation_in_ubuntu
# https://askubuntu.com/questions/757900/hp-spectre-x360-disable-touchpad-in-tablet-mode-ubuntu-15-10

# 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 eDP-1 --rotate normal
    gsettings set com.canonical.Unity.Launcher launcher-position Left 
    xinput set-int-prop 12 "Device Enabled" 8 1 #Enable Keyboard
    xinput set-int-prop 13 "Device Enabled" 8 1 #Enable Pad
    killall onboard
    ;;
bottom-up)
    xrandr --output eDP-1 --rotate inverted
    gsettings set com.canonical.Unity.Launcher launcher-position Left 
    xinput set-int-prop 12 "Device Enabled" 8 0 #Disable Keyboard
    xinput set-int-prop 13 "Device Enabled" 8 0 #Disable Pad
    onboard &
    ;;
right-up)
    xrandr --output eDP-1 --rotate right
    gsettings set com.canonical.Unity.Launcher launcher-position Bottom
    xinput set-int-prop 12 "Device Enabled" 8 0 #Disable Keyboard
    xinput set-int-prop 13 "Device Enabled" 8 0 #Disable Pad
    onboard &
    ;;
left-up)
    xrandr --output eDP-1 --rotate left
    gsettings set com.canonical.Unity.Launcher launcher-position Bottom
    xinput set-int-prop 12 "Device Enabled" 8 0 #Disable Keyboard
    xinput set-int-prop 13 "Device Enabled" 8 0 #Disable Pad
    onboard &
    ;;
esac
done

Remarque: Mon écran s’appelle eDP-1, le vôtre peut s’appeler autre chose. Exécutez xrandr pour trouver le nom et modifiez les quatre instances dans le script ci-dessus.

Enregistrez-le quelque part sous le nom auto-rotate.sh, rendez-le exécutable (chmod a+x auto-rotate.sh) et ajoutez-le à Applications de démarrage .

4
Ian Hincks

J'ai utilisé le code @Ian Hincks, mais j'ai une petite suggestion pour le faire utile. J'ai un Dell Inspiron 13 série 7000, et cette machine a un capteur de lumière pour équilibrer le rétroéclairage. J'ai dû modifier la construction de la ligne "d'orientation", car les modifications du capteur de lumière sont rapides et contaminent l'orientation capturée. Ensuite, je reçois trois changements de lumière, d’une ligne d’orientation. Si je ne capture qu'une seule ligne du journal, je perds la ligne d'orientation. C'est pourquoi j'ai augmenté la capture du journal à 4 lignes et modifié la regex grep pour capturer la dernière orientation. Ensuite, la nouvelle ligne ORIENTATION sera:

ORIENTATION=$(tail -n 4 sensor.log | grep 'orientation' | grep -oEm 1 '[^ ]+$')

Merci @Ian Hincks pour votre code!

0
triad