我运行 Ubuntu 11.10,配有 2 个显示器,分辨率为 3840x1080。这是通过 NVIDIA 的 TwinView 模式实现的。当我运行以下命令时:
x11vnc -safer -localhost -once -display :0 -ncache 10 -ncache_cr -geometry 3840x1080
并使用 TightVNC 从 Windows 机器连接,我的连接列出的分辨率为 3840x12960。如果您不想计算的话,那就是 12 x 1080。VNC 连接的顶部看起来正常,但我可以向下滚动很多,并且我可以看到以前窗口的影子。
知道为什么或如何阻止这种情况吗?
答案1
我最终通过禁用客户端缓存解决了这个问题,在启动服务器时使用 -noncache 选项或取消选中 gui 中的 ncache 选项。
答案2
您的 VNC 查看器似乎不支持客户端缓存。
因此,您要么使用支持它的 VNC 查看器,要么需要消除-ncache
(实验性的)选项x11vnc
。如果默认情况下启用该选项,请尝试通过指定-noncache
选项将其禁用。
基本上,当启用它时,它会激活客户端缓存方案,该方案将像素数据存储在 VNC 查看器端的屏幕外,以便更快地检索,并且它应该适用于任何 VNC 查看器。但是,它似乎无法在某些客户端上正常工作。
按照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 行以下的所有内容都是像素缓冲区缓存。