Easy Breezy Beautiful GNOME Shell
Marina Zhurakhinskaya introduces GNOME Shell and its design goals.
GNOME Shell is the new face of GNOME. The goal of the project is to create a better design for the look and feel of the desktop and the key functions the desktop provides. These functions include enabling the user to find and open applications and documents, switch between various activities, and view incoming information such as chat messages or stock price updates. Many of these capabilities are already provided by the separate modules of the current GNOME desktop, but GNOME Shell integrates them in an overall comprehensive design.
I have been working on GNOME Shell since its conception at the GNOME UI Hackfest, which was held the week before Boston Summit in October 2008. My work includes writing code, weighing in on the design plans, and making sure that our wiki is up-to-date with all the information necessary to try out GNOME Shell or get started contributing to the project. I am part of the team of software developers and designers at Red Hat guiding the project. We actively work with the developers of the technologies GNOME Shell is based on (such as Clutter, Mutter, and GObject Introspection) and with many community members who contribute to the project. There are preview packages of GNOME Shell in many Linux distributions already and it is slated to be the default look of GNOME 3.0, which will be released in September 2010.
Our motivation in designing GNOME Shell is to provide a consistent, self-teaching user interface based around the day-to-day tasks of the user. Over time, the user should be able to grow in their use of the desktop, easily discovering the more advanced features and ways to personalize the desktop to reflect their work patterns and individual taste. In addition to taking responsibility for the user’s overall experience, we want to delight the user with sleek graphics and visual effects enabled by new graphical technologies. We also want to make it easy for the user to focus on their current task by de-emphasizing the other tasks and using the notifications sparingly in accordance with the user’s preferences.
The first noticeable change in GNOME Shell is that the two panels of GNOME 2 are replaced by a single black panel at the top of the screen. This panel contains some familiar things like a clock and notification icons, but the menus containing applications and other options have been replaced by a single button at the upper left of the screen that takes the user to the Activities overview. Next to the Activities button, is the name of the currently used application that will eventually contain the application menu, with options such as close, open a new window, as well as application specific options. Removing the second panel and some controls on the top panel creates more space on the screen for the application windows and removes from view the options that are only used momentarily and are not related to the current application. One way the user can switch applications is the improved Alt+Tab dialog that displays all open applications.
The most important of the innovations seen in GNOME Shell is the Activities overview mode which dedicates a full screen to all the different ways in which the user can switch from doing one thing (an activity) to doing something else. It shows previews of all the windows the user has open, the user’s favorite and running applications, favorite directories and connected devices collectively called “places”, and recent documents. It also integrates search and browse functionality in case what the user wants isn’t immediately visible.
The user can get to the Activities overview by clicking the Activities button or by simply moving the mouse to the upper left corner of the screen which activates the “hot corner”. The hot corner is a fast and easy way to get to the frequently accessed overview.
Like in GNOME 2, windows can be grouped into “workspaces”, but the GNOME Shell Activities overview makes workspaces much more intuitive. The user can easily see what is on all the workspaces, drag new applications or documents to a particular workspace to open them there, and drag windows between workspaces. The default is having one workspace and the user can add or remove workspaces as needed. In addition to making workspaces more intuitive, the view of what is on all workspaces allows the user to pick a window to switch to in a single step regardless of whether it is located on the same or different workspace as the user’s previous activity. Similarly, single step switching is available in the Alt+Tab dialog which shows applications open on all workspaces.
GNOME Shell puts a bigger emphasis on applications (Firefox, Evolution, Terminal, etc.) rather than on the separate windows of the application. The application icons in the Activities overview serve as both the application launchers and the indicators of which applications are running that let the user switch to the application. This replaces the custom launchers and the task list that was shown in the bottom panel in GNOME 2. The running applications are indicated with a glow behind the application name and the glow is broken up into multiple circles if the application has multiple windows open. Clicking on the application icon opens a new window for the application if it was not running or switches to the last used window of that application if it was already running.
Consider the case of a web browser with tabs, the title and the appearance of the window will differ depending on what tab is open. By emphasizing the Firefox name and icon, we’ve provided a consistent target for switching to the application. Furthermore, right clicking on the application icon brings forward the previews of all windows of the application, which takes the guess work out when compared to clicking on the poorly identifiable targets in the GNOME 2 bottom panel before stumbling on the window you meant to restore. An option to open a new window is available from the right click menu along with the titles of the current windows. Similarly, the Alt+Tab dialog groups open windows by application and provides large previews of the windows when the application icon is selected.
For many applications, such as XChat IRC, Empathy, Evolution, Calculator, or Chess, it makes most sense to only run one instance of the application, so switching to the existing window of the application is what the user wants if the application is already running. However, in GNOME 2, the user had to know whether such application is already running before making a decision to click on a launcher to open a new window of the application. Accidentally opening a duplicate window could mean having an unnecessary extra Calculator window cluttering the desktop or signing in into IRC under a second nick. By combining the application launcher and the application switcher and making switching to the already running copy of the application the default behavior, we give the user confidence that if they just go ahead and click on the application icon, the right thing will happen.
Trying out GNOME Shell is easy. It is stable and convenient to use in its current state and many people already use it as their default desktop. Many Linux distributions have the GNOME Shell preview packages available.
On Fedora 12, you need to run ‘sudo yum install gnome-shell’ and then select GNOME Shell in the System->Preferences->Desktop Effects dialog.
On Ubuntu 9.10, you need to run ‘sudo apt-get install gnome-shell’ and then run ‘gnome-shell—replace’. You can run ‘gconftool-2—set /desktop/gnome/session/required_components/windowmanager—type string gnome-shell’ to always start GNOME Shell when you log in. You can run ‘gconftool-2—unset /desktop/gnome/session/required_components/windowmanager’ to reverse this change.
Instead of using a package, you can also build, run, and periodically update GNOME Shell yourself using these straightforward jhbuild instructions, which will allow you to stay on top of the GNOME Shell development changes. Be sure to check out the GNOME Shell cheat sheet when you start using GNOME Shell.
The current work items for GNOME Shell include adding a new message tray and notification system, improving application and document browsing, and creating an extensions system which will allow developers to create custom plug-ins for GNOME Shell. We welcome design input and development help for these and other GNOME Shell features. You can get involved by joining the GNOME Shell mailing list, hanging out on the IRC channel “gnome-shell” on irc.gnome.org, reading the design document, going over the information on the development page, adding a translation for your language, and filing or fixing bugs in Bugzilla. The best place to discuss what you want to contribute or ask for help is the IRC channel. Lurking there is also fully acceptable!
About the Author
Marina Zhurakhinskaya is a Senior Software Engineer working on the new shiny GNOME Shell code on the desktop team at Red Hat. She is particularly interested in making sure that the GNOME desktop is intuitive for the users and well-documented for the contributors. Outside of work, she likes to hang out with friends and family, travel, listen to audio books, and read reviews on Yelp, TripAdvisor, and Amazon.