X11

X 虛擬幀緩衝螢幕是 1024x9216 而不是 1024x768

  • December 9, 2016

我在 Ubuntu Linux 上執行了 X 虛擬幀緩沖伺服器,我想通過 VNC 訪問它的螢幕。

這是我的步驟:

  1. Xvfb :1.0 -screen 0 1024x768x16 &
  2. 設置密碼:x11vnc -storepasswd
  3. 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螢幕的顯示器。

如何更正它,以便我可以看到預期解析度的可見螢幕?

看來問題是由-ncache(實驗性)選項引起的。刪除它應該修復它。

如果預設啟用,請嘗試使用-noncache.

啟用後,它基本上會啟動客戶端記憶體方案,該方案將像素數據儲存在 VNC 查看器端的螢幕外,以便更快地檢索,並且它應該適用於任何 VNC 查看器。但是,它似乎無法與某些客戶端正常工作。

所以正確的命令可能是:

x11vnc -display :1.0 -usepw -forever -autoport 5900

在任何其他非 ncache 情況下,該-clip選項可能會有所幫助。


根據Ubuntu 論壇主題,這就是-ncache工作原理。

它使桌面比正常高度高 10 倍,並使用額外的幀緩衝區來記憶體視窗及其保存位置。

如果您無法讓 KRDC 不向您顯示該區域(例如,通過調整其視窗大小),那麼您不能將 KRDC 與x11vnc -ncache.

因此,目前唯一的-ncache“支持”是查看器能夠擁有捲動條並能夠禁用自動滾動。或者在 unix/macosx 上使用ssvnc.

請參閱:x11vnc 可以對像素數據進行客戶端記憶體嗎?了解更多資訊。

n in-ncache n是用於記憶體的基本幀緩衝區大小的增加因子。它是一個偶數,應該相當大,6-12,以獲得良好的響應。這通常需要客戶端和伺服器端大約 50-100MB 的額外 RAM。例如,當 n=6 時,1280x1024 顯示器將使用 1280x7168 的幀緩衝區:第 1024 行以下的所有內容都是像素緩衝區記憶體。

引用自:https://unix.stackexchange.com/questions/325793