
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
自動的に決定する必要があります。この回答役に立ちます。
答え2
nvidiaカードを扱う人の場合、udevルールが機能するにはカーネルモード設定をオンにする必要があります。
sudo grubby --update-kernel=ALL --args='nvidia-drm.modeset=1'