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 Archived 2016-03-09 at the Wayback Machine |
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 |
{{cite web}}
: CS1 maint: numeric names: authors list (link)