Short description: Free and open-source cross-platform widget toolkit for creating graphical user interfaces
GTK
GTK version 4 (gtk4-widget-factory, a collection of examples that demonstrate many of the GUI widgets)
Original author(s)
Spencer Kimball, Peter Mattis
Developer(s)
The GNOME Project, eXperimental Computing Facility (XCF)
Initial release
April 14, 1998; 26 years ago (1998-04-14)
Stable release
4.13.2
/ January 7, 2023; 18 months ago (2023-01-07)
Preview release
4.11.1
/ April 3, 2023; 15 months ago (2023-04-03)
Written in
C, CSS[1]
Operating system
Linux, Unix-like, macOS, Windows
Type
Widget toolkit
License
LGPLv2.1+
Website
gtk.org
GTK (formerly GIMP ToolKit[2] and GTK+[3]) is a free and open-source cross-platform widget toolkit for creating graphical user interfaces (GUIs).[4] It is licensed under the terms of the GNU Lesser General Public License, allowing both free and proprietary software to use it. It is one of the most popular toolkits for the Wayland and X11 windowing systems.[5]
The GTK team releases new versions on a regular basis.[6] GTK 4 and GTK 3 are maintained, while GTK 2 is end-of-life.[7] GTK1 is independently maintained by the CinePaint project.[8]
Contents
1Software architecture
1.1GTK Drawing Kit (GDK)
1.2GTK Scene Graph Kit (GSK)
1.3GtkInspector
1.4GUI designers
1.4.1GtkBuilder
1.5Language bindings
1.5.1Gtk#
2Development
2.1Build automation
3Criticism
4Use
4.1Applications
4.2Desktop environments
4.2.1Current
4.2.2Inactive
4.2.3Miscellaneous
4.3Window managers
4.4GtkSourceView
4.5GtkSpell
5History
5.1Linux
5.2macOS
5.3Windows
5.4OpenVMS
5.5GTK 4
5.6Releases
6See also
7References
8Bibliography
9External links
Software architecture
The GTK toolkit
Simplified software architecture of GTK. Pango, GDK, ATK, GIO, Cairo and GLib
GDK contains back-ends to X11, Wayland, Broadway (HTTP), Quartz, and GDI and relies on Cairo for the rendering. Its new SceneGraph is work-in-progress.
The GTK library contains a set of graphical control elements (widgets); version 3.22.16 contains 186 active and 36 deprecated widgets.[9] GTK is an object-oriented widget toolkit written in the programming language C; it uses GObject, that is the GLib object system, for the object orientation. While GTK is mainly for windowing systems based on X11 and Wayland, it works on other platforms, including Microsoft Windows (interfaced with the Windows API), and macOS (interfaced with Quartz). There is also an HTML5 back-end named Broadway.[10][11]
GTK can be configured to change the look of the widgets drawn; this is done using different display engines. Several display engines exist which try to emulate the look of the native widgets on the platform in use.
Starting with version 2.8, released in 2005, GTK began the transition to using Cairo to render most of its graphical control elements widgets.[12] Since GTK version 3.0, all rendering is done using Cairo.[13]
On 26 January 2018 at 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 are being made in GTK 4 (>3.90), and why.[14] On 6 February 2019 it was announced that GTK 4 will drop the “+” from the project's name.[3]
GTK Drawing Kit (GDK)
Main page: Software:GDK
GDK acts as a wrapper around the low-level functions provided by the underlying windowing and graphics systems.
GTK Scene Graph Kit (GSK)
Main page: Software:GTK Scene Graph Kit
GSK is the rendering and scene graph API for GTK. GSK lies between the graphical control elements (widgets) and the rendering. GSK was finally merged into GTK version 3.90 released March 2017.
GtkInspector
GtkInspector was introduced with version 3.14.[15][16]
GtkInspector can only be invoked after installing the development package libgtk-3-dev/gtk+-devel.
GUI designers
There are several GUI designers for GTK. The following projects were active as of July 2011:
Glade, supports GtkBuilder, which is a GTK built-in GUI description format.
Gazpacho, GUI builder for the GTK toolkit written in Python[17]
Crow Designer, relies on its own GuiXml format and GuiLoader library.[18]
Stetic, part of MonoDevelop, oriented toward Gtk#.
Gambas since version 2.0 atop BASIC
Xojo on Linux
Lazarus on Linux defaults to interfacing with GTK 2
GtkBuilder
GtkBuilder allows user interfaces to be designed without writing code. The interface is described in an Extensible Markup Language (XML) file, which is then loaded at runtime and the objects created automatically. The Glade Interface Designer allows creation of the user interface in a what you see is what you get (WYSIWYG) manner. The description of the user interface is independent from the programming language being used.
Language bindings
Language bindings are available for using GTK from languages other than C, including C++, Genie, JavaScript, Perl, Python, Vala, and others.[19]
GtkSharp, not to be confused with Gtk#, supports GTK 3.
Gtk#
Gtk#
Developer(s)
Xamarin
Initial release
March 12, 2004; 20 years ago (2004-03-12)
Stable release
2.12.41[20]
/ September 22, 2016; 7 years ago (2016-09-22)
Preview release
2.99.3 (for GTK3)[20]
/ June 6, 2014; 10 years ago (2014-06-06)
Written in
C#, XML, Perl, C
Operating system
Windows, macOS, Linux
Type
Widget toolkit
License
GNU Lesser General Public License
Website
mono-project.com/GtkSharp
Gtk# is a set of .NET Framework bindings for the GTK graphical user interface (GUI) toolkit and assorted GNOME libraries. The library facilitates building graphical GNOME applications using Mono or any other compliant Common Language Runtime (CLR). Gtk# is an event-driven system like any other modern windowing library where every widget allows associating handler methods, which get called when certain events occur.[citation needed]
Applications built using Gtk# will run on many platforms including Linux, Windows and macOS. The Mono packages for Windows include GTK, Gtk# and a native theme to make applications look like native Windows applications. Starting with Mono 1.9, running Gtk# applications on macOS no longer requires running an X11 server.[21]
Glade Interface Designer can be used with the Glade# bindings to easily design GUI applications. A GUI designer named Stetic is integrated with the MonoDevelop integrated development environment (IDE).
In addition to support the standard GTK/GNOME stack of development tools, the gtk-dotnet.dll assembly provides a bridge to consume functionality available on the .NET stack. At this point this includes the functionality to use System.Drawing to draw on a widget.[citation needed]
(As of September 2020), Gtk# support for Gtk3 remains in the preview phase and forked projects, such as GtkSharp, have been founded to provide full Gtk3 support for C# and other CLI languages. The lack of a released version of Gtk# with support for Gtk3 was cited as a reason to remove the Banshee media player in Ubuntu 12.04.[22]
Development
GTK is mainly developed by The GNOME Project, which also develops the GNOME Development Platform and the GNOME Desktop Environment.[23]
GTK development is loosely managed. Discussion chiefly occurs on several public mailing lists.[24] GNOME developers and users gather at an annual GNOME Users And Developers European Conference GUADEC meeting to discuss GNOME's current state and future direction.[25] GNOME incorporates standards and programs from freedesktop.org to better interoperate with other desktops.[citation needed]
GTK is mainly written in C.[26] Many language bindings are available.
On September 1, 2016, a post on the GTK development blog denoted, among other things, the future numbering scheme of GTK.[27] GTK version 3.22, released in Autumn 2016, was planned to be the last 3.x release, although version 3.24 followed in Fall 2018 with the delay of GTK 4.[28]
Build automation
GTK (and GNOME, GLib, etc.) formerly utilized the GNU Build System (named Autotools) as the build automation system of choice.
Since August 14, 2017, the master branch of GTK has been built with Meson, and the Autotools build system files have been dropped.[29]
Criticism
The most common criticism of GTK is the lack of backward-compatibility in major updates, most notably in the application programming interface (API)[30] and theming.[31]
The compatibility breaks between minor releases during the GTK 3.x development cycle was explained by Benjamin Otte as due to strong pressures to innovate, such as providing the features modern users expect and supporting the increasingly influential Wayland display server protocol. With the release of GTK 4, the pressure from the need to innovate will have been released and the balance between stability and innovation will tip toward stability.[32] Similarly, recent changes to theming are specifically intended to improve and stabilise that part of the API, meaning some investment now should be rewarded later.
Dirk Hohndel, codeveloper of Subsurface and member of Intel's Open-Source Technology Center, criticized the GTK developers for being abrasive and ignoring most community requests.[33]
Hong Jen Yee, developer of LXDE (the GTK version of which was dropped and all efforts focused on the Qt port), expressed disdain for version 3 of the GTK toolkit's radical API changes and increased memory usage, and ported PCMan File Manager (PCManFM) to Qt. PCManFM is being developed with a GTK and with a Qt backend at the same time.[34]
The Audacious music player moved to Qt in version 3.6.[35] The reasons stated by the developers for this include a transition to client-side window decorations, which they claim cause the application to look "GNOME-y and out of place."[36]
Wireshark has switched to Qt due to not having a good experience with GTK's cross-platform support.[37]
Use
The GTK support for Wayland, co-requisites applications to be adapted to Wayland also
Screenshot of GIMP 2.8 - GTK is responsible for managing the interface components of the program, including the menus, buttons, and input fields.
Applications
Some notable applications that use GTK as a widget toolkit include:
Ardour, a digital audio workstation (DAW)
Deluge, a BitTorrent client
Foliate, an ebook reader
GIMP, a raster graphics editor
GNOME Builder, an integrated development environment (IDE)
GNOME Core Applications, a collection of applications as a standard bundle of the GNOME desktop environment
GNOME Evolution, a personal information manager
HandBrake, digital video transcoder
Inkscape, a vector graphics editor
LibreOffice, an office suite
Lutris, a game manager
Mozilla Firefox, a web browser
Mozilla Thunderbird, a personal information manager
Pitivi, a video editor
PCSX-Reloaded, a video game console emulator
Remmina, a remote desktop client
Transmission, a Bit Torrent client
Desktop environments
Several desktop environments utilize GTK as the widget toolkit.
Current
GNOME, based on GTK, meaning that programs native to GNOME use GTK
Budgie, built from scratch for the SolusOS successor, Solus Operating System
Cinnamon, a fork of GNOME 3 which uses GTK version 3
MATE, a fork of GNOME 2 which uses GTK 3 since version 1.18
Xfce, based on GTK 3 since version 4.14
Pantheon uses GTK 3 exclusively, being developed by elementary OS
Sugar, a desktop environment for youth primary education, which uses GTK, especially PyGTK
Phosh, a mobile UI designed for PureOS
LXDE (Lightweight X11 Desktop Environment) is based on GTK 2
Unity, the former default desktop environment of Ubuntu
Inactive
Access Linux Platform (successor of the Palm OS PDA platform)
Consort, the GNOME 3.4 Fallback Mode – fork from Solus
GPE, the GPE Palmtop Environment
ROX Desktop, a lightweight desktop, with features from the GUI of RISC OS
Miscellaneous
GTK programs can be run on desktop environments based on X11 and Wayland, or window managers even those not made with GTK, provided the needed libraries are installed; this includes macOS if X11.app is installed. GTK can be also run on Microsoft Windows, where it is used by some popular cross-platform applications like Pidgin and GIMP. wxWidgets, a cross-platform GUI tool-kit, uses GTK on Linux by default.[38] Other ports include DirectFB (used by the Debian installer, for example) and ncurses.[39]
Window managers
The following window managers use GTK:
Aewm
AfterStep
Amaterus
Consortium
IceWM
Marco
Metacity
Muffin
Mutter
Sawfish
Wmg
Xfwm
GtkSourceView
For syntax highlighting there is GtkSourceView, "source code editing widget". GtkSourceView is maintained by GNOME separately from GTK as a library: gtksourceview. There are plans to rename to gsv.[citation needed]
GtkSpell
GtkSpell is a library separate from GTK. GtkSpell depends on GTK and Enchant. Enchant is a wrapper for ispell, hunspell, etc., the actual spell checker engine/software. GtkSpell uses GTK's GtkTextView widget, to highlight misspelled words and offer replacement.
History
Linux
GTK was originally designed and used in the GNU Image Manipulation Program (GIMP) as a replacement of the Motif toolkit; at some point Peter Mattis became disenchanted with Motif and began to write his own GUI toolkit named the GIMP toolkit and had successfully replaced Motif by the 0.60 release of GIMP.[40] Finally GTK was re-written to be object-oriented and was renamed GTK+.[41] This was first used in the 0.99 release of GIMP. GTK was subsequently adopted for maintenance by the GNOME Foundation, which uses it in the GNOME desktop environment.
The GTK 2.0.0 release series introduced new features which include improved text rendering using Pango, a new theme engine, improved accessibility using the Accessibility Toolkit, transition to Unicode using UTF-8 strings, and a more flexible API. Starting with version 2.8, GTK 2 depends on the Cairo graphics library for rendering vector graphics.
GTK version 3.0.0 included revised input device handling, support for themes written with CSS-like syntax, and the ability to receive information about other opened GTK applications.
The '+' was dropped returning to simply 'GTK' in February 2019 during a Hackathon.[42]
macOS
With Quartz-backend[43] GTK is available in macOS.[44]
Windows
After GTK 2.24.10 and 3.6.4 Development of Windows with Installer was closed by Gnome. Installation of MSYS2 on Windows is a good way to use actual GTK.[45]
GTK 2.24.10 and 3.6.4 is available in Internet, but very buggy and limited against actual versions.[46][47]
A version for Windows 64-bit is prepared by Tom Schoonjans with 2.24.33 (actual like Linux) and 3.24.24 (actual like Linux) from January 2021 available.[48]
Windows 10's Fall Creators Update includes Windows Subsystem for Linux (WSL). With Linux distributions like Ubuntu or Debian available from the Microsoft Store and an X server like Xming or VcXsvr, thousands of programs like GTK 2 or 3 can run with X or terminal support.
OpenVMS
HP stated that their goal was to merge the needed OpenVMS changes into the GTK Version 1.3 development stream, however this never materialised.[49] The latest version of GTK for OpenVMS is version 1.2.10.[50]
GTK 4
One of the cardinal novelties implemented during the GTK 4 development cycle (i.e. GTK 3.92, etc.) has been the removal of customization options for the user side (like individual keyboard shortcuts that could be set in GTK+ 2), and the delegation of functionality to ancillary objects instead of encoding it into the base classes provided by GTK.
the event handling from signal handlers described by GtkWidget is delegated to event controllers
the rendering is delegated to GtkSnapshot objects
the layout mechanism from GtkWidget is delegated to GtkLayoutManager
In January 2018 at DevConf.cz Matthias Clasen gave an overview of the then 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 to GTK 4, and the reasons for those changes. Examples of things that have become possible with GTK 4 were given as well.[51]
Releases
{{{2}}}
Release series
Initial release
Major enhancements
Latest minor version
1.0
1998-04-13[52]
First stable version
1.0.6
1.2
1999-02-25[53]
New widgets:
GtkFontSelector
GtkPacker
GtkItemFactory
GtkCTree
GtkInvisible
GtkCalendar
GtkLayout
GtkPlug
GtkSocket
1.2.10
2.0
2002-03-11[54]
GObject
Overall support for UTF-8
2.0.9
2.2
2002-12-22[55]
Multihead support
2.2.4
2.4
2004-03-16[56]
New widgets:
GtkFileChooser
GtkComboBox
GtkComboBoxEntry
GtkExpander
GtkFontButton
GtkColorButton
2.4.14
2.6
2004-12-16[57]
New widgets:
GtkIconView
GtkAboutDialog
GtkCellView
The last to support Windows 98/Me
2.6.10
2.8
2005-08-13[58]
Most widgets are rendered by Cairo
2.8.20
2.10
2006-07-03[59]
New widgets:
GtkStatusIcon
GtkAssistant
GtkLinkButton
GtkRecentChooser
Print support: GtkPrintOperation
2.10.14
2.12
2007-09-14[60]
GtkBuilder
2.12.12
2.14
2008-09-04[61]
JPEG 2000 load support
2.14.7
2.16
2009-03-13[62]
New widget: GtkOrientable
Caps Lock warning in password entry
Improvements on GtkScale, GtkStatusIcon, GtkFileChooser
2.16.6
2.18
2009-09-23[63]
New widget: GtkInfoBar
Improvement on file chooser, printing
To remove much of the necessary IPC between the X11 application and the X11 server, GDK is rewritten (mainly by Alexander Larsson) to use "client-side windows", i.e., the GdkWindow, which every widget must have, belongs now to the client
2.18.9
2.20
2010-03-23[64]
New widgets:
GtkSpinner
GtkToolPalette
GtkOffscreenWindow
Improvement on file chooser, keyboard handling, GDK
Introspection data is now included in GTK
2.20.1
2.22
2010-09-23[65]
GdkPixbuf moved to separate module
Most GDK drawing are based on Cairo
Many internal data are now private and can be sealed in preparation to GTK 3
2.22.1
2.24
2011-01-30[66]
New widget: GtkComboBoxText which had previously been a custom widget shipped with Gtkmm
The CUPS print backend can send print jobs as PDF
GtkBuilder has gained support for text tags and menu toolbuttons and many introspection annotation fixes were added
Migrating from GTK+ 2.x to GTK+ 3
2.24.33 (2020-12-21)[67]
3.0
2011-02-10[68]
Development and design of the GTK 3 release of the toolkit started in February 2009 during the GTK Theming Hackfest held in Dublin[69]
The first draft of the development roadmap was released on 9 April 2009[70]
Completed mostly Project Ridley
the attempt to consolidate several libraries that were external to GTK+
including libgnome, libgnomeui, libgnomeprint22, libgnomeprintui22, libglade, libgnomecanvas, libegg, libeel, gtkglext, and libsexy[71]
All the rendering is done using Cairo
GDK became more X11 agnostic
XInput2, theme API is based on Cascading Style Sheets (CSS), worsening the achievable performance for 60 Hz frame rates
3.0.12
3.2
2011-09-25[72]
New widgets:
GtkLockButton
GtkOverlay
New Font Chooser dialog
New experimental backends:
Wayland
HTML5 (named "Broadway")
3.2.4
3.4
2012-03-26[73]
Menu support in GtkApplication
A new color chooser
Added support for touch devices
Added support for smooth scrolling
GtkScrolledWindow will do kinetic scrolling with touch devices
macOS support is improved
This is the first version of GTK 3 that works well on Windows
The Wayland backend is updated to the current Wayland version
Spin buttons have received a new look
Accessibility: the treeview accessible support is rewritten
More complete CSS theming support
3.4.4
3.6
2012-09-24[74]
New widgets:
GtkSearchEntry
GtkMenuButton
GtkLevelBar
Vertical spin buttons
CSS animations, blur shadows
Support for cross-fading and transitions in themes
3.6.5
3.8
2013-03-25[75]
Wayland 1.0 stable support
Support for the broadwayd server
Improved theming
Better geometry management
Touch improvements
Support with the window manager for the frame synchronization protocol
GdkFrameClock added[76]
3.8.9
3.10
2013-09-23[77]
New widgets:
GtkHeaderBar
GtkPlacesSidebar
GtkStack
GtkStackSwitcher
GtkRevealer
GtkSearchBar
GtkListBox
Support for Wayland 1.2
maximization
animated cursors
multiple monitors
settings
custom surfaces
frame synchronization
Added:
client-side decorations
scaled output support on high-dpi screens
fine-adjustment mode for scrolling
Removed:
support for the Motif DND protocol
support for multiple screens per display
gdk_window_get_display
gtk_widget_push_composite_child
Tear-off menu-items, plus many GTK settings
The modern GTK drawing model
3.10.9
3.12
2014-03-25[78]
Client-side decorations[79]
Support for Wayland 1.5
New widget: GtkPopover (an alternative to menus and dialogs)
3.12.2
3.14
2014-09-22[80]
GtkInspector (a copy of gtkparasite) introduced[81][82]
Improved support for gestures/multi-touch merged[83][84]
Deprecated:[85]
GtkMisc
GtkAlignment
GtkArrow
GdkColor
Style regions
support for .icon files
gdk_window_flush
drawing outside of begin/end paint
Most widgets converted to use gestures internally
Wayland supports GNOME Shell classic mode[86]
3.14.15
3.16
2015-03-22[87]
GDK supports rendering windows using OpenGL for X11 and Wayland using libepoxy
New widgets:
GtkGLArea
GtkStackSidebar
GtkModelButton
GtkPopoverMenu
Scrolling overhauled (scrollbar hidden by default[88])
Experimental Mir backend[89]
3.16.7
3.18
2015-09-23[90]
Add CSS node infrastructure
More filechooser design refresh and better filechooser search
Dropped Windows XP support
Model support for list and flow box
Kinetic touchpad scrolling
Touchpad gestures (Wayland)
gtk-builder-tool utility
Output-only windows
3.18.9
3.20
2016-03-21[91]
Further Integration of CSS nodes[92]
Move drag and drop down to GDK
New widget: GtkShortcutsWindow (shows keyboard shortcuts and gestures of an application)
3.20.10
3.22
2016-09-21[93]
Last 3.x release[27]
Wayland tablet support is merged,[94] support for graphics tablets is considered feature complete[95]
GTK 3.22 shall be as rock-stable (and hence "boring") as GTK 2[32][96][97]
for 3+ years 3.22.29
3.24
2018-09-03[98]
3.22 was supposed to be the last version of GTK 3 series
3.24 was mainly released to ease migrating from GTK+ 3.x to GTK+ 4
A new Vulkan-renderer augments the old Cairo-renderer[100]
3.89.1
3.89.2
3.89.4
3.89.5
3.90
3.92
2017-10-18[101][102]
As GNOME 3.26 was released already on September 13, 2017,[103] it was not based on GTK 3.92.
GNU autotools was replaced with Meson.
3.91.0
3.91.1
3.91.2
3.92.1
3.94
2018-06-26[104]
3.93
GdkScreen, GdkVisual removed
GdkDeviceManager replaced by GdkSeat
Clipboard handling is moved from GTK to GDK
GdkEvent is converted to an opaque GObject
the GL renderer in GSK is substantially completed, and is now on par with the Vulkan renderer
the use of GdkPixbuf in APIs is reduced
and the GskTexture object is moved to GDK as GdkTexture, to take its place
the Wayland backend now implements the KDE server-side decoration protocol
Broadway is ported to GSK.
GdkWindow renamed to GdkSurface
New abstraction for drawable content: GdkPaintable
There is support for displaying media with:
GtkVideo
GtkMediaFile
GtkMediaStream
GtkMediaControls
3.93 3.94.0
3.96
2019-05-07[105]
The gtk4-builder-toolsimplify command has gained a --3to4 option to convert GTK3 ui files to GTK4; though with AMTK menus, toolbars or other objects like GtkShortcutsWindow are created programmatically (not with a *.ui file), but with convenient APIs.[106]
GtkWidget can now use a GtkLayoutManager for size allocation
layout managers can optionally use layout children holding layout properties
GtkBinLayout, GtkBoxLayout, GtkGridLayout, GtkFixedLayout and GtkCustomLayout are currently available
more layout manager implementations will appear in the future
Focus handling has been rewritten, and focus-change event generation has been unified with crossing events
Events have been simplified and are just used for input:
expose events have been replaced by a GdkSurface::render signal
configure events have been replaced by a GdkSurface::size-changed signal
map events have been replaced by a GdkSurface::mapped property
gdk_event_handler_set has been replaced by a GdkSurface::event signal
key events no longer contain a string
events on unmapped widgets are ignored
3.96.0
3.98
2020-02-10[105]
Performance improvements
Drag and drop refactoring
Moving GDK towards Wayland
Removals
GtkMenu, GtkToolbar and similar classes have been replaced by GMenu.
Additions
Emoji chooser
Text widgets now have undo stacks
A new layout manager[107]
3.98.5
3.99.0
2020-07-31[108]
Introduced successor to Accessibility Toolkit (ATK).[109] The new approach will implement WAI-ARIA (World Wide Web Consortium (W3C) Accessibility Initiative – Accessible Rich Internet Applications).
Updated headers to use standard C types instead of GLib types
New widgets
Fixes and improvements[108]
3.99.4
4.0
2020-12-16[110]
4.0.2
4.2
2021-03-30[111]
4.4
2021-08-23[112]
4.6
2021-12-30[113]
4.8
2022-09-06[114]
4.10
2023-03-04[115]
See also
Client-Side Decoration
List of widget toolkits
gtkmm – C++ bindings for GTK
Enlightenment Foundation Libraries (EFL) – widget toolkit written for the Enlightenment window manager
FLTK – a light, cross-platform, non-native widget toolkit
Fox toolkit – a fast, open source, cross-platform widget toolkit
IUP – a multi-platform toolkit for building native graphical user interfaces
Ultimate++
Visual Component Library (VCL)
References
↑"The GTK Open Source Project on Open Hub: Languages Page". https://www.openhub.net/p/gtk/analyses/latest/languages_summary.
↑"A brief description on how GTK was born.". https://www.gtk.org/about/.
↑"Nothing-personal - A development site for Crow Designer, GuiLoader and Rally - Google Project Hosting". http://nothing-personal.googlecode.com/.
↑The GTK+ Team. "GTK+ Language Bindings". https://www.gtk.org/language-bindings.php.
↑ 20.020.1"Gtk# is a Mono/.NET binding to the cross platform Gtk+ GUI toolkit and the foundation of most GUI apps built with Mono: mono/gtk-sharp". 16 November 2019. https://github.com/mono/gtk-sharp.
↑"Download Gtk#". The GTK+ Project. http://download.xamarin.com/GTKforWindows/Windows/gtk-sharp-2.12.22.msi.
↑"'Bansheegeddon' may see Banshee, Mono dropped from Ubuntu default". http://www.itworld.com/article/2734148/it-management/-bansheegeddon--may-see-banshee--mono-dropped-from-ubuntu-default.html.
↑"GTK+ and GNOME Mailing Lists". The GNOME Project. http://mail.gnome.org.
↑"About". GNOME Users And Developers European Conference (GUADEC). http://guadec.expectnation.com/public/content/about.
↑"GNOME Languages". Black Duck Software. http://www.ohloh.net/p/gnome/analyses/latest/languages_summary.
↑ 27.027.1"Versioning and long term stability promise in GTK". GTK development blog. 2016-09-01. https://blog.gtk.org/2016/09/01/versioning-and-long-term-stability-promise-in-gtk/.
↑"GTK+ 3.24 To Deliver Some New Features While Waiting For GTK4". https://www.phoronix.com/scan.php?page=news_item&px=GTK-3.24-Coming-This-Fall.
↑"Build system change GTK's master branch". https://mail.gnome.org/archives/gtk-devel-list/2017-August/msg00028.html.
↑"How Does One Create A Gtk+ Application? – Morten Welinder". 23 June 2014. http://blogs.gnome.org/mortenw/2014/06/23/how-does-one-create-a-gtk-application/.
↑mclasen (20 November 2015). "A GTK+ update". https://blogs.gnome.org/mclasen/2015/11/20/a-gtk-update/.
↑ 32.032.1"GUADEC2013: Benjamin Otte talks about GTK+". GUADEC. http://videos.guadec.org/2013/GTK to infinity and beyond/.
↑Larabel, Michael (2014-01-12). "The Biggest Problem With GTK & What Qt Does Good". Phoronix. https://www.phoronix.com/scan.php?page=news_item&px=MTU2ODM.
↑Hong Jen Yee (2013-03-26). "PCManFM Qt 0.1.0 released". http://blog.lxde.org/?p=990.
↑"Audacious - An Advanced Audio Player". https://audacious-media-player.org/news/32-audacious-3-6-released.
↑Lindgren, John (2014-05-06). "Ugly window decorations and how to fix them (GTK 3.12)". http://redmine.audacious-media-player.org/boards/1/topics/1135.
↑Gerald Combs (2013-10-15). "We're switching to Qt". https://blog.wireshark.org/2013/10/switching-to-qt/.
↑"GTK+". WxWidgets Compared To Other Toolkits. http://www.wxwidgets.org/wiki/index.php/WxWidgets_Compared_To_Other_Toolkits#GTK.2B.
↑"GTK+ TTY Port". Slashdot. 26 August 2003. http://slashdot.org/article.pl?sid=03/08/26/2042206.
↑"LinuxWorld - Where did Spencer Kimball and Peter Mattis go?". http://www.linuxworld.com/linuxworld/lw-1999-01/lw-01-gimp.html.
↑"What is the + in GTK+?". 2011. http://developer.gnome.org/gtk-faq/stable/x90.html.
↑"Rename some references to GTK+ (d080be3e) · Commits · GNOME / gtk". 4 February 2019. https://gitlab.gnome.org/GNOME/gtk/commit/d080be3e5091c98d5171063a95d55c01170881f3.
↑"GTK Download: Mac OS X". The GTK Team. https://www.gtk.org/docs/installations/macos/.
↑"GTK Download: Windows". The GTK Team. https://www.gtk.org/docs/installations/windows/.
↑"GTK+ for Windows Runtime Environment". 15 September 2017. https://sourceforge.net/projects/gtk-win/.
↑"GTK+". http://www.tarnyko.net/dl/gtk.htm.
↑"GTK+ for Windows Runtime Environment Installer (fork from http://gtk-win.sourceforge.net): tschoonj/GTK-for-Windows-Runtime-Environment-Installer". 19 November 2020. https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer.
↑"HP OpenVMS systems - GTK+". http://h41379.www4.hpe.com/openvms/products/ips/gtk.html.
↑"HP OpenVMS systems - GTK+". http://h41379.www4.hpe.com/openvms/products/ips/gtk_down.html.
↑Nestor, Marius (Sep 24, 2015). "GTK+ 3.18.0 Officially Released as Part of the GNOME 3.18 Desktop Environment". https://news.softpedia.com/news/gtk-plus-3-18-0-officially-released-as-part-of-the-gnome-3-18-desktop-environment-492591.shtml.
↑Clasen, Matthias (21 March 2016). "GTK+ 3.20". GNOME Mail Services (Mailing list). Retrieved 20 May 2019.
↑"GTK+ 3.20 – Style Classes and Element Names". 2015-11-20. https://wiki.gnome.org/Projects/GTK+/StyleClasses.
↑Clasen, Matthias (21 September 2016). "GTK+ 3.22 released". GNOME Mail Services (Mailing list). Retrieved 20 May 2019.
↑"GTK+ Wayland tablet support is merged – Carlos Garnacho". https://blogs.gnome.org/carlosg/2016/04/06/gtk-wayland-tablet-support-is-merged/.
↑Clasen, Matthias (30 December 2021). "gtk 4.6.0". FTP Releases (Mailing list). Retrieved 23 January 2022.
↑Clasen, Matthias (2022-09-06), gtk 4.8.0, https://gitlab.gnome.org/GNOME/gtk/-/blob/gtk-4-8/NEWS, retrieved 11 January 2023
↑"NEWS · 4.10.1 · GNOME / gtk · GitLab" (in en). 13 March 2023. https://gitlab.gnome.org/GNOME/gtk/-/blob/4.10.1/NEWS?ref_type=tags.
Bibliography
Krause, Andrew (23 April 2007), Foundations of GTK+ Development (1st ed.), Apress, ISBN 978-1-59059-793-4, https://archive.org/details/foundationsofgtk00krau
Wright, Peter (15 May 2000), Beginning GTK+ and GNOME (1st ed.), Peer Information, ISBN 978-1-86100-381-2, https://archive.org/details/beginninggtkgnom00wrig
Logan, Syd (6 September 2001), Gtk+ Programming in C (1st ed.), Prentice Hall, ISBN 978-0-13-014264-1, http://www.informit.com/store/product.aspx?isbn=0130142646
External links
v
t
e
GTK applications
Platform
GTK
GTK
GDK
ATK
ClutterActor
GTK Scene Graph Kit
Pango
Language bindings
PyGTK
PyGObject
GLib
GObject
GIO
IBus
Orca
dconf
Genie
Vala
Keyring
GNOME-DB
GVfs
Hildon
Librsvg
MetaTracker
libxslt
libxml2
freedesktop.org (shared)
AppStream
D-Bus
GStreamer
NetworkManager
Poppler
libcanberra
Wayland
X.Org Server
PulseAudio
PackageKit
HarfBuzz
Cairo
Development
GUI designer, RAD
Glade Interface Designer
GNOME Builder
IDEs
Anjuta
Builder
Bluefish
Meld
Devhelp
Nemiver
Poedit
Geany
Gtranslator
gPHPedit
PyRoom
SciTE
UberWriter
PIDA
GNOME
GNOME Shell
GNOME Games
Core Applications
Boxes
Calculator
Character Map
Dictionary
Disks
Files
Software
Terminal
Videos
Web
Other
dconf editor
Cinnamon
Nemo
Xfce
Thunar
LXDE
PCMan File Manager
LXMusic
Graphical shells
GNOME Panel
Docky
GNOME Do
Avant Window Navigator
3rd-party applications
Office
AbiWord
Dia
Gnumeric
Evince (pdf)
Evolution
Dictionary
OCRFeeder
Education
Gramps
GCompris
DrGeo
GeoGebra
Ghemical
Celestia
Graphics
GIMP
GNU Paint
Inkscape
gThumb
gPhoto
Eye of GNOME
Sushi
Shotwell
F-Spot
Internet
Balsa
Sylpheed
Claws Mail
Empathy
Ekiga
gtk-gnutella
GpsDrive
GNU Ring
Vino (VNC server)
Vinagre
Midori
Uzbl
transmission-gtk
Audio
Audacious
Banshee
PulseEffects
Buzztrax
Exaile
Rhythmbox
Sound Juicer
SoundConverter
Quod Libet
Ex Falso
EasyTag
Asunder
Video
Avidemux
Cinelerra
Kino
LiVES
OpenShot Video Editor
Pitivi
Gnome MPlayer
Cheese
Utilities
Archive Manager
Brasero
dconf-editor
Diodon
gedit
gnote
Screenshot
GParted
Guake
Leafpad
Tilda
Tomboy
Wine-Doors
Workrave
Category:GTK
Category:Software that uses GTK
Commons
v
t
e
GNU Project
History
GNU Manifesto
Free Software Foundation
Europe
India
Latin America
History of free software
Licenses
GNU General Public License
linking exception
font exception
GNU Lesser General Public License
GNU Affero General Public License
GNU Free Documentation License
Software
GNU (variants)
Hurd
Linux-libre
glibc
Bash
coreutils
findutils
Build System
GCC
binutils
GDB
GRUB
GNOME
GNUstep
GIMP
Jami
GNU Emacs
GNU TeXmacs
GNU Octave
GNU R
GSL
GMP
GNU Electric
GNU Archimedes
GNUnet
GNU Privacy Guard
Gnuzilla (IceCat)
GNU Health
GNUmed
GNU LilyPond
GNU Go
GNU Chess
Gnash
Guix
Guix System Distribution
more...
Public speakers
Alexandre Oliva
Benjamin Mako Hill
Bradley M. Kuhn
Federico Heinz
Frédéric Couchet
Georg C. F. Greve
John Sullivan
José E. Marchesi
Joshua Gay
Kefah T. Issa
Loïc Dachary
Nagarjuna G.
Peter Heath
Richard M. Stallman
Other topics
GNU/Linux naming controversy
Revolution OS
Free Software Foundation anti-Windows campaigns
Defective by Design
v
t
e
List of widget toolkits
Low-level
On AmigaOS
Intuition
On Classic Mac OS, macOS
Unknown, native
Macintosh Toolbox
C
Carbon
On Windows
Windows API
On Unix, under X11
Xlib
XCB
X Toolkit Intrinsics, Xt, X-Toolkit
On BeOS, Haiku
BeOS, ZETA, Haiku
On cross-platform
CLI
OpenTK
C
GDK
SDL
Java
JOGL
On Android
CLI
Xamarin.Android
High-level
On AmigaOS
BOOPSI
MUI
ReAction GUI
Zune
On Classic Mac OS, macOS
Object Pascal
MacApp (v1, v2)
Objective-C, Swift
Desktop
Cocoa
Mobile
Cocoa Touch
C++
MacApp (v3)
PowerPlant
THINK Class Library
CLI
Desktop
Xamarin.Mac
Mobile
Xamarin.iOS
On Windows
CLI
Desktop
Windows Forms
XAML (Silverlight, WinRT XAML, WPF)
XNA Framework
Web
XAML (Silverlight)
Mobile
XNA Framework
C++
MFC
ATL
WTL
OWL
Object Pascal
VCL
On Unix, under X11
Athena (Xaw)
LessTif
Motif
OLIT
XForms
On Android
C++
Qt for Android
Cross-platform, by language
C
GTK
IUP
Tk
wxC
XForms
XVT
C++
CEGUI
CLX
FLTK
FOX toolkit
GLUI
Gtkmm
JUCE
Nana
Qt
Rogue Wave Views
TnFOX
Ultimate++
VCF
Wt
wxWidgets
YAAF
SFML
Objective-C
GNUstep
CLI
Desktop
Gtk#
Tao (OpenTK, TaoClassic)
wx.NET
UIML.NET
MonoGame
Web
Moonlight
Mobile
MonoGame
Xamarin.Forms
D
DFL
DlangUI
DWT
GtkD
QtD
wxD
Flash
Apache Flex (MXML)
Haskell
Gtk2Hs
wxHaskell
Java
Desktop
AWT
FXML (JavaFX)
Qt Jambi
Swing
SWT
wx4j
jUIML
Web
GWT
FXML (JavaFX)
Mobile
LWUIT
JavaScript
Dojo Toolkit
Echo
Ext JS
Google Closure
jQuery UI
Qooxdoo
YUI
Common Lisp
CAPI
CLIM
Common Graphics
Ltk
McCLIM
Lua
IUP
wxLua
Pascal
Desktop
LCL
Mobile
LCL
Object Pascal
Desktop
CLX
fpGUI
IP Pascal
LCL
Mobile
LCL
Perl
Perl/Tk
wxPerl
PHP
PHP-GTK
PHP-Qt
wxPHP
Python
PyGObject
PyGTK
Pyjs
PyQt
PySide
Tkinter
wxPython
Ruby
Shoes
FXRuby
Ruby-GNOME2
qtbindings
QtRuby
wxRuby
Tcl
Tcl/Tk
XML
GladeXML
Lively Kernel
Pyjs
Rialto Toolkit
XAML
XUL
UXP
Wt
shell
whiptail
dialog
0.00
(0 votes)
Original source: https://en.wikipedia.org/wiki/GTK. Read more