Linux:外部モニターが接続されているときにスクリプトを実行する方法は?


10

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

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

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

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


奇妙な方法はxrandr、数秒ごとに出力の変化を照会するスクリプトを記述し、違いに気付いた場合はスクリプトを実行することです。
new123456 2011年

理想的には、スクリプトを実行するようにudevに指示できます。私は試していませんが、KMSがサポートされるまでnvidiaドライバーで動作することを期待していません。stackoverflow.com/questions/5469828/...
アンディ・

回答:


3

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

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


そうです、Xでのみ必要です。ディスプレイ(ディスパーなど)を検出する他のツールもいくつかありますが、デーモンを作成する必要がないようにしたいと思っていました:)
Joernsn

1

私は同じ答えを探していました:/
disper(http://willem.engen.nl/projects/disper)とgconftoolを使用して、2番目のgnome-panelと一緒に2番目のモニターを有効/無効にします。
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


0

270.18の時点では、nVidiaバイナリドライバーはまだ最新のXRandRを実装していないようxrandrで、画面サイズの変更などのツールをポーリングするには、new123456の提案に従う必要がある場合があります。

私のシステムxrandrでは、1つの2560x1024モニターではなく、2つの1280x1024モニターがあることをnVidiaに適切に通知する方法をまだ見つけていません...解像度を変更しないようにします。(それは私のデスクトップの付箋をマックアップします)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.