Ubuntu Weekly Recipe

第48回デュアルディスプレイを使う

この数年に販売されたデスクトップPCの多く、そしてノートPCのほとんどは、複数のディスプレイを利用することができるようになっています。また、液晶ディスプレイの価格下落に伴い、WUXGAクラスのディスプレイであっても、非常に安価に調達できますので、複数のモニタをお持ちの方も多いかもしれません。

今回はUbuntu上でデュアルディスプレイを設定するレシピをお届けします。

デュアルディスプレイの分類

デュアルディスプレイ(トリプル、クアッドといった、2つ以上のマルチディスプレイも含みます)の使い方は、大きく分けて2つあります。

1つは「ミラーリング」などと呼ばれる使い方で、複数のディスプレイに同じ映像を表示する使い方です。これは主にノートPCとプロジェクタを組み合わせる場合に用い、複数のユーザに同じ画像を見せたい場合に利用します。

もう1つが「拡張デスクトップ」などと呼ばれる方法です。これは複数のディスプレイの表示を横や縦に並べ、あたかも一つの大きなディスプレイであるかのように扱います。図1は、1600x1200の解像度を持つモニタを横に並べ、3200x1200の仮想解像度で利用している状態のスクリーンショットです。

図1 拡張デスクトップ
図1 拡張デスクトップ

Ubuntuはこれらの使い方の両方に対応しています[1]⁠。

「画面解像度の設定」ダイアログの利用

Ubuntuでは標準のGUIとして、⁠システム⁠⁠→⁠設定⁠⁠→⁠画面の解像度]という設定ダイアログが用意されています図2⁠。

図2 画面解像度の設定・単一ディスプレイ
図2 画面解像度の設定・単一ディスプレイ

モニタを追加した場合はこのダイアログを利用して設定を行うことで、本来はミラーリング・拡張ディスプレイともに容易に設定可能です。ミラーリングを行う場合は「複数の画面をミラーする」を、拡張デスクトップとして利用する場合は追加されたディスプレイをクリックし、解像度を設定することで利用できます。設定後はログアウトすることでXを再起動すれば設定が反映されていることが期待できます。

ただし、色々な原因でこのダイアログからは設定が行えないことがあります。最初にこのダイアログから設定を試みて、正常に動作しないようであれば他の手段を試す必要があるでしょう。

図3 画面解像度の設定・ディスプレイを追加した状態
図3 画面解像度の設定・ディスプレイを追加した状態

xrandr

Ubuntuではxrandrコマンドを用いることで、利用するディスプレイの構成を動的に変更することができます(xrandr登場前までは解像度の設定にXの再起動が必要でした⁠⁠。より便利なGUIフロントエンドも準備されていますが、シェルスクリプトなどから利用する場合に備えて、コマンドラインでの利用方法を確認していきましょう。なお、実際には先述の ⁠画面解像度の設定」もxrandrを内部で呼び出しているのですが、細かな制御が行えないため、うまく利用しきれないようです。

xrandrコマンドによるマルチディスプレイの設定は2つの段階を踏みます。まず最初に行うのは、⁠接続されているディスプレイデバイスの一覧の取得」です。次のようにxrandrコマンドをオプションなしで実行することで、接続されているディスプレイの一覧を取得できます(明示的にオプションを指定したい場合、⁠xrandr --query」で同じ動作になります⁠⁠。

外部ディスプレイが接続されていないノートPCでの例
$ xrandr
Screen 0: minimum 320 x 200, current 1440 x 900, maximum 1440 x 1440
VGA disconnected (normal left inverted right x axis y axis)
LVDS connected 1440x900+0+0 (normal left inverted right x axis y axis) 304mm x 190mm
   1440x900       60.1*+   59.9     50.0  
   1360x768       59.8  
   1152x864       60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
TMDS-1 disconnected (normal left inverted right x axis y axis)
上記のノートPCにアナログ接続ディスプレイを追加した状態
$ xrandr       
Screen 0: minimum 320 x 200, current 1440 x 900, maximum 1440 x 1440
VGA connected (normal left inverted right x axis y axis)
   1400x1050      74.8     70.0     60.0  
   1280x1024      75.0     60.0     60.0  
   1440x900       59.9  
   1280x960       60.0     60.0  
   1360x768       59.8  
   1152x864       75.0     75.0     70.0     60.0  
   1024x768       75.1     75.0     72.0     70.1     60.0  
   832x624        74.6  
   800x600        72.2     75.0     60.3     56.2  
   640x480        75.0     72.8     72.8     75.0     66.7     60.0     59.9  
   720x400        70.1  
LVDS connected 1440x900+0+0 (normal left inverted right x axis y axis) 304mm x 190mm
   1440x900       60.1*+   59.9     50.0  
   1360x768       59.8  
   1152x864       60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
TMDS-1 disconnected (normal left inverted right x axis y axis)

出力のうち、⁠connected/disconnected」とある部分が認識されているディスプレイの接続されたポートの名称です。上記の例では「VGA」「LVDS」が接続された状態で、⁠TMDS-1」ポートには何も接続されていないことが分かります。また、各ポートに接続されたディスプレイの対応解像度が一覧されています。

一般的なノートPCでは、⁠VGA」が外部アナログ出力、⁠LVDS」がノートPC本体の液晶、⁠TMDS」⁠HDMI」などが外部デジタル出力に割り当たっているはずです。ただし、一部には特殊なハードウェアが存在し、この対応が異なることがあります。こうした特殊な機器では試行錯誤してポートの名称と実デバイスの対応を確認するしかありません。

接続ポート名と対応解像度を確認したら、実際にそれらのポートに接続されたディスプレイを有効にします。以下は拡張デスクトップとして1400x1050のディスプレイを追加しています。

$ xrandr --output VGA --mode 1400x1050

また、ノートPC本体の液晶と同じ内容を外部出力にも表示させたい場合、次のコマンドを利用します。

$ xrandr --output VGA --same-as LVDS

逆に、接続されたディスプレイへの表示をオフにするには次のように操作します。

$ xrandr --output VGA --off

これらのコマンドでモニタが正常に動作することが確認できたら、シェルスクリプトなどにしておくと便利でしょう。

grandrとlxrandr

xrandrをコマンドラインから操作するのに抵抗がある場合、GUIフロントエンドを利用することができます。GNOME環境ではgrandrを使うのが通常ですが、LXDE向けのlxrandrもシンプルで便利です。それぞれ次のようにインストールし、起動することが可能です。筆者はシンプルに設定を行うことができ、出力ポートの有効・無効を容易に切り替えることができるlxrandrによる設定を好んでいますが、このあたりは「お好み」だと思います。

grandrのインストールと起動図4・図5
$ sudo apt-get install grandr
$ grandr
図4 grandrによる設定
図4 grandrによる設定
図5 grandrによる設定・その2
図5 grandrによる設定・その2
lxrandrのインストール図6・図7
$ sudo apt-get install lxrandr
$ lxrandr
図6 lxrandrによる設定
図6 lxrandrによる設定
図7 lxrandrによる設定・その2
図7 lxrandrによる設定・その2

トラブルシューティング

xrandrは便利で強力な機能ですが、意に反して正常に動作しないこともありえます。ここでは筆者が体験したことのある幾つかのケースと、その回避策を紹介します。

特殊なデバイス認識が行われる場合

前述の通り、xrandrを実行した際に列挙されるポート情報が期待される対応になっていないケースもしばしば存在します。これは複数のディスプレイ出力(たとえばアナログ出力とHDMI、あるいはアナログ出力とDisplay Port[2]といったもの)や、ドッキングステーションと接続することでディスプレイポートが追加されるようなノートPCで発生することがあります。

たとえば筆者の手元にあるノートPCの中ではThinkpad X200がこうした問題に該当し、⁠接続されてもいないHDMI-1・HDMI-2というポートの対応解像度は表示されるが、なぜかアナログ外部出力は選択肢として表示されない」という現象が発生しました。なおThinkpad X200本体にはHDMI出力などのデジタル出力は搭載されていないのですが、X200ウルトラベースを接続することでDisplay Portによるデジタル出力が利用できるため、これらのポートがHDMIポートとして認識されているのではないかと考えられます。

なぜこうした挙動になるのかは非常に謎ですが、利用していないHDMI-1・HDMI-2をlxrandrから明示的に無効にしたところアナログ外部出力が認識されるようになり、プロジェクタを利用することができるようになりました。

「screen cannot be larger than ****x****」と表示されてしまう

xrandr・grandr・lxrandrのいずれを利用している場合でも、⁠screen cannot be larger than ****x**** (desired size ****x****)」といったメッセージが表示され、拡張デスクトップが設定できないことがあります。本来は設定ツール側で自動的に処理されるべきですが、/etc/X11/xorg.confに以下のような記述を行う必要があります。

Section "Screen"
        Identifier      "Default Screen"
        Monitor         "Configured Monitor"
        Device          "Configured Video Device"
        SubSection "Display"
                Virtual 2840 1050
        EndSubSection
EndSection

すでに「Section "Screen"」が存在するのであれば、上記の設定とすりあわせる必要があります。

面倒であれば[システム⁠⁠→⁠設定⁠⁠→⁠画面の解像度]から設定を行うことで、これらの記述が自動的に追加されます(そして追加後はgrandrやlxrandrで設定を行います⁠⁠。

NVIDIA製GPUを利用している場合

NVIDIA製GPU(GeForceシリーズ)を利用し、プロプライエタリなドライバを利用している場合[3]⁠、xrandrでは接続したディスプレイが認識されないことがあります。図8はアナログ出力モニタを接続した状態のlxrandrの画面なのですが、追加したアナログ出力ディスプレイが認識されていません(xrandrに対応していないのです⁠⁠。

図8 NVIDIA GPU環境でのlxrandr
図8 NVIDIA GPU環境でのlxrandr

このような場合[アプリケーション⁠⁠→⁠システムツール]からNVIDIA X Server Setting Toolを起動してください図9⁠。このツールを使うことで、⁠TwinView」という特殊な設定を利用することができ、xrandrや関連フロントエンドを使う場合と同じように、Xの再起動なしに設定を変更することができます。

図9 NVIDIA X Server Setting
図9 NVIDIA X Server Setting

こちらから設定を行うことでデュアルディスプレイにすることができます。

おすすめ記事

記事・ニュース一覧