Gtk

ImprimirCitar

GTK (known until February 2019 as GTK+) or The GIMP Toolkit is a library of cross-platform graphical components for developing graphical user interfaces (GUIs). It is licensed under the terms of the GNU LGPL, allowing the creation of both free software and proprietary software. GTK is part of the GNU project, being used by projects as important as GIMP, Inkscape, GNOME, Xfce, among others.

Along with Qt, it is one of the most popular widget toolkit for the GNU/Linux operating system, having extensive support for Wayland and XOrg. Furthermore, it can be used to develop graphical applications that work on other Unix-like systems or operating systems such as Microsoft Windows, Mac OS, among others.

History and Development

It was initially developed by Peter Mattis, Spencer Kimball, and Josh MacDonald to implement the GNU Image Manipulation Program (GIMP) graphical interface as a replacement for the Motif toolkit; at some point Peter Mattis became disenchanted with Motif and began writing his own GUI toolkit called the GIMP toolkit, successfully replacing Motif for GIMP version 0.60. Eventually, GTK was rewritten to be object-oriented and renamed GTK+, making use of this for the first time in GIMP version 0.99. Being the first stable version of GTK released on April 14, 1998.

GTK is written in the C language, and is mainly developed by the GNOME Project, since in 1997 this project chose GTK as the base on which to develop the GNOME desktop environment. Other graphical applications not directly related to GNOME as well have used GTK. In addition to other Linux graphical environments such as XFCE and ROX, they have also chosen GTK as their graphical component library.

GTK development is handled freely. Discussion occurs primarily on various public mailing lists. GNOME developers and users meet at an annual GNOME Users And Developers European Conference GUADEC meeting to discuss the current state and future direction of GNOME. GNOME incorporates standards and programs from freedesktop.org to better interface with other desktops.

GTK+ 1

Old Logo

This library contained some helper routines to solve basic programming tasks, such as storing various data. These are very time consuming for the programmer, especially when it comes to repeated program development. Early versions of GTK included data structures for linked lists, binary trees, or "growing" strings. Also, since it was rewritten to be object-oriented, GTK allows this programming paradigm to be used within the C language. These tools also proved useful for programs without a graphical user interface and were therefore later moved to a separate library, called library GLib of C functions. The system oriented object in the next version was handed over to the GObject library, the system oriented drawing methods to the GDK library (GTK + Drawing Kit). The latter allows GTK to run identically across platforms on Windows, X Window System, macOS and others.

GTK+ 2

GTK 2 version received new improved features for rendering text using the Pango library, the creation of GObject, a new theme engine, a more flexible API and a new library (ATK ) to improve the accessibility of the toolkit for people with disabilities, for example reading software, magnifying tools and alternative input devices can be addressed. GTK 2 is not compatible with GTK 1, so existing applications had to be ported.

Starting with version 2.8, GTK+ uses the vector-based Cairo library, which uses hardware acceleration for rendering if possible. GTK 2.24 is the latest version of the 2.x series.

GTK 3

Version 3.0 was released on February 10, 2011. Many features that were classified as deprecated have been removed and existing interfaces have been improved. GTK 3 is not backward compatible with GTK 2.x. However, the libraries of both versions can be installed in parallel.

The GTK 3 series includes a new interface for drawing widgets, which is now completely based on Cairo, a CSS-based theme engine that also allows for animated state transitions, improved layout options, a new slider switch widget, an Application class, support for multiple pointing devices (multiple pointers) and symbolic icons that can change color depending on the condition. The internal structures have been separated and hidden from the public interface, so it will be easier to make changes in the future without breaking the interface. Also, multiple GDK backends are supported simultaneously within the same library. Until now, multiple libraries were required.

Two new backends were introduced: one for the Wayland display server and an HTML5 backend called Broadway, with which GTK applications can be operated remotely in the browser via the network. Multiple and smooth scrolling is supported, which is also available for Windows, in addition, CSS animations and shadow blurring are supported. Version 3.6.4 is the latest official version for Windows 32-bit and 64-bit.

