List of language bindings for GTK+
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.
Language |
Name |
Supported? |
License |
Notes |
2.24 |
3.12 |
GIR |
Official |
Ada |
GtkAda |
Partial | Partial | No | No |
GPL-3 |
Supported up to 3.8.[3] |
C |
GTK+ |
Yes | Yes | N/A | Yes |
LGPL-2.1 |
Native, no binding needed. |
C++ |
gtkmm |
Yes | Yes | No | Yes |
LGPL-2.1 |
|
C# and other CLI languages |
Gtk# |
Partial | Partial | No | Yes |
LGPL-2.1 |
Supported up to 2.12. 3.0 support is in development.[4] |
D |
GtkD |
Yes | Yes | No | No |
LGPL-3 with exceptions[5] |
Supported since 2.12 |
Erlang |
gtknode |
Partial | No | No | No |
MIT[6] |
No, partially supported up to 2.16 |
Fortran |
gtk-fortran |
Partial | Partial | No | No |
GPL-3 |
Partially supported since 2.24. Was supported from 2.12 until 2.18 |
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 |
Partial | No | No | No |
GPL-2 |
GTK+ 3 support is in development |
Genie |
Genie |
Yes | Yes | Yes | Yes |
LGPL-2.1 |
language written for GObject system |
Go |
go-gtk |
Partial | No | No | No |
BSD/LGPL-2.1 |
No, partially supported on 2.24 |
gotk3 |
No | Partial | No | No |
ISC[7] |
|
gogobject |
No | Partial | Yes | No |
MIT |
|
Guile |
guile-gnome |
Partial | No | No | No |
GPL-2 |
supported up to 2.12, partially supported on 2.14 |
Haskell |
Gtk2Hs |
Yes | Yes | No | No |
LGPL-2.1 |
Gtk2Hs is a set of Haskell bindings to many of the libraries included in the GTK+/GNOME platform. |
J |
J GTK addon |
Partial | No | No | No |
GPL-3 |
|
Java and other JVM languages |
java-gnome |
Yes | Yes | 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 |
MIT |
GNOME wiki, based on Mozilla's SpiderMonkey |
Seed |
Yes | Yes | Yes | Yes |
LGPL-2.1 |
GNOME wiki, based on WebKit's JavaScriptCore |
Lua |
LGI |
Partial | Yes | Yes | No |
MIT[8] |
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. |
OCaml |
LablGtk |
Partial | No | 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.[9] |
Perl |
Gtk2-Perl |
Yes | Yes | Yes | Yes |
LGPL-2.1 |
|
PHP |
PHP-GTK |
Partial | Partial[10] | No | No |
LGPL-2.1 |
|
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 |
LGPL-2.1 |
since 2.22[11] |
PyGTK |
Yes | No | No | Yes |
LGPL-2.1 |
static bindings, use PyGObject |
R |
RGtk2 |
Partial | No | No | No |
GPL-2 |
RGtk2.pdf |
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 | No | No |
MIT License |
Partial, supported up to 2.12, partially supported since 2.14[12] |
Rust |
gtk-rs |
No | Yes | Yes | No |
LGPL-2.1 |
|
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 |
|
Tcl |
Gnocl |
Yes | No | No | No |
BSD |
|
Vala |
Vala |
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 |
See also
References