GTK
Developer(s) | Gnome Foundation |
---|---|
Stable release | |
Repository | |
Operating system | Cross-platform |
Type | Widget toolkit |
License | LGPL |
Website | www.gtk.org |
Initially created for the graphics program the GIMP, the GIMP Toolkit — abbreviated as GTK+ — is one of the two most popular widget toolkits for the X Window System, intended for creating graphical user interfaces. GTK+ and Qt have supplanted Motif, previously the most widely-used X widget toolkit.
Licensed under the LGPL, GTK+ is free (and open source) software, and is part of the GNU Project.
Programming Languages
GTK+ uses the C programming language, although its designers use an object-oriented paradigm. The GNOME platform bindings provide for C++ (gtkmm), Perl, Ruby, Java and Python (PyGTK) bindings; others have written bindings for many other programming languages (including C#, D and PHP).
Contrary to a number of other widget toolkits, GTK+ isn't based on Xt. There are pros and cons about this. On the pro side it allows GTK+ to be available on other systems and to be much more flexible. On the con side it doesn't have access to the X resource database, which is the traditional way for customizing X11 applications.
Look and feel
The end-user can configure the look of the toolkit, down to offering a number of different display engines. Engines exist which emulate the look of other popular toolkits or platforms, like Windows 95, Motif, Qt or NEXTSTEP.
Environments that use GTK+
The GNOME environment uses GTK+ as a base, which means that programs written for GNOME use GTK+ as their toolkit. Not only GNOME applications use it, though, and any GTK+ program (or GNOME program, for that matter) can run on top of other desktop environments, such as KDE or Xfce. The GPE Palmtop Environment and Maemo, Nokia's internet tablet framework, also use GTK+ as a base. GTK+ can also run under Microsoft Windows. Some of the more unusual ports include DirectFB and ncurses.
Non-graphics-related code
GTK+ initially contained some utility routines that did not strictly relate to graphics, for instance providing such data structures as linked lists and binary trees. Such general utilities, along with the object system called GObject, have now migrated into a separate library, Glib, which programmers use regularly to develop code that does not require a graphical interface.
GTK+ 2
GTK+ 2 is being developed with the intention of succeeding GTK+. Its new features include improved text rendering using Pango, a new theme engine, improved accessibility using ATK, complete transition to Unicode using UTF-8 strings and a more flexible API. However, GTK+ 2 lacks compatibility with GTK+ 1, and programmers must port applications to it. Some programs continue to use GTK+ 1, as the original version remains in use, is faster, offers less complexity than GTK+ 2, and is more suitable for embedded applications than GTK+ 2. Starting with version 2.8 GTK+ 2 relies on the Cairo library for rendering which introduced vector-graphics in GTK+ 2.
External links
- GTK+ homepage
- gtkmm, a C++ API to GTK+
- GTK+ Forum - an unofficial forum hosted by Nabble archiving all GTK mailing lists. Good for search and browsing.