Modular XF4VNC

The XF4VNC code is now based off the X.org modular tree.  Previously, XF4VNC was based on the XFree86 monolithic tree.  The monolithis XF4VNC sources are still in the SourceForge CVS tree.

Relative to the X.org tree, only the X.org xserver module is actually modified.  The XF4VNC  tree also contains a few extra proto and library modules, described below.

Prerequisites

You'll need an installation of the modular X.org distribution, version X11R7.0 or later.  If you need to upgrade first check if ready-made packages are available for your OS distro (like Fedora Core, Debian, etc).

Alternately, you can download, compile and install X yourself by going to the X.org website and following the modular build instructions.  You can either install into the standard location (/usr/X11R6) or a custom location (such as /home/joe/xorg).  If you install into /usr/X11R6 you should probably make complete back-up of that directory, just in case (cp -pr /usr/X11R6 /usr/X11R6.ORIG).

When you're done, you should have a working X server installation.


Getting and building the modular XF4VNC sources

This section covers getting and building the modules from the XF4VNC tree.  There are modules for the VNC-enabled X server(s) and the VNC and Xcliplist libraries and protocol/extension headers.

mkdir ~/xf4vnc
cd ~/xf4vnc

As an anonymous user:

cvs -d:pserver:anonymous@xf4vnc.cvs.sourceforge.net:/cvsroot/xf4vnc login
cvs -z3 -d:pserver:anonymous@xf4vnc.cvs.sourceforge.net:/cvsroot/xf4vnc co -P modular

Or, as a project developer:

cvs -z3 -d:ext:USERNAME@xf4vnc.cvs.sourceforge.net:/cvsroot/xf4vnc co modular

When done, you'll have this directory tree:

~/xf4vnc/
modular/
src/
lib/
proto/

If you're using an existing installation of X11R7.x everything should have been installed under /usr/X11R6.  Set the DEST environment variable as follows:

export DEST=/usr/X11R6

Otherwise, if you built X11R7.x yourself and installed it in a non-standard location, such as /home/joe/xorg/modular, set the DEST environment variable as follow:

export DEST=/home/joe/xorg/modular

Set the PKG_CONFIG_PATH environment variable to the location of the X-related .pc (package config) files:

export PKG_CONFIG_PATH=${DEST}/lib/pkgconfig:/usr/lib/pkgconfig

(Note that /usr/lib/pkgconfig/ is also included in the path to get other system package descriptions.)

Set the ACLOCAL environment variable to the location of the aclocal files:

export ACLOCAL="aclocal -I ${DEST}/share/aclocal"

The VNC extension protocol and headers (vnc.h and vncstr.h):

cd ~/xf4vnc/modular/src/proto/vncproto
./autogen.sh --prefix=${DEST}
make install


The XCliplist extension protocol and headers (Xcliplist.h and Xclipliststr.h):

cd ~/xf4vnc/modular/src/proto/xcliplistproto
./autogen.sh --prefix=${DEST}
make install


The VNC client-side library (libVncExt.so):

cd ~/xf4vnc/modular/src/lib/libvnc
./autogen.sh --prefix=${DEST}
make install

The XCliplist client-side library (libXcliplist.so):

cd ~/xf4vnc/modular/src/lib/libXcliplist
./autogen.sh --prefix=${DEST}
make install

The XF4VNC xserver tree:

Without GLX support:

cd ~/xf4vnc/modular/src/xserver
./autogen.sh --prefix=${DEST} --disable-dbus
make install


With GLX support (and DMX glxproxy):

You'll need a copy of the Mesa sources (version 6.5.3 or 7.0 at this time). Set the MESA environment variable to the location of the Mesa sources.

cd ~/xf4vnc/modular/src/xserver
./autogen.sh --prefix=${DEST} --disable-dbus --enable-glx --with-mesa-source=${MESA}
make install


This will produce several X server binaries (Xvnc, Xorg and Xdmx) and two special X server modules: libvnc.so and libxcliplist.so.


Configuration for using the libvnc.so module

If you plan to use the libvnc.so X server module (so that VNC viewers can attach to your normal X display) you'll need to configure a few things in your xorg.conf file.  See the XF4VNC documentation for instructions.

Start the X server and check that the VNC and XClipList extensions were loaded by running xdpyinfo and looking at the extension list.  If either module is missing examine your /var/log/Xorg.0.log file. If it says the VNC module did not load because of an ABI version problem, try this:

startx -- -ignoreABI


Configuration for Xvnc

The Xvnc server is an off-screen X server that uses no graphics hardware.  The only way to see the Xvnc desktop is with a VNC viewer.

To run the Xvnc server you only need to specify a display name for the server.  For example:

Xvnc :2

To start the Xvnc server with your usual desktop environment, use the startx script:

startx -- Xvnc :2

If you have an X font server available, you can specify the -fp option to use it.  For example:

startx -- Xvnc :2 -fp unix/:7100

Other useful options are the -geometry and -depth options.  For example:

startx -- Xvnc :2 -fp unix/:7100 -geometry 1280x1024 -depth 24