xrandrを使って詳細な画面設定

注) 本記事によって生じたいかなる損害について著作者は責任を負いません。


EeePC901XにはUbuntu10.10をいれて使ってる。このパソコン、いかんせん画面が小さいので使いにくい。最大解像度は1024x600なのだけども、小さくて使いにくい。

スクロール表示

そこで仮想的に解像度を例えば1024x768にして、画面をスクロール表示させる(Panning)ようにしたいとしよう。そんなときは

xrandr --output LVDS1 --panning 1024x768

と実行すると良い。ちなみにxrandrは標準では入ってなかったと思うので、debian系では

sudo apt-get install xrandr

でインストールしておこう。

追記: Ubuntu10.10のUnityでは正常に動作しない。対処法は、上のコマンドを実行したあとに

sh -c "cd /tmp; nohup unity --reset &"

解像度

あと、普通は設定できない解像度に設定したいということもあるかもしれない。
EeePC901Xだと1024x600, 800x600, 640x480だけが設定可能なのだが、640x480だと横幅を使い余しているので、横も広げて使いたいということがあると思う。
解像度が低い動画を再生していて、全画面表示したいのだけども、普通に全画面表示にすると負荷がかかって固まってしまうので、画面の解像度を動画の解像度まで低くして全画面表示にしたいということもあるとおもう。

そんなときはこうするとよい。
まず以下のシェルスクリプトを作成する。

# ch_res.sh
MODELINE=`cvt $2 $3 | grep Modeline | sed -e s/Modeline\ //`
MODENAME=`echo $MODELINE | sed -e s/[^\"]*$//`
xrandr --newmode $MODELINE
xrandr --addmode $1 $MODENAME
xrandr --output $1 --mode $MODENAME

このシェルスクリプトを使うと、例えばEeePC901Xでは

sh ch_res.sh LVDS1 816 480

とすることで、LVDS1という出力先(EeePC901Xでは本体の画面)に解像度816x480で表示してくれるようになる。出力先の名前がわからなければ、単にxrandrと実行すれば現在の設定が表示されるので、それを参考にする。
ちなみに、標準付属の解像度設定ツールを使えばもとの解像度に戻したり、一度設定した解像度にも変更できる。一度ログアウトすると消えてしまうようだ。