Building GNOME Shell from source
(Last content update: 11. Feb. 2011, based on the official guide, feel free to edit.)
0. Warnings/errors during compilation
GNOME Shell is under heavy development and sources are often updated a couple of times a day. While below instructions generally should work, it can happen that successful compilation needs some hacks or is not possible at all.
If you encounter any problems, check:
Current problems:
It's necessary to remove a couple of files in the library directories, else compilation will fail. When doing system updates, those files could return: read this for an explanation why it's necessary to remove those files and how to prevent upgrades to re-install them.
sudo rm -rf /usr/lib*/*.la
(No worries, this won't harm your system!)
Before being able to run GNOME Shell, you need to remove a file after the build process:
rm ~/gnome-shell/install/lib*/gtk-3.0/modules/libcanberra-gtk-module.so
1. Building GNOME Shell
(Tested on Ubuntu 10.10 32-bit and the development version of Ubuntu 11.04 64-bit.)
The following will download, compile, and install GNOME Shell in a sandbox-like way - meaning, it won't touch the rest of your system!
Install dependencies:
sudo apt-get install curl dpkg-dev autopoint libedataserverui1.2-dev \
libecal1.2-dev evolution-data-server-dev libcups2-dev libupower-glib-dev \
libgnome-keyring-dev libxklavier-dev libvorbis-dev libltdl-dev \
libgstreamer0.10-dev libcroco3-dev xserver-xephyr xulrunner-dev \
python-dev libpam0g-dev mesa-utils mesa-common-dev libxml2-dev \
libreadline5-dev libpulse-dev liborbit2-dev libgl1-mesa-dev libwnck-dev \
libtiff4-dev libstartup-notification0-dev libpng12-dev libjpeg62-dev \
libjasper-dev libgtop2-dev libgnome-desktop-dev libgnome-menu-dev \
libffi-dev libexpat1-dev libdbus-glib-1-dev icon-naming-utils \
gtk-doc-tools gnome-common git-core gettext flex bison automake cvs
Get GNOME Shell's setup script:
curl -O https://git.gnome.org/browse/gnome-shell/plain/tools/build/gnome-shell-build-setup.sh
Build the build tool jhbuild
and download configuration files:
/bin/bash gnome-shell-build-setup.sh
This will install jhbuild
to ~/bin
, which you need to add to your PATH
-variable:
. ~/.profile
[Optional]: You can change several jhbuild
options like the path for downloading sources, etc. via editing the file ~/.jhbuildrc-custom
.
Start the build process:
jhbuild build
This will (currently) compile 33 modules. Get a cup of coffee, take a nap -> it will take some time.
Once you see *** success *** [33/33]
you are done. Congratulations, you've just compiled GNOME Shell!
2. Running GNOME Shell
If you're running Compiz, you first need to stop it (by starting Metacity) or else GNOME Shell won't start:
metacity --replace &
Finally, run:
cd ~/gnome-shell/source/gnome-shell/src
./gnome-shell --replace
That's it, you hopefully should now be running GNOME Shell.
3. Making GNOME Shell the default window manager
In Ubuntu 10.10, you can simply replace the GNOME session's window manager via changing a GConf key:
Create a local .desktop launcher for GNOME Shell:
ln -s ~/gnome-shell/install/share/applications/gnome-shell.desktop ~/.local/share/applications/gnome-shell.desktop
Then change the session's window manager to be GNOME Shell:
gconftool-2 -s /desktop/gnome/session/required_components/windowmanager "gnome-shell" -t string
To revert the change, run:
gconftool-2 -s /desktop/gnome/session/required_components/windowmanager "gnome-wm" -t string
In Ubuntu 11.04, changing the windowmanager key doesn't seem to work. Instead you can add a new session item that you can select at the GDM login screen. Therefor you need to create the local .desktop file like above and then create two files:
A session file: /usr/share/gnome-sessions/sessions/gnome-shell.session
:
[GNOME Session]
Name=gnome-shell
Required=windowmanager;
Required-windowmanager=gnome-shell
DefaultApps=gnome-settings-daemon;
The session item pointing to the session file: /usr/share/xsessions/gnome-shell.desktop
:
[Desktop Entry]
Name=GNOME Shell
Comment=This session logs you into Ubuntu
Exec=gnome-session --session=gnome-shell
TryExec=gnome-session
Icon=
Type=Application
X-Ubuntu-Gettext-Domain=gnome-session-2.0
Log out, and you should be able to choose GNOME Shell as session.
4. Updating GNOME Shell
Running
jhbuild build
should update the sources and rebuild what's necessary.
If it fails for a module, e.g. you get something like this:
fatal: git-write-tree: error building trees
Cannot save the current index state
*** Error during phase checkout of gdk-pixbuf: ########## Error running git stash save jhbuild-stash *** [7/33]
then you can try to wipe the current module directory and start with clean sources by choosing option 6:
[6] Go to phase "wipe directory and start over"
If that doesn't help, you can start from scratch by running:
jhbuild build -afc
Still not compiling? Then check the places mentioned in 0.