質問: 外部ディスプレイが接続されているときにrandr構成を自動的に適用するためのツール 次のことを可能にするツールがあります: モニターごとに現在のrandr構成(位置、方向、解像度など)を記憶します。 アプレットやxrandr(1)をいじる必要なしに、ディスプレイが接続されるとすぐに、最後の既知の適切な構成を自動的に適用しますか? 構成は、ユーザーごと、ディスプレイごとに適用する必要があります。実際にそのようなツールがない場合は、自分で1つにまとめたいと思いますが、見る限りでは、モニターが接続されていることを確認する方法はありません。xrandr-qでポーリングする必要がありますか?出力が接続または切断されたことを時々把握するために、またはそれを行うためのより効率的な方法はありますか? udevはそれを行うように調整できますか?
回答: peoroのソリューションを使用すると、xrandrから余分な出力が得られたため、grepで-cオプションを使用して、一致の数をカウントしました。私はそれをhdmiに適合させ、オーディオスイッチも追加しました:#!/bin/bash # adapted from http://unix.stackexchange.com/questions/4489/ # default monitor is lvds1 monitor=lvds1 # functions to switch from lvds1 to hdmi1 function activatehdmi { xrandr --output hdmi1 --mode 1920x1080 --dpi 160 --output lvds1 --off pactl set-card-profile 0 output:hdmi-stereo-extra1 monitor=hdmi1 } function deactivatehdmi { xrandr --output hdmi1 --off --output lvds1 --auto pactl set-card-profile 0 output:analog-stereo monitor=lvds1 } # functions to check if hdmi is connected and in use function hdmiactive { [ $monitor = "hdmi1" ] } function hdmiconnected { [[ `xrandr | grep "^hdmi1" | grep -c disconnected` -eq 0 ]] } # actual script while true do if ! hdmiactive && hdmiconnected then activatehdmi fi if hdmiactive && ! hdmiconnected then deactivatehdmi fi sleep 1s done