Автоматический поворот экрана на Dell 13 7000 с 15.04 (Gnome)

Автоматический поворот экрана на Dell 13 7000 с 15.04 (Gnome)

Gnome, похоже, очень хорошо подходит для сенсорных устройств. Есть ли способ автоматически поворачивать экран, когда я переворачиваю ноутбук/планшет?

решение1

Редактировать: Я понимаю, что это не ответ на ваш вопрос напрямую, поскольку у нас разные компьютеры, а вас интересует Gnome, но я хотел бы разместить это где-нибудь, чтобы помочь другим.

Следующее сработало для меня на Ubuntu 16.10 (Unity) на Spectre x360 (Kaby Lake). Я подозреваю, что подобное лечение должно сработать и для других ноутбуков.

Как и в ответе @Yalokly, установите iio-sensor-proxy:

sudo apt-get install iio-sensor-proxy

Это может быть банкой червей, чтобы заставить работать. Вы знаете, что это работает, если при запуске monitor-sensorчто-то происходит, когда вы поворачиваете свое устройство.Здесь— репозиторий, где вы можете найти некоторую информацию по устранению неполадок. У меня возникли некоторые проблемы с запуском. Обновление ядра с 4.8 до 4.10 помогло мне. Поищите руководство в Интернете. Как и у многих других, у меня есть ошибка, при которой мониторинг датчиков срабатывает только после того, как компьютер был приостановлен и возобновлен хотя бы один раз.

Unity не делает автоповорот и планшетный режим сам по себе. Я объединил скрипты изздесьиздесьтак что:

  1. Экран поворачивается автоматически
  2. Клавиатура и трекпад работают только при нормальной ориентации ноутбука; отключены в трех других ориентациях.
  3. Кнопка запуска Unity располагается внизу для портретной ориентации и слева для альбомной ориентации.
  4. Программа onboardзапускается в трех ориентациях «планшет» и завершается в ориентации «ноутбук» (дополнительно: мне показалось полезным включить автоматическое всплывающее окно в текстовом режиме в настройках устройства)

Вот сценарий:

#!/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

Примечание: Мой экран называется eDP-1, ваш может называться как-то по-другому. Запустите, xrandrчтобы узнать имя, и измените четыре экземпляра в приведенном выше скрипте.

Сохраните это где-нибудь как auto-rotate.sh, сделайте его исполняемым ( chmod a+x auto-rotate.sh) и добавьте его вСтартап приложений.

решение2

Это программное обеспечениесообщалось, что он работает на многих устройствах 2-в-1. Но вам нужно запустить последнее ядро ​​и gnome.

решение3

Я использовал код @Ian Hincks, но у меня есть небольшое предложение, как сделать его полезным. У меня есть Dell Inspiron 13 серии 7000, и эта машина имеет датчик освещенности для балансировки яркости подсветки. Мне пришлось изменить сборку строки «ориентация», потому что изменения датчика освещенности быстрые и загрязняют захваченную ориентацию. Затем я получаю три изменения освещенности на одну строку ориентации. Если я захватываю только одну строку журнала, я теряю строку ориентации. Вот почему я увеличил захват журнала до 4 строк и изменил регулярное выражение grep для захвата последней ориентации. Затем новая строка ORIENTATION будет:

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

Спасибо @Ian Hincks за ваш код!

решение4

я используюАвто-поворот

Он может вращать экран и дигитайзер вручную или автоматически. Есть возможность для systemd daemon запустить его в фоновом режиме.

Связанный контент