通过 VNC 运行 KDE 时如何避免难看的抖动?

通过 VNC 运行 KDE 时如何避免难看的抖动?

我目前正在设置一个运行 KDE(4.2.2,来自 Kubuntu 9.04)的新 Xen paravirt 域。由于我无法让虚拟帧缓冲区在其中工作,我决定设置 VNC(来自软件包vnc4server),并在其上运行 KDE Xvnc

一切都很好,KDE 可以正常启动。但是,所有颜色看起来都很抖动,尤其是在任务栏和标题栏上,因此无法看清。从我的网络搜索来看,似乎是因为这些项目使用 Porter-Duff 绘制。使用 Oxygen 样式以及 Oxygen 和 Ozone 窗口标题栏时尤其如此(选择这些样式会生成有关 Porter-Duff 不可用的消息);不使用这些样式至少可以使大多数 UI 小部件和窗口标题再次可用。

但这并不能解决任务栏和桌面的问题,我唯一可用的主题是 Oxygen(位于“桌面设置 - Plasma 工作区”窗口下,仅供参考)。因此,除非我有办法为这些主题使用非 Porter-Duff 主题,否则 KDE 似乎仍然无法在 VNC 下使用。

因此,如果有 KDE 经验丰富的人可以就如何解决甚至修复这些问题提供建议,我将不胜感激。:-)

答案1

为什么不使用远程 xdmcp?

答案2

我已成功将 VNC 服务器从默认 vncserver 切换到http://xf4vnc.sourceforge.net/。这似乎更稳定,并防止窗口装饰出现难看的抖动效果。我在 Ubuntu 10.04 上

答案3

抖动通常发生在必须使用较低深度的调色板显示较高深度的调色板时。例如,在 16 位显示器(2^16=64K 种颜色)中渲染 24 位调色板(2^24=16M 种颜色),或在 8 位显示器(2^8=256 种颜色)中渲染 16 位调色板

这只是瞎猜,但是vncserver 有一个 -depth 标志您可以指定更改服务器的颜色深度以匹配所需的客户端显示设置。我假设 vnc4server 有一个类似的标志?它默认为 16 位,所以我想知道如果您在 24 位深度下运行 VNC 服务器,这是否会阻止抖动。

我不确定这对性能有何影响,或者这对您是否重要。

可能还有其他方法可以解决您的问题,但这是我首先想到的方法。

答案4

我也注意到了您的描述,并发现摆脱它的最佳方法是选择不使用渐变的窗口装饰等。但最终我做的是将网络显示器作为欢迎程序添加到 /etc/kde4/kdm/kdmrc,然后在本地运行 XMing。基本上,只要检测到网络显示器,KDM 就会将欢迎程序发送给它,然后您只需登录,就像拥有一个外部显示器一样,​​它甚至支持 OpenGL。我几乎看不出区别,但我还没有尝试过任何密集渲染或任何东西。

更新

我刚刚花了几分钟再次运行 VNC 服务器,试图唤醒我的记忆,看来问题实际上是更糟糕比以前好多了。我能想到的几乎所有设置/位深度/等等的变化都会导致 plasma-desktop 的 CPU 使用率接近 100%。

帮自己一个忙,至少尝试一下,你不会失望的(这是我的典型负载:https://plus.google.com/u/0/114408677443179637705/posts/Q7BGvYF2fx6

安装XMing:http://www.straightrunning.com/XmingNotes/

从命令提示符启动它:

Xming.exe :10 -rootless -nomultimonitors -clipboard -wgl -nolisten inet6 -ac -screen 0 @2

@2 表示我的第二个显示器,如果您只有一个或想要使用第一个,只需将其更改为@1。

通过在以 start on 开头的行之前的某个位置添加以下行来暂时禁用 kdm:

DISABLED=1

重新启动你的 Linux 机器,当它重新启动时通过 ssh 进入(你不需要打开 X11 转发或任何东西)并运行以下两个命令(将 10.0.0.2 替换为你正在连接的机器的 ip):

export DISPLAY="10.0.0.2:10"
dbus-launch kdeinit4 kwin +plasma-desktop

几秒钟后,你就会看到你的 kde 桌面出现了,你可以随意在两者之间切换,在它们之间复制粘贴等等...然后它就会运行指数地比VNCServer版本更快。

相关内容