no Gnome Shell daily builds in the Ricotz testing PPA anymore (for any Ubuntu version) and even though Ubuntu 10.10 has just been released, the Gnome Shell version in the official Ubuntu repositories is quite old so if you want to run the latest version of Gnome Shell (from GIT), you'll have to compile it. Fortunately, this is not as hard a I initially imagined (because the last time I've compiled Gnome Shell - around Ubuntu 9.04, it was a pain) thanks to the Unfortunately there areanymore (for any Ubuntu version) and even though Ubuntu 10.10 has just been released, the Gnome Shell version in the official Ubuntu repositories is quite old so if you want to run the latest version of Gnome Shell (from GIT), you'll have to compile it. Fortunately, this is not as hard a I initially imagined (because the last time I've compiled Gnome Shell - around Ubuntu 9.04, it was a pain) thanks to the Gnome Shell testing thread @ Ubuntuforums.





By compiling Gnome Shell using the instructions in this post, all the packages the Gnome Shell script will download and compile will not replace any existing libraries and it will install in your home folder, so you don't have to worry about breaking stuff on your system (excluding here the build dependencies of course, which are usual packages from the Ubuntu repositories and will install just like any other package).





Before starting the process, here is a video I've just recorded with the latest Gnome Shell which includes a new notification area (notice how Dropbox is now only displayed in the Activities view) as well as a cool new feature (which is thanks to the latest Mutter): side-by-side tiling:

