As shown in the table below, GTK has a range of bindings for various languages [1] that implement some or all of its feature set. GTK 2 is no longer supported, meaning some languages below do not have current GTK support.
Language | Name | Supported? | License | Notes | ||||
---|---|---|---|---|---|---|---|---|
2.24 | 3.12 | 4.0 | GIR | Official | ||||
Ada | GtkAda | Partial | Partial | ? | Yes | No | GPL-3 | Supported up to 3.14. [3] [4] |
C | GTK | Yes | Yes | Yes | — | Yes | LGPL-2.1 | Native, no binding needed. |
C++ | gtkmm | Yes | Yes | Yes | No | Yes | LGPL-2.1 | |
C# and other CLI languages | Gtk# | Partial | No | ? | No | Yes | LGPL-2.1 | Support for GTK 2 is available up to 2.12. [5] |
GtkSharp | No | Yes | No | No | No | LGPL-2.1 | Support for GTK 3 is available up to 3.22. | |
Gir.Core | ? | ? | Partial | Partial | No | MIT | ||
Crystal | crystal-gobject | No | Yes | Partial | Yes | No | BSD | |
gtk4.cr | No | No | Yes | Yes | No | MIT | ||
D | GtkD | Yes | Yes | ? | Yes | No | LGPL-3 with exceptions [6] | Supported since 2.12 |
Erlang | gtknode | Partial | No | ? | No | No | MIT [7] | No, partly supported up to 2.16 |
Fortran | gtk-fortran | Partial | Partial | Partial | No | No | GPL-3 | Supported since 2.24. Supports GTK 3 and GTK 4. |
FreeBASIC | FreeBASIC GTK bindings | Yes | Partial | ? | No | No | LGPL-3 with exception | Supported up to 3.4 and since 2.8, integrated into the core distribution. |
Gambas | Gambas gb.gtk component | Yes | Partial | ? | No | No | GPL-2 | Secondary to the primary Qt components |
Genie | Genie | Yes | Yes | Yes | Yes | Yes | LGPL-2.1 | language written for GObject system |
Go | go-gir-generator | ? | ? | ? | Yes | No | GPL-3 | |
gotk3 | No | Partial | ? | No | No | ISC [8] | ||
Guile | guile-gnome | Partial | No | ? | No | No | GPL-2 | supported up to 2.12, partly supported on 2.14 |
Haskell | Gtk2Hs | Yes | Partial | ? | No | No | LGPL-2.1 | Gtk2Hs is a set of Haskell bindings to many of the libraries included in the GTK/GNOME platform. |
haskell-gi | No | Yes | Yes | Yes | No | LGPL-2.1 | Generate Haskell bindings for GObject Introspection capable libraries | |
J | J GTK addon | Partial | No | ? | No | No | GPL-3 | |
Java and other JVM languages | java-gnome | Yes | Yes | No | No | Yes | GPL-2 with exception | Unavailable on Microsoft Windows |
Julia | Gtk.jl | Yes | Yes | ? | No | No | MIT | Includes Glib support |
JavaScript | Gjs | Yes | Yes | Yes | Yes | Yes | MIT | GNOME wiki, based on Mozilla's SpiderMonkey |
Node-Gtk | No | Yes | Partial | Yes | No | MIT | Dynamic Node.js binding to GObject libraries using GObject-Introspection. | |
Seed | Yes | Yes | ? | Yes | Yes | LGPL-2.1 | GNOME wiki, based on WebKit's JavaScriptCore | |
Kotlin/Native | gtk-kt | No | Partial | Partial | Partial | No | AGPL-3.0 | Partial due to being In development, Usable to an extent. |
gtk-kn | No | No | No | Partial | No | LGPL-3 | Partial due to being In development, Usable to an extent. | |
Lua | LGI | Partial | Yes | ? | Yes | No | MIT [9] | Dynamic Lua binding to GObject libraries using GObject-Introspection. |
lgob | No | Yes | ? | Yes | No | LGPL-3 | lgob provides bindings of GObject-based libraries for Lua 5.1. | |
Nim | gintro | No | Yes | Yes | Yes | No | MIT | High level GObject-Introspection based GTK3/GTK4 bindings for Nim language |
OCaml | LablGtk | Partial | Partial | ? | No | No | LGPL-2.1 with exception | No, supported up to 2.16 |
ooRexx | RexxGTK | Partial | No | ? | No | No | CPL | Yes, 2.0 or later |
Objective-C | CoreGTK | No | Partial | ? | No | No | LGPL-2.1 | |
ObGTK | Partial | No | ? | No | No | LGPL-2.1 | ||
Objective-C GTK | Partial | No | ? | No | No | LGPL-2.1 | ||
Pascal | Free Pascal gtk package | Yes | Yes | ? | No | No | LGPL-3 with exception | Supported up to 2.24, integrated into the core distribution. Gtk 3.0 bindings are being developed in the Lazarus-ccr project. [10] |
Perl | Gtk2-Perl | Yes | Yes | No | Yes | Yes | LGPL-2.1 | |
PHP | PHP-GTK | Partial | Partial [11] | ? | No | No | LGPL-2.1 | PHP until 5.2, GTK is GTK2 |
Prolog | PLGI | Partial | Yes | ? | Yes | No | LGPL-2.1 | Dynamic Prolog binding to GObject libraries using GObject-Introspection. |
Python | pgi | Partial | Partial | ? | Yes | No | LGPL-2.1 | GObject Introspection Bindings for PyPy. |
pygir-ctypes | Partial | Partial | ? | Yes | No | BSD | Pure Python GObject Introspection Repository (GIR) wrapper using ctypes. | |
PyGObject | Yes | Yes | Yes | Yes | Yes | LGPL-2.1 | since 2.22 [12] | |
PyGTK | Yes | No | No | No | Yes | LGPL-2.1 | static bindings, use PyGObject | |
R | RGtk2 | Partial | No | ? | No | No | GPL-2 | RGtk2.pdf |
Racket | gir | ? | ? | ? | Yes | No | MIT [13] | |
Ruby | GirFFI-Gtk | Partial | Partial | ? | Yes | No | LGPL-2.1 | GirFFI-based bindings for GTK. Supports both GTK+ 2 and GTK+ 3. |
Ruby-GNOME2 | Partial | Yes | Yes | No | No | MIT License | Partial, supported up to 2.12, partly supported since 2.14 [14] | |
Rust | gtk-rs | No | Yes | Yes | Yes | No | MIT [15] | |
gi-rust | No | Yes | ? | Yes | No | LGPL-2.1 | ||
Smalltalk | GNU Smalltalk GTK+ bindings | Yes | No | ? | No | No | GPL-2 | |
Smalltalk YX GTK plugin | Yes | No | ? | No | No | MIT | ||
SqueakGtk | Partial | No | ? | No | No | MIT | ||
Standard ML | Giraffe Library | No | Yes | ? | Yes | No | LGPL-2.1 | |
Tcl | Gnocl | Yes | No | ? | No | No | BSD | |
Vala | Vala | Yes | Yes | Yes | Yes | Yes | LGPL-2.1 | language written for GObject system |
Wrapl | Wrapl GTK+ module | Partial | No | ? | No | No | GPL-3 | No, but almost full up to 2.22 |
Developer(s) | Xamarin |
---|---|
Initial release | March 12, 2004 |
Stable release | 2.12.41 [16] / September 22, 2016 |
Preview release | 2.99.3 (for GTK3) [16] / June 6, 2014 |
Repository | https://github.com/mono/gtk-sharp |
Written in | C#, XML, Perl, C |
Operating system | Windows, macOS, Linux |
Type | Widget toolkit |
License | GNU Lesser General Public License |
Website | mono-project |
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. [17]
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 [update] , 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. [18]
Qt is a cross-platform application development framework for creating graphical user interfaces as well as cross-platform applications that run on various software and hardware platforms such as Linux, Windows, macOS, Android or embedded systems with little or no change in the underlying codebase while still being a native application with native capabilities and speed.
Fast Light Toolkit (FLTK) is a cross-platform widget library for graphical user interfaces (GUIs), developed by Bill Spitzak and others. Made to accommodate 3D graphics programming, it has an interface to OpenGL, but it is also suitable for general GUI programming.
Glade Interface Designer is a graphical user interface builder for GTK, with additional components for GNOME. In its third version, Glade is programming language–independent, and does not produce code for events, but rather an XML file that is then used with an appropriate binding.
PyQt is a Python binding of the cross-platform GUI toolkit Qt, implemented as a Python plug-in. PyQt is free software developed by the British firm Riverbank Computing. It is available under similar terms to Qt versions older than 4.5; this means a variety of licenses including GNU General Public License (GPL) and commercial license, but not the GNU Lesser General Public License (LGPL). PyQt supports Microsoft Windows as well as various kinds of UNIX, including Linux and MacOS.
PyGTK is a set of Python wrappers for the GTK graphical user interface library. PyGTK is free software and licensed under the LGPL. It is analogous to PyQt/PySide and wxPython, the Python wrappers for Qt and wxWidgets, respectively. Its original author is GNOME developer James Henstridge. There are six people in the core development team, with various other people who have submitted patches and bug reports. PyGTK has been selected as the environment of choice for applications running on One Laptop Per Child systems.
The FOX toolkit is an open-source, cross-platform widget toolkit, i.e. a library of basic elements for building a graphical user interface (GUI). FOX stands for Free Objects for X.
A graphical user interface builder, also known as GUI designer or sometimes RAD IDE, is a software development tool that simplifies the creation of GUIs by allowing the designer to arrange graphical control elements using a drag-and-drop WYSIWYG editor. Without a GUI builder, a GUI must be built by manually specifying each widget's parameters in the source code, with no visual feedback until the program is run. Such tools are usually called the term RAD IDE.
The GLib Object System, or GObject, is a free software library providing a portable object system and transparent cross-language interoperability. GObject is designed for use both directly in C programs to provide object-oriented C-based APIs and through bindings to other languages to provide transparent cross-language interoperability, e.g. PyGObject.
GLib is a bundle of three low-level system libraries written in C and developed mainly by GNOME. GLib's code was separated from GTK, so it can be used by software other than GNOME and has been developed in parallel ever since.
The following tables list notable software packages that are nominal IDEs; standalone tools such as source-code editors and GUI builders are not included. These IDEs are listed in alphabetic order of the supported language.
MonoDevelop is a discontinued open-source integrated development environment for Linux, macOS, and Windows. Its primary focus is development of projects that use Mono and .NET Framework. MonoDevelop integrates features similar to those of NetBeans and Microsoft Visual Studio, such as automatic code completion, source control, a graphical user interface (GUI), and Web designer. MonoDevelop integrates a Gtk# GUI designer called Stetic. It supports Boo, C, C++, C#, CIL, D, F#, Java, Oxygene, Vala, JavaScript, TypeScript, and Visual Basic.NET. Although there is no word from the developers that it has been discontinued, nonetheless, it hasn't been updated in 4 years and is no longer installable on major operating systems, such as Ubuntu 22.04 and above.
Vala is an object-oriented programming language with a self-hosting compiler that generates C code and uses the GObject system.
java-gnome is a set of language bindings for the Java programming language for use in the GNOME desktop environment. It is part of the official GNOME language bindings suite and provides a set of libraries allowing developers to write computer programs for GNOME using the Java programming language and the GTK cross-platform widget toolkit.
Enthought, Inc. is a software company based in Austin, Texas, United States that develops scientific and analytic computing solutions using primarily the Python programming language. It is best known for the early development and maintenance of the SciPy library of mathematics, science, and engineering algorithms and for its Python for scientific computing distribution Enthought Canopy.
GTK is a free software cross-platform widget toolkit for creating graphical user interfaces (GUIs). 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.
GNOME originally an acronym for GNU Network Object Model Environment, is a free and open-source desktop environment for Linux and other Unix-like operating systems.
mpv is free and open-source media player software based on MPlayer, mplayer2 and FFmpeg. It runs on several operating systems, including Unix-like operating systems and Microsoft Windows, along with having an Android port called mpv-android. It is cross-platform, running on ARM, MIPS, PowerPC, RISC-V, s390x, x86/IA-32, x86-64, and some other by 3rd party.
{{cite web}}
: CS1 maint: numeric names: authors list (link)