This article uses bare URLs, which are uninformative and vulnerable to link rot. Please consider converting them to full citations to ensure the article remains verifiable and maintains a consistent citation style. Several templates and tools are available to assist in formatting, such as reFill (documentation) and Citation bot (documentation).(August 2022) (Learn how and when to remove this template message)
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.
GObject (GOB) was initially written as a central component of GTK, but outsourced into GLib.
GObject Introspection is a middleware layer between C libraries (using GObject) and language bindings, e.g. PyGObject uses this, while PyGTK does not.[2]
Official GNOME Bindings follow the GNOME release schedule which guarantees API stability and time-based releases.
Glade Interface Designer
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.
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
^"Language Bindings". The GTK Project. Archived from the original on 2011-07-13. Retrieved 2013-05-18.
^"GObject Introspection".
^"1. Introduction: What is GtkAda ? — GtkAda 22.0w documentation".
^"10. Object-oriented features — GtkAda 22.0w documentation".
^"GtkSharp | Mono".
^"GtkD License LGPL-3 with additional exceptions". GitHub. 19 November 2021.
^"gtknode license". GitHub. 11 March 2021.
^"gotk3 license". GitHub. 17 August 2021.
^"LGI license". GitHub. 20 November 2021.
^http://wiki.freepascal.org/Gtk%2B3
^Alexandre Pereira Bühler (2015-06-22). "Attention: created branch dev-php-gtk3". PHP-GTK General Mailing List.
^"PyGObject History". Retrieved 2013-08-29.
^"1. Main interface". GitHub. 6 February 2022.
^Ruby-GNOME2 Project Team. "gtk3 / Rubygems". Retrieved 2013-05-07.{{cite web}}: CS1 maint: numeric names: authors list (link)
^"GTK-rs license". GitHub. 17 November 2021.
and 21 Related for: List of language bindings for GTK information
transition to GTK version 3 and be replaced with PyGObject, which uses GObject Introspection to generate bindingsfor Python and other languages on the fly...
Python, Vala, and others. GtkSharp, not to be confused with Gtk#, supports GTK 3. Gtk# is a set of .NET Framework bindingsfor the GTK graphical user interface...
range oflanguagebindingsfor various programming languages that implement some or all of its feature set. ListoflanguagebindingsforGTK+ Listof language...
java-gnome provides bindings to the GTK toolkit and other libraries of the GNOME desktop environment Qt Jambi, the official Java binding to Qt from Trolltech...
range ofbindingsfor various languages. FLTK was mainly designed for, and is written in, the programming language C++. However, bindings exist for other...
GTK toolkit. Guayadeque Music Player is a free and open-source audio player written in C++ using the wxWidgets toolkit. Muine is an audio player for the...
gtkmm (formerly known as gtk-- or gtk minus minus) is the official C++ interface for the popular GUI library GTK. gtkmm is free software distributed under...
Boot-Loader GERAN—GSM EDGE Radio Access Network GSM—Global System for Mobile Communications GTK/GTK+—GIMP Toolkit GUI—Graphical User Interface GUID—Globally Unique...
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...
language may be used in another language if bindings are written; GStreamer has a range ofbindingsfor various languages such as Go, Python, Rust, Vala...
portions of it). CEF runs on Linux, macOS, and Windows. It has many languagebindings including C, C++, Go, Java, and Python. There are two versions of Chromium...
based completely on free software, the project gained GTK drag-and-drop support, native language support, and improved configurability. Xfce was uploaded...
for current available input method libraries. Bindings to uim and m17n [1] library are available (as of August 2007). To act as a language engine of IIIMF...