x11spice ======== x11spice connects a running X server as a Spice server. It owes a debt to the excellent x11vnc project, from the libvncserver project. That project proved that this could be done, and done well. Some of the logic, notably that of scan.c, was inspired by the code in x11vnc. Requirements ------------ x11spice has been developed and tested on Linux desktop systems. It could be extended to work on other UNIX systems with X11 servers with a modest amount of work. It has not at all been designed or intended to work with non X systems, such as Windows or macOS. The code was written with the hope that others could make such an extension if they wanted to do the work, but it would be a substantial amount of effort. Building -------- Building is pretty much a matter of doing configure && make. If you are building from git, you will likely want to do: ./autogen.sh to create and run configure. You will need autoconf and automake. If you have a regular source drop, you should be able to do: ./configure Presuming that first step runs successfully, then you can just invoke: make To build x11spice. You can perform make install to install x11spice to your system, although x11spice will run fine out of the source tree simply by running src/x11spice You can invoke make check to run the regression tests to make sure everything is working well. Configuration ------------- x11spice will use, in this order: - Command line parameters - An x11spice file in the users's config directory (e.g. ~/.config/x11spice/x11spice.conf) - An x11spice file in the system configuration directory (e.g. /etc/xdg/x11spice/x11spice.conf) Some options are only available in the configuration file, in an attempt to make the command line usage somewhat more simple. The xdg/x11spice//x11spice.conf file contains a commented example with all the configuration examples described. Usage ----- The general idea is to invoke x11spice while connected to your X server. You will need to select a port to listen to and a password. There are a variety of options to help with that selection. The simplest command: x11spice --generate-password should start a session on port 5900 and give you a one time password you can use to connect. Refer to the x11spice man page for more details. Spice Video Dummy Driver ------------------------ If you wish to create a 'headless' connection to a server - create an X session without using the main system display - there is a straight forward process that is now included with x11spice. That is, x11spice now optionally builds an Xorg driver that is based on the dummy driver and the modesetting driver. This gives a virtual frame buffer driver which should include modern Mesa capabilities. To use this driver, simply add: --enable-dummy to the configure line. This will build the Xorg driver. A simplistic example is included showing the general concepts of using this driver. Refer to the spice-video-dummy/spicedummy.sh bash script for more information. Using code coverage (gcov) ------------------------- If you want to use gcov for source code coverage, you will need the AX_CODE_COVERAGE macro. On Fedora, that is installed by the autoconf-archive package. Once you have that available, uncomment the appropriate line in configure.ac and src/Makefile.am, reconfigure with --enable-code-coverage, and rebuild. That will then enable a check-code-coverage target in the Makefile. Community --------- As of July 2016, x11spice was maintained by the Spice community, at spice-space.org. An IRC channel (#SPICE) and a mailing list (spice-devel) are available. History ------- x11spice was initially created by Jeremy White in July of 2016.