我が家のメインマシン(デスクトップ)には、nVidia GeForce 7900GSに
- DELL 2405FPW (1920×1200)
- SONY SDM-M61 (1280×1024)
のモニター2台がDVI-Iで接続されているのですが、OSをubuntuに乗り換えた時に一番ハマったのがこのデュアルディスプレイの設定でした。Windows XPではデュアルディスプレイ化した上で、双方のディスプレイをシームレスにウィンドウ移動したり、片方のディスプレイで最大化するとそのディスプレイだけで最大化されるなど使い勝手が良かったのですが、これと同じ事をubuntuで設定したかったわけです。
で、あちこちのサイトを参考にやってみた結果、ようやく思い通りになったので覚書きをしとくわけです。
ちなみに実現したディスプレイ環境はこんな感じ。
まずは環境を…
OS ubuntu 8.04 LTS
VGA nVidia GeForce 7900GS
モニタ DELL 2405FPW + SONY SDM-M61
解像度 3200 x 1200 (ただし一部欠ける箇所あり)
こんな感じです。
手順は大体以下のような感じ。
- xorg.confのバックアップ
- nVidiaのプロプライエタリドライバのインストール
- nvidia-settingsのインストール&設定
- xorg.confの編集
- ウィンドウマネージャの再起動
こういう設定をいじる時は設定ファイルのバックアップが必須ですね。特にディスプレイ関係は設定をミスるとまともに起動しなくなるので、最悪runlevel 1からでも戻せるようにしておくべきかと。よって、まずは/etc/X11/xorg.confをバックアップしておきましょう。
次にnVidiaのドライバですが、ubuntuインストール時にビデオカードを差しているとnVidia用プロプライエタリドライバ(新しいカード用)を使うか聞いてくると思います。後から有効にするのであれば、「システム」-「システム管理」-「ハードウェア・ドライバ」でチェックを入れれば良いはず。
さらにSynapticパッケージ・マネージャでnvidia-settingをインストールします。
その後、ターミナルから
gksudo nvidia-settings
でNVIDAのX Server設定画面が表示されます。この時にスーパユーザ権限をつけないとxorg.confが正常に書き換えられないみたいですね。ここで若干ハマりました。コマンドラインだからsudoを使ってたのだけど、どうもそれではうまくいかなくてgksudoにしたらできましたとさ。
ここで「X Server Deisplay Configuration」を選択して、「Configure」を押してSeparate X Screenを選択。ちなみにウチの環境みたいに左右のディスプレイの解像度が異なる時はディスプレイの相対位置を変えたかったりします。そういう時は「Advanced…」を押して「X Screen」」タブを選択、Positionを"Absolute"にすると位置を絶対座標で調整できるようになります。
デュアルディスプレイの選択画面
ここでTwin Viewを選択するとうまく動作しなかった。
Twin Viewだと2つのディスプレイを連続したスクリーンとして扱うのでウィンドウを最大化した時に両画面にまたがってしまうのだ…。
最後に「Save to X Configuration File」を押して /etc/X11/xorg.conf を設定しましょう。
ちなみに、ここまでで2つのモニタを認識していない時はまずモニタを認識させる所からスタートですな。やり方は…え〜と…[E:coldsweats01]…忘れたかも…。まぁ、そんなに難しくないはずです。イザとなったらxorg.confを自分で書けば良いので…。
ウィンドウマネージャを再起動します。別にやらなくても良いのだけど、すくなくとも再起動して2つのモニタにデスクトップが表示される事を確認した方が良いかと…。もちろんubuntuを再起動しても良いけど、確かCTRL+ALT+BackSpaceで再起動したと思われますダ。この手の作業をしている時は結構便利。[E:heart02]
最後にxorg.confを編集して Xinerama を有効にします。もちろん管理者権限が必要なので…
gksudo gedit /etc/X11/xorg.conf
とでもしてエディタでxorg.confを開きます。次に適当な箇所に
Section "ServerFlags"
Option "Xinerama" "1"
EndSection
を記述すればOK。既に記述が存在する場合は後ろの数字を"1"にしてください。
これで次にウィンドウマネージャを再起動した時に目的のデュアルディスプレイ化がされているはず…なんですが、結構動かなかったりするんですよねぇ。[E:bearing]その時はバックアップしていたxorg.confを戻して、TwinViewを設定してみて横長の(ご所望ではないタイプの)デュアルディスプレイができるか確認すると良いかもしれません。Twin Viewなら長〜いタスクバー、Separate X Screenにしてそれぞれのモニタに別々のタスクバーが表示される事が確認できれば、割とすんなり行くとは思います。
nvidia-settingsの画面にxineramaを有効にするチェックボックスがあります。気づいた人もいると思いますけど。このチェックボックス、なんかちゃんと動作しない(チェックしてもxineramaが有効にならない)ような気がするのですが気のせいかな。僕の場合はGUIだけではNGでした。結局xorg.confを直接書き換えたら、次からnvidia-settingsの画面でxineramaのチェックが入るようになってました。まぁ、この辺は余り細かく追わない方が良いかと思って手を出してないっす。
最後に結局できあがったxorg.confを張っておきます。参考になれば此幸い。
Deviceを2つ定義して、ScreenもMonitorも2つずつというのがミソのようですな。
「xorg.conf」をダウンロード