What Is the GNOME Desktop

The GNOME desktop is a free, user-friendly desktop environment for Unix and Linux operating systems. It also provides a platform for development of new applications. The latest version, GNOME 2.10, is available for Linux, Solaris, HP-UX, BSD, and Darwin platforms. If you want to try it out, you can download a no-install-necessary LiveCD at torrent.gnome.org, 100 percent free, of course.

This article discusses the following:

GNOME is a desktop software project, but it's large enough to mean different
things to different people. If you're a software user, it's a desktop and some
applications. If you're a software developer, it's a platform, toolkit, and
community. The core applications consist of the Nautilus file manager, the panel
and its associated gadgets called panel applets, the usual complement of accessories
(text editor, terminal emulator, calculator, and so on), a few games, and some
larger applications like the Evolution mail, calendar, and address book, the
Gnucash finance tool, the Rhythmbox music player, and the Totem video player.

The development platform consists of a set of libraries and language wrappers that range from the
low-level (the glib utility functions and the libxml XML parsing libraries) to buttons and widgets as
complex as a Mozilla-based HTML rendering tool--meaning you can write your own web browser in
under 100 lines of C#, or a calculator in about 5 lines of Python. The libraries are accompanied
by user interface guidelines and application interaction standards, so that developers can do things like
insert icons into menus automatically, use the system tray for user notification of background tasks, and
even manipulate calendars and other data stores created by other applications. For example,
OpenOffice.org can reach out to the Evolution address book for mail-merge data, and the panel clock
can show upcoming appointments listed in the Evolution calendar.

The whole effort is coordinated by a nonprofit group known as the GNOME Foundation. The Foundation determines release schedules, chooses standards, and handles the administration of the
websites and network services. It also determines what software officially "counts" as part of
GNOME. Applications included in GNOME must have free licenses and a basis in GNOME
technology, must comply with user interface guidelines, and be generally useful and good--for example, no spam
tools are allowed. To make it into an official release, an application must be fully
documented, debugged, and packaged before the shipment deadline. Libraries have earlier deadlines, so
that they can be part of the development platform. Once part of the platform, libraries must maintain
API and binary compatibility for long periods of time after release, so that more applications can be
built on top of them. The official set of GNOME applications and libraries is listed at
www.gnome.org.

More important than the release process and package selection is what GNOME does for the world,
especially that part of the world you care about most: you. New software users find GNOME to be easy
to learn; administrators find it easy to maintain; experts find it easy to customize and tune for their
specific desires. Developers get a stable platform, their choice of development languages, and
convenient licensing. Even if you don't use GNOME, you can benefit from it: GNOME developers
contribute to cross-platform applications like the Gaim instant messaging tool, the OpenOffice.org
office suite, and the GIMP image processing application, as well as to infrastructure efforts like
freedesktop.org.

The GNOME Desktop and Applications

The desktop itself and its menus are designed to look familiar to anyone who has ever used a
computer. If you know how to use a mouse, you can probably find your way around a menu labeled
"Programs" or "System." Those menus are part of the default setup for the GNOME panel, that grey
bar at the top or bottom of the screen. In addition to the menus and a few application launchers (or, as
people sometimes call them, buttons), you'll find tiny applications called applets that run in the panel.
The clock is included by default, as is a list of currently open windows. To add more applets,
right-click on a blank spot in the panel and select one of the items under Add to Panel. Some of the
options are:

Workspace Switcher: GNOME lets you have multiple workspaces, as though you had several
monitors at once. To switch from one to another, click on the workspace you want. You can also
move windows from one workspace to the next by dragging their icons in the workspace switcher.
Right-click the applet to adjust the number of workspaces and display options.

Battery Monitor: Does exactly what it says on the tin. Right-click the applet for options, or to suspend your system to disk.

Character Palette: Don't have an international keyboard? Click one of the letters in the
character palette, then paste or middle-click where you want it to go. Mine has á é í ó ú ñ and €, but you can select from dozens, or create your own.

The file manager seems basic enough: click a folder and it opens to display the contents; click a file
and the relevant application starts and displays the file. But click around a little, and you'll notice a few
quirks. By default, the file manager works in "spatial" mode, similar to some editions of the Macintosh
Finder, where each window represents a folder. Click a folder inside a window, and a new window
opens up. Click the same folder again, and the original window will come to the front. If you want to
change that behavior, right-click a folder and select Explore to get a Windows Explorer style file
manager. Alternately, hold down the shift key when double-clicking a folder to close windows behind
you as you navigate, or press Ctrl-L to type in the path you want to visit.

The GNOME Development Platform

The GNOME development platform is used for more than just GNOME applications. It offers
independent developers a number of attractions:

Licensing: Most GNOME libraries are licensed under the Lesser GPL, or LGPL, meaning that
developers are free to build software that relies on them without restrictions, royalties, or even
permission. Only changes to the libraries themselves need to be contributed back to the community--you can keep your code closed, if you prefer.

Languages: GNOME libraries are mostly written in C, but they're almost universally wrapped
for access by other languages. GNOME developers write in C++, Python, C#, Perl, Java, and more.
Applications like Novell iFolder and the F-Spot camera tool are written in C# using the GTK+ and
GNOME libraries. They do this by using the gtk-sharp and gnome-sharp wrapper libraries. Efficient
low-level code and a fast C# runtime mean that they run quickly despite offering the conveniences of
C# and the full GNOME toolkit to their developers.

Developer Tools: The Glade user interface designer lets developers lay out user interfaces, which it saves as XML files accessible to applications making use of the libglade library--no more
describing windows in dry code when you can draw them. IDEs like Monodevelop can even read the
interface definition files and create dummy functions that you fill out, cutting out the boring part of
development. Future developer tools include a new UI design tool built entirely in C# called Stetic.

Systems and Standards: Developers have access to the system tray through the GNOME
notification area, and desktop-wide messaging systems through dbus. Both are described on
freedesktop.org, a website dedicated to development of free software desktop applications and tools. Developers following FreeDesktop.Org standards know that their applications will work equally well in KDE and GNOME, and that they are providing applications that will age gracefully and provide users with a coherent, consistent, and pleasant desktop software experience.

In Good Company: Lots of independent developers are building GNOME and GTK+ software.
Just this past week, Versora, Inc. was a finalist in the LinuxWorld 2005 Product Excellence Awards for
its automated desktop migration tool, based on GTK+. More GTK+ developers are listed at the GTK+ Success Stories page.

Aaron Weber
works for Novell. In addition to his work on Linux in a Nutshell, he has contributed to Running Linux (both from O'Reilly) and the documentation for the Evolution groupware suite, the Red Carpet software updater, and the Novell ZENworks Linux Management tools.