What is GTK+?
GTK+ is a highly usable, feature rich toolkit for creating graphical user interfaces which boasts cross platform compatibility and an easy to use API. GTK+ it is written in C, but has bindings to many other popular programming languages such as C++, Python and C# among others. GTK+ is licensed under the GNU LGPL 2.1 allowing development of both free and proprietary software with GTK+ without any license fees or royalties.
Get an overview of GTK+. Understand who started it, the basic architecture and why we use the license we do.
GTK+ has been involved in many projects and some big platforms. To see what people think of GTK+ and how it has been used in commercial projects, read the success stories...
To find out how more about what GTK+ can do for you, visit our features page. If you want to contribute, you are more than welcome.
Recent news
GTK+ 2.18 stable release
September 25, 2009
GTK+ 2.18 adds new functionality while maintaining source and binary compatibility with GTK+ 2.16. Highlights of new features and improvements in GTK+ 2.18 are:
GtkInfoBar
A new widget to show a transient ‘message area’ inside a content pane. The API is similar to GtkDialog and supports theming for different message types (warnings, errors, etc)
GtkBuilder
- Scale marks can be specified in builder markup
- GtkAssistant action widgets can be added in builder markup
GtkLabel
GtkLabel can show embedded URLs, much like SexyUrlLabe
GtkEntry
GtkEntry has been refactored to follow the model-view pattern, with GtkEntryBuffer as model. One intended use case for this is to support ’secure memory’ for password entries
File chooser
- Backup files are hidden by default
- GTK+ remembers the sorting state of the file list
- File sizes are shown by default
- The ‘Create Folder’ button can be disabled with the the ::create-folders property
Printing support
- GTK+ supports authentication against CUPS servers
- A backend for the PAPI printing system has been added
- The file and lpr backends can print multiple pages per sheet
- The file backend can produce svg files
- GTK+ supports printing an application-defined ’selection’ in addition to the usual page ranges
- The print dialog can optinally include the page setup controls, avoiding the need for a separate page setup dialog in many situations
Theming support
- The bullet character used in invisible entries can be set by themes with the ::invisible-char style property
- The file chooser can show different icons for xdg user dirs. The icon names are folder-documents, folder-download, folder-music, folder-pictures, folder-publicshare, folder-templates and folder-video
- The GtkInfoBar uses symbolic colors for theming its background color depending on the message type. The color names are info_fg_color, info_bg_color, warning_fg_color”, warning_bg_color, etc.
GDK changes
GDK has been rewritten to use ‘client-side windows’. This means that GDK maintains its own window hierarchy and only uses X windows where it is necessary or explicitly requested. Some of the benefits of this change are
- Reduced flicker
- The ability to do transformed and animated rendering of widgets
- Easier embedding of GTK+ widgets, e.g. into Clutter scene graphs
See gdk-demo for some simple examples of client-side windows in action. See the documentation for information about possible problems when moving to client-side windows.
For more details and lists of fixed bugs, see the
announcements for the 2.17.x development releases: 2.17.0, 2.17.1, 2.17.2, 2.17.3, 2.17.4, 2.17.5, 2.17.6, 2.17.8, 2.17.9, 2.17.10, 2.17.11
GLib 2.22 Stable Release
September 23, 2009
GLib 2.22 is a stable release adding an incremental improvement in functionality over GLib 2.20 while maintaining binary and source compatibility.
Major new features include:
- GArray, GPtrArray, GByteArray, GTree and GMappedFile can be reference counted.
- GLib can be forced to reload the XDG user directory mapping.
- The GLib mainloop supports per-thread default contexts.
- GIO now provides types and methods for IP addresses and UNIX domain socket addresses.
- GResolver provides asynchronous and cancellable APIs for resolving hostnames, reverse lookup of IP addresses and resolving SRV records.
- Support for network IO has been added to GIO, including low-level socket API and high-level API for network connections and services.
- GIOStream and its subclasses have gained support for read-write access.
- GIO supports starting and stopping of drives, which can be used in connection with external hard disk enclosures, disk arrays, iSCSI devices, etc.
- GIO supports user interaction during unmount and eject operations.
- GIO can store and retrieve per-file metadata.
For more details and lists of fixed bugs, see the announcements of the 2.21.x development releases: 2.21.0, 2.21.1, 2.21.2, 2.21.3, 2.21.4, 2.21.5 and 2.21.6
GTK+ 2.17.8 unstable release
August 17, 2009
This is a development release leading up to GTK+ 2.18.
Overview of Changes from GTK+ 2.17.7
- Client-side windows
- – various fixes to expose handlings
- fix memory leaks
-
Minor API additions
- New setter as part of the GSEAL effort: gtk_widget_set_allocation
11 bugs fixed in this release!
GTK 2.17.6 unstable release
July 27, 2009
This is a development release leading up to GTK+ 2.18.
Overview of Changes from GTK+ 2.17.5
- Client-side windows:
- Several optimizations, such as client-side tracking of viewable windows
- Clipping for drawing pixbufs on windows has been fixed
- Rendering to large subwindows has been fixed
- Changes that are relevant for translators:
- Markup has been removed from several strings
12 bugs fixed in this release!
See the original announcement for more info and downloads.
GTK+ 2.16.5 stable release
July 22, 2009
This is a bug fix release in the stable 2.16 series.
Overview of Changes from GTK+ 2.16.4
- Fix a side-effect introduced by the fix for bug 586330 that caused all stock buttons to loose their mnemonics.
4 bugs fixed in this release!
See the original announcement for more info and downloads.
For older news, visit our archives.
