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

Nor*_*ize 5 vnc xubuntu headless

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

问题是它x11vncXvncvnc4servertightvncserver口味)慢得多。我使用的是低速宽带连接,例如,在 上拖动窗口明显变慢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
Run Code Online (Sandbox Code Playgroud)

默认情况下,这将以 32bpp 的 800x600 开始,不能通过命令行参数更改。我必须做:

apt-get install xserver-xorg-video-dummy
Run Code Online (Sandbox Code Playgroud)

然后使用以下内容创建 /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
Run Code Online (Sandbox Code Playgroud)

连接到它时,/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
Run Code Online (Sandbox Code Playgroud)

注意true color部分。

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

我也试过xserver-command=X -depth 16/etc/lightdm/lightdm.conf,但并没有任何区别。

Xvnc

我做了:

apt-get install vnc4server
vncserver :1 -depth 16 -geometry 1280x800
Run Code Online (Sandbox Code Playgroud)

这将启动一个新的 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 &
Run Code Online (Sandbox Code Playgroud)

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

关于如何使 x11vnc 同样快的任何线索?它一定有能力!

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

或者,我可以停止 LightDM 并使用 ~/.vnc/xstartup 启动 Xvnc,以便它启动与从 LilghtDM 登录屏幕相同的 Xubuntu 会话,而不是 XFCE4 会话......但我不知道如何。我确实替换了startxfce4/etc/X11/Xsession但它看起来不一样。字体较小,并且有人工制品。

任何帮助,将不胜感激!

Nor*_*ize 2

我设法回答了问题的替代部分,即使用 vnc4server 或ightvncserver 启动 Xubuntu 会话而不是普通的 XFCE 会话。它与 LightDM 分开,然后可以停止或手动设置。稍后我会研究尼古拉斯的建议。

这相当于通过 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
Run Code Online (Sandbox Code Playgroud)

您可以替换. lightdm-sessionexec startxfce4startxfce4 &。前者实际上是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
Run Code Online (Sandbox Code Playgroud)

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

ssh -L6901:127.0.0.1:5901 USER@HOST.DOMAIN.COM
Run Code Online (Sandbox Code Playgroud)

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

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