次のことを可能にするツールはありますか:
- モニターごとに現在のRandR構成(位置、向き、解像度など)を覚えておいてください。
- ディスプレイが接続されるとすぐに、最後の既知の適切な構成を自動的に適用します。アプレットやxrandr(1)をいじくり回す必要はありませんか?
構成は、ユーザーごと、ディスプレイごとに適用する必要があります。
そのようなツールが実際にない場合は、自分で1つまとめたいのですが、私が見る限り、モニターが接続されていることを確認する方法はありません。xrandr-qでポーリングする必要がありますか出力が接続または切断されていることを確認するために時々、またはそれを行うためのより効率的な方法はありますか? udevを調整してそれを実行できますか?
承認された回答:
このシンプルな(自家製の)スクリプトを使用して、RandRのポーリングを継続し、VGAが接続/切断されたときにLVDS1とVGA1を切り替えます。 ( HDMI の場合 次のスクリプトファイルの出力は、すべてのVGA1
を変更します HDMI1
へ )
汚い解決策ですが、問題なく機能しています。
セットアップに合わせてカスタマイズされています。ほとんどの場合、RandR出力名(LVDS1
)を変更する必要があります。 およびVGA1
)そして私とは異なり、VGAのRandRデフォルトモードでおそらく問題ないでしょう。
#!/bin/bash
# setting up new mode for my VGA
xrandr --newmode "1920x1080" 148.5 1920 2008 2052 2200 1080 1089 1095 1125 +hsync +vsync
xrandr --addmode VGA1 1920x1080
# default monitor is LVDS1
MONITOR=LVDS1
# functions to switch from LVDS1 to VGA and vice versa
function ActivateVGA {
echo "Switching to VGA1"
xrandr --output VGA1 --mode 1920x1080 --dpi 160 --output LVDS1 --off
MONITOR=VGA1
}
function DeactivateVGA {
echo "Switching to LVDS1"
xrandr --output VGA1 --off --output LVDS1 --auto
MONITOR=LVDS1
}
# functions to check if VGA is connected and in use
function VGAActive {
[ $MONITOR = "VGA1" ]
}
function VGAConnected {
! xrandr | grep "^VGA1" | grep disconnected
}
# actual script
while true
do
if ! VGAActive && VGAConnected
then
ActivateVGA
fi
if VGAActive && ! VGAConnected
then
DeactivateVGA
fi
sleep 1s
done
フルステップ:
-
上記のスクリプト(
homemadeMonitor.sh
)優先ディレクトリに -
ターミナルで次のコマンドを入力して、.shファイルを実行可能にします
chmod +x homemadeMonitor.sh
-
.shファイルを実行します
./homemadeMonitor.sh