マルチモニター設定のシェルスクリプト

 モニター電源オンのタイミングのせいか、時々ミラーリングになってしまうので、これをGUIではなくCUI一発でマルチモニターにしたい。
 ちなみにGUIアプリ名はxfce4-display-setting。

 モニターをセットするコマンドはxrandr。

kazz@oscar ~/bin/test# xrandr | grep "connected" 

VGA-0 disconnected (normal left inverted right x axis y axis)
DVI-D-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1080+1920+0 (normal left inverted right x axis y axis) 160mm x 90mm
HDMI-1-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 510mm x 290mm
DP-1-1 disconnected (normal left inverted right x axis y axis)
kazz@oscar ~/bin/test# 

 ディバイス名は行頭に表示されるが、不定で、接続端子名やモニター名も判別できない(インターフェイスの種類は判別できている)。xfce4-display-settingはモニター名を判別できているが、GUI専用アプリで、情報を標準出力に出す機能はなさそう。
 結局悩んだ末にサイズを元に判別することにした。

#!/usr/bin/zsh
TV=`xrandr | grep " connected"|grep 160|sed -e "s/\(HDMI\S*\).*$/\1/g"`
MON=`xrandr | grep " connected"|grep 510|sed -e "s/\(HDMI\S*\).*$/\1/g"`
xrandr --output $TV --auto --right-of $MON

 160mm x 90mmの方がオンボードグラフィックス接続のONKYO AVアンプ、510mm x 290mmの方はグラフィックボード経由のモバイルモニター。
 xfce4-display-settingではかつてよく使っていたAsusの23インチとして認識しているし、
ONKYOは7インチになってる。