Linuxでデュアルモニタ(ノートPC)

こんにちは、yokkunsです。
今日家に帰ったら、メインで使っているノートPCが止まっててびっくりしました。
とりあえず、再起動したら直ったので一安心です。
原因は分かりませんが、多分、OSに対してマシンの性能が追いついていないのに、24時間フル稼働という暴挙をし続けたためだと思います。
これから、ちょこちょこ電源を切るようにしたいと思います。


さて、今回のこの停止騒動で、久しぶりにノートPC本体を開いたんですが、改めて画面の大きさにびっくりしました。
ノートPCなのに、1280x800というサイズがあり、これを使わないのはもったいない気がします。

そこで、デュアルモニタにしてみることにしました。

Fedora7のGnomeには、GUIで、ディスプレイ設定が出きるので簡単に出来そうです。
2台目のモニターという所に、手動でモニターのモデルを選択し、デスクトップのレイアウトを拡張に変更します。



・・・・が、何故かうまくいきません。


Xの再起動をしろと言われるので、ログアウトしたら、Xが立ち上がらない始末。。。
Xが立ち上がらないとどうしようもないので、別のマシンから、/etc/X11/xorg.confを元に戻してから再起動しました。



このままでは、「やっぱりLinuxはダメだなw」などとバカにされてしまうので、原因と解決方法を調べた所、id:over80さんが、すごく丁寧に解説してくれてました。

どうやら、xrandr というコマンドを使うと、Xの再起動などせずとも、動的に画面設定をいじれるようです。

       xrandr [-help]  [-display display] [-q] [-v] [--verbose] [--screen snum]
       RandR version 1.2 options
       [--prop] [--fb <width>x<height>] [--fbmm <width>x<height>] [--dpi <dpi>]
       Per-output options
       [--output <output>] [--auto] [--mode <mode>] [--preferred] [--pos <x>x<y>]
       [--rate <rate>] [--reflect reflection] [--rotate  orientation]  [--left-of
       <output>]  [--right-of  <output>]  [--above  <output>]  [--below <output>]
       [--off] [--crtc <crtc>]
       RandR version 1.0 and version 1.1 options
       [-o orientation] [-s size] [-x] [-y]

引数なしで、実行すると、その時点で接続されているモニターの情報が出力されるので、ちゃんと外部モニターが認識されているかをチェックする。

$ xrandr 
Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 2560 x 1024
VGA connected 1280x1024+0+0 (normal left inverted right) 338mm x 270mm
   1280x1024      60.0*+   75.0     59.9  
   1152x864       75.0     74.8  
   1024x768       75.1     70.1     60.0  
   832x624        74.6  
   800x600        72.2     75.0     60.3     56.2  
   640x480        75.0     72.8     66.7     60.0  
   720x400        70.1  
LVDS connected 1280x800+0+0 (normal left inverted right) 331mm x 207mm
   1280x800       60.0*+   60.0  
   1280x768       60.0  
   1280x720       60.0  
   1024x768       60.0  
   800x600        60.3  
   640x480        59.9  
TV disconnected (normal left inverted right)

結果を見れば分かりますが、二つのモニタが、同じ部分を表示しています。
こいつを、xrandrコマンドで、別の箇所を表示するように変更すれば、デュアルモニタが実現出来そうです。

ただし、

複数のモニタを並べて配置する場合の合計のスクリーンサイズが、前述の情報表示で出た Screen の maximum を越えることは許されません。この最大値は X 起動時に確保したメモリサイズで決まるので、Xorg.conf の Screen セクション内の Display サプセクション内に、以下のように Virtual エントリを追加することで指定出来ます。(横幅は16の倍数を指定しておいたほうが無難です)

(http://d.hatena.ne.jp/over80/20080213/old)

とのことなので、まず、/etc/X11/xorg.confの変更とXの再起動を先に行います。

Section "Screen"
        Identifier "Screen0"
        Device     "Videocard0"
        DefaultDepth     24
        SubSection "Display"
                Virtual    2560 1024     # <------ これを追加
                Viewport   0 0
                Depth     24
                Modes    "1280x1024" "1280x960" "1280x800" "1280x720" "1152x864" "1024x768"
 "800x600" "640x480"
        EndSubSection
EndSection

変更したら、一旦ログアウトして、再度ログイン。

では、早速、xrandrコマンドを使って、デュアルモニタを実現してみます。

僕の場合、左に外部モニタ、右にノートPCなので、LVDSをVGAの右にセットします。

$ xrandr --output LVDS --right-of VGA

すると、ノートPCの画面が、拡張画面になって、望んでいたデュアルモニタが実現出来ました。


以上で、一応望んでいた動きはしているのですが、引用元でも述べられてる通り、Gnomeツールバーの表示問題と、小さい方の画面で下の方が表示出来ない問題があります。
今のところ、たまにしか電源を切る気がないので、問題ないですが、時間を見つけてXorgを勉強してみようと思います。