Overview of GTK and its Libraries

GTK has grown over time, and with it, has brought different libraries including Pango (text layout), Cairo (graphics rendering), GDK (platform abstraction), ATK (accessibility), GIO (file input/output), and GLib (core library).


Over time GTK has been built up to be based on four libraries, also developed by the GTK team:

  • GLib, a low-level core library that forms the basis of GTK. It provides data structure handling for C, portability wrappers and interfaces for such run-time functionality as an event loop, threads, dynamic loading and an object system.
  • Pango, a library for layout and rendering of text with an emphasis on internationalization. It forms the core of text and font handling for GTK.
  • Cairo, a library for 2D graphics with support for multiple output devices (including the X Window System, Win32) while producing a consistent output on all media while taking advantage of display hardware acceleration when available.
  • ATK, a library for a set of interfaces providing accessibility. By supporting the ATK interfaces, an application or toolkit can be used with tools such as screen readers, magnifiers, and alternative input devices.


GTK was initially developed for and used by the GIMP, the GNU Image Manipulation Program. It is called the "The GIMP ToolKit" so that the origins of the project are remembered. Today it is more commonly known as GTK for short and is used by a large number of applications including the GNU project's GNOME desktop.

Peter Mattis started it all, with help from Spencer Kimball and Josh Macdonald. Marius Vollmer taught us how to make GTK work for language bindings. Lars Hamann and Stefan Jeske added all sorts of features to the core widgets. Carsten Haitzler designed and did the first implementation of theme support. Shawn Amundson did release management for GTK 1.0 and GTK 1.2.


GTK is free software and part of the GNU Project. However, the licensing terms for GTK, the GNU LGPL 2.1, allow it to be used by all developers, including those developing proprietary software, without any license fees or royalties.


GTK has been designed from the ground up to support a range of languages, not only C/C++. Using GTK from languages such as Perl and Python (especially in combination with the Glade GUI builder) provides an effective method of rapid application development.


GTK has a large development community, as can be seen by the lists of contributors in GTK release announcements. While there are people that can be identified as responsible for one piece of code or the other, there are also core developers who are always working on the toolkit.