web-dev-qa-db-ja.com

Linux:外部モニターが接続されているときにスクリプトを実行するにはどうすればよいですか?

Linuxで外部モニターが接続されていることを検出するにはどうすればよいですか?

ワークスペースを設定するには、さまざまなスクリプトを実行する必要があります。

モニターの状態が変化したときにスクリプトを開始する賢い方法はありますか?

Nvidiaディスプレイドライバーを使用しています。

9
Joernsn

拡張ディスプレイ識別データ(EDI​​D)を解析できる read-edid と呼ばれるツールのセットがあります。これらのツールによって外部モニターが実際に検出された場合は、定期的に検出を確認し、出力を使用してスクリプトなどを開始できる場合があります。

Xが実行されているかどうかに関係なく、これを行う必要があるかどうかについては言及していません。

2
Rolf

udevイベントを使用する必要があります...可能なルールは次のようになります。

KERNEL=="card0", SUBSYSTEM=="drm", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/ninette/.Xauthority", RUN+="/usr/local/bin/0x_hw_hotplug_monitor.sh"

(出典 https://bbs.archlinux.org/viewtopic.php?pid=1329375#p1329375

1
0x1ad1b88

私は同じ答えを探していました:/
分散( http://willem.engen.nl/projects/disper )とgconftoolを使用して有効/無効にしています2番目のモニターとその上の2番目のgnome-panel。
disper -lは、接続されているすべてのモニターを一覧表示するため、最後の手段としてポーリングできます。

# only primary display
disper -s
gconftool-2 --type int --set  /apps/panel/toplevels/panel_1/screen -- -1


# dual display (nvidia twinview)
disper -e
gconftool-2 --type int --set  /apps/panel/toplevels/panel_1/screen 0
killall gnome-panel
1
Vindolin

270.18の時点で、nVidiaバイナリドライバーがまだ最新のXRandRを実装していないように見えることを考えると、画面サイズの変更についてxrandrのようなツールをポーリングするためにnew123456の提案に従う必要があるかもしれません。

私のシステムでは、nVidiaがxrandrに、1台の2560x1024モニターではなく、2台の1280x1024モニターがあることを適切にアナウンスする方法をまだ見つけていません...ご想像のとおり、フルスクリーンゲームセンターになります解像度の変更を禁止した場合は、両方のモニターで。 (それは私のデスクトップの付箋を台無しにします)

0
ssokolow