GNOME Shell

Overview

The GNOME Shell redefines user interactions with the GNOME desktop. In particular, it offers new paradigms for launching applications, accessing documents, and organizing open windows in GNOME. Later, it will introduce a new applets eco-system and offer new solutions for other desktop features, such as notifications and contacts management. The GNOME Shell is intended to replace functions handled by the GNOME Panel and by the window manager in previous versions of GNOME. The GNOME Shell has rich visual effects enabled by new graphical technologies.

The project is still in early stages of development. The plan is to have it be an optional feature in GNOME 2.28, and to replace the existing components for GNOME 3.0. It is currently possible to try it out by building and running it [ http://live.gnome.org/GnomeShell#building ] yourself.

From a technology point of view, the shell acts as a compositing manager for the desktop, and displays both application windows and other objects in a Clutter [ http://clutter-project.org/ ] scene graph. Much of the code of the shell is written in Javascript and Clutter and GNOME platform libraries via GObject Introspection [ [http://live.gnome.org/GObjectIntrospection ] and JavaScript bindings for GNOME [ http://live.gnome.org/Gjs ]. For window management and compositing, the shell builds off of code from Metacity. Currently the shell runs as a plugin for Mutter, which is a branch of Metacity adding Clutter-based compositing, though the expectation is that at some point the Metacity code will be forked and made specific to the shell. See Owen Taylor's blog post [ http://blog.fishsoup.net/2008/10/22/implementing-the-next-gnome-shell/ ] for the explanation of the technology choices that were made for the GNOME Shell.

Current Status

Screencasts: A series of GNOME Shell screencasts is here [ http://live.gnome.org/GnomeShell/Screencasts ]. A built-in feature that allows easily making screencasts within the GNOME Shell is described here [ http://live.gnome.org/GnomeShell/Features#screencast-recording ].

Screenshots: Screenshots [ http://live.gnome.org/GnomeShell/Screenshots ]

Features: An overview of the current GNOME Shell features and design principles is here [ http://live.gnome.org/GnomeShell/Features ].

Blog Posts: Here are the blog posts that describe the latest GNOME Shell features.

Getting Involved

Communication Resources: Feel free to join any of the communication channels listed below.

Trying It Out For Yourself: Follow the instructions here [ http://live.gnome.org/GnomeShell#building ] to build and run the GNOME Shell on your system.

Contributing Code: The development page [ http://live.gnome.org/GnomeShell/Development ] has the information about getting started developing code for the GNOME Shell. The GNOME Shell Style Guide [ http://live.gnome.org/GnomeShell/StyleGuide ] contains the style guidelines and useful development resources. A list of developer tasks can be found here [ http://live.gnome.org/GnomeShell/Todo ].

Contributing Design: A list of the open design questions can be found here [ http://live.gnome.org/GnomeShell/Todo#design ]. Existing design ideas can found in the Designer Playground [ http://live.gnome.org/GnomeShell/DesignerPlayground ]. Feel free to add your design ideas to that page, as well as to send them to the mailing list. If your design idea is in response to something in the list of the open design question [ http://live.gnome.org/GnomeShell/Todo#design ], please make a note there as well.

Contributing User Observations: Writeups about users interacting with their desktop today that allow us to learn how they switch between tasks and generally interact with their desktop are here [ http://live.gnome.org/GnomeShell/UserObservationData ]. You can add new write-ups based on your friends' or you own experience. General problems with desktop usage are summarized here [ http://live.gnome.org/GnomeShell/NotesAboutDesktopUsage ] and information about the default desktop set up of different distributions plus more ideas about user research is here [ http://live.gnome.org/GnomeShell/UserResearch ].

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/cgit/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 [ http://live.gnome.org/GnomeShell/SwatList ]. 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 nested

This approach is useful when developing the GNOME Shell and wanting to quickly test some changes.

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.)

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.)

GnomeShell (last edited 2009-05-01 20:10:28 by MarinaZ [ http://live.gnome.org/MarinaZ ])

Copyright 2009