This title is for the reader who is conversant with the C programming language and UNIX/Linux development. It provides detailed and solution-oriented information designed to meet the needs of programmers and application developers using the GTK+/Gnome libraries. Coverage complements existing GTK+/Gnome documentation, going into more depth on pivotal issues such as uncovering the GTK+ object system, working with the event loop, managing the Gdk substrate, writing custom widgets, and mstering GnomeCanvas.
Gnome is a free (or "open source") software development project started in 1997 by Miguel de Icaza of the Mexican Autonomous National University and a small team of programmers from around the world. Inspired by the success of the similar K Desktop Environment (KDE) project, the burgeoning popularity of the GNU/Linux operating system, and and the power of the GTK+ graphical toolkit, Gnome grew quickly — within a year, hundreds of programmers were involved and many thousands of lines of code had been written. Gnome has become a powerful framework for GUI application development which runs on any modern variety of UNIX.
"Gnome" is actually an acronym: GNU Network Object Model Environment. Originally, the project was intended to create a framework for application objects, similar to Microsoft’s OLE and COM technologies. However, the scope of the project rapidly expanded; it became clear that substantial groundwork was required before the "network object" part of the name could become reality. The latest development versions of Gnome include an object embedding architecture called Bonobo, and Gnome 1.0 included a fast, light CORBA 2.2 ORB called ORBit.
Gnome is a part of the GNU Project, whose overall goal is developing a free operating system (named GNU) plus applications to go with it. GNU stands for "GNU’s Not UNIX", a humorous way of saying that the GNU operating system is UNIXcompatible.
You can learn more about GNU at http://www.gnu.org. Gnome has two important faces. From the user’s perspective, it is an integrated desktop environment and application suite. From the programmer’s perspective, it is an application development framework (made up of numerous useful libraries). Applications written with the Gnome libraries run fine even if the user isn’t running the desktop environment, but they integrate nicely with the Gnome desktop if it’s available.
The desktop environment includes a file manager, a "panel" for task switching, launching programs, and docking applets, a "control center" for configuration, and several smaller bells and whistles. These programs hide the traditional UNIX shell behind an easy-to-use graphical interface.
Gnome’s development framework makes it possible to write consistent, easy-to-use, interoperable applications. The X Window System designers made a deliberate decision not to impose any user interface policy on developers; Gnome adds a "policy layer," creating a consistent look-and-feel. Finished Gnome applications work well with the Gnome desktop, but can also be used "standalone"—users only need to install Gnome’s shared libraries. It’s even possible to write Gnome applications which do not rely on the X Window System; you might want to provide a non-graphical CORBA service, for example.
This book is about Gnome from a developer’s point of view; it describes how to write a Gnome application using the Gnome libraries and tools.