udev監視ホットプラグルールが実行されていません。

udev監視ホットプラグルールが実行されていません。

mDPケーブルの接続時や接続解除時期を検出するためのデフォルトのudevルールを設定しました。

ファイルは/etc/udev/rules.d/95-monitor-hotplug.rules

KERNEL=="card0", SUBSYSTEM=="drm", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/var/run/gdm/auth-for-vazquez-OlbTje/database", RUN+="/usr/bin/arandr"

mDPケーブルが接続または切断されたら、arranrを起動する必要がありますが、何も起こりません。また、ルールを再ロードしました。

udevadm control --reload-rules 

++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++ 問題が修正されました。 @Gillesが提供するリンクを使用してください。私.profileはthenポインタENV{$XAUTHORITY}="/home/user/.Xauthority"ACTION=="change"ルールファイルに次のコードを追加しました。その後、すべてが期待どおりに機能しました。ありがとう、ザイルズ。

case $DISPLAY:$XAUTHORITY in
  :*:?*)
    # DISPLAY is set and points to a local display, and XAUTHORITY is
    # set, so merge the contents of `$XAUTHORITY` into ~/.Xauthority.
    XAUTHORITY=~/.Xauthority xauth merge "$XAUTHORITY";;
esac

ベストアンサー1

デフォルトでは、このadd操作にはudevルールが適用されます。 udevルールはモニターではなくグラフィックカードにあるため、グラフィックカードがシステムに追加されたときに実行されます。これは基本的に起動時を意味します。

モニターを挿入すると、ジョブではなくchangeジョブaddが発生します。udevadm monitorモニターを起動して接続することでこれを観察できます。したがって、udevルールはchangeアクションを指定する必要があります。

KERNEL=="card0", SUBSYSTEM=="drm", ACTION=="change", \
    ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/var/run/gdm/auth-for-vazquez-OlbTje/database", RUN+="/usr/bin/arandr"

オンラインで見つけた例は私の理解を確認しました。コーディングトニーWHOmonitor-hotplug.shスクリプトあなたは興味があるかもしれません。

以下のファイル名は再起動するたびに変更されるため、スクリプトは/var/run自動的に決定する必要があります。この回答役に立ちます。

おすすめ記事