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.
Homepage
Download
Recent Releases
4.15.528 Sep 2024 05:05
minor bugfix:
GtkTextView:
- ADd GtkTextBufferCommitNotify.
CSS:
- Propagate color state information to GSK for many features:
colors, borders, shadows, text.
Gdk:
- an fd leak in the Vulkan code.
- a leak of EGLSurfaces and DMA buffers.
- Set the opaque region of surfaces automatically based on their content.
Gsk:
- Emoji rendering in Vulkan.
- Rework color handling to take color states into account.
- Implement more powerful occlusion culling.
- Minimize our use of renderpasses.
Macos:
- window transparency.
Deging:
- The inspector shows details about color states.
Deprecations:
- gdk_draw_context_begin/end_frame.
- gdk_surface_set_opaque_region.
Build:
- Require gstreamer 1.24.
Translation updates
Romanian.
4.15.429 Aug 2024 05:25
minor feature:
GtkPopover:
- size allocation with wrapping labels.
GtkColumnView:
- Check column visibility when measuring.
CSS:
- fallout from recent changes.
- Make implementation of currentcolor inheritance match browsers.
Gdk:
- Introduce GdkColorState for encoding color space information
Currently, we support srgb, srgb-linear, rec2100-pq and rec2100-linear.
- Add color states to GdkTexture, as well as to the texture builder
and downloader objects, and convert as necessary.
- Add GdkMemoryTextureBuilder.
- Attach color states when loading or saving textures.
- Add GdkCicpParams to create color state objects for cicp tuples.
- Drop GDK_DE=vulkan-validate
Use VK_INSTEANCE_LAYERS=VK_LAYER_KHRONOS_validation instead.
Gsk:
- Improve caching of glyphs and textures.
- Remove the uber shader.
- Numerous - corner cases in offload handling.
- Implement occlusion culling for opaque content.
- Allow offloading (some) transformed textures.
- Take colorstate into account when compositing.
- Add GDK_DE=linear to opt into linear compositing.
- Implement tiling for large textures.
- Stop using descriptors and go back to simpler texture
management that should work better with older GL.
- Use correct shader clip mode for glyphs.
- Improve shadow rendering.
Media:
- Attach color states to textures obtained from gstreamer.
Wayland:
- Allow offloading GL textures via dmabuf export.
- Suppot the xx-color-management-v4 protocol.
Deprecations:
- GskGLShader and the render node.
Tools:
- Improve the rendernode tool extract command.
- Add an image tool that is about manipulating textures.
Build:
- GTK now requires a C11 compiler.
Translation updates
Georgian
Hebrew
Hindi
Occitan
Slovenian.
4.15.304 Jul 2024 15:25
minor feature:
Accessibility:
- Only emit notifications when cursor positions change in GtkText.
- handling of help text properties.
CSS:
- some crashes introduced in recent currentcolor changes.
DND:
- Avoid a critical.
Documentation:
- many oversights and missing docs.
maxOS:
- Add native keyboard shortcuts.
4.15.230 Jun 2024 06:05
minor feature:
GtkFileChooserWidget:
- Plug some memory leaks.
- Make Ctrl-Shift-N create a new folder.
GtkPopover:
- Handle resizing and position changes better.
CSS:
- Support color(), oklab(), etc (https://www.w3.org/TR/css-color-4/).
- Support color-mix() (https://www.w3.org/TR/css-color-5/).
- Support relative colors (https://www.w3.org/TR/css-color-5/).
- Support more colorspaces in color().
- Allow percentages for opacity.
- Handle currentcolor more correctly.
Accessibility:
- Avoid markup when reading labels.
GSK:
- Subset fonts when serializing node trees.
- Make ngl export render_texture results as dmabufs.
Wayland:
- Use xdg-dialog protocol for attached dialogs.
Windows:
- Build with UNICODE.
macOS:
- Implement fullscreen-on-monitor.
Documentation:
- Widget shortcuts and actions are now described in the docs.
Deging:
- Add GTK_DE=css for warning about deprecated css syntax.
Tools:
- rendernode-tool: Add an extract command for data urls.
Deprecations:
- CSS Color functions shade(), lighter(), darker(), alpha(), mix().
Translation updates:
Czech
Hebrew
Serbian.
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