web-dev-qa-db-ja.com

15.13(Gnome)を搭載したDell 13 7000での画面の自動回転

Gnomeはタッチ対応デバイスに非常に適しているようですが、ラップトップ/タブレットをひっくり返すときに画面を自動的に回転させる方法はありますか?

4
Dean

このソフトウェア は、多くの2-in-1デバイスで動作することが報告されています。ただし、最新のカーネルとgnomeを実行する必要があります。

1
Yalok Iy

編集:私たちは異なるコンピュータを持っているのであなたの質問に直接答えないことを知っています。あなたはGnomeに興味がありますが、他の人を助けるためにどこかに投稿したかったです。

以下は、Spectre x360(Kaby Lake)上のUbuntu 16.10(Unity)で機能しました。他のラップトップでも同様の治療が有効だと思う。

@Yaloklyの答えのように、iio-sensor-proxyをインストールします:

Sudo apt-get install iio-sensor-proxy

これは、動作するワームの缶になる可能性があります。 monitor-sensorを実行したときに、デバイスを回転させたときに問題が発生した場合、機能していることがわかります。 ここ は、トラブルシューティング情報が見つかるリポジトリです。うまくいかなかった。カーネルを4.8から4.10に更新するとうまくいきました。オンラインでチュートリアルを検索してください。他の多くの人と同じように、コンピューターが少なくとも1回中断または再開された後にのみセンサーの監視が機能するというバグがあります。

Unityは、自動回転やタブレットモードなどを単独で行いません。 herehere のスクリプトを組み合わせて、次のようにしました。

  1. 画面が自動的に回転します
  2. キーボードとトラックパッドは、ラップトップが通常の向きの場合にのみ機能します。他の3つの方向では無効
  3. Unityランチャーは、縦向きの場合は下部に配置され、横向きの場合は左に配置されます
  4. onboardプログラムは3つの「タブレット」方向で開始され、「ラップトップ」方向で強制終了されます(追加:オンボードの設定でテキストモードで自動ポップアップを有効にすると便利です)

スクリプトは次のとおりです。

#!/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を実行して名前を見つけ、上記のスクリプトの4つのインスタンスを変更します。

これをauto-rotate.shとして保存し、実行可能(chmod a+x auto-rotate.sh)にして、Startup Applicationsに追加します。

4
Ian Hincks

@Ian Hincksのコードを使用しましたが、便利にするための少しの提案があります。私はDell Inspiron 13 7000シリーズを使用していますが、このマシンにはバックライトの明るさを調整するライトセンサーがあります。光センサーの変更は迅速であり、キャプチャされた方向を汚染するため、「方向」ラインの構築を変更する必要がありました。次に、1行の方向で3回の光の変化を受け取ります。ログの1行のみをキャプチャする場合、オリエンテーションラインを失います。これが、ログキャプチャを4行に増やし、最後の方向をキャプチャするようにgrep正規表現を変更した理由です。次に、新しいORIENTATION行は次のようになります。

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

@Ian Hincks、コードをありがとう!

0
triad