Gnome はタッチ対応デバイスに非常に適しているようですが、ラップトップ/タブレットをひっくり返したときに画面を自動的に回転させる方法はありますか?
答え1
編集: 私たちはそれぞれ別のコンピューターを使用しており、あなたは 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は自動回転やタブレットモードの機能は独自に提供していません。ここそしてこことなることによって:
- 画面が自動的に回転します
- キーボードとトラックパッドは、ラップトップが通常の向きの場合にのみ機能します。他の 3 つの向きでは無効になります。
- Unityランチャーは、縦向きの場合は下部に、横向きの場合は左に配置されます。
- プログラム
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
、 に追加します。スタートアップアプリケーション。
答え2
このソフトウェア多くの 2-in-1 デバイスで動作することが報告されています。ただし、最新のカーネルと gnome を実行する必要があります。
答え3
私は @Ian Hincks のコードを使用していますが、これをもっと便利に使うためのちょっとした提案があります。私は Dell Inspiron 13 7000 シリーズを使用していますが、このマシンにはバックライトの明るさを調整する光センサーがあります。光センサーの変化は急速で、キャプチャされた方向が損なわれるため、「orientation」行のビルドを変更する必要がありました。すると、1 行の方向によって 3 つの光の変化を受け取ります。ログの 1 行だけをキャプチャすると、方向の行が失われます。そのため、ログ キャプチャを 4 行に増やし、grep 正規表現を変更して最後の方向をキャプチャするようにしました。すると、新しい ORIENTATION 行は次のようになります。
ORIENTATION=$(tail -n 4 sensor.log | grep 'orientation' | grep -oEm 1 '[^ ]+$')
コードを提供してくれた @Ian Hincks に感謝します!
答え4
私は使用しています自動回転
画面とデジタイザーを手動または自動で回転できます。systemd デーモンがバックグラウンドで実行するオプションがあります。