Contents
GNOME Shell
GNOME Shell is the defining technology of the GNOME 3 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 March 2011. Here is a roadmap of features we are focusing on in preparation for this release.
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 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, Jeremy Perry, Colin Walters, Marina Zhurakhinskaya and Florian Müllner. 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
Frequently Asked Questions
- General
- What is GNOME shell?
- What problems does GNOME Shell attempt to address?
- What are the design goals of GNOME Shell? Nongoals?
- Who is GNOME Shell for? How does it apply to me?
- Using
- How can I try out GNOME Shell?
- What led to the decision to make 3D acceleration a requirement for GNOME Shell?
- GNOME shell does not seem to work with my video card. What can I do?
- Why GNOME shell works with my video card with one monitor, but does not work in multihead mode?
- It seems there is no option in the menu to power off my computer?
- What is the state of the Shell and how can I stay on top of the latest Shell developments?
- Where can I provide feedback?
- Is GNOME Shell accessible?
- Deeper
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
Terminology: A glossary of gnome-shell's terms and how on-screen elements are called.
Step-by-Step Guide: This guide outlines the steps for getting involved with the GNOME Shell design or development. It prioritizes all the links we have on this main page.
Contributing Code: The development page has the information about getting started developing code for GNOME Shell. The GNOME Shell Style Guide contains the style guidelines and useful development resources. The guide on working with patches explains how to create and submit patches for GNOME Shell. We mark bugs that we definitely need patches for with High priority in Bugzilla. We mark bugs that are good for a beginner to start with with the "gnome-love" keyword.
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
GNOME Shell JHBuild builds a number of modules that GNOME Shell requires, as well as the gnome-shell module itself.
JHBuild enables you to run GNOME Shell in a sandbox environment and doesn't install it globally on your system, so there is no need to run GNOME Shell inside a virtual machine. To run 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.
If you are a user of Ubuntu, Debian, Mandriva, Gentoo or any other distribution that has .la files in /usr/lib or /usr/lib64, you need to remove them before you run the build. The explanation and the instructions on how to keep things working even after your system installs new updates are here.
sudo find /usr/lib{,32,64} -name "*.la" -deleteNow you can build the modules GNOME Shell depends on and the GNOME Shell module itself. This will take a while as there are several dozen modules being built.
jhbuild build
The above is supposed to work reliably, but check the list of commonly encountered problems if it doesn't. Also 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 -afc
which will force it to rebuild everything from scratch.
While developing, for instance to rebuild the gnome-shell component without its libs, from the current git branch that is not the master branch,
jhbuild buildone -n gnome-shell
should build the one gnome-shell component without switching/pulling git branches.
Running
To run gnome-shell after a build, enter a jhbuild shell, and run the installed binary:
jhbuild shell gnome-shell --replace
When the script exits (you can kill it with Control-C in the terminal in which you started it), your panel and window manager are restarted. These are found in certain gconf keys.
If you get a cryptic error about D-Bus and then gnome-shell exits at startup:
(mutter:12345): GdmUser-WARNING **: Failed to connect to the D-Bus daemon: Failed to connect to socket /opt/gnome/var/run/dbus/system_bus_socket: No such file or directory (mutter:12345): GdmUser-WARNING **: Couldn't connect to system bus: Failed to connect to socket /opt/gnome/var/run/dbus/system_bus_socket: No such file or directory
This probably means that you installed D-Bus as part of your jhbuild setup. However that D-Bus is not running as the system bus; your system's standard D-Bus is running as the system bus. You'll want to include this in your .jhbuildrc (make sure it points to the right path in your distribution):
os.environ["DBUS_SYSTEM_BUS_ADDRESS"] = "unix:path=/var/run/dbus/system_bus_socket"
(This is mentioned in the D-Bus page for Jhbuild)
Setting up gnome-shell to run on login
If you're satisfied with gnome-shell, you can set it to be your default window manager when you log in:
ln -s ~/gnome-shell/install/share/applications/gnome-shell.desktop ~/.local/share/applications/gnome-shell.desktop gconftool-2 -s /desktop/gnome/session/required_components/windowmanager "gnome-shell" -t string
Then log out and log back in. Your session should open in gnome-shell.


