x11vnc 比 Xvnc 慢得多 + 如何手动获取 Xubuntu 会话

x11vnc 比 Xvnc 慢得多 + 如何手动获取 Xubuntu 会话

我在 VMware 虚拟机内的无头服务器上运行 Xubuntu 12.04。我更喜欢使用 x11vnc 而不是 Xvnc,以便使用 LightDM 和由 LightDM 启动的 X 服务器(并使用 Xubuntu-session 而不是 xfce4 登录)。

问题是x11vnc比 慢得多Xvncvnc4server和两种tightvncserver风格)。我使用的是低速宽带连接,例如,在 上拖动窗口明显更慢x11vnc,我估计大约慢了 3-4 倍。

我在 x11vnc 和 Xvnc 上强制使用 16 位和 1280x800,但我不确定 x11vnc 是否实际使用 16bpp(参见下面的日志)。

x11vnc

我使用 /etc/init/x11vnc 中的启动脚本启动 x11vnc:

start on login-session-start
script
x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 \
  -auth /var/run/lightdm/root/:0 -forever -shared -bg \
  -o /var/log/x11vnc.log -rfbport 5901 -localhost -nopw -xrandr
end script

默认情况下,它将以 800x600 和 32bpp 开始,无法通过命令行参数进行更改。我必须这样做:

apt-get install xserver-xorg-video-dummy

然后创建 /etc/X11/xorg.conf(默认情况下不存在),内容如下:

Section "Device"
    Identifier  "Configured Video Device"
    Driver      "dummy"
EndSection

Section "Monitor"
    Identifier  "Configured Monitor"
    HorizSync 31.5-48.5
    VertRefresh 50-70
EndSection

Section "Screen"
    Identifier  "Default Screen"
    Monitor     "Configured Monitor"
    Device      "Configured Video Device"
    DefaultDepth 16
    SubSection "Display"
    Depth 16
    Modes "1280x800"
    EndSubSection
EndSection

连接到它时,/var/log/x11vnc.log 显示:

30/11/2013 07:12:32 Pixel format for client 127.0.0.1:
30/11/2013 07:12:32   16 bpp, depth 16, little endian
30/11/2013 07:12:32   true colour: max r 31 g 63 b 31, shift r 11 g 5 b 0
30/11/2013 07:12:32 no translation needed

注意true color部分。

此外,在 x11vnc 中使用 16bpp 时,下部面板仍然透明,而在 Xvnc 中使用“-depth 16”时,所有透明面板都为纯色,并且面板配置中的“alpha”选项消失。这让我认为 XFCE 在使用 x11vnc 时仍会检测到 32 位显示器,这可能是导致速度缓慢的原因。

我也尝试xserver-command=X -depth 16/etc/lightdm/lightdm.conf,但没有什么变化。

虚拟主机

我做到了:

apt-get install vnc4server
vncserver :1 -depth 16 -geometry 1280x800

这将启动一个新的 X 会话,具体取决于 中的内容~/.vnc/startup,即:

#!/bin/sh
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
# x-window-manager &
startxfce4 &

默认情况下没有线框。拖动窗口会显示整个窗口,而不仅仅是边框,并且它仍然明显地比 x11vnc 更快,后者在拖动窗口时只显示线框!如果我用 tightvncserver 替换 vnc4server,情况也是如此。

任何线索如何让 x11vnc 一样快?它一定有办法!

我尝试了 x11vnc 的所有选项(从所有这些 -nox* -nowireframe 等)但都无济于事。

或者,我可以停止 LightDM 并使用 ~/.vnc/xstartup 启动 Xvnc,这样它就可以启动与 LilghtDM 登录屏幕相同的 Xubuntu 会话,而不是 XFCE4 会话……但我不知道该怎么做。我确实替换了,startxfce4/etc/X11/Xsession看起来不一样。字体更小,而且有瑕疵。

任何帮助,将不胜感激!

答案1

我设法回答了选择我的问题的一部分,即使用 vnc4server 或 tightvncserver 启动 Xubuntu 会话而不是普通的 XFCE 会话。这与 LightDM 是分开的,然后可以停止或手动操作。我稍后会调查 Nicholas 的建议。

这相当于通过 LightDM 使用 Xubuntu 会话登录,如果我的 vnc 连接中断或我断开连接,它仍然有效,并且我可以享受 Xubuntu 定制。

为此,~/.vnc/xstartup仅包含以下内容:

#!/bin/sh
export XDG_CONFIG_DIRS=/etc/xdg/xdg-xubuntu:/etc/xdg:/etc/xdg
export XDG_DATA_DIRS=/usr/share/xubuntu:/usr/local/share/:/usr/share/:/usr/share
vncconfig -iconic &
. lightdm-session

您可以. lightdm-sessionexec startxfce4或替换startxfce4 &。前者实际上是 LightDM 调用的,但最终它调用的是 xfce4-session。

然后这将启动一个 Xubuntu 会话,而不是普通的 XFCE 会话,如果不需要 X/键盘访问,您可以完全停止 LightDM。

您可以通过将以下内容放入来配置守护进程/etc/init/vncserver.conf

start on runlevel [2345]
stop on runlevel [016]
post-start script
        su USER -c "vncserver :1 -geometry 1280x800 -depth 16 -localhost -SecurityTypes None"
end script
post-stop script
        su USER -c "vncserver -kill :1"
end script

然后使用 启动/停止它start vncserver。以上适用于 vnc4server,将启动仅在 127.0.0.1 上监听的 Xvnc,并且不需要密码。这对我来说很方便,因为我无论如何都使用 ssh 隧道:

ssh -L6901:127.0.0.1:5901 [email protected]

如果您使用tightvncserver,则删除该选项-SecurityTypes 无因为它不理解这一点。请注意,tightvncserver 始终要求输入密码(您不能将其设置为无密码)。

笔记:如果上面的 USER 不是 root,或者您以非 root 身份运行“vncserver :1 [options]”,那么在 XFCE 内部,使用 sudo 进入 GUI 应用程序会出现问题,因为底层使用 sudo 的应用程序找不到 X 显示器。我还没有找到解决这个问题的方法。使用 x11vnc 可以正常工作,因为 x11vnc 连接到现有 X 会话,包括 :0 会话。

相关内容