List of language bindings for GTK explained

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.

LanguageNameSupported?LicenseNotes
2.243.124.0GIROfficial
AdaGtkAda?Supported up to 3.14.[3] [4]
CGTKNative, no binding needed.
C++gtkmm
C# and other CLI languagesGtk#?Support for GTK 2 is available up to 2.12.[5]
GtkSharpSupport for GTK 3 is available up to 3.22.
Gir.Core??
Crystalcrystal-gobject
gtk4.cr
DGtkD? with exceptions[6] Supported since 2.12
Erlanggtknode?[7] No, partly supported up to 2.16
Fortrangtk-fortranSupported since 2.24. Supports GTK 3 and GTK 4.
FreeBASICFreeBASIC GTK bindings? with exceptionSupported up to 3.4 and since 2.8, integrated into the core distribution.
GambasGambas gb.gtk component?Secondary to the primary Qt components
GenieGenielanguage written for GObject system
Gogo-gir-generator?
gotk3?[8]
Guileguile-gnome?supported up to 2.12, partly supported on 2.14
HaskellGtk2Hs?Gtk2Hs is a set of Haskell bindings to many of the libraries included in the GTK/GNOME platform.
haskell-giGenerate Haskell bindings for GObject Introspection capable libraries
JJ GTK addon?
Java and other JVM languagesjava-gnomeUnavailable on Microsoft Windows
JuliaGtk.jl?Includes Glib support
JavaScriptGjsGNOME wiki, based on Mozilla's SpiderMonkey
Node-GtkDynamic Node.js binding to GObject libraries using GObject-Introspection.
Seed?GNOME wiki, based on WebKit's JavaScriptCore
Kotlin/Nativegtk-ktgtk-ktPartial due to being In development, Usable to an extent.
LuaLGI?[9] Dynamic Lua binding to GObject libraries using GObject-Introspection.
lgob?lgob provides bindings of GObject-based libraries for Lua 5.1.
Nim[https: / github.com StefanSalewski gintro gintro] gintroHigh level GObject-Introspection based GTK3/GTK4 bindings for Nim language
OCamlLablGtk?No, supported up to 2.16
ooRexxRexxGTK?Yes, 2.0 or later
Objective-CCoreGTK?
ObGTK?
Objective-C GTK?
PascalFree Pascal gtk package? with exceptionSupported up to 2.24, integrated into the core distribution. Gtk 3.0 bindings are being developed in the Lazarus-ccr project.[10]
PerlGtk2-Perl
PHPPHP-GTK[11] ?PHP until 5.2, GTK is GTK2
PrologPLGI?Dynamic Prolog binding to GObject libraries using GObject-Introspection.
Pythonpgi?GObject Introspection Bindings for PyPy.
pygir-ctypes?Pure Python GObject Introspection Repository (GIR) wrapper using ctypes.
PyGObjectsince 2.22[12]
PyGTKstatic bindings, use PyGObject
RRGtk2?RGtk2.pdf
Racketgir???[13]
RubyGirFFI-Gtk?GirFFI-based bindings for GTK. Supports both GTK+ 2 and GTK+ 3.
Ruby-GNOME2Partial, supported up to 2.12, partly supported since 2.14[14]
Rustgtk-rs[15]
gi-rust?
SmalltalkGNU Smalltalk GTK+ bindings?
Smalltalk YX GTK plugin?
SqueakGtk?
Standard MLGiraffe Library?
TclGnocl?
ValaValalanguage written for GObject system
WraplWrapl GTK+ module?No, but almost full up to 2.22

See also

Notes and References

  1. Web site: Language Bindings . The GTK Project . 2013-05-18 . https://web.archive.org/web/20110713100421/http://www.gtk.org/language-bindings.php . 2011-07-13 . dead .
  2. Web site: GObject Introspection.
  3. Web site: 1. Introduction: What is GtkAda ? — GtkAda 22.0w documentation.
  4. Web site: 10. Object-oriented features — GtkAda 22.0w documentation.
  5. Web site: GtkSharp | Mono.
  6. Web site: GtkD License LGPL-3 with additional exceptions. GitHub. 19 November 2021.
  7. Web site: gtknode license. GitHub. 11 March 2021.
  8. Web site: gotk3 license. GitHub. 17 August 2021.
  9. Web site: LGI license. GitHub. 20 November 2021.
  10. http://wiki.freepascal.org/Gtk%2B3
  11. Web site: Attention: created branch dev-php-gtk3. Alexandre Pereira Bühler. PHP-GTK General Mailing List. 2015-06-22.
  12. Web site: PyGObject History . 2013-08-29.
  13. Web site: 1. Main interface . . 6 February 2022 .
  14. Web site: gtk3 / Rubygems . 2013-05-07 . Ruby-GNOME2 Project Team.
  15. Web site: GTK-rs license. GitHub. 17 November 2021.