Contents
GNOME Shell
GNOME Shell is the defining technology of the GNOME 3 desktop user experience. It provides core interface functions like switching to windows and launching applications. GNOME Shell takes advantage of the capabilities of modern graphics hardware and introduces innovative user interface concepts to provide a delightful and easy to use experience.
Availability and Status
The GNOME Shell is currently in active development and while many planned features are not yet implemented it is stable enough for everyday use.
Previews of GNOME Shell should be available in most GNOME based distributions. You can follow these instructions to try out the GNOME Shell package on your distribution. If you are interested in trying out the latest features or being a part of the development of the future of GNOME please check out the instructions for building it yourself.
A stable version of GNOME Shell will be released as an integral part of GNOME 3 in September 2010.
Tune in for the latest status from any of:
Microblog: Follow along on Identi.ca or Twitter. The updates are the same on both sites.
IRC: Join irc.gnome.org:#gnome-shell to participate in daily discussions or get help with running, developing, or designing for the GNOME Shell.
Mailing List: Subscribe to the GNOME Shell mailing list to get updates about the latest features and participate in the development and design discussions. Feel free to use this list for mailing your design ideas to it.
Bugzilla: Monitor "gnome-shell" product in GNOME Bugzilla and use it to submit bugs or feature requests. View all open bugs. You can add gnome-shell-maint@gnome.bugs to your "Users to watch" list in your email preferences for Gnome Bugzilla to get e-mail updates about changes.
Commit Updates: Subscribe to the gnome-shell module code updates in your svn-commits-list subscription options. Commit log for the GNOME Shell can be viewed here.
Blog Posts: Here are the blog posts that describe the latest GNOME Shell features and design ideas by Jon McCann, Colin Walters, and Marina Zhurakhinskaya. Other blog posts and articles:
Easy Breezy Beautiful GNOME Shell - 2009-11-06 article in the GNOME Journal by Marina Zhurakhinskaya
GNOME Shell 2.28.0 – A Preview - 2009-10-07 by Owen Taylor
Technology
The Shell acts as a compositing manager for the desktop, and displays both application windows and other objects in a Clutter scene graph. Much of the code of the shell is written in Javascript but uses Clutter and GNOME platform libraries via GObject Introspection and JavaScript bindings for GNOME. For window management and compositing, the shell builds off of a Metacity branch called Mutter, which adds Clutter-based compositing to Metacity. See Owen Taylor's blog post for the explanation of the technology choices that were made for the GNOME Shell.
Design
GNOME Shell project takes a highly considered and open approach to design. Designers are involved in every stage of the development process from start to finish. The design process is not a hit and run - slap it on in the end affair. If you are a designer and would like to get involved we'd love to hear from you. Details are available on the the design page.
More Information
Tour: Read about the main GNOME Shell features and see the screenshots.
Screenshots: Just the screenshots.
Screencasts: A series of GNOME Shell screencasts is here. A built-in feature that allows easily making screencasts within the GNOME Shell is described here.
Cheat Sheet: This page contains brief descriptions of all the current capabilities and is geared towards people trying GNOME Shell out on their desktop.
Remote Display: Information concerning running GNOME Shell over remote display is here.
Getting Involved
Contributing Code: The development page has the information about getting started developing code for the GNOME Shell. The GNOME Shell Style Guide contains the style guidelines and useful development resources. A list of developer tasks can be found here.
Contributing Design: The design page has the information about the current GNOME Shell design. In particular, the GNOME Shell design document describes our design goals and principles. You can send your design ideas to the mailing list, as well as add them to the Designer Playground page.
Contributing Translation: Here are the steps you can follow to create a GNOME Shell translation for your language.
Building
Our goal is to be able to develop the GNOME Shell as much as possible with existing GNOME components and to keep the build process simple. However, the shell requires several modules such as gobject-introspection and gjs that are not yet part of current operating system releases. So, there is a small self-contained JHBuild moduleset that can be used to build the shell and its dependencies.
Having this JHBuild setup will not affect your main system, so there is no need to run the GNOME Shell inside a virtual machine. To run the GNOME Shell inside a virtual machine would require good 3D support, and we don't know of any virtualization system that can handle it. In particular, problems have been reported with the GNOME Shell and the 3D support in VirtualBox.
To start with this, download and run the setup script:
curl -O http://git.gnome.org/browse/gnome-shell/plain/tools/build/gnome-shell-build-setup.sh /bin/bash gnome-shell-build-setup.sh
(Experts: If you have an existing ~/.jhbuildrc it moves it to ~/.jhbuildrc.bak. If you actually need to maintain another jhbuild you may want to rename the gnome-shell .jhbuildrc to .jhbuildrc-gnome-shell and create a shell alias 'gsbuild' that does 'jhbuild -f ~/.jhbuildrc-gnome-shell.)
The script creates an example ~/.jhbuildrc-custom with some comments about things you may want to change. Edit that as desired. Then build the shell and its dependencies by running:
jhbuild build
Note: the above is supposed to work reliably. Current reasons why it isn't. Feel free to ask for help on the IRC channel.
If you have successfully built in the past, but it suddenly stops working, try:
jhbuild build -f -a -c
which will force it to rebuild everything from scratch.
Running
You can either start gnome-shell "nested" in a window within your current session, or you can run it within your session replacing gnome-panel and window manager.
Depending on the state of your X drivers, one or of the other of these may work better. So, if the first one you try doesn't work, try the other.
Running gnome-shell replacing the panel
This approach is best when trying out the GNOME Shell and wanting to see its full potential.
cd ~/gnome-shell/source/gnome-shell/src ./gnome-shell --replace
When gnome-shell exits (you can kill it with Control-C in the terminal in which you started it), gnome-panel and metacity are restarted. (The script hardcodes /usr/bin/metacity and /usr/bin/gnome-panel, if that doesn't work in your setup, please make the script smarter and submit a patch.)
Running gnome-shell nested
This approach is useful when developing the GNOME Shell and wanting to quickly test some changes. NOTE: It isn't useful for getting a good feel for how the shell works since it will be really slow, and won't properly integrate with the rest of your desktop.
cd ~/gnome-shell/source/gnome-shell/src ./gnome-shell
(This requires a relatively recent version of Xephyr with GLX support to be installed on your system. E.g. xorg-x11-server-Xephyr package on Fedora.)
