LWN.net Logo

Development

A look at GNOME Shell

June 9, 2010

This article was contributed by Joe 'Zonker' Brockmeier.

It's been more than a year since LWN looked at GNOME Shell in what was still a primitive state. With only a few months left until the scheduled release of GNOME 3.0 at the end of September, and after more than a year's development, it seemed like a good time to take another look.

GNOME Shell is a compositing manager that works on top of Mutter — a branch of the Metacity window manager. With GNOME 3.0 Metacity will be in maintenance mode only, and Mutter will be GNOME's window manager going forward. Mutter uses the Clutter toolkit for rendering. In practical terms, GNOME Shell provides the actual desktop environment for GNOME 3.0. It displays and manages windows, provides a panel for displaying system notifiers, launches applications, and shows recently used files.

Getting GNOME Shell is relatively easy, if you're running a very current Linux distribution and have the right graphics card and setup. Ubuntu 10.04, Fedora 13, Debian testing and unstable, and openSUSE 11.2 all include gnome-shell packages for testing. I tried running GNOME Shell with the packages supplied for Ubuntu 10.04, but Mutter failed to start.

Fedora 13 provided slightly better results. After installing the gnome-shell package, Fedora adds a new option to the Desktop Effects dialog for GNOME Shell. Checking that should automatically start GNOME Shell if the graphics system supports it. Mutter requires 3D acceleration, but Nouveau and GNOME Shell do not play well together. This was a bit of a surprise, as Nouveau does just fine with Compiz on Fedora 13.

Finally, I tried GNOME Shell on a machine with Intel graphics on Fedora 13. GNOME Shell worked well on this machine and had good performance. It showed itself to be stable and feature-complete enough for everyday use, though not all features have been implemented yet. For example, the GNOME Shell design document [PDF] calls for a message tray that will display events and messages, but this is not present in the implementation shipped with Fedora 13. Matt Novenstern provided an update recently on his progress but it's still under heavy development.

What happens if you don't have supported 3D hardware? No GNOME Shell for you, though the GNOME Project will still make it possible to run the GNOME 2 shell with GNOME 3 applications and libraries.

[workspaces]

Shell replaces the GNOME Panel, taking over the job of managing the desktop from Nautilus and providing some new ways to manage windows. The concept of switching between windows using a menu or toolbar buttons (as is the norm in GNOME 2.x) is gone. Instead, users can use Alt-Tab to switch between windows or move the mouse cursor to the top of the window and select between windows and/or workspaces. Users can also see all open windows and the GNOME menus by clicking the Activities button or pressing the System (Windows) key. New workspaces can be added (or removed) by clicking a button in the lower left-hand corner of the screen.

Alt-Tab works slightly differently with GNOME Shell than with Metacity. Instead of switching between all active windows, it displays all active applications, with a drop-down menu for windows owned by each application. For instance, if Firefox has three open windows, it will display one thumbnail for Firefox and a triangle at the bottom that indicates there's more than one window to choose from.

The GNOME Shell panel is not planned to support GNOME applets, so users that have applets they depend on (like GNOME Time Tracker) are going to be out of luck. Owen Taylor laid out the rationale in April 2009 for omitting applets.

The panel also doesn't make the best use of space in the current implementation. The panel is a flat black bar that displays system tray notifiers, date and time, a logout menu, a button that displays the active application (and does little else), and the Activities menu.

[application menu]

Aside from missing applets, though, GNOME Shell worked fine with all of my day-to-day applications. In its current state, GNOME Shell is slightly less functional than Metacity and the GNOME Panel. The Applications menu could use some work, as it just displays all the applications GNOME knows about in a flat grid. This is a work in progress, though. The usability trade-off may be worth it in the long run when some of these problems are addressed. Even on a relatively small screen (1280x800 resolution) GNOME Shell makes it easier to manage a lot of open windows.

GNOME Shell and Accessibility

One of the concerns with any major revamp like GNOME Shell is the impact it will have on GNOME accessibility (a11y). The GNOME accessibility team has been working hard on GNOME 3.0. Alejandro Piñeiro Iglesias, maintainer of the Cally accessibility implementation library for clutter, says that there's room for improvement but Cally is in good shape at the moment.

Piñeiro says that, ultimately, he wants to see Cally become part of Clutter rather than a standalone library. This isn't the case at the moment, and is unlikely to happen by GNOME 3.0. Piñeiro says that when using Cally patches to Clutter he's been able to use Orca screen reader with GNOME Shell, though "the functionality is limited." Presumably this will be improved by the final release.

Taylor said in March that he'd like to see accessibility "held to the same high standards as everything else in GNOME" with accessibility features on by default and a user experience that "just works." But it won't happen by GNOME 3.0:

Getting accessibility fully to that standard isn't going to happen for GNOME 3.0... we've never been there for GNOME 2, we aren't going to be there in 4-5 months even if it was the only thing we worked on.

But where I definitely want to be for GNOME 3.0 - in the next 4-5 months is to make sure we've laid the groundwork properly so that we can get there in follow-on releases, both on a technical level and on a user-experience level.

Piñeiro says he'll continue working towards full integration of Cally with GNOME Shell, and points out that there are a number of other features to implement such as keyboard navigation and theming. GNOME Shell provides the ability to create new themes, though it only ships with one at the moment, and work will need to be done to ensure that GNOME Shell has a selection of accessibility-friendly themes.

It's clear that GNOME Shell will need to continue to mature after the GNOME 3.0 release. What's less clear is exactly how it will proceed. As discussed on the gnome-shell-list, various design documents and roadmaps are spread out a bit. The most authoritative are the design document and the roadmap on the GNOME wiki.

One area that is wide-open is the "social dimension / collaboration" mentioned in the design document. This is left open for version 2.0 of the Shell, but the basic components are in view now. The (not yet implemented) message menu is meant to work hand in hand with the Telepathy communications framework and the applications it supports, like the Empathy instant messaging client and Gwibber social client. Eventually the message menu should be used to show instant messages, system notification, etc. — though the user should be able to block this by setting their status as busy.

The GNOME Shell plan also calls for the ability to create extensions using JavaScript and CSS. The extensions are intended to add functionality to GNOME Shell, but not to replace applets. Extensions are meant to be a way to make changes to the way GNOME Shell handles things like window management or application launching without having to actually hack the Shell itself. GNOME Shell already has a functioning debugger called Looking Glass for prospective extension authors, but there are no extensions in the wild yet.

GNOME 3.0 is more than GNOME Shell

[sidebar]

Because GNOME Shell is the most visible major change to GNOME, it has drawn the most attention. However, GNOME 3.0 is more than just GNOME Shell. In addition to the work that's gone into GNOME accessibility, GNOME 3.0 should inherit multitouch support from GTK+ 3.0, along with major improvements in the help system via Yelp.

Users thinking about trying out the GNOME Shell should check out the GNOME Shell Cheat Sheet, which includes a list of built-in features and instructions on using them. Even in its unfinished state, the GNOME Shell should be stable enough for most LWN readers to use. Interested contributors should join the gnome-shell-list mailing list and see the GNOME 2.31.x development series page, contributor guide, and the GNOME Shell Todo for further information.

Though GNOME 3.0 is due to be released by the end of September, GNOME Shell may not land on many GNOME users' desktops until 2011. Mark Shuttleworth has already indicated that GNOME Shell won't ship as the default with Maverick Meerkat (Ubuntu 10.10). GNOME 3.0 will miss the 11.3 release of openSUSE, and Debian Squeeze is currently planned to ship with GNOME 2.30. The first major distribution to ship GNOME 3.0 with GNOME Shell will likely be Fedora, as Fedora 14 is due to hit about a month after the GNOME 3.0 release.

Comments (36 posted)

Brief items

Quote of the week

Today marks the day where finally, after months of (non-full-time) work, I have made the first successful HTTP connection through my own GPRS/EDGE network.

Ever since we started to seriously get into OpenBSC to run GSM networks, I've been looking forward to running GPRS networks, too. What most people don't know: GPRS is radically different from GSM. It basically only shares the frequencies and timeslot architecture of the physical layer, while having it's own layer1, layer2 and various other protocol layers. Also, its signalling and data completely bypass the usual BSC and MSC components of a GSM core network.

-- Harald Welte

Comments (none posted)

Konversation 1.3 for KDE 4 released

The Konversation IRC client has released its 1.3 version with some significant new features including the DCC whiteboard extension and integration with KDE's SSL certificate store. "Konversation 1.3 debuts a major new feature in the area of Direct-Client-to-Client (DCC) support: An implementation of the DCC Whiteboard extension that brings collaborative drawing - think two-player Kolourpaint - to IRC."

Full Story (comments: none)

The LLDB debugger launches

The LLVM project has announced the existence of the LLDB debugger. "While still in early development, LLDB supports basic command line debugging scenarios on the Mac, is scriptable, and has great support for multithreaded debugging. LLDB is already much faster than GDB when debugging large programs, and has the promise to provide a much better user experience (particularly for C++ programmers). We are excited to see the new platforms, new features, and enhancements that the broader LLVM community is interested in."

Comments (14 posted)

OpenOffice.org 3.2.1 released

The OpenOffice.org Community has announced the availability of OpenOffice.org 3.2.1. "OpenOffice.org 3.2.1 is a so-called micro release that comes with bugfixes and improvements, with no new features being introduced. This release also fixes security issues, so we recommend everyone to upgrade to the new version as soon as possible." This is the first version released since Oracle became the the project's new main sponsor.

Full Story (comments: 9)

PostgreSQL 9.0 Beta 2 Now Available

The second beta of PostgreSQL 9.0 has been released. There are some significant changes from beta1, including security fixes. "Note that, due to a system catalog change, an initdb and database reload will be required for upgrading from 9.0Beta1. We encourage users to use this opportunity to test pg_upgrade for the upgrade from Beta1 or an earlier version of 9.0. Please report your results."

Full Story (comments: none)

Python 2.7 release candidate 1 released

Release candidate 1 for Python 2.7, which is planned to be the last major version in the 2.x series, has been released. "2.7 includes many features that were first released in Python 3.1. The faster io module, the new nested with statement syntax, improved float repr, set literals, dictionary views, and the memoryview object have been backported from 3.1. Other features include an ordered dictionary implementation, unittests improvements, a new sysconfig module, and support for ttk Tile in Tkinter. For a more extensive list of changes in 2.7, see http://doc.python.org/dev/whatsnew/2.7.html or Misc/NEWS in the Python distribution."

Full Story (comments: 7)

Rockbox 3.6 released

Version 3.6 of the Rockbox music player firmware system is out. "Four months have passed since the last release, and in that time we've been busy adding new supported devices, adding features and fixing bugs to give you the best Rockbox experience yet on the widest range of targets ever. With the addition of multiple new codecs, the ability to skin the FM screen, multiple fonts in themes, the hotkey feature and much more we are confident that this is the best version of Rockbox ever." See the release notes for details on what's new this time around.

Full Story (comments: 3)

Scribus 1.3.7 Released

The Scribus desktop publishing application team has announced the release of version 1.3.7, with many bug fixes and some minor enhancements. Those include new scripter functions, translation and documentation updates, fixes to the PDF bookmark export, new import filters for Mac PICT and Calamus Vector Graphics (CVG) files, and more. "The Scribus Team considers this version to be quite stable and ready for many real-world use cases. However, since there are still some annoyances that prevent us from releasing version 1.4, more cautious users may want to prefer to stick with the officially stable version 1.3.3.14."

Full Story (comments: none)

SimPy 2.1.0 simulation package

The SimPy (simulation in Python) project has announced the release of 2.1.0, which features a refactored code base and two API additions, while keeping backward compatibility with 2.0.1 and earlier versions. "Many users say that SimPy is one of the easiest to use discrete event simulation packages. [...] It provides the modeler with components of a simulation model. These include processes, for active components like customers, messages, and vehicles, and resources, for passive components that form limited capacity congestion points like servers, checkout counters, and tunnels. It also provides monitor variables to aid in gathering statistics. [...] SimPy has plotting and GUI capabilities "out of the box". It comes with extensive documentation, tutorials and a large number of example models."

Full Story (comments: none)

Newsletters and articles

Development newsletters from the last week

Comments (none posted)

Macieira: Qt and Open Governance

Thiago Macieira writes about opening up Qt governance on the Qt Labs blog. "And we'll also need to open up the decision-making structure. That is to say, contributors who have shown themselves to be trustworthy and good at what they do deserve the right of having a say in the decisions. Take, for example some of the contributors of the past year: there are a couple of cases where they know the code better than people working in the Qt offices. We have come quickly to the point where we have to say 'I trust you that this contribution is good'. This is part of the meritocratic process that we want to have in place."

Comments (none posted)

Page editor: Jonathan Corbet
Next page: Announcements>>

Copyright © 2010, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds