GTK 4.15.1

Offering a complete set of UI elements, GTK is suitable for projects ranging from small one-off tools to complete application suites. Work with the language of your choice. Develop your GTK app with your language of choice by using Language Bindings or wrappers and take full advantage of the official GNOME bindings which guarantee API stability and time-based releases. Portability. Projects built using GTK and its dependencies run on well known operating systems. Stability. GTK delivers the enticing features and superb performance which adds to your applications. Language Bindings. GTK is written in C but has been designed to support a wide range of languages such as Python, JavaScript, C++, Rust and many more. Interfaces. GTK has a comprehensive collection of core widgets like Buttons, Windows, Toolbars for use in your application. Open Source. GTK is a free and open-source project maintained by GNOME and an active community of contributors. GTK is released under the terms of the GNU Lesser General Public License. API. GTK boasts of an easy to use API which helps in decreasing your development time and help you achieve better results. Accommodation. GTK caters to many features like Native look and feel, theme support, Object-oriented approach that today’s developers look for in a toolkit. Foundations. GTK is built on top of GLib. GLib provides the fundamental data types and system integration points to avoid duplicated code in applications.

Tags gnome gtk library framework gui toolkit cpp
License GNU GPLv3
State development

Recent Releases

4.15.122 May 2024 20:05 minor bugfix: GtkGraphicsOffload: - Don't crash without a child. GtkSpinner: - Don't animate when unmapped. CSS: - Support the :root selector. - Support variables and custom properties (https://www.w3.org/TR/css-variables-1/). - Implement math functions (https://www.w3.org/TR/css-values-4/). - Support modern syntax and calc in rgb() and hsl(). Icontheme: - Make symbolic svg loading more efficient. - Handle color-free symbolics more efficiently. Accessibility: - Make the gtk-demo sidebar search more accessible. - Stop emitting focus events. - Realize child contexts when necessary. GDK: - Support XDG_ACTIVATION_TOKEN. - dmabuf: Be more defensive when importing unknown formats to GL. - dmabuf: Use narrow range for YUV. - vulkan: Recreate swapchains when necessary or beneficial. GSK: - Improve logging for GDK_DE=offload. - Improve logging for GSK_DE=renderer. - gpu: Warn about inefficient texture import. - gpu: Handle tiny offscreens correctly. - vulkan: Add profiler marks in various places. - vulkan: a problem with imported dmabufs showing up black. - cairo: Speed up mask nodes, since we use them for symbolic icons. Wayland: - Use wl_compositor version 6. X11: - Implement a missing method. Build: - many ubsan warnings. Deging: - Show more texture details in the recorder. - Use GTK_DE=css to see CSS deprecations. macOS: - problems with events handed back to the OS. - Respect GDK_DE=default-settings. - Allow applictions to handle Dock Quit. Deprecations: - Use of @name colors in CSS. Translation updates: Catalan Georgian Hungarian Korean Portuguese Turkish.
4.15.022 Apr 2024 10:05 major feature: This release changes the default GSK renderer to be Vulkan, on Wayland. Other platforms still use ngl. The intent of this change is to get wider testing and verify that. Vulkan drivers are good enough for us to rely on. If significant problems show up, we will revert this change for 4.16. You can still override the renderer choice using the GSK_RENDERER. environment variable. ---. This release also changes font rendering settings by introducing. a new high-level gtk-font-rendering settings which gives GTK more freedom to decide on font rendering. You can still use the low-level font-related settings by changing. the new property to 'manual'. ---. GtkColumnView: - infinite loops in dispose. - problems with weak ref cycles in GtkExpression. GtkListView: GtkShortcutManager: - Track the propagation phase of added controllers. GtkGLArea: - Produce dmabuf textures, so graphics offload is possible. GtkTextView: - Support text shadows. GtkGraphicsOffload: - Add a black-background property. Settings: - Add a new gtk-font-rendering setting. Accessibility: - Add support for GetRangeExtents to GtkAccessibleText. - Add support for GetOffsetAtPoint to GtkAccessibleText. - Implement GtkAccessibleRange for scrollbars. GDK: - Add a callback-based cursor API. GSK: Use the Vulkan renderer by default. - Avoid an infinite recursion with offscreens in some cases. - Optimize graphics offload to make it more likely that compositors can use direct scanout. X11: - some confusing demessages. - Drop a no-longer-relevant optimization that was interfering with getting the current window manager capabilities. macOS: - Implement the color picker for macOS 10.15+. Deging: - Snow monitor resolution in the inspector. Demos: - Use graphics offload in the shadertoy demo. - Show more reliable fps numbers in the fishbowl demo. Tools: - Support generating pdf in gtk4-rendernode-tool. Build: - Require pango 1.52. - Require cairo 1.18. - Add a missing dependency th
4.14.205 Apr 2024 01:25 minor bugfix: GtkScale: - Improve positioning of values in some cases. Theme: - Make progress in entries visible. Accessibility: - text insertion handling. GDK: - dnd: Use the default cursor durion motion. - dnd: Use a better cursor for indicating the move action. GSK: - gl: Handle offloads in offscreen context better. - text rendering problems with some fonts. Wayland: - Tighten up some protocol version checks. - Use the presentation time protocol. - a crash with subsurfaces. - Improve settings portal handling. macOS: - up the app menu support. Windows: - problems with minimization. - build without fontconfig. Deging: - Add font settings in the inspector. Demos: - Clean up the application demo. - Update cursor images for the cursor demo. Translation updates: Catalan Czech French Georgian Hebrew Persian Slovenian Turkish Ukrainian.
4.14.117 Mar 2024 12:05 minor bugfix: GtkTextView: - a mixup of cursor and anchor when retrieving surrounding text in input methods. Printing: - Avoid accessing freed printers. Accessibility: - memory leaks. GDK: - Rename the GDK_VULKAN_SKIP environment variable to GDK_VULKAN_DISABLE. - Add a GDK_GL_DISABLE environment variable. GSK: - Rename the GSK_GPU_SKIP environment variable to GSK_GPU_DISABLE. - Speed up handling of repeated ops, which should help for text. - Speed up the inner loop of text node conversion. - Drop the glyph-align optimization flag. - ngl: Avoid reusing frames while they are in use. - flickering thumbnails in nautilus. - Speed up buffer handling in both ngl and Vulkan. Demos: - Skip demos using gl shaders when we're not using the gl renderer. Build: - some ubsan warnings. - Avoid zink in ci since it spams stderr. Translation updates: Czech German Korean Russian.
4.14.013 Mar 2024 17:45 major bugfix: Note: The new renderers and dmabuf support are using graphics drivers in different ways than the old gl renderer, and trigger new driver, (see for example https://gitlab.gnome.org/GNOME/gtk/-//6418 and. https://gitlab.gnome.org/GNOME/gtk/-//6388). Therefore, it is recommended to use the latest mesa release (24.x) with the new renderers. GtkTextView: - Don't snapshot children twice. - Don't blink the cursor when hidden. GtkEmojiChooser: - presentation selector handling. GtkSnapshot: - wrong nodes with transformed shadows. GtkIMContext: - Make gtk_im_context_activate_osk public. Accessibility: - Implement get_contents_at for all our text widgets. - Add GtkAccessibleText.get_default_attributes. GSK: - Don't fall back to cairo for software rendering. gl+llvmpipe is better. - Round vertical glyph position to a device pixel position if the font is hinted. - problems with clip handling. - Make vulkan and ngl match their font handling. - some corner-cases with offloading and clips. - problem with rendering of missing glyphs in hinted fonts. MacOs: - Implement cursor-from-texture. Translation updates: Basque British English French Indonesian Kazakh Latvian Lithuanian Norwegian Bokmål Slovenian Spanish Turkish.
4.13.903 Mar 2024 03:15 minor bugfix: GtkEditable: - preconditions to be not too strict. GtkEmojiChooser: - Support search in the locale as well as in English. GtkIconTheme: - Make gtk_icon_paintable_new_for_file support symbolics. GtkVideo: - a problem with cursor handling that could lead to crashes. Accessibility: - GetCharacterAtOffset implementation. - Add a Terminal role. - Make TextCaretMoved match gtk3. - Support multiple levels of GtkEditable delegates. GSK: - Make the node parser more flexible for text nodes. - Change the way font scaling is handled to avoid clipping. - handling of missing glyphs in the new renderers. X11: - Don't claim to support shadows without a compositor. Wayland: - handling of output scales. Tools: - Add a compare command to gtk4-rendernode-tool. Build: - some ubsan complaints. Translation updates: Basque British English Catalan Finnish Galician Georgian Hebrew Indonesian Kazakh Latvian Lithuanian Persian Polish Russian Slovenian Spanish Turkish Ukrainian.
4.13.821 Feb 2024 13:56 minor bugfix: Accessibility: - Add a GtkAccessibleText interface for allowing 3rd party text widgets (notably vte) to be accessible - Avoid duplicate accessible descriptions - Fix GetAccessibleAtPoint * GSK: - Avoid offscreens for disjoint containers - Don't use the gpu renderers with llvmpipe - Fix various rendering issues found by tests - Allow unnormalized node bounds again - Fix a broken case of rounded-rect intersection - Fix handling of external textures in gpu renderers - Make gpu renderers work with WGL on Windows * build: - Allow building without dmabuf support on (old) Linux * X11: - Fix monitor enter/leave signals * Translation updates: Basque Brazilian Portuguese Catalan Czech Galician Georgian Hebrew Lithuanian Persian Russian Turkish Ukrainian