I’ve read in Jono‘s blog that the development of GNOME Shell (which in turn may become a component of GNOME 3.0) has already started and wanted to try it out (and contribute :)). As this process wasn’t as trivial as I’d have liked (although I had awesome assistance from Colin Walters, Owen Taylor and some other people in #gnome-shell@irc.gnome.org), I’ve decided to write down the instructions on how to build it so that others have it easier.

Initial build of GNOME Shell

1. Download gnome-shell-build-setup.sh (wget http://git.gnome.org/cgit/gnome-shell/plain/tools/build/gnome-shell-build-setup.sh) and run it (bash gnome-shell-build-setup.sh). This will download jhbuild into ~/Source and build it (the executables will end up in ~/bin).

2. Install the necessary build dependencies for gnome-shell (and its bundled dependencies): sudo apt-get install build-essential automake gnome-common flex bison curl git-core subversion gtk-doc-tools mesa-common-dev xulrunner-1.9-dev libdbus-glib-1-dev libffi-dev libgconf2-dev libgtk2.0-dev libgl1-mesa-dev libgstreamer-plugins-base0.10-dev python2.5-dev.

3. Download and build gnome-shell (and its bundled dependencies) by running ~/bin/jhbuild build. All files are placed into ~/gnome-shell.

Running it

1. Run ~/bin/jhbuild shell to enter a subshell, and then follow the remaining steps inside it.

2. Go into the appropriate directory, with: cd ~/gnome-shell/source/gnome-shell/scripts.  [Update: now ~/gnome-shell/source/gnome-shell/src]

3. Start gnome-shell, either inside a window by using Xephyr: ./start-in-Xephyr (you’ll need to have xserver-xephyr installed for this to work, or replacing gnome-panel and metacity in your “real” desktop: ./start-replace.  [Update: now this is «./gnome-shell» and «./gnome-shell –replace»]

Updating it

Execute ~/bin/jhbuild build –force –clean. The two arguments, “–force” and “–clean”, are used to rebuild everything, even if it didn’t change. You can usually omit them, but in some cases not doing this may lead to GNOME Shell failing to start.

You can also rebuild only a certain element (with this I mean either gnome-shell or one of its bundled dependencies, namely clutter, gjs, gobject-introspection, gir-repository or metacity-clutter) by using ~/bin/jhbuild buildone <name> –clean.

Problem: My computer hangs if I run it

Like the new Compiz version in Intrepid, gnome-shell uses GL_EXT_texture_to_pixmap, which is broken for some old Intel cards and causes the computer to hang if start-replace is used. You can easily disable this, though, by setting the GNOME_SHELL_DISABLE_TFP environment variable (the name of this variable may change in the future).

So, just run “export GNOME_SHELL_DISABLE_TFP=1” before you run start-replace as described in section “Running it” (or add that line to ~/.bashrc, but then remember to remove it again once the driver issue is fixed). With this, gnome-shell should be able to run so that you can try it out, but don’t expect its performance to be perfect (here I have serious issues with redrawing).