GNOME 3 desktop architecture
When talking about
GNOME 3, usually many people refer only to the GNOME Shell. This is incorrect. GNOME Shell is just a part of the whole GNOME desktop architecture. It can be replaced (as in the case of GNOME Panel/Fallback UX) or even removed.
In fact, GNOME is more than GNOME Shell. It provides the infrastructure of the applications so they can talk to the system, render text nicely, flow the animation, read data, and so on. We need to understand the architecture better before starting any development. This would help us to know which parts need to be installed, too. Let's start with looking at the following simplified GNOME architecture diagram:
As we can see from the diagram, the GNOME Shell, along with the applications, sits on top of the GNOME platform architecture stack. This book covers the platform architecture and will
touch on some parts of the upper layer.
The following are the specific components of the GNOME platform that we will cover in this book:
- Core libraries: These are the lowest interface in the architecture. It includes the following:
- GObject: This is the object system in GNOME. It is the GNOME's object-oriented programming approach with the C language.
- GLib: This is a general purpose library that contains the infrastructure used by all the parts in the architecture.
- GIO: This is a virtual filesystem library that provides access to files, volumes, and drives in an abstracted manner.
- User interface libraries: This is the toolkit for building graphical applications, and includes:
- GTK+: Historically named as the GIMP toolkit, this is the default toolkit to build graphical applications in GNOME. It provides a set of widgets and tools.
- Cairo: This is a library that helps us draw on the canvas. It is mainly used for creating new widgets or extending the existing ones.
- Pango: This is a library that helps us to do text rendering.
- ATK: This is the accessibility toolkit. It provides ways to offer a good experience for special users of GNOME that have different needs.
- Clutter: This is a toolkit that is used for creating applications with rich and fluid animations. This requires OpenGL.
- WebKit: This is the web toolkit. It provides full-featured engines capable of displaying HTML5 documents.
- Multimedia libraries: Provides playing and authoring multimedia files, and includes:
- GStreamer: This is a powerful multimedia library
- Data storage: Provides libraries of accessing data:
- Evolution Data Storage (EDS): This contains libebook and libecal, and provides access to the address book and the calendar managed in your Evolution.
We will also use several tools in this book; they are as follows:
- seed: This is a JavaScript interpreter in the GNOME world. We will use this when we develop our GNOME application scripts. We will have seed automatically installed when installing the GNOME Shell, so we will not see this explicitly later when we do the installation.
- vala: This is an emerging object-oriented programming language, mainly used for developing GNOME applications.
- Anjuta: This is an integrated development environment software for GNOME.
- Glade: This is a graphical application layout designer for GTK+.
- Gtranslator: This is a tool for translating our application user interface to local languages.
- Devhelp: This is a reference lookup tool; really handy when developing applications.
Note
Note that the actual package names of these parts are not standardized, so you will find that the package names are slightly different from the preceding list. These will be specifically covered in each section.