I didn't upload the video to YouTube because the video quality is very bad and I couldn't get it to record without the flickering and blue screen no matter what application I used (I've tried Recordmydesktop, ffmpeg and Kazam (which also uses ffmpeg)). Even so, YouTube makes it a lot worse after encoding (it blurs all the text) - although when I record a video under the standard Ubuntu 10.10 desktop, the videos are usually decent in quality. Also, the built-in record tool in Gnome Shell doesn't work anymore.





In the video, you can also spot the "attaching modal dialogs to their parents" which also comes with visual effects of sliding in and dimming the parent window (the attached window can be seen when trying to install the Elementary theme).

Compile Gnome Shell in Ubuntu 11.04 / 10.10

Below you'll find the exact steps which got Gnome Shell up and running on my Ubuntu 11.04 / 10.10:





1. Install the dependencies and download the build setup script:

sudo add-apt-repository ppa:vala-team/ppa && sudo apt-get update

sudo add-apt-repository ppa:pmjdebruijn/darktable-release sudo apt-get update

sudo apt-get install curl jhbuild libjasper-dev libdconf0 libtiff4-dev libgstreamer0.10-dev libcroco3-dev xserver-xephyr xulrunner-dev python-dev mesa-utils mesa-common-dev libreadline5-dev libgl1-mesa-dev libwnck-dev librsvg2-dev libgnome-desktop-dev libgnome-menu-dev libffi-dev libgtk2.0-dev libgconf2-dev libdbus-glib-1-dev gtk-doc-tools gnome-common git-core flex bison automake build-essential icon-naming-utils autopoint libcanberra-dev libpulse-dev libvorbis-dev gnome-settings-daemon-dev libxklavier-dev libpam0g-dev libtasn1-3-bin libupower-glib-dev libgnome-keyring-dev libgtop2-dev libvala-0.12-dev valac libcups2-dev evolution-data-server-dev libecal1.2-dev libedataserver1.2-dev libedataserverui1.2-dev iso-codes sqlite3 libsqlite3-dev libproxy0 libproxy-dev libdb-dev libdb4.8 gperf libsoup2.4-dev libsoup-gnome2.4-dev python-argparse libsane-dev libgudev-1.0-dev libpolkit-gobject-1-dev liblcms2-dev libxcb-aux0-dev libxcb-event1-dev libx11-xcb-dev libgconf2.0-cil-dev libxtst-dev liboauth-dev libwebkitgtk-3.0-dev cd curl -O http://git.gnome.org/browse/gnome-shell/plain/tools/build/gnome-shell-build-setup.sh





export PATH=$PATH:/home/andrei/bin

cd chmod +x gnome-shell-build-setup.sh ./gnome-shell-build-setup.sh jhbuild build

sudo apt-get install xulrunner-1.9.2-dev

jhbuild build

Now sit back and wait - this will take some time depending on your Internet connection speed and processor.





At this point you may get an error which looks like this:

/home/andrei/gnome-shell/install/lib/libgio-2.0.so: undefined reference to `g_main_context_invoke' collect2: ld returned 1 exit status [...] *** Error during phase build of gnome-shell: ########## Error running make *** [24/28]

You may get this error on a different step (Gnome Shell keeps getting bigger), but don't mind that, just look if you get "undefined reference" errors. If you do, do not close the terminal! Open a new terminal and run the following command:

rm ~/gnome-shell/install/lib/*.la

rm ~/gnome-shell/install/lib64/*.la

Now, in the terminal where you ran the "jhbuild build" command and got the error, something like this should have been displayed at the bottom:

[1] Rerun phase build [2] Ignore error and continue to install [3] Give up on module [4] Start shell [5] Reload configuration [6] Go to phase "wipe directory and start over" [7] Go to phase "configure" [8] Go to phase "clean" [9] Go to phase "distclean"

Here, enter "6" (without the quotes), then you will be asked to type "yes" to continue the process. Now Gnome Shell should build successfully (at least that was the case for me). If Gnome Shell has been built successfully, you should see this when the process is done:

*** success *** [28/28]

~/gnome-shell/source/gnome-settings-daemon/gnome-settings-daemon/main.c:274: undefined reference to `notify_init' collect2: ld returned 1 exit status make[3]: *** [gnome-settings-daemon] Error 1 make[3]: Leaving directory `/home/arindom/gnome-shell/source/gnome-settings-daemon/gnome-settings-daemon' make[2]: *** [all] Error 2 make[2]: Leaving directory `/home/arindom/gnome-shell/source/gnome-settings-daemon/gnome-settings-daemon' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/arindom/gnome-shell/source/gnome-settings-daemon' make: *** [all] Error 2 *** Error during phase build of gnome-settings-daemon: ########## Error running make *** [26/28]

cd ~/bin ./jhbuild shell cd ~/gnome-shell/source git clone git://git.gnome.org/libnotify cd ./libnotify ./autogen.sh --prefix $HOME/gnome-shell/install/ make && make install

checking for LIBXKLAVIER... no configure: error: Package requirements (libxklavier >= 5.1) were not met: Requested 'libxklavier >= 5.1' but version of libxklavier is 5.0 Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables LIBXKLAVIER_CFLAGS and LIBXKLAVIER_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. *** Error during phase configure of libgnomekbd: ########## Error running ./autogen.sh --prefix /home/andrei/gnome-shell/install --libdir '/home/andrei/gnome-shell/install/lib64' --disable-static --disable-gtk-doc *** [23/32]

sudo gedit /usr/lib/pkgconfig/libxklavier.pc

sudo gedit /usr/lib64/pkgconfig/libxklavier.pc

*** Error during phase configure of clutter: ########## Error running ./autogen.sh --prefix /home/jacky/gnome-shell/install --libdir '/home/jacky/gnome-shell/install/lib' --disable-static --disable-gtk-doc *** [12/34]

cd ~/gnome-shell/source/clutter gedit build/autotools/Makefile.am.changelog

MAINTAINERCLEANFILES += $(srcdir)/ChangeLog $(srcdir)/ChangeLog.pre-*

MAINTAINERCLEANFILES = $(srcdir)/ChangeLog $(srcdir)/ChangeLog.pre-*

Requested 'polkit-agent-1 >= 0.100' but version of polkit-agent-1 is 0.99 Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables MUTTER_PLUGIN_CFLAGS and MUTTER_PLUGIN_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. *** Error during phase configure of gnome-shell: ########## Error running ./autogen.sh --prefix /home/andrei/gnome-shell/install --libdir '/home/andrei/gnome-shell/install/lib' --disable-static --disable-gtk-doc *** [31/34]

cd ~/gnome-shell/source wget http://hal.freedesktop.org/releases/polkit-0.100.tar.gz rm -rf polkit-0.99/ tar -xvf polkit-0.100.tar.gz cd polkit-0.100/ ./configure --prefix $HOME/gnome-shell/install/ make && make install

andrei@andrei-desktop:~$ ~/gnome-shell/source/gnome-shell/src/gnome-shell --replace mutter: symbol lookup error: /home/andrei/gnome-shell/install/lib/gtk-3.0/modules/libcanberra-gtk-module.so: undefined symbol: gtk_quit_add

rm ~/gnome-shell/install/lib/gtk-3.0/modules/libcanberra-gtk-module.so

rm ~/gnome-shell/install/lib64/gtk-3.0/modules/libcanberra-gtk-module.so

andrei@andrei-desktop:~$ ~/gnome-shell/source/gnome-shell/src/gnome-shell --replace (mutter:13979): mutter-WARNING **: Could not load library [/home/andrei/gnome-shell/source/gnome-shell/src/libgnome-shell.la (libmozjs.so: cannot open shared object file: No such file or directory)] mutter-ERROR **: failed to load plugins aborting... Shell killed with signal 5

cd /usr/lib sudo ln -s /usr/lib/xulrunner-1.9.2.16pre/libmozjs.so libmozjs.so

locate libmozjs.so

checking for COLORD... no configure: error: Package requirements (colord >= 0.1.8) were not met: No package 'colord' found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables COLORD_CFLAGS and COLORD_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. *** Error during phase configure of gnome-settings-daemon: ########## Error running ./autogen.sh --prefix /home/himalay/gnome-shell/install --libdir '/home/andrei/gnome-shell/install/lib64' --disable-static --disable-gtk-doc *** [32/42]

cd ~/gnome-shell/source/ git clone git://gitorious.org/colord/master.git colord cd colord

./autogen.sh --prefix $HOME/gnome-shell/install/ make && make install

./autogen.sh --prefix $HOME/gnome-shell/install/ --libdir $HOME/gnome-shell/install/lib64 make && make install

gdata/gdata-parsable.h:42: Warning: GData: gdata_parser_error_quark: Couldn't find corresponding enumeration gdata/gdata-service.h:156: Warning: GData: gdata_service_error_quark: Couldn't find corresponding enumeration gdata/gdata-client-login-authorizer.h:65: Warning: GData: gdata_client_login_authorizer_error_quark: Couldn't find corresponding enumeration gdata/services/youtube/gdata-youtube-service.h:108: Warning: GData: gdata_youtube_service_error_quark: Couldn't find corresponding enumeration gdata/services/documents/gdata-documents-service.h:81: Warning: GData: gdata_documents_service_error_quark: Couldn't find corresponding enumeration GICOMP gdata/GData-0.0.gir make[2]: Leaving directory `/home/andrei/gnome-shell/source/libgdata' Making all in gdata/tests make[2]: Entering directory `/home/andrei/gnome-shell/source/libgdata/gdata/tests' CC general.o In file included from ../../gdata/gdata-entry.h:26:0, from ../../gdata/gdata.h:24, from general.c:23: ../../gdata/gdata-parsable.h:25:27: fatal error: libxml/parser.h: No such file or directory compilation terminated. make[2]: *** [general.o] Error 1 make[2]: Leaving directory `/home/andrei/gnome-shell/source/libgdata/gdata/tests' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/andrei/gnome-shell/source/libgdata' make: *** [all] Error 2 *** Error during phase build of libgdata: ########## Error running make *** [17/43]

cd ~/gnome-shell/source/ wget http://mesh.dl.sourceforge.net/project/liboauth/liboauth-0.9.4.tar.gz tar -xvf liboauth-0.9.4.tar.gz sudo apt-get build-dep liboauth cd liboauth-0.9.4

./autogen.sh --prefix $HOME/gnome-shell/install/ make && make install

./autogen.sh --prefix $HOME/gnome-shell/install/ --libdir $HOME/gnome-shell/install/lib64 make && make install

ln -s /usr/bin/gnome-session-save gnome-shell/install/bin/gnome-session-quit

~/gnome-shell/source/gnome-shell/src/gnome-shell --replace

Exit Gnome Shell

debugexit

Updating Gnome Shell

cd && jhbuild build --force --clean

You may run into the error I pointed out at step 3 so apply the fix mentioned there and it should work. Hopefully this will no longer be necessary soon.

While the exact instructions in this post worked for me, it may not be the case for you. I most probably won't be able to help you because I if I cannot reproduce the exact error you get, it will be very difficult to find the cause and how to fix it. To find the fix for your error, you can try searching the Gnome Shell testing thread @ Ubuntuforums.

The instructions in this post are from THIS Gnome Shell thread @ Ubuntuforums. Thanks to xtoudi for the step 3 fix! You can search that thread if you encounter any issues while compiling Gnome Shell - you might find your answer there.





Update: the instructions in this post also work in Ubuntu 11.04. Using this method of installing GNOME Shell, you can run both Gnome Shell and Unity (not in the same time though, obviously, but you can create a separate session for each) in Ubuntu 11.04 the instructions in this post also work in Ubuntu 11.04. Using this method of installing GNOME Shell, you can run both Gnome Shell and Unity (not in the same time though, obviously, but you can create a separate session for each) in Ubuntu 11.04

Update November 13, 2010: here is another screenshot featuring theFirstly, add the Vala PPA - required for the latest Vala (this step was introduced on January 19th, 2011):Then add the Darktable PPA, required for lcms2 dependency:Now install the dependencies:You need to edit the next command, by replacing "andrei" with your username:run the above commands until "./gnome-shell-build-setup.sh", then do not run "jhbuild build" yet! Instead, install xulrunner 1.9.2:The above command will remove xulrunner-2.0-dev - that's ok. Then you can start building Gnome Shell:This occurs because you need a newer version of libnotify. To fix it, use the following commands:If you get the following error:You need to run the following command:And. Then save the file and enter "1" in the terminal to run the configure phase again ("[1] Rerun phase configure").This solution was suggested on the Gnome Shell mailing list . It's not pretty, but libxklavier 5.1 wasn't released yet.This is most probably a temporarily issue, but I'll post a fix until it gets fixed anyway. Open a terminal and copy/paste this:And modify this line:(it's on line 19 for me) so that it looks like this:Basically you have to remove the "+" sign in front of the equal sign.Save the file and re-run the configure phase (enter "1" in the terminal).This is because the polkit-agent version was bumped yet jhbuild still tries to compile version 0.99 but it needs version 0.100.The fix open a new terminal (but don't close the terminal in which you are compiling shell) and type these:Now go back to the terminal in which you're bulding Gnome Shell (where you ran jhbuild) and enter "1" so that it starts the configure step again. Now it should work.To fix it, run the following command:If you get an error like this:Run the following commands:The libmozjs.so path may not be "/usr/lib/xulrunner-1.9.2.16pre/libmozjs.so" for you if you're using a different version. You can locate it using:And then replace the path in the last command above. Then start Gnome Shell - it should start now.If you get an error like this:Open a new terminal and copy/paste this:Then, for:-32bit:-64bit:Then return to the terminal in which you ran jhbuild and enter "1" so that it starts the configure step again.If you get an "gdata" error (step 17), similar to this:Fix it by running the commands below in a different terminal (not where you're building GNOME Shell):Then, for:-32bit:-64bit:Then return to the terminal in which you ran jhbuild and enter "1" so that it starts the configure step again.If the logoff / suspend / shutdown doesn't work for you, run the following command:Thanks to Habilain for this fix!If you get any other errors while updating Gnome Shell, remove all the Gnome Shell directories and start over!In a terminal, enter:To return to your normal desktop, pressand enter:Whenever you want to update to the latest version of Gnome Shell (from GIT), all you have to do is run this command: