GTK+ 3.0 Released

GTK+ 3.0 is a major new version of GTK+, containing far too many changes to list them all here.

The major highlights include:

  • Cairo drawing throughout. GDK no longer wraps the antiquated X11 drawing API; we’ve made a clean break and exclusively rely on cairo for all our drawing needs now. This has also enabled us to remove several other X11-centric concepts such as GCs, colormaps and pixmaps.
  • Modern input device handling. The input device handling in GDK has long been a sadly neglected area. This has changed; with 3.0, GTK+ steps into the modern world of XI2 with full support for multiple pointers, keyboards and other gizmos.
  • A new theming API which sports a familiar CSS syntax for theme configuration and other improvements such as animated state transitions.
  • More flexible geometry management, with support for height-for-width, for both widgets and cell renderers.
  • Multiple backend support for GDK. With GTK+ 2.x, you had to recompile your application to have it work with a different GDK backend. In GTK+ 3, multiple GDK backends can be built into a single library and selected at runtime.
  • Easy application support. With the integration of D-Bus support in GIO, we could finally add a GtkApplication class that handles a lot of the platform integration aspects of writing an application, such as keeping track of open Windows, ensuring uniqueness, exporting actions, etc.
  • Of course, there’s some new widgets as well, such as a switch and an application chooser.

GTK+ is the work of hundreds of contributors, far too many to list them all here. But I want to take the time to thank some people who contributed in a major way:

  • Carlos Garnacho (Lanedo), for his work on XI2 support and the new theme system
  • Benjamin Otte (Red Hat), for his work on GDK and cairo drawing
  • Tristan Van Berkom (Openismus), for his work on geometry management
  • Colin Walters (Red Hat), for his work on GtkApplication
  • Ryan Lortie (Codethink), for his work on dconf, GSettings and GtkApplication
  • Javier Jardón, for tireless code, build and documentation cleanup

GTK+ 2.18 stable release

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

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.16.0 stable release

GTK+ 2.16 adds new functionality while maintaining source and binary compatibility with GTK+ 2.14. Highlights of new features and improvements in GTK+ 2.16 are:

Noteworthy new APIs

  • GtkOrientable is a new interface implemented by all widgets that have horizontal and vertical variants
  • GtkActivatable is a new interface that must be implemented by widgets that are used as action proxies

Changes in GtkEntry

  • GtkEntry can show icons at either side of the entry, which can be made clickable, drag sources, etc.
  • GtkEntry can show progress information behind the text.
  • GTK+ picks the best available placeholder character for password entries unless one is explicitly set.
  • GTK+ displays a Caps Lock warning in password entries.
  • Input methods can now be selected per-widget with the “im-module” property.

Changes in GtkScale

  • GtkScale can now display annotated marks for certain values.

Changes in GtkStatusIcon

  • GTK+ uses an extension of the tray icon specification to negotiate RGBA support. This is also supported by the GNOME panel.
  • GtkStatusIcon now supports scroll events, middle clicks and rich tooltips if the platform allows it.

Changes in file chooser

  • The file chooser can optionally show file sizes.
  • Volumes are mounted when necessary.
  • GTK+ remembers the file chooser’s window size across invocations.
  • Non-local uris can be entered in the location entry.

Changes in printing support

  • Page rendering can be deferred to a thread.

Internationalization support

  • Keyboard shortcut handling has been changed, to help with a longstanding complaint about the way in which GTK+ handles multiple keyboard layouts. GTK+ now only uses keys from groups other than the current group if they are not present in the current group.

GDK changes

  • GdkKeymap emits a state-changed signal when the Caps Lock state changes.
  • There is a predefined type for blank cursors, GDK_BLANK_CURSOR.

For more details and lists of fixed bugs, see the
announcements for the 2.15.x development releases:

See the original announcement for more info and downloads.

GLib 2.20 stable release

GLib 2.20 is a stable release adding an incremental improvement in functionality over GLib 2.18 while maintaining binary and source compatibility.

Major new features include:

  • Optimizations of GHashTable and GMarkup
  • Support for in-place decoding of base64 strings
  • When launching applications, always pass fuse file:// uris whe possible, and let gio convert such uris back to gio uris. This can be turned off using the X-GIO-NoFuse desktop file key.
  • GIO has a concept of ‘shadowed’ mounts

For more details and lists of fixed bugs, see the announcements of the 2.19.x development releases:

See the original announcement for more info and downloads.