What is it?
GTK+ is a widely-used cross-platform toolkit for building graphical user interfaces and for rapid application development. GTK is open source and freely downloadable, and available for the development of free and commercial software under the GNU public licence. It is written in C, but has bindings to many other languages, including C# and Java.
Some familiar browsers and audio, video and other file downloading and playing systems use GTK+, and it's also part of leading Linux distributions. Although GTK+ is supported by a large community of developers, half the current team of core maintainers come from Linux vendors Red Hat and Novell.
Where did it originate?
GTK+ was first developed at University of California Berkeley in 1997, as a raster graphics editor for X Windows. GTK stands for GNU Image Manipulation Program (GIMP) Tool Kit.
What's it for?
As well as C and C++, GTK+ supports Java, Python (PyGTK), Perl, Lua, Ruby, PHP (PHP-GTK), Tcl and Ada. In addition to C# (Gtk#), there are bindings for all .Net-supported languages, and GTK# is used with the Mono open source .Net development environment.
GTK+ is based on four libraries. Glib is the low-level core library which provides data structure handling for C, portability wrappers, and interfaces for run-time functionality. Pango provides layout and rendering of text and font handling, with an emphasis on internationalisation. Cairo is a library for 2D graphics, with support for multiple output devices, including Microsoft Windows APIs. ATK is a set of interfaces providing accessibility for people with visual and other disabilities.
GTK+ is often used in conjunction with the Glade Interface Designer, which is programming language independent: interfaces designed in Glade are saved as XML files.
GTK+ is supplied as part of the GNOME desktop environment shipped with many Linux distributions, including Ubuntu and Fedora. GTK+ also features in the GMAE (GNOME Mobile & Embedded) initiative, and has been used in the development of the Maemo software stack for Nokia's Linux-based N-series Internet tablets, the OpenMoko open source mobile phone project, the One Laptop Per Child Project, and the Access Linux platform.
What makes it special
GTK+ applications, and those built using versions such as PyGTK, are able to run unmodified on different platforms.
How difficult is it to master?
The GTK+ API has been deliberately kept simple to use. But you will need to be competent in C or your other chosen language.
Where is it used?
GTK+ has been used in many widely used applications including BitTorrent, Mozilla Firefox browser and Thunderbird email client, Real Player, Adobe Acrobat Reader, the VMWare Workstation and many integrated development environments and tool platforms including Eclipse, MonoDevelop and EiffelStudio. A list of some hundreds of utilities, productivity applications, network and system software, graphics and design tools and games - most available to download - can be found here.
What systems does it run on?
Linux and Unix, Windows, Mac OS X.
What's coming up?
A major revision of GTK+ is planned, led by GTK support and development specialists Imendio
Rates of Pay
GUI designers from £30,000, embedded C designers with GUI skills from £35,000.
Start with the GTK+ 2.0 tutorial.
This was first published in July 2008