What is Luminocity?
Luminocity is a cracktastic technology testbed for Metacity.
Requirements: a Mar 25, 2005 or newer jhbuild (see the "Getting jhbuild" below if you have not already used jhbuild); glib 2.6 or add glib (this requires you have docbook-style-xsl installed) before xserver in the jhbuild build command below.
Run: jhbuild build xserver luminocity
There are some issues with "DAMAGE" in the xserver module. You need to apply a small patch that hacks around some issues, and rebuild the xserver module. You can get the patch from http://www.gnome.org/~seth/xserver.patch . If you do not apply this patch, wobbly windows will probably run very slowly.
Run: patch -p0 < xserver.patch from inside the xserver source directory
Run: jhbuild buildone -n xserver to rebuild the xserver with the patch included
Run: jhbuild shell to enter your jhbuild-built environment Luminocity reads windows out of a nested / headless X server (such as Xfake or Xephyr), and then displays the windows using an OpenGL window on your main X server (the "host server"). So first we have to start a headless X server, and run an application to display into it.
Run: Xfake -ac -screen 1024x3072x32 :1 & (if your screen is not 1024x768, just use XRESxYRES*4x32) This will start Xfake as display :1, with a virtual screen that is 1024x3072. Why 3072 instead of 768? Because Luminocity starts with 4 vertically stacked workspaces by default. This can be controlled by a command line argument. Now lets start an application displaying into our Xfake server. A terminal is a good choice because we can launch more apps from it.
Run: DISPLAY=:1 gnome-terminal & This will run gnome-terminal, displaying to the Xfake server (which is on :1). Of course, since Xfake is headless, you won't see anything.
Run: luminocity :1
This will start luminocity. Notice that we do not start Luminosity on DISPLAY=:1 (like we did with the gnome-terminal), but instead on our main X server (DISPLAY=:0). Luminosity reads off display :1, and displays to display :0. Luminocity will read windows off the X server on display :1, in this case our Xfake instance. Luminocity will then display those windows into its OpenGL window. Congrats!
You can also run luminocity -f :1 to run luminocity full screen. If you include a path to an image after the command, e.g. luminocity /usr/share/backgrounds/images/dragonfly.png it will be set as the background image.
JamesHenstridge: a more secure way of performing steps 2 and 3 would be to use a command like this:
startx gnome-terminal -- /path/to/Xfake -screen 1024x3072x32 :1 &
The -ac argument turns off access control in the X server, which is not a good idea if other people can log into your machine. The startx command will set up all the authentication tokens to talk to the X server so that you step 4 can be performed.
Moving windows that start partially off the screen Sometimes windows start with their titlebars off screen. To move them onto the screen, you'll need to drag them while holding down the super key (if you have a Windows key on your keyboard, try this). If you have a Windows key and it doesn't work, you may already have it assigned to Metacity using 'gnome-keybinding-properties'. You may have to remap your super key to make this work, esp. if you have no Windows key, e.g. xmodmap -e 'keycode 95=Super_L', which will then allow you to move windows by dragging them while holding down the F11 key.
Luminocity says that I don't have GLX and refuses to run Are you trying to run luminocity with DISPLAY=:1 (i.e. displaying to the Xfake server)? That will not work. Luminocity neeeds to display to your main X server (probably DISPLAY=:0). The Xfake server does not have the GLX extension. Luminocity uses the hardware acceleration of your main X server. If you are using the main X server, see the next question.
Everything is really really slow You need to have GLX enabled with Direct Rendering working on the host X server (the one you normally use for day to day work). You can see if its working by running glxinfo | grep direct. If it comes up with "no", you need to figure out how to enable OpenGL hardware acceleration for your card. If using an Intel i830, an ATI Radeon or the like, you can use the open source DRI drivers. For NVidia cards, install the binary drivers available from NVidia's website. If you're sure that you have hardware acceleration going (for example, you can play 3D games), there may be another performance bug. You can try asking for help in the IRC channel.
I got compile errors related to evdev.c The file evdev.c contains some references to kernel headers, so you have to supply "-I/usr/src/linux/include" option to the compiler somehow (where /usr/src/linux is the path to your kernel source directory). The easiest way is probably to edit xserver/hw/kdrive/linux/Makefile and append -I/usr/src/linux/include to the end of INCLUDES variable assignment, which should be located around line 285.
Build errors during luminocity configure Error: checking for gobject-2.0 > 2.6.0 gthread-2.0 gdk-pixbuf-2.0 pangoft2 xdamage xcomposite xfixes xext xtst xcursor... Requested 'gobject-2.0 > 2.6.0' but version of GObject is 2.4.8. configure: error: luminocity dependencies not satisfied. See information about adding glib to build command in Requirements section above.
Building for x86_64 architecture Problems with following this guide on x86_64 architectures have been reported on both Gentoo and Mandriva 10.2. Everything builds OK, but the Xfake server will not allow any apps to use it (they bomb out with errors such as Bad Value (integer out of range) etc. And the luminocity process cannot connect to the display either. Personally, I've had success running a 32 bit version that I build, but I had to install a few system RPMs that I wouldn't normally have needed. If anyone manages to get this working on x86_64, please update this page or contact myself: gnome (at) colin (dot) guthr (dot) ie.
You can try #fedora-desktop on irc.gnome.org . ssp, krh, and owen are the Luminocity developers (and seth may be able to help too), but other people on the channel will know how to solve many common problems. Naturally, you don't have to be using Fedora to join the channel.
Checkout module 'jhbuild' from GNOME CVS (see http://www.jamesh.id.au/software/jhbuild/). Run make and make install to install it into $(HOME)/bin . You'll need to setup a .jhbuildrc file in your home dir. See the README and other stuff in the jhbuild module for help on doing this.
Then run jhbuild bootstrap to setup a basic build environment with autotools, etc. Its important to do this, or future modules will error out when compiling.