There are more changes such as improved display for high-resolution monitors. Popover presentation (comic speech bubbles that can be used as an aid), multi-touch gesture support. In addition, support for window rendering via OpenGL. The new control element GtkGLArea also made it possible to integrate 3D objects directly into program interfaces. Since GTK 3.18 (base of Gnome 3.18), the library is officially compatible with Wayland, the successor to the X system Windows. GTK 3.20 integrates the spell checker with gspell and improves CSS theming. While GTK 3.22 comes as an LTS version and adds support for Flatpak portals for simple software installations.

On September 1, 2016, a post on the GTK development blog denoted, among other things, GTK's future numbering scheme. GTK Fall 2016 version 3.22 will be the last 3.x version (or at least that was planned). After that, all resources will be moved to the GTK 4 development suite with version names 3.90, 3.92, etc. Even when the 4.x series goes into development, notable apps still use GTK 2.x and have not been ported to 3.22. Regarding the future of legacy software using GTK, there is no collective project to port GTK 2.x software to 3.22.

GTK 4.0 is being prepared with the unstable 3.9x series. In March 2017, the Scene Graph Kit (GSK) was added with version 3.90. It implements a scene graph and takes care of image synthesis. In February 2019 it was announced that GTK 4.0 will remove the plus sign ("+") from the name part.

GTK 4

Interface example in GTK 4

One of the major new features implemented during the GTK 4 development cycle (ie GTK 3.92 etc.) has been the delegation of functionality to helper objects instead of coding it into the base classes provided by GTK.

  • Managing events from the signal drivers described by GtkWidget is delegated to the event drivers
  • The representation is delegated to the objects GtkSnapshot
  • The GtkWidget design mechanism is delegated to GtkLayoutManager

At the January 26, 2018 DevConf.cz, Matthias Clasen gave an overview of the current state of GTK 4 development, including a high-level explanation of how rendering and input worked in GTK 3, what changes were being made in GTK 4, and the reasons for those changes. Examples of things that have been made possible with GTK 4 were also given.

Support

Windows

  • According to GTK 2.24.10 and 3.6.4, Windows development with the Gnome installer was stopped. It is recommended to install the Gnome MSYS2 package system on Windows.
  • GTK 2.24.10 and 3.6.4 are still available on the network, however, compared to current Linux versions, they are much more affected by errors.
  • For 64-bit Windows (as of June 2018), the work of Tom Schoonjans 2.24.32 (current as Linux) and 3.22.30 (current as Linux) is already available.
  • With Windows 10 Fall Creators Update, GTK 3 is now also available in WSL. Instructions for installing Windows programs are available in the GTK community. With Linux distributions such as Ubuntu or Debian available in the Windows Store and an X server like Xming or VcXsvr, thousands of programs like GTK 2 or 3 can be run with X or terminal support.

MacOS

About the Quartz backend, a port of the X Window System, GTK can be used on macOS.

Build automation

Previously, GTK (and GNOME, GLib, etc.) used the GNU build system (called Autotools) as the build automation system of choice.

As of August 14, 2017, the GTK master branch compiles with Meson, and the Autotools build system files have been removed.

GTK Libraries

The GTK toolkit

GTK is based on several libraries developed by the GTK and GNOME team:

Glib

GTK simplified software architecture. Pango, GDK, ATK, GIO, Cairo and GLib

It is a set of low-level libraries, comprising GLib Core, GObject, and GIO. These libraries are all developed under a single Git repository called glib. So "GLib" may refer to "GLib core" or the entire set of libraries.

Glib core

GLib core provides data structure handling for C (Linked Lists, Trees, HashTables, etc.), portability wrappers, event looping, threading, dynamic module loading, and many more features.

GObject

GObject for its part simplifies the paradigms of Object Oriented Programming and Event Driven Architecture for C. Event Driven Architecture is not only useful for graphical user interfaces but also for daemons that respond to hardware changes (insert a USB, a monitor, etc), network software or other processes, can be quite useful.

GIO

GIO depends on the previous libraries in the set, it provides a high level API for input and output, be it reading from a local file, a network stream, D-Bus communication processes and many other uses.

