Sharing X display over VNC

Thu 21 July 2011 by Thejaswi Puthraya

Designing for browsers is hard! There are a multitude of browsers that have to be supported and each have their quirks. While there are tools to make this task easy, recently Sai (chief designer at Agiliq) had to checkout how a client's project looked in Chromium and Firefox on Linux based operating systems.

We could have setup VirtualBox and installed Ubuntu image and all related software but it sounded like a pain for a one-time exercise. We wanted some quick way to set up and ended sharing an X display over VNC.

Before I describe the process, let's take a small detour to understand some technicalities.

  • By default, X runs on display :0 or :0.0. Here's how you can check it out:

    $ echo $DISPLAY
    :0.0
    
  • The X process runs as root on most Linux based operating systems and you would generally require administrator access to run a new X display. We overcome this restriction by using Xvfb, a headless X server.

Things to setup before the you can share the display:

  • Install Xvfb
  • Install x11vnc
  • Install a VNC client on the client machine (We used RealVNC on Sai's windows machine)

Most of the above software can easily be installed through a package manager (say Ubuntu's apt-get or Fedora's yum).

Here's the process:

  • Run Xvfb on display :1 with a resolution of 1366x768, colour depth of 24 and on screen 0:

    xinit -- /usr/bin/Xvfb :1 -screen 0 1366x768x24
    
  • Point x11vnc to use the display :1 and forward to a VNC client:

    x11vnc -display :1
    
  • On the client, fire up your VNC client and enter the IP address of the box running the above setup.

There are a huge set of options for Xvfb and x11vnc (like authorization, caching etc) that may be set to tweak the display. Just check the man pages for more details.