I'm running Xubuntu 12.04 on a headless server inside a VMware virtual machine. I'd prefer using x11vnc over Xvnc in order to use LightDM and the X server started by LightDM (and login using Xubuntu-session rather than xfce4).
The problem is that x11vnc
is much slower than Xvnc
(both vnc4server
and tightvncserver
flavours). I'm on a low speed broadband connection and, e.g. dragging windows is visibly slower on x11vnc
, about 3-4 times slower I'd say.
I'm forcing 16 bit and 1280x800 on both x11vnc and Xvnc, but I'm not sure x11vnc is actually using 16bpp (see logs below).
x11vnc
I start x11vnc with a start script in /etc/init/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
By default, this will start in 800x600 with 32bpp, which cannot be changed via command line parameters. I had to do:
apt-get install xserver-xorg-video-dummy
and then create /etc/X11/xorg.conf (which did not exist by default) with the contents:
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
When connecting to it, /var/log/x11vnc.log says:
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
note the true color
part.
Also, there is still transparency in the lower panel when using 16bpp in x11vnc, whereas when using "-depth 16" with Xvnc, all transparent panels have solid color and the "alpha" option in the panel configuration is gone. This makes me think that XFCE still detects a 32bit display when using x11vnc, which may be a cause for slowness.
I also tried xserver-command=X -depth 16
in /etc/lightdm/lightdm.conf
, but didn't make any difference.
Xvnc
I did:
apt-get install vnc4server
vncserver :1 -depth 16 -geometry 1280x800
This starts a new X session, depending on what I have in ~/.vnc/startup
, which is:
#!/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 &
There is no wireframe by default. Dragging windows shows the full window, not just a border, and it's still visibly faster than x11vnc which is showing only a wire frame when dragging windows! Same goes if I replace vnc4server with tightvncserver.
Any clues on how to make x11vnc just as fast? It must be capable somehow!
I tried all sort of options to x11vnc (from all thos -nox* -nowireframe, etc) to no avail.
Alternatively, I could stop LightDM and start Xvnc with the ~/.vnc/xstartup so that it starts the same Xubuntu session as it does from LilghtDM login screen, rather than XFCE4 session ... but I don't know how. I did replace startxfce4
with /etc/X11/Xsession
but it does not look the same. The fonts are smaller and there are artefacts.
Any help would be appreciated!
xserver-command=X -depth 16
which can be set to anything. However, I think the host would want access to the vm as well via normal X. I shall try though. ALso, LightDM does support VNC natively via a [VNCServer] group in its .conf file, which will start Xvnc whenever someone connects to 5901. This is fast, but the whole session dies and kills all apps if my VNC connection dies, so that's not ideal.