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

答え2

私は両方を設定DISPLAYし、XAUTHORITY小さな睡眠を追加することに幸運です。

export DISPLAY=:0
export XAUTHORITY=/home/user/.Xauthority
sleep 3
xrandr ...

答え3

同様の設定がありますが、ドッカーレスポンシブソリューションを追求したことはありません。これは興味深いことです。

私がしたことは、Gnomeのディスプレイマネージャを使用してLCDディスプレイを「オフ」に設定し、外部ディスプレイをデフォルトディスプレイに設定することでした。これにより、ノートブックをドックに置くたびに外部モニターに切り替わります。持ち上げると液晶画面に戻ります。

コンソールに配置すること(dm-cryptのインストールから開始)も機能しますが、微妙な違いがあります。カバーを閉じるとノートブックをドッキングステーションに置き、電源を入れると外部モニター(BIOS画面などを含む)から自動的に起動します。カバーが開いていると、GDMにログインするまで切り替えは発生しません。

答え4

次のようなものが必要です。

udev(lsusbでidVendorを変更)

    ACTION=="add", ATTRS{idVendor}=="05e3", ATTRS{idProduct}=="****", RUN+="/local/run.sh /local/udev-dplink-on.sh"
    ACTION=="remove", ATTRS{idVendor}=="05e3", ATTRS{idProduct}=="****", RUN+="/local/run.sh /local/udev-dplink-off.sh"

apt-getは次にインストールされます。

実行sh

    #!/bin/bash

    echo $1 | at now

についてもっと詳しくhttps://www.eovao.com/en/a/Display%20Link%20Dock%20Ubuntu%20Linux/6/displaylink-dock-in-ubuntu-with-kvm-switch-usb-3.0

関連情報