我已经在 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
屏幕的显示器。
我该如何纠正它,以便我能够以预期的分辨率看到可见屏幕?
答案1
看来问题是由-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
-ncache n
是用于缓存的基本帧缓冲区大小的增加因子。它是一个偶数并且应该相当大,6-12,以获得良好的响应。这通常需要客户端和服务器端有大约 50-100MB 的额外 RAM。例如,当 n=6 时,1280x1024 显示器将使用 1280x7168 的帧缓冲区:第 1024 行下方的所有内容都是像素缓冲区高速缓存。