【ubuntu】 Dual Displayの設定

我が家のメインマシン(デスクトップ)には、nVidia GeForce 7900GSに

  • DELL 2405FPW  (1920×1200)
  • SONY SDM-M61 (1280×1024)

のモニター2台がDVI-Iで接続されているのですが、OSをubuntuに乗り換えた時に一番ハマったのがこのデュアルディスプレイの設定でした。Windows XPではデュアルディスプレイ化した上で、双方のディスプレイをシームレスにウィンドウ移動したり、片方のディスプレイで最大化するとそのディスプレイだけで最大化されるなど使い勝手が良かったのですが、これと同じ事をubuntuで設定したかったわけです。
で、あちこちのサイトを参考にやってみた結果、ようやく思い通りになったので覚書きをしとくわけです。
ちなみに実現したディスプレイ環境はこんな感じ。

Screenshot

まずは環境を…

OS      ubuntu 8.04 LTS

VGA    nVidia GeForce 7900GS

モニタ  DELL 2405FPW + SONY SDM-M61

解像度 3200 x 1200 (ただし一部欠ける箇所あり)

こんな感じです。

手順は大体以下のような感じ。

  1. xorg.confのバックアップ
  2. nVidiaのプロプライエタリドライバのインストール
  3. nvidia-settingsのインストール&設定
  4. xorg.confの編集
  5. ウィンドウマネージャの再起動

こういう設定をいじる時は設定ファイルのバックアップが必須ですね。特にディスプレイ関係は設定をミスるとまともに起動しなくなるので、最悪runlevel 1からでも戻せるようにしておくべきかと。よって、まずは/etc/X11/xorg.confをバックアップしておきましょう。

次にnVidiaのドライバですが、ubuntuインストール時にビデオカードを差しているとnVidia用プロプライエタリドライバ(新しいカード用)を使うか聞いてくると思います。後から有効にするのであれば、「システム」-「システム管理」-「ハードウェア・ドライバ」でチェックを入れれば良いはず。

さらにSynapticパッケージ・マネージャでnvidia-settingをインストールします。
その後、ターミナルから

gksudo nvidia-settings

でNVIDAのX Server設定画面が表示されます。この時にスーパユーザ権限をつけないとxorg.confが正常に書き換えられないみたいですね。ここで若干ハマりました。コマンドラインだからsudoを使ってたのだけど、どうもそれではうまくいかなくてgksudoにしたらできましたとさ。

Screenshotnvidia_x_server_settings
で、表示される画面がこんな感じ。

ここで「X Server Deisplay Configuration」を選択して、「Configure」を押してSeparate X Screenを選択。ちなみにウチの環境みたいに左右のディスプレイの解像度が異なる時はディスプレイの相対位置を変えたかったりします。そういう時は「Advanced…」を押して「X Screen」」タブを選択、Positionを"Absolute"にすると位置を絶対座標で調整できるようになります。

Screenshotconfigure_display_device
デュアルディスプレイの選択画面
ここで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」をダウンロード

Author: kan
初めてプログラムらしきものを作ったのは幼稚園の時。それから約40年経ち、現在はデジタル回路設計から信号処理、機械学習まで幅広い経験を活かしてシステムアーキテクトとして活動中。超並列処理、デジタル回路とソフトウェアのバランス設計が得意分野。 Linux/Mac/Windows使い。 C/C++を主要言語として、Unity、Qtなどのフレームワーク興味あり。UI/UXデザイン、STL拡張など。 音声処理、画像処理、技術コンサルは仕事でも請け負います。 一般ソフトウェア開発プロセス、医療機器ソフトウェア開発プロセス作成も進行中。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください