Before going into the specifics of the GNOME libraries, it is important to
see where do they fit in the picture of all the different libraries that are
used in a GNOME application. The GNOME libraries are the most high level. GTK+
with it's two parts, GTK and GDK, comes next.
A D V E R T I S E M E N T
GTK level provides an object model
for C and a UI toolkit with the basic widgets to provide the generic basis for a
GUI. GTK depends on GDK, which is a low-level wrapper around Xlib, the library
directly talking to the X server. Everything (except for Xlib) depends on GLib
which is a very useful C library with many utility and portability functions as
well as a range of easy to use containers for C.
Figure 1-1. GNOME Application Library Hierarchy
Structure of GNOME
Libraries
We now look at the structure of the GNOME libraries to see what they can
offer. Here is a listing of the different libraries that are present in the
gnome-libs package:
libgnome
Toolkit independent utility library
libgnomeui
Toolkit dependent library
libgnorba
Library for using ORBit corba implementation with gnome
gtk-xmhtml
xmHTML widget ported to gtk, used in the help browser
zvt
A very lean and mean terminal emulator widget
libvfs
A virtual file-system library used in Midnight Commander
libart_lgpl
A library used for nice anti-aliased graphics
We will not cover gtk-xmhtml, zvt, libvfs, libart_lgpl and libgnorba as
they are mostly specialty libraries and some, notably the libvfs and
gtk-xmhtml will most likely be phased out and replaced by better components.
We can see a clear division between the libgnome
and libgnomeui libraries. The former is used in a
toolkit independent fashion and could even be used for command line programs
that never use X. The latter is the library which supplies the standard
widgets and an application framework for applications written using
GTK+. It is conceivable to write applications with
other toolkits, but nobody as of yet has written a
libgnomeui with a different toolkit, and I doubt it will happen soon, as
GTK+ is a really great toolkit.