This set of libraries allows you to write operating system services, libraries, command line utilities, and much more. Therefore, it may be more comfortable and recommendable to write a C program using GLib, in addition, it offers a high-level API such as the POSIX standard.

GTK

GDK contains back-end for X11, Wayland, Broadway (HTTP), Quartz and GDI and is based in Cairo for representation. Your new SceneGraph is a work in progress.

Library containing a GLib-based widget toolkit, this kit actually contains the objects and functions to create the Graphical User Interface (GUI). Manage widgets such as windows, buttons, menus, labels, sliders, tabs, etc.

GDK

Library that acts as an intermediary between low-level graphics and high-level graphics. So it frees GTK from low-level concerns like input gathering, drag and drop, and pixel format conversion. GDK is an intermediate layer that separates GTK from the details of the windowing system.

GDK is an important part of GTK portability. Since GLib already provides low-level cross-platform functionality, all that is needed to make GTK run on other platforms is to port GDK to the underlying operating system graphics layer. Thus, the GDK ports to the Windows and Quartz APIs are what allow GTK applications to run on Windows and macOS, respectively.

ATK

Library to create interfaces with highly accessible features that are very important for disabled or handicapped people. Utilities such as magnifying glasses, screen readers, or alternative data entry to the classic keyboard or mouse can be used.

Pango

Library for text layout and rendering, with special emphasis on internationalization. It is designed in a modular way, this means that Pango can be used by applications of different architectures or programming methodologies. In addition, it is the core for handling GTK version 2 fonts and text.

Cairo

Advanced rendering library of application controls. used to provide images based on vector graphics. Additionally, it provides primitives for two-dimensional drawing through a number of different backends.

Graphical Interface Designers (GUI)

Some of the programs for designing graphical interfaces with GTK are the following:

Glade

Design of a preference dialogue in Glade

It is a visual development tool for graphical interfaces using GTK/GNOME. It is programming language independent and by default it does not generate source code but an XML file thanks to GTKBilder, which can be used in numerous programming languages including C, C++, C#, Vala, Java, Perl, Python. The ability to automatically generate source code has been discontinued since version 3 of Glade.

More technically, the class describes the interface in an Extensible Markup Language (XML) file and then loads the XML description at runtime and creates the objects automatically. Glade Interface Designer allows the creation of the user interface in a WYSIWYG manner. So the description of the user interface is independent of the programming language used.

Glade can be used directly, but it is also fully integrated into Anjuta 2. The project is licensed under the GPL.

Stetic

Monodevelop Interface 5.4

Part of MonoDevelop, geared towards working with GTK#, Stetic is very similar to Glade Interface Designer, but is integrated into MonoDevelop with features like drag and drop. It has been criticized for being more difficult to work with than Qt Designer and Microsoft Visual Studio Windows Forms Editor when the programmer does not yet have a concrete design in mind.

MonoDevelop can run on the various Linux distributions and on Mac. Since version 2.2, MonoDevelop already has full support for GNU/Linux, Windows and Mac. In addition, it includes a compiler that supports C # 1.0, C # 2.0, C# 3.0, C# 4.0, C# 5.0, and C# 6.0.

Use

Applications

Some applications that use GTK to develop their user interfaces include:

  • AbiWord - Text Processor.
  • CinePaint (ex FilmGimp) - Animated graphics editor in HDR.
  • Ekiga (ex GnomeMeeting) - VoIP H.323/SIP Phone Software.
  • Evolution - Email client.
  • Firefox - Web browser.
  • Geany: an IDE text editor and light cross-platform GTK based on Scintilla.
  • GIMP - Graphics Editor.
  • GNU Emacs can use GTK when running on X.
  • Gnumeric - Spreadsheet Program.
  • Chromium - Web browser based on WebKit and developed largely by Google.
  • GRAMPS - Genealogy Software.
  • Inkscape - SVG vector graphics editor.
  • K-3D - Free 3D modeling program.
  • LiVES - Video Editor
  • Marionnet - An interactive network simulator.
  • Midori - Light Web Browser, is part of the XFCE project.
  • Nero Linux - A program for editing discs.
  • Pidgin - Instant messaging client.
  • VMware Player - Virtual Machine.
  • Wireshark - Computer network package capture and analyzer.

Environments using GTK

Assets

  • GNOME is based on GTK 3, together with the environment programs
  • Xfce, is based on GTK 3
  • Cinnamon, a GNOME 3 fork that uses GTK 3
  • MATE, a forklift of GNOME 2 and uses GTK 3 from version 1.18
  • Pantheon uses GTK 3 exclusively, developed by Elementary OS
  • Budgie built from zero for the successor of SolusOS, the operating system Solus
  • Sugar a desktop environment for youth primary education, which uses GTK, especially PyGTK
  • Phosh, a mobile user interface designed for PureOS
  • One Laptop Per Child uses GTK and PyGTK
  • Maemo (Nokia's Internet-tablet framework)

Inactive

  • Unity the former Ubuntu default desktop environment
  • LXDE, is based on GTK, means "Lightweight X11 Desktop Environment"
  • ROX Desktop a light desktop, with features of the RISC OS GUI
  • GPE Palmtop Environment
  • Access Linux Platform (PDA)

Desktop environments are not required to run GTK programs. If the libraries required by the program are installed, a GTK program can be run on top of other X11-based environments like KDE or any other environment, including Mac OS X, if X11.app is installed. GTK can also run on Microsoft Windows, it is used by some popular cross-platform applications like Pidgin and GIMP. wxWidgets, a cross-platform graphical toolkit uses GTK on Unix-like systems. Some of the more unusual ports include directfb and ncurses.

Window manager

  • IceWM
  • Framework
  • Metacity
  • Muffin
  • Mutter
  • Sawfish
  • Xfwm

Available implementations

Since GTK is a pure C library, it can be easily linked to many other programming languages. With object-oriented programming languages, GObjects are not used; GTK objects can generally be used there as native programming language objects. The Vala programming language uses GObject directly as an object system and therefore does not require a runtime library for the language plugin.

There is a wide variety of programming languages with which GTK can be used, although not all of them are available in their latest version. Among the most used are the following:

Language Name Support License Examples
V2 V3 V4 Officer
C GTK Yes. Yes. Yes. Yes. LGPL-2.1 Archives, GIMP
C++ gtkmm Yes. Yes. Yes. Yes. LGPL-2.1 Inkscape
C# Gtk sharp Partial Yes. Unknown Yes. LGPL-2.1 MonoDevelop, Pinta
D Gtkd Yes. Yes. Yes. No. LGPL-3
Genie Genie Yes. Yes. Yes. Yes. LGPL-2.1
Go Gotk3 No. Yes. Unknown No. GPL-3
Java java-gnome Yes. Yes. Unknown Yes. GPL-2
Javascript Gjs Yes. Yes. Yes. Yes. MIT
Seed Yes. Yes. Yes. Yes. LGPL-2.1
Julia Gtk.jl Yes. Yes. Unknown No. MIT
Perl gtk2-perl Yes. Yes. Yes. Yes. LGPL-2.1
Python PyGObject Yes. Yes. Yes. Yes. LGPL-2.1 Pitivi
Rust Gtk-rs No. Yes. Yes. Yes. MIT Fractal, Shortwave, Pika Backup
Vala Vala Yes. Yes. Yes. Yes. LGPL-2.1 Boxes, Shotwell

Examples

The classic way of programming with GTK is to first define the properties of the graphical elements used, then group them and link them to specific event handling routines (a possible event would be a button click for example). However, there are also graphical design tools for GTK surfaces like Glade or Stetic contained in MonoDevelop that can save you the first two steps, extend GTK with prototyping capabilities, and make it possible to make changes to the surface of a program without having to changes to the software source code.

C

A Hello World in GTK for Wikipedia

A typical Hello World program shown in the image might look like this:

// Include gtk# Include ≥gtk/gtk.hstatic void on_activate (GtkApplication app) { // Create a new window GtkWidget window = gtk_application_window_new (app); // Create a new button GtkWidget button = gtk_button_new_with_label ("Hello Wikipedia!"); // When you click on the button, destroy the past window as an argument g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); gtk_container_add (GTK_CONTAINER (window), button); gtk_widget_show_all (window);!int main (int argc, Char argv[] { // Create a new app GtkApplication app = gtk_application_new ("com.example.GtkApplication", G_APPLICATION_FLAGS_NONE); g_signal_connect (app, "activate", G_CALLBACK (on_activate), NULL); return g_application_run (G_APPLICATION (app), argc, argv);!

To compile this code, some dependencies are necessary depending on the system you have, in case of using Debian or derivatives sudo apt-get install libgtk-3-dev or in case of using Fedora sudo dnf install gtk3-devel clutter-devel webkit2gtk3-devel libgda-devel gobject-introspection-devel. To compile the code, you need to navigate to the file path and type the following in a terminal

gcc examplegtk.c - or examplegtk `pkg-config --cflags --libs gtk+-3.0`

To execute the file, type

./ejemplogtk

Python

import gigi.require_version("Gtk", "3.0")from gi.repository import Gtkwindow = Gtk.Window(title="Hello Wikipedia!")window.show()window.connect("destroy", Gtk.main_quit)Gtk.main()

To open this code, some dependencies are necessary depending on the system you have, in case you use Debian or derivatives sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0 or in case of using Fedora sudo dnf install python3-gobject gtk3.

To run the file, you need to navigate to the file path, then run it by typing

python3 hello.py

Graphic style

The appearance of GTK is largely user-configurable, with a large number of themes to choose from. These themes can be downloaded from different sites like GNOME Look. The following are the most popular:

Adwaita

Example of Adwaita

It is the new standard theme of GTK since mid-2014, being the theme on which it is recommended to work to carry out developments in graphical interfaces. This was expressed in an open letter by the developers of GNOME applications, where they invited to use the default theme (that is, Adwaita), since they assured that making use of other themes could bring differences in the perception of the end user, in the same program.

Asserting that by altering the GTK style sheets the applications could appear damaged or unusable, the icons could represent different concepts than the one intended by the programmer. They also ensured that the screenshots found within software stores could mislead the user about the appearance of the application, and also that it could generate conflicts in the compression of the documentation for the end user.

This proposal was accepted by different distributions, which directly adopted Adwaita, or based their themes on it, such as Ubuntu with its Yaru theme.

Yaru

Example of Yaru

It is the official theme of Ubuntu, it has different tonalities which the user can choose. The theme is based on Adwaita.

Criticism

The most common criticism of GTK is the lack of backwards compatibility in major updates, especially in the application programming interface (API) and themes.

Benjamin Otte explained that the compatibility breaks between minor releases during the GTK 3.x development cycle were due to strong pressures to innovate, such as providing features modern users expect and supporting the Wayland display server protocol. increasingly influential. With the release of GTK 4, the pressure of the need to innovate will have been released and the balance between stability and innovation will tip towards stability. Likewise, recent changes to the theme are specifically aimed at improving and stabilizing that part. from the API, which means that some investment now should pay off later.

  • Dirk Hohndel, Subsurface code developer and member of the Intel Open Code Technology Center, criticized GTK developers for being abrasive and ignoring most community requests.
  • Hong Jen Yee, LXDE developer (whose GTK version will be deleted and all efforts focused on Qt port), expressed his disdain for version 3 of the radical API changes of the GTK tool kit and the greatest use of memory, and carried the PCMan File Manager (PCManFM) file to Qt. PCManFM is developing with a GTK and with a backend Qt at the same time.
  • The Audacious music player moved to Qt in version 3.6. The reasons indicated by the developers for this include a transition to window decorations on the client side, which according to them make the application look "GNOME - and out of place".
  • Wireshark has changed to Qt because it does not have a good experience with the GTK multiplatform support.

Release history

<th class="templateVersion co" data-sort-value="Old version, with technical service: 3.22 <th class="templateVersion c" data-sort-value="Current stable version: 3.24
Summary of launches
Launch Initial version Important improvements Latest version
GTK+ 1
Old version, without technical service: 1.0 13 April 1998 First stable version 1.0.6
Old version, without technical service: 1.2 25 February 1999 New widgets:
  • GtkFontSelector
  • GtkPacker
  • GtkItemFactory
  • GtkCTree
  • Gtk Invisible
  • GtkCalendar
  • GtkLayout
  • GtkPlug
  • GtkSocket
1.2.10
Legend:
Old Version
Old version, with technical support
Last version
Latest version
Future launch
GTK+ 2
Old version, without technical service: 2.0 11 March 2002 GObject

General support for UTF-8

2.0.9
Old version, without technical service: 2.2 22 December 2002 Multiple header support. 2.2.4
Old version, without technical service: 2.4 16 March 2004 New widgets:
  • GtkFileChooser
  • GtkComboBox
  • GtkComboBoxEntry
  • GtkExpander
  • GtkFontButton
  • GtkColorButton
2.4.14
Old version, without technical service: 2.6 16 December 2004 New widgets:
  • GtkIconView
  • GtkAboutDialog
  • GtkCellView

The last to admit Windows 98/Me

2.6.10
Old version, without technical service: 2.8 13 August 2005 Most widgets are rendered by Cairo 2.8.20
Old version, without technical service: 2.10 3 July 2006 New widgets:
  • GtkStatusIcon
  • GtkAsistant
  • GtkLinkButton
  • GtkRecentChooser

Print Support: GtkPrintOperation

2.10.14
Old version, without technical service: 2.12 14 September 2007 GtkBuilder 2.12.12
Old version, without technical service: 2.14 4 September 2008 JPEG 2000 load support 2.14.7
Old version, without technical service: 2.16 13 March 2009 New widget: GtkOrientable

Capital blocking warning at password entry

Improvements in GtkScale, GtkStatusIcon, GtkFileChooser

2.16.6
Old version, without technical service: 2.18 23 September 2009 New widget: GtkInfoBar

Improved file selector, printing

To remove much of the necessary PCI between the X11 application and the X11 server, GDK rewrites (mainly by Alexander Larsson) to use "customer side windows", i.e. the GdkWindow window, which every widget must have, now belongs to the customer

2.18.9
Old version, without technical service: 2.20 23 March 2010 New widgets:
  • GtkSpinner
  • GtkToolPalette
  • GtkOffscreenWindow

Improved file selector, keyboard management, GDK

Introspection data are now included in GTK

2.20.1
Old version, without technical service: 2.22 23 September 2010 GdkPixbuf moved to a separate module

Most GDK drawings are based in Cairo

Many internal data are now private and can be sealed in preparation for GTK 3

2.22.1
Old version, with technical service: 2.24 30 January 2011 New widget: GtkComboBoxText

The CUPS printing backend can send print jobs as PDF

GtkBuilder has obtained support for text tags and menu tool buttons and added many introspection annotation corrections

GTK + 2.x migration to GTK + 3

2.24.32
(2018-01-08)
Legend:
Old Version
Old version, with technical support
Last version
Latest version
Future launch
GTK 3
Old version, without technical service: 3.0 10 February 2011 The development and design of the GTK 3 version of the tool kit began in February 2009 during the GTK Theming Hackfest held in Dublin
  • The first draft of the road map for development was issued on 9 April 2009

Completed mainly Ridley Project

  • The attempt to consolidate several external libraries to GTK +
  • Including libgnome, libgnomeui, libgnomeprint22, libgnomeprintui22, libglade, libgnomecanvas, libegg, libeel, gtkglext, and libsexy

All rendering is done using Cairo

GDK became X11 agnostic

XInput2, the API theme is based on Cascading Style Sheet (CSS), which worsens the achievable performance for 60 Hz frames per second

3.0.12
Old version, without technical service: 3.2 25 September 2011 New widgets:
  • GtkLockButton
  • GtkOverlay

New dialog box for source selector

New experimental backends:

  • Wayland
  • HTML5 (called "Broadway")
3.2.4
Old version, without technical service: 3.4 26 March 2012 Menu support in GtkApplication

A new color selector

Added support for touch devices

Added support for soft displacement

GtkScrolledWindow will perform kinetic displacement with touch devices

macOS compatibility improved

This is the first version of GTK 3 that works well on Windows

Wayland's backend is updated to the current version of Wayland

The turning buttons have received a new look

Accessibility: accessible support with tree view rewrite

More complete support of CSS themes

3.4.4
Old version, without technical service: 3.6 24 September 2012 New widgets:
  • GtkSearchEntry
  • GtkMenuButton
  • GtkLevelBar

Vertical turning buttons

CSS animations, blurred shadows

Support for fading and transitions on topics.

3.6.5
Old version, without technical service: 3.8 25 March 2013 Wayland 1.0 Stable Support

Support for the broadwayd server

Improved theme

Better geometry management.

Touch improvements

Support with the window manager for the plot synchronization protocol

GdkFrameClock added

3.8.9
Old version, without technical service: 3.10 23 September 2013 New widgets:
  • GtkHeaderBar
  • GtkPlacesSidebar
  • GtkStack
  • GtkStackSwitcher
  • GtkRevealer
  • GtkSearchBar
  • GtkListBox

Support for Wayland 1.2

  • maximization
  • animated trainers
  • multiple monitors
  • adjustments
  • custom surfaces
  • plot synchronization

Additional:

  • decorations on the client side
  • output to scale support on high resolution displays
  • fine adjustment mode for displacement

Withdrawal:

  • support for the Motif DND protocol
  • support for multiple screens per screen
  • gdk_window_get_display
  • gtk_widget_push_composite_child

Detachable menu elements, plus many GTK configurations

TThe modern GTK drawing model

3.10.9
Old version, without technical service: 3.12 25 March 2014 Customer side decorations

Support for Wayland 1.5

New widget: GtkPopover (an alternative to menus and dialog boxes)

3.12.2
Old version, without technical service: 3.14 22 September 2014 GtkInspector was introduced (a copy of gtkparasite)

Improved support for gestures / multi-touch fusion

In disuse:

  • GtkMisc
  • GtkAlignment
  • GtkArrow
  • GdkColor
  • Style regions
  • support for files.icon
  • gdk_window_flush
  • drawing outside of the beginning/end painting

Most widgets become to use gestures internally

Wayland supports the classic GNOME Shell mode

3.14.15
Old version, without technical service: 3.16 22 March 2015 GDK supports rendering windows using OpenGL for X11 and Wayland using libepoxy

New widgets:

  • GtkGLArea
  • GtkStackSidebar
  • GtkModelButton
  • GtkPopoverMenu

Revised displacement (displacement bar by default)

Experimental Mir backend

3.16.7
Old version, without technical service: 3.18 23 September 2015 Add CSS node infrastructure

More update filechooser design and better search for filechooser

Deleted Windows XP Support

Support model for list and flow box

Cynetic deferral of the touch panel

Touch panel (Wayland)

utility gtk-builder-tool

Single output windows

3.18.9
Old version, without technical service: 3.20 21 March 2016 Increased integration of CSS nodes

Move drag and drop to GDK

New widget: GtkShortcutsWindow (many abbreviated keyboard methods and gestures of an app)

3.20.10
21 September 2016 Last version 3.x

WThe Wayland tablet support merged, the graphic tablet support is considered complete

GTK 3.22 will be as stable (and therefore "burred") as GTK 2

for 3 years
3.22.29
3 September 2018 3.22 was supposed to be the latest version of the GTK 3 series
  • 3.24 was launched mainly for facilitate the migration of GTK + 3.x to GTK + 4

Dependency coups: require:

  • libepoxy 1.4
  • pango 1.41

New features of the source selector:

  • allow to configure OpenType font features
  • show examples of OpenType font features
  • allow to select OpenType font variations
  • Details support levels for selection

New features of Emoji:

  • supports an Emoji pop-up window
  • release Ctrl-Shift-e

Other new APIs: gdk_window_move_to_rect

Wayland: Use shared anonymous memory in FreeBSD

Event Controllers with GTK support 4:

  • GtkEventControllerScroll
  • GtkEventControllerMotion
  • GtkEventControllerKey
  • GtkGestureStylus

Unused some APIs that have gone to GTK 4:

  • focus chains in GtkContainer
  • step-by-step sensitivity in GtkRange
3.23.0
3.23.1
3.23.2
3.23.3
3.24.0
...3.24.5
3.24.14
Legend:
Old Version
Old version, with technical support
Last version
Latest version
Future launch
Development of the GTK 4 series
Old version, without technical service: 3.90 31 March 2017 GTK Scene Graph Kit (GSK) merged

Remove any APIs marked as obsolete

  • before (22-09-2016) vs. later

Major development

  • break API and ABI

A new Vulkan renderer increases the former Cairo renderer

3.89.1

3.89.2
3.89.4
3.89.5
3.90

Old version, without technical service: 3.92 18 October 2018 As GNOME 3.26 was launched on 13 September 2017, it was not based on GTK 3.92.

GNU autotools was replaced by Meson.

3.91.0

3.91.1
3.91.2
3.92.1

Old version, without technical service: 3.94 26 June 2018 3.93
  • GdkScreen, GdkVisual deleted
  • GdkDeviceManager replaced by GdkSeat
  • The handling of the clipboard moves from GTK to GDK
  • GdkEvent becomes an opaque GObject
  • the GL renderer in GSK has been substantially completed, and is now on par with the Vulkan renderer
  • reduces use of GdkPixbuf in APIs
    • and the GskTexture object moves to GDK as GdkTexture, to take its place
  • Wayland's backend now implements the KDE server side decoration protocol
  • Broadway is ported to GSK.

GdkWindow renamed GdkSurface

New abstraction for drawing content: GdkPaintable

There is support to show media with:

  • GtkVideo
  • GtkMediaFile
  • GtkMediaStream
  • GtkMediaControls
3.93
3.94.0
Old version, without technical service: 3.96 7 May 2019 The command gtk4-builder-tool simplify has obtained an option --3to4 to convert GTK3 ui files to GTK4; although with AMTK menus, toolbars or other objects such as GtkShortcutsWindow are created by programming (not with a *.ui file), but with convenient APIs.

GtkWidget can now use a GtkLayoutManager for size mapping

  • Design administrators can optionally use design children with design properties
  • GtkBinLayout, GtkBoxLayout, GtkGridLayout, GtkFixedLayout and GtkCustomLayout are currently available
  • More design administrator implementations will appear in the future

The management of the approach has been rewritten and the generation of focus change events has been unified with cross-events

Events have been simplified and only used for entry:

  • the exhibition events have been replaced by a GdkSurface signal:
  • configuration events have been replaced by a GdkSurface signal::size-changed
  • the events of the map have been replaced by a GdkSurface property::mapped
  • gdk_event_handler_set has been replaced by a GdkSurface signal::event
  • Key events no longer contain a string
  • events in unearmarked widgets are ignored
3.96.0
Old version, without technical service: 3.98 10 February 2020
  • Performance improvements.
  • Refactoring drag and drop
  • Moving GDK to Wayland
  • Removal
    • GtkMenu, GtkToolbar and similar classes have been replaced by GMenu.
  • Addendum
    • Emoji selector
    • Text widgets now have stacks to undo
    • A new design manager
3.98.5
Old version, without technical service: 3.99.0 31 July 2020
  • Updated accessibility tools
  • Updated Headers to Use GLib INSTED Type C Standard
  • New widgets
  • Corrections and improvements
3.99.0
Current stable version: 4.016 December 2020 Removing any APIs marked as obsolete, that is, at least everything in the obsolete directory
Legend:
Old Version
Old version, with technical support
Last version
Latest version
Future launch

Contenido relacionado

Slackware

Slackware Linux is a distribution of the Linux operating system created in 1993 by Patrick Volkerding aimed at advanced users. Originally based on SLS Linux...

Joy (programming language)

The Joy is a functional programming language that was produced by Manfred von Thun of La Trobe University in Melbourne, Australia. Joy is based on function...

Computer

Computer, computer or computer is a programmable digital electronic machine that executes a series of commands to process input data, conveniently obtaining...
Más resultados...
Tamaño del texto:
Copiar