lenovo DockとLinuxで自動的にディスプレイを切り替える

lenovo DockとLinuxで自動的にディスプレイを切り替える

私はNvidia Optimusがインストールされているlenovo Thinkpadを持っています。ミニドッキングステーションシリーズ3

ドッキングすると、可能な場合は外部モニターに自動的に切り替えられ、ドッキングを解除すると自動的にThinkpad LCDに切り替えられます。

暗号化されたディスク(dm-crypt)のパスワードを入力する必要があるため、起動段階でも機能します。

以下を試しましたが、動作しません。

次の行を使用してファイル/etc/acpi/thinkpad-undock.sh(+)を作成しました。chmod a+x thinkpad-undock.sh

#!/bin/sh
xrandr --output LVDS-1 --auto --output DP-5.8 --off

そして/etc/acpi/thinkpad-dock.sh

#!/bin/sh
prime-select nvidia # ensures that nvidia card is selected
xrandr --output LVDS-1 --off --output DP-5.8 --auto

そして再びchmod a+x thinkpad-dock.sh

両方のスクリプトを手動で実行すると機能します。

その後、イベントを処理するために2つのファイルを作成しました。

thinkpad-dock-lenovo

event=ibm/hotkey LEN0068:00 00000080 00004010
action=/etc/acpi/thinkpad-dock.sh

そしてthinkpad-undock-lenovo

event=ibm/hotkey LEN0068:00 00000080 00004011
action=/etc/acpi/thinkpad-undock.sh

それから/etc/init.d/acpid reload。ただし、ノートブックをドッキングまたはドッキング解除すると、何もしません。

acpi_listenラップトップを起動してドッキングしてから切断すると、上記のイベント番号が表示されます。

それでは、どのように機能させることができるのか、どのようなアイデアがありますか?

おそらく問題はいくつかのデスクトップ環境(kdeなど)で解決されるかもしれませんが、xmonadを使用しています。上記のように、ブートフェーズでは、xmonadはデスクトップ環境とは無関係に動作する必要があります。

私はカーネルバージョン4.4.0-22でUbuntu 16.04を実行しています。

また、以下のようにudevルールを追加しようとしましたが、うまくいきません。

ENV{EVENT}=="undock", KERNEL=="dock.0", SUBSYSTEM=="platform", RUN+="disper -s"
ENV{EVENT}=="dock", KERNEL=="dock.0", SUBSYSTEM=="platform", RUN+="disper -s"

dockラップトップがドッキングされているかどうかにかかわらず、このファイルの値は常にゼロであることを確認しました。

ベストアンサー1

スクリプトは DISPLAY 環境変数を設定しません。次のようにする必要があります。

#!/bin/sh
export DISPLAY=:0
xrandr --output LVDS-1 --auto --output DP-5.8 --off

おすすめ記事