web-dev-qa-db-ja.com

マルチモニターをサポートするためのVNCサーバー構成

仕事の大部分をオフィスでVNCを使用しています。 SSH経由でログインして作業を行うために、Linuxサーバーのクラスターをセットアップしました。これにより、VNCを使用して、ワークフローを容易にするための永続的なデスクトップ環境を取得できます。デスクのデュアルモニターWindowsシステムから接続しています。必要に応じて、セッション用にTightVNCサーバーを設定できます。

私ができることは、2つの別々のモニターを持つセッションを作成するようにサーバーをセットアップすることです。それらを1つのビューポートにまとめることができますが、水平解像度を2倍にしたときのように、Fluxboxタスクバーや最大化されたウィンドウが画面全体に広がらないようにします。 Xには、2つの画面が表示されるようにします。しかし、TightVNCビューアーには、単一のワイドディスプレイとして表示されます。

私はオンラインで周りを見回して、これを行うことができる人々の言及を見ましたが、それを実現するために渡す実際のチュートリアルやスイッチのリストはありません。ルートがないため(そしてシステム全体のxorg.confファイルがないため)、xorg.confを使用して複数のアダプターを作成することはできません。サーバーはラック上に存在し、ヘッドレスであるため、VNCの仮想モニターとして再利用できる未使用の物理アダプターはありません。 vncserverコマンドラインで-screenを使用して複数の画面を指定し、xrandrを使用して「VNC-1」を「VNC-0」の隣に配置しようとしましたが、 xrandr--screen 1を使用してクエリを実行しても、それに接続されたディスプレイが表示されていても、「VNC-1」という名前の出力が見つからないという報告が続きます。この方法で設定されたセッションにVNCを実行しても、画面0のみが表示されます(出力 "VNC-0")。

何か足りないものがあるに違いないと思います。 xrandrを使用した構成が重要と思われますが、VNCサーバーを呼び出すときに必要な手順を理解できていないようです。

また注意してください:

  • サーバーにはXvnc TightVNC 1.3.0を使用しています。そのため、x11vncをバックエンドとして使用しません。
  • 私のWindowsマシンは最新バージョンのTightVNCビューアー(この投稿の時点では2.7.10)に接続しています。
  • 私はこの設定をFluxboxとGnomeの両方で試してみましたが、動作に違いはありませんでした。どのデスクトップ/ WMが実行されているかだけです。
  • このセッションで2つの個別のDISPLAYを設定したくありません。あるモニターで作成したウィンドウを他のモニターにドラッグできるようにしたいのですが。

何が欠けていますか?それとも私がやりたいことは可能ですか?

編集:(2016年6月16日)強調するために、利用可能な物理ディスプレイ(使用または未使用)はありません。物理的なマシンがどのように見えるかはわかりませんが、ヘッドレスなので、物理的なディスプレイアダプターがありません。

X転送でSSH経由で接続した後、xrandrを実行すると、次のようになります。

xrandr: Failed to get size of gamma for output default
Screen 0: minimum 0 x 0, current 3840 x 1200, maximum 32768 x 32768
default connected 3840x1200+0+0 0mm x 0mm
   3840x1200       0.0* 

VNCセッションから:

Screen 0: minimum 32 x 32, current 1920 x 1200, maximum 32768 x 32768
VNC-0 connected 1920x1200+0+0 0mm x 0mm
   1920x1200      60.0* 
   1920x1080      60.0  
   1600x1200      60.0  
   1680x1050      60.0  
   1400x1050      60.0  
   1360x768       60.0  
   1280x1024      60.0  
   1280x960       60.0  
   1280x800       60.0  
   1280x720       60.0  
   1024x768       60.0  
   800x600        60.0  
   640x480        60.0  

名前のない出力にモードを追加しようとすると、次のように表示されます。

> xrandr --addmode VIRTUAL2 1920x1200_60.00
xrandr: cannot find output "VIRTUAL2"

出力には任意の名前を使用できます(いくつか試してみました)。このエラーだけが表示されます。

6
Ben Richards

ここでの秘訣は、サーバー上にvirtualモニターを生成し、実際のモニターとの相対位置に配置して、[〜#〜] vnc [〜 #〜]使用したいモニター全体(リアル+仮想)のその部分を使用します。これはすべて これまでに役立つArch Linuxフォーラム に文書化されています。

  1. 仮想ミラーを作成するには:

    $ gtf 1920 1080 60
    # 1920x1080 @ 60.00 Hz (GTF) hsync: 67.08 kHz; pclk: 172.80 MHz
    Modeline "1920x1080_60.00"  172.80  1920 2040 2248 2576  1080 1081 1084 1118  -HSync +Vsync
    

    必要なモードラインを見つけることができます。これは1920x1080のサイズの仮想モニターと60Hzのリフレッシュレートレートを想定しているので、必要に応じてこれを調整できます。

    これで、次の方法で新しいモードラインを生成できます

    xrandr --newmode "1920x1080_60.00"  172.80  1920 2040 2248 2576  1080 1081 1084 1118  -HSync +Vsync
    
  2. これで、次の方法でVIRTUAL1モニターを生成できます。

    xrandr --addmode VIRTUAL1 1920x1080_60.00
    
  3. これで、仮想モニターを既存のモニター(私の場合、HDMI1)の左側に配置できます。

    xrandr --output VIRTUAL1 --mode 1920x1080_60.00 --left-of HDMI1
    
  4. 最後に、あなたはmayディスプレイの(たとえば)仮想部分のみを表示することを決定します

    x11vnc -clip 1920x1080+0+0
    x11vnc -clip xinerama1
    

    (あなたのために働くどちらでも)。モニタースペース全体(仮想+リアル)を表示する場合は、上記を省略してください。

  5. 上で参照されている元の投稿は、vncセッションを開始するときに、リモートコンピューターで次の2つのパラメーターを渡すことを推奨しています。

    vncviewer -encodings "tight copyrect"
    

    私はこれが必要だとは思いませんでしたが、YMMVからそれをあなたに渡します。

P.S.:X11が2つの異なるモニターの存在をどのように処理するかについての説明は混乱を招きます。 X11が簡単に、そして何の介入も必要とせずに、既存のモニターから単一のワークスペース(screenと呼ばれる)を作成することです。あるモニターから別のモニターにドラッグすることができ、マウスはwholeモニタースペース(screen)の上に障壁なしで流れます。また、ウィンドウを最大化すると、ウィンドウが配置されているモニターのみが塗りつぶされ、画面は塗りつぶされません。これは私があなたが望んでいたと想定していることであり、上記は追加の作業なしで達成するものです。それ以外の場合は、作業が必要です(それが可能な場合)。

8
MariusMatutiae

Fedora 26を使用して、VIRTUAL1がxrandrコマンドで表示されないという同じ問題に直面しました。

次に、HDMI-2のような空の出力を再利用するために他の指示に従いましたが、それは非常にうまくいきましたが、

  • Gnome(およびxrandr)は、空の出力が接続されていると認識せず、仮想デスクトップに拡張デスクトップまたはクローンの位置を調整するように表示しません。新しい物理モニターが他の出力に接続されるたびに、壊れる可能性が高くなります。
  • さらに悪いのは、gnome-Shell(およびその下のつぶやき)が
    新しい仮想モニターを、表示可能な領域の一部として検討します
    複合フレームバッファ、適切に再描画されず、ウィンドウ
    移動すると引き裂かれ、永久的なアニメーションの軌跡が後に残ります、
    ウィンドウを閉じた後でも、x11vncを再起動した後でも、それらはまだ存在しています。

その後、ダミーのドライバーで少し試行錯誤した結果、完全なxorg.confファイルは必要ありませんが、「インテル」ドライバー(私の場合は、独自のドライバー名を使用する必要があります)情報をファイルに追加するだけで十分であることがわかりました/etc/X11/xorg.conf.dディレクトリの下でVIRTUAL1およびVIRTUAL2出力をアクティブ化し、gnome-Shellにそれらを有効な出力として認識させます。 (また、出力名がわずかに変更されていることに気付きました。たとえば、「eDP-1」から「eDP1」に変わります)さらに、「TearLess」オプションをtrueに設定して、コンポジットマネージャーが再描画しない場合にドライバーを再描画できるようにしました。

~# vi /etc/X11/xorg.conf.d/01-dummy-monitor.conf
Section "Device"
        Identifier      "Configured Video Device"
    Driver "intel"         #CHANGE THIS
    Option "TearLess"   "1"
EndSection

Section "Monitor"
        Identifier      "Configured Monitor"
EndSection

Section "Screen"
        Identifier      "Default Screen"
        Monitor         "Configured Monitor"
        Device          "Configured Video Device"
EndSection

その後、 上記の応答 の指示が適切に機能し、新しい仮想モニターをGnome画面の設定で管理できます。異なる解像度のVNCクライアントデバイスがある場合は、説明に従ってxrandrを使用して追加し、Gnome画面の設定でそれらを割り当てることができます。