X 虛擬幀緩衝螢幕是 1024x9216 而不是 1024x768
我在 Ubuntu Linux 上執行了 X 虛擬幀緩沖伺服器,我想通過 VNC 訪問它的螢幕。
這是我的步驟:
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
螢幕的顯示器。如何更正它,以便我可以看到預期解析度的可見螢幕?
看來問題是由
-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 行以下的所有內容都是像素緩衝區記憶體。