2010-03-11

X の nvidia ドライバでデュアルディスプレイの片方だけを回転する

Dell の巨大なモニタの設定が終わったので,それまで使っていた Dell のそれほど巨大でもないモニタを縦置きしてデュアルディスプレイ構成で使うことにした.このとき片方だけ画面を回転しなければならないが,これにもそこそこ苦労したので記録しておく.

まずはデュアルディスプレイの設定から.X ではデュアルディスプレイは昔からサポートされている.ただしこの設定では独立した複数のデスクトップができてしまう.Xinerama を用いるとデスクトップを統合し,それを複数のディスプレイで表示するようにできる(nvidia ドライバでは TwinView という方法もある).しかし統合デスクトップで片方のディスプレイの表示だけ回転というのは敷居が高そうだし,そもそも今回のようにディスプレイの大きさ が異なる場合,独立したデスクトップの方が便利そうなので,独立デスクトップの方で設定することにする.

最近では画面の回転(や解像度の変更)に XRandR という拡張を用いるようである.この機能を有効にし,xorg.conf の中で Option "Rotate" "left" などとすると,一応回転ができるのであるが,この場合ドライバのアクセラレート機能がオフになってしまうようなのである.いろいろ試行錯誤した結果,以下 のような方法におちついた.

まず xorg.conf:

Section "ServerLayout"
    Identifier     "Layout"
    Screen         0 "Screen 0" 0 0
    Screen         1 "Screen 1" LeftOf "Screen 0"
EndSection

Section "Device"
    Identifier     "Device 0"
    Driver         "nvidia"
    Screen         0
EndSection

Section "Device"
    Identifier     "Device 1"
    Driver         "nvidia"
    Option         "RandRRotation" "true"
    Screen         1
EndSection

Section "Screen"
    Identifier     "Screen 0"
    Device         "Device 0"
    DefaultDepth    24
EndSection

Section "Screen"
    Identifier     "Screen 1"
    Device         "Device 1"
    DefaultDepth    24
EndSection

上の別項目で説明したような解像度の設定などは取り去っているが,nVidia Quadro FX 380 の出力はどちらも DVI なので,自動で認識するようだ.また,デュアルリンクを有効にする nv ドライバの設定も nvidia ドライバでは必要ないようだ.

上のような設定で起動した後で,

$ xrandr --screen 1 -o left

とすると片方のディスプレイだけ回転できた.これを ~/.xsession などに書いておけばよい.

man xrandr を見て設定していると,つい

$ xrandr --screen 1 --output default --rotate left

としたくなるが,これはうまくいかない.--rotate でなく -o (orientation) を使うのがポイントであった.

0 件のコメント:

コメントを投稿