ArchLinuxで自動でdisplayの接続を認識し調整する
## はじめに
デュアルディスプレイにする際、毎回コマンドを叩いて、外すときもまたコマンドを叩いていた。こうしないとデュアルディスプレイにしたいのに、一画面にだけ表示されているままだったり、ディスプレイが一つなのに、複数のディスプレイがある状態になってしまう。
$ # ディスプレイをつけたとき
$ xrandr --output LVDS1 --auto --output VGA1 --auto --right-of LVDS1
$ # ディスプレイを外したとき
$ xrandr --output VGA1 --off
毎回コマンドを叩くのはこれはこれでテンションが上がるのだが、やはりイケていないし、いい加減面倒になってきた。自動でディスプレイの接続状況を確認して調整するスクリプトを書いたのでメモ。
## 環境
- ArchLinux (kernel 4.7.4)
- awesome v3.5.9
- xrandr v1.5.0
## script
以下のスクリプトは https://wiki.archlinuxjp.org/index.php/Xrandr から引用
#!/bin/bash
IN="LVDS1"
EXT="VGA1"
if (xrandr | grep "$EXT disconnected"); then
xrandr --output $IN --auto --output $EXT --off
else
xrandr --output $IN --auto --primary --output $EXT --auto --right-of $IN
fi
このシェルスクリプトを実行すると、もし外部ディスプレイが存在すれば、それに接続し、もし、存在しなければ、単一ディスプレイの表示となる。
## awesomeから定期実行させる
awesomeのタイマー機能を使用して、定期的に実行させるようにした。
cronや、systemd のタイマーを使用しても良いかなぁと思ったが、どのタイミングで止めるべきかなど、管理もめんどそうだし、どうせawesomeを使っているときくらいしかマルチディスプレイを欲しないのでこれで良い。
スマートなやり方があったら教えてください。
一秒毎に上記スクリプトが実行されるようにする。
~/.config/awesome/rc.lua
に以下を追記
displayChangeTimer = timer({ timeout = 1 })
displayChangeTimer:connect_signal(
"timeout",
function ()
awful.util.spawn_with_shell("~/scripts/display.sh")
end
)
displayChangeTimer:start()
これで一秒ごとにディスプレイの接続を確認し、ディスプレイの調整を行ってくれる。