List of language bindings for GTK

From Wikipedia, the free encyclopedia

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 N/A 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 LGPL-2.1 Support for GTK 3 is available up to 3.22.
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, partially 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 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, partially 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 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 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
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 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 ? 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 LGPL-2.1 since 2.22[12]
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[13]
Rust gtk-rs No Yes ? Yes No MIT[14]
gi-rust No Yes ? Yes No LGPL-2.1
Smalltalk GNU Smalltalk GTK+ bindings Yes No ? No No GPL-2
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 GTK+ module Partial No ? No No GPL-3 No, but almost full up to 2.22

See also[]

References[]

  1. ^ "Language Bindings". The GTK Project. Archived from the original on 2011-07-13. Retrieved 2013-05-18.
  2. ^ "GObject Introspection".
  3. ^ "1. Introduction: What is GtkAda ? — GtkAda 22.0w documentation".
  4. ^ "10. Object-oriented features — GtkAda 22.0w documentation".
  5. ^ "GtkSharp | Mono".
  6. ^ "GtkD License LGPL-3 with additional exceptions". GitHub. 19 November 2021.
  7. ^ "gtknode license". GitHub. 11 March 2021.
  8. ^ "gotk3 license". GitHub. 17 August 2021.
  9. ^ "LGI license". GitHub. 20 November 2021.
  10. ^ http://wiki.freepascal.org/Gtk%2B3
  11. ^ Alexandre Pereira Bühler (2015-06-22). "Attention: created branch dev-php-gtk3". PHP-GTK General Mailing List.
  12. ^ "PyGObject History". Retrieved 2013-08-29.
  13. ^ Ruby-GNOME2 Project Team. "gtk3 / Rubygems". Retrieved 2013-05-07.
  14. ^ "GTK-rs license". GitHub. 17 November 2021.
Retrieved from ""