X 虚拟帧缓冲区屏幕是 1024x9216 而不是 1024x768

X 虚拟帧缓冲区屏幕是 1024x9216 而不是 1024x768

我已经在 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屏幕的显示器。

我该如何纠正它,以便我能够以预期的分辨率看到可见屏幕?

答案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 行下方的所有内容都是像素缓冲区高速缓存。

相关内容