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. 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 PartialPartial ?YesNo GPL-3 Supported up to 3.14.[3][4]
C GTK YesYesYesYes LGPL-2.1 Native, no binding needed.
C++ gtkmm YesYesYesNoYes LGPL-2.1
C# and other CLI languages Gtk# PartialNo ?NoYes LGPL-2.1 Support for GTK 2 is available up to 2.12.[5]
GtkSharp NoYes NoNoNo LGPL-2.1 Support for GTK 3 is available up to 3.22.
Gir.Core ?? PartialPartialNo MIT
Crystal crystal-gobject NoYes PartialYesNo BSD
gtk4.cr NoNo YesYesNo MIT
D GtkD YesYes ?YesNo LGPL-3 with exceptions[6] Supported since 2.12
Erlang gtknode PartialNo ?NoNo MIT[7] No, partly supported up to 2.16
Fortran gtk-fortran PartialPartialPartialNoNo GPL-3 Supported since 2.24. Supports GTK 3 and GTK 4.
FreeBASIC FreeBASIC GTK bindings YesPartial ?NoNo LGPL-3 with exception Supported up to 3.4 and since 2.8, integrated into the core distribution.
Gambas Gambas gb.gtk component YesPartial ?NoNo GPL-2 Secondary to the primary Qt components
Genie Genie YesYes YesYesYes LGPL-2.1 language written for GObject system
Go go-gir-generator ?? ?YesNo GPL-3
gotk3 NoPartial ?NoNo ISC[8]
Guile guile-gnome PartialNo ?NoNo GPL-2 supported up to 2.12, partly supported on 2.14
Haskell Gtk2Hs YesPartial ?NoNo LGPL-2.1 Gtk2Hs is a set of Haskell bindings to many of the libraries included in the GTK/GNOME platform.
haskell-gi NoYes YesYesNo LGPL-2.1 Generate Haskell bindings for GObject Introspection capable libraries
J J GTK addon PartialNo ?NoNo GPL-3
Java and other JVM languages java-gnome YesYes NoNoYes GPL-2 with exception Unavailable on Microsoft Windows
Julia Gtk.jl YesYes ?NoNo MIT Includes Glib support
JavaScript Gjs YesYes YesYesYes MIT GNOME wiki, based on Mozilla's SpiderMonkey
Node-Gtk NoYes PartialYesNo MIT Dynamic Node.js binding to GObject libraries using GObject-Introspection.
Seed YesYes ?YesYes LGPL-2.1 GNOME wiki, based on WebKit's JavaScriptCore
Kotlin/Native gtk-ktNoPartialPartialPartialNo AGPL-3.0 Partial due to being In development, Usable to an extent.
Lua LGI PartialYes ?YesNo MIT[9] Dynamic Lua binding to GObject libraries using GObject-Introspection.
lgob NoYes ?YesNo LGPL-3 lgob provides bindings of GObject-based libraries for Lua 5.1.
Nim gintroNoYes YesYesNo MIT High level GObject-Introspection based GTK3/GTK4 bindings for Nim language
OCaml LablGtk PartialPartial ?NoNo LGPL-2.1 with exception No, supported up to 2.16
ooRexx RexxGTK PartialNo ?NoNo CPL Yes, 2.0 or later
Objective-C CoreGTK NoPartial ?NoNo LGPL-2.1
ObGTK PartialNo ?NoNo LGPL-2.1
Objective-C GTK PartialNo ?NoNo LGPL-2.1
Pascal Free Pascal gtk package YesYes ?NoNo 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 YesYes NoYesYes LGPL-2.1
PHP PHP-GTK PartialPartial[11] ?NoNo LGPL-2.1 PHP until 5.2, GTK is GTK2
Prolog PLGI PartialYes ?YesNo LGPL-2.1 Dynamic Prolog binding to GObject libraries using GObject-Introspection.
Python pgi PartialPartial ?YesNo LGPL-2.1 GObject Introspection Bindings for PyPy.
pygir-ctypes PartialPartial ?YesNo BSD Pure Python GObject Introspection Repository (GIR) wrapper using ctypes.
PyGObject YesYes YesYesYes LGPL-2.1 since 2.22[12]
PyGTK YesNo NoNoYes LGPL-2.1 static bindings, use PyGObject
R RGtk2 PartialNo ?NoNo GPL-2 RGtk2.pdf
Racket gir ?? ?YesNo MIT[13]
Ruby GirFFI-Gtk PartialPartial ?YesNo LGPL-2.1 GirFFI-based bindings for GTK. Supports both GTK+ 2 and GTK+ 3.
Ruby-GNOME2 PartialYes YesNoNo MIT License Partial, supported up to 2.12, partly supported since 2.14[14]
Rust gtk-rs NoYes YesYesNo MIT[15]
gi-rust NoYes ?YesNo LGPL-2.1
Smalltalk GNU Smalltalk GTK+ bindings YesNo ?NoNo GPL-2
Smalltalk YX GTK plugin YesNo ?NoNo MIT
SqueakGtk PartialNo ?NoNo MIT
Standard ML Giraffe Library NoYes ?YesNo LGPL-2.1
Tcl Gnocl YesNo ?NoNo BSD
Vala Vala YesYes YesYesYes LGPL-2.1 language written for GObject system
Wrapl Wrapl GTK+ module PartialNo ?NoNo 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. "1. Main interface". GitHub. 6 February 2022.
  14. Ruby-GNOME2 Project Team. "gtk3 / Rubygems". Retrieved 2013-05-07.
  15. "GTK-rs license". GitHub. 17 November 2021.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.