What are the differences or relations of these libraries/terms in GNOME development?


All of these are libraries developed by GNOME project. Effectively, they are building blocks of applications intended to work in GNOME environment or any other desktop environment that makes use of these libraries.

  • Gtk: widget toolkit/library for creating GUI interfaces (windows and their contents), abbreviation for GIMP Toolkit. Used by GNOME and other desktops such as XFCE, Unity, Cinnamon, Mate. To quote documentation:

    GTK+ is the primary library used to construct user interfaces in GNOME applications. It provides user interface controls and signal callbacks to control user interfaces.

  • GLib: library of advanced data-structures (), programming interfaces, and IPC facilities. To quote GLib Reference Manual:

    GLib provides the core application building blocks for libraries and applications written in C. It provides the core object system used in GNOME, the main loop implementation, and a large set of utility functions for strings and common data structures.

    GLib can be used independently of both GObject and Gtk.

  • GObject: aka GLib Object System, object library (originally intended for C programming language, which is not object oriented, but since there appeared bindings to many other languages). Originally was part of GLib. Actively used in Gtk and many objects in Gtk ( such as Gtk Window ) inherit from the basic GObject type.

  • Atk: Accessibility library.Can be thought of as bridge between Gtk and accessibility devices. Quote from documentation:

    "ATK is the toolkit that GNOME uses to enable accessibility for users needing extra support to make the most of their computers. ATK is used by tools such as screen readers, magnifiers, and input devices to permit a rich interaction with the desktop through alternative means."

All of these are also closely related to GIO, Gnome Input/Output library, which deals with filesystem information, files, devices, application information, and whole lot of other abstractions which make life of GNOME application developer a bit easier. An example, would be the Nautilus file manager, which makes use of Gtk for widgets, buttons and windows ; GIO to query file and device information (see a related answer with code examples); GLib for file operations; and Atk to make widgets accessible.

See also

Not the answer you're looking for? Browse other questions tagged or ask your own question.