Kubuntuにおけるマルチモニタ構成の設定

2008/07/18PC::Ubuntu

Kubuntuでマルチモニタ環境を設定したときのメモ。

環境

  • Kubuntu 8.04 日本語ローカライズド
  • ビデオカード: nVidia Quadro 980XGL
  • プライマリモニタ: IBM L200p
  • セカンダリモニタ: IBM T120

インストール直後では、想定されるプライマリモニタ(L200p)ではなく、T120のみが利用可能となっている。
このため、T120を利用可能とするとともにL200pをプライマリモニタにするための方策を検討する。

ドライバのインストール

nv-driver.png

[KDEメニュー] - [システム] - [Hardware Drivers Manager]を起動し、NVIDIAの高性能グラフィックドライバを有効にするにチェックを入れ、ダイアログを閉じるとKubuntuが自動的にNVIDIA謹製のドライバを当ててくれます。
NVIDIAのドライバと差し替えるためにXの再起動を行う*1

*1 : ログアウトしてログインメニューからAlt+E

NVIDIA X Server Settingsのインストール

NVIDIA製のドライバを当てた後はKDEで用意されているX構成ツール*2を使うのではなく、NVIDIA X Server SettingsによりXの構成を行う。このため、まずはNVIDIA X Server Settingsをインストールする必要がある。

# sudo apt-get install nvidia-settings

*2 : [システム設定] - [モニタとディスプレイ]

NVIDIA X Server Settingsの構成

NVIDIA X Server Settingsで構成可能なマルチモニタ設定

Disabled
マルチモニタの構成を行わない
Separate X screen
各モニタ毎に独立したデスクトップを構成する。基本的にモニタ間を行き来できるのはポインタのみで、モニタをまたいだアプリケーションの表示などは行えない。
Separate X screen + Enable Xinerama
Windowsにおけるマルチモニタ構成と似たようなデスクトップ構成となる。モニタをまたいだアプリケーションの表示やなどが行え、最大化時はモニタをまたがないように最大化される。
TwinView
複数のモニタまとめて1つの高解像度のディスプレイとして利用する。このため、アプリケーションの最大化を行うとモニタをまたいでしまう。

使い勝手を考えると、Windowsと同じようなモニタ構成が幸せになれそう。と、いうことで[X Server Display Configuration] - [Configure...]から、"Separate X screen"を選択。なお、"Disabled"以外を選択すると自動的にセカンダリモニタが有効になる構成となる。

xorg.confファイルの保存および修正

ここで多くの場合、一般ユーザ権限でNVIDIA X Server Settingsを起動していると思われる。このため、構成の保存を行おうとしてもパーミッションの関係から/etc/X11/xorg.confが上書きすることができない。とりあえず自分のホームディレクトリにでも保存しておく。

キーボード定義の修正

保存が完了したら適当なエディタで保存したxorg.confを開いて編集を行う必要がある。
まず、NVIDIA X Server Settingsを利用するとxorg.confにおけるキーボード定義が英語キーボードになっているため、これを現在のxorg.confと比較しながら戻す。

# NVIDIA X Server Settingsにより作成されたキーボード構成をコメントアウト
#Section "InputDevice"
#    # generated from default
#    Identifier     "Keyboard0"
#    Driver         "kbd"
#EndSection

# 現在のxorg.confからキーボード部分の定義を貼り付け
Section "InputDevice"
        IdentifierはNVIDIA X Server Settingsにより作成されたものと差し替える
        #Identifier      "Generic Keyboard"
        Identifier      "Keyboard0"
        Driver          "kbd"
        Option          "XkbRules"      "xorg"
        Option          "XkbModel"      "jp106"
        Option          "XkbLayout"     "jp,jp"
        Option          "XkbOptions"    "grp:alt_shift_toggle,grp_led:scroll"
        Option          "XkbVariant"    "106,kana"
EndSection
プライマリモニタ/セカンダリモニタの入れ替え

プライマリモニタが意図したものと異なる場合、Screenセクションを修正する必要がある。

Section "Screen"
    Identifier     "Screen0"
    Device         "Videocard0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "0"
    Option         "metamodes" "DFP-0: nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

デュアルヘッド可能なカード1枚で構成されている場合、上記部分のDFP-0とDFP-1を入れ替えるだけでいいらしい。

修正が終わったらxorg.confを入れ替え、Xを再起動すれば有効になる。

そのほか、注意点

NVIDIA X Server Settingにて構成した後にKDEのX構成ツールを利用すると解像度が妙なことになったりと、xorg.confファイルのバックアップを取っていない状態だと元に戻すのも苦労するため使わない方が幸せになれるかもしれません。

カスタマイズ後の/etc/X11/xorg.conf

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 1.0  (buildd@vernadsky)  Tue Mar  4 20:24:34 UTC 2008


Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    Screen      1  "Screen1" LeftOf "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
    RgbPath         "/usr/X11R6/lib/X11/rgb"
EndSection

Section "Module"
    Load           "dbe"
    Load           "extmod"
    Load           "type1"
    Load           "freetype"
    Load           "glx"
EndSection

Section "ServerFlags"

# Removed Option "Xinerama" "0"
    Option         "Xinerama" "1"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

#Section "InputDevice"
#    # generated from default
#    Identifier     "Keyboard0"
#    Driver         "kbd"
#EndSection

Section "InputDevice"
        #Identifier      "Generic Keyboard"
        Identifier      "Keyboard0"
        Driver          "kbd"
        Option          "XkbRules"      "xorg"
        Option          "XkbModel"      "jp106"
        Option          "XkbLayout"     "jp,jp"
        Option          "XkbOptions"    "grp:alt_shift_toggle,grp_led:scroll"
        Option          "XkbVariant"    "106,kana"
EndSection

Section "Monitor"

    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "IBM T120"
    HorizSync       30.0 - 83.0
    VertRefresh     56.0 - 85.0
    Option         "DPMS"
EndSection

Section "Monitor"

    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "IBM L200P"
    HorizSync       31.0 - 80.0
    VertRefresh     56.0 - 85.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Videocard0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Quadro4 980 XGL"
    BusID          "PCI:1:0:0"
    Screen          0
EndSection

Section "Device"
    Identifier     "Videocard1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Quadro4 980 XGL"
    BusID          "PCI:1:0:0"
    Screen          1
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Videocard0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "0"
    Option         "metamodes" "DFP-1: nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Videocard1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "TwinView" "0"
    Option         "metamodes" "DFP-0: nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection