VNC経由で画面にアクセスしたいUbuntuLinuxでX仮想フレームバッファーサーバーを実行しました。
これが私のステップです:
Xvfb :1.0 -screen 0 1024x768x16 &
x11vnc -storepasswd
でパスワードを設定します。
x11vnc -display :1.0 -usepw -forever -ncache 10 -autoport 5900 &
Using X display :1.0
rootwin: 0x1a9 reswin: 0x200001 dpy: 0x174f920
...
Default visual ID: 0x21
Read initial data from X display into framebuffer.
initialize_screen: fb_depth/fb_bpp/fb_Bpl 16/16/2048
rfbNewFramebuffer(0x1797f20, 0x0, 1024, 9216, 5, 1, 2)
...
X display :1.0 is 16bpp depth=16 true color
次に、macOSからVNCサーバーにアクセスします。
open vnc://my-vnc-ip:5901/
ただし、フレームバッファーが広すぎます(1024x9216
)。これは、同時に表示される12個の余分な画面があるためです。理想的には、1024x768
画面のみのディスプレイを1つだけにしたいです。
表示されている画面を期待どおりの解像度で表示できるようにするには、どうすれば修正できますか?
この問題は、-ncache
(実験的)オプションが原因で発生したようです。削除すると修正されます。
デフォルトで有効になっている場合は、-noncache
を使用して無効にしてみてください。
有効にすると、基本的にクライアント側のキャッシュスキームがアクティブになり、ピクセルデータをVNCビューア側にオフスクリーンで保存して、より高速に取得できるようになり、どのVNCビューアでも機能するはずです。ただし、一部のクライアントでは正しく機能していないようです。
したがって、正しいコマンドは次のようになります。
x11vnc -display :1.0 -usepw -forever -autoport 5900
その他のncache以外の場合は、 -clip
オプション が役立つ場合があります。
buntuフォーラムスレッド によると、これが-ncache
の仕組みです。
デスクトップの高さを通常の10倍にし、ウィンドウとそのセーブアンダーをキャッシュするために追加のフレームバッファーを使用します。
KRDCにその領域を表示しないようにすることができない場合(たとえば、ウィンドウのサイズを変更することによって)、
x11vnc -ncache
でKRDCを使用することはできません。したがって、今のところ
-ncache
の唯一の「サポート」は、ビューアがスクロールバーを持ち、自動スクロールを無効にできることです。または、unix/macosxではssvnc
を使用します。
詳細については、 x11vncはピクセルデータのクライアント側キャッシュを実行できますか? を参照してください。
-ncache n
のnは、キャッシュに使用するベースフレームバッファーサイズを超える増加の係数です。これは偶数の整数であり、良好な応答を実現するには、かなり大きく6〜12にする必要があります。これには通常、クライアント側とサーバー側の両方で約50〜100MBの追加のRAMが必要です。たとえば、n = 6の場合、1280x1024ディスプレイは1280x7168のフレームバッファーを使用します。行1024の下のすべてがピクセルバッファキャッシュ。