私は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