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

 これの続き。
doroyamada.hatenablog.jp

 手元モニター(オンボードHDMIに接続)が時々アクティブにならないので、状態を検知してアクティブにするパートを追加。アクティブになっていないとconnectedなのに画面サイズを検知しない。
 ディスプレイの名前を検出するために、上のリンク先に書いたとおり数字で決め打ちしていてたが、いつの間にか数字が変わって動作しなくなった。でもリブートすると以前の数字になる。どっちでも行けるようにスクリプトを修正。

#!/usr/bin/zsh
INACTIVE=`xrandr | grep " connected"|grep -v mm|sed -e "s/\(HDMI\S*\).*$/\1/g"`
if [ "$INACTIVE" != "" ]; then
	zenity --notification --text "Activated ${INACTIVE}."
	xrandr --output $INACTIVE --auto
	sleep 3
fi
TV=`xrandr | grep " connected"|grep 160mm|sed -e "s/\(HDMI\S*\).*$/\1/g"`
MON=`xrandr | grep " connected"|grep "510\|698"mm|sed -e "s/\(HDMI\S*\).*$/\1/g"`
xrandr --output $TV --auto --right-of $MON

 ログイン時に実行するとともにキーボード・ショートカットのCtl+ALT+Dに登録してある。出かける時にテレビをオフにすると、再度オンにしてもミラーリングになるので。

 「全くもって使いにくい」と思っていたシェルスクリプトだけど、だいぶ慣れてきた。引数が出てくるケースはphpでスクリプト書くよりは楽なことが多い。

twitter.com
fhiyo.github.io