Jump to content

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.

Language Name Supported? LicenseNotes
2.24 3.12 4.0 GIROfficial
AdaGtkAdaPartialPartial ?YesNo GPL-3Supported up to 3.14.[3][4]
CGTK YesYesYesYes LGPL-2.1Native, no binding needed.
C++gtkmmYesYesYesNoYes LGPL-2.1
C# and other CLI languagesGtk#PartialNo ?NoYes LGPL-2.1Support for GTK 2 is available up to 2.12.[5]
GtkSharpNoYes NoNoNo LGPL-2.1Support for GTK 3 is available up to 3.22.
Gir.Core??PartialPartialNo MIT
Crystalcrystal-gobjectNoYes PartialYesNo BSD
gtk4.crNoNo YesYesNo MIT
DGtkDYesYes ?YesNo LGPL-3 with exceptions[6]Supported since 2.12
ErlanggtknodePartialNo ?NoNo MIT[7]No, partly supported up to 2.16
Fortrangtk-fortranPartialPartialPartialNoNo GPL-3Supported since 2.24. Supports GTK 3 and GTK 4.
FreeBASICFreeBASIC GTK bindings YesPartial ?NoNo LGPL-3 with exception Supported up to 3.4 and since 2.8, integrated into the core distribution.
GambasGambas gb.gtk componentYesPartial ?NoNo GPL-2Secondary to the primary Qt components
Genie GenieYesYes YesYesYes LGPL-2.1language written for GObject system
Gogo-gir-generator???YesNo GPL-3
gotk3NoPartial ?NoNo ISC[8]
Guileguile-gnomePartialNo ?NoNo GPL-2supported up to 2.12, partly supported on 2.14
HaskellGtk2HsYesPartial ?NoNo LGPL-2.1Gtk2Hs is a set of Haskell bindings to many of the libraries included in the GTK/GNOME platform.
haskell-giNoYes YesYesNo LGPL-2.1Generate Haskell bindings for GObject Introspection capable libraries
JJ GTK addonPartialNo ?NoNo GPL-3
Java and other JVM languagesjava-gnomeYesYes NoNoYes GPL-2 with exception Unavailable on Microsoft Windows
JuliaGtk4.jlYesYes YesNoNo MITIncludes Glib support
JavaScriptGjsYesYes YesYesYes MITGNOME wiki, based on Mozilla's SpiderMonkey
Node-GtkNoYes PartialYesNo MITDynamic Node.js binding to GObject libraries using GObject-Introspection.
SeedYesYes ?YesYes LGPL-2.1GNOME wiki, based on WebKit's JavaScriptCore
Kotlin/Nativegtk-ktNoPartialPartialPartialNo AGPL-3.0Partial due to being In development, Usable to an extent.
gtk-knNoNoNoPartialNo LGPL-3Partial due to being In development, Usable to an extent.
LuaLGIPartialYes ?YesNo MIT[9]Dynamic Lua binding to GObject libraries using GObject-Introspection.
lgobNoYes ?YesNo LGPL-3lgob provides bindings of GObject-based libraries for Lua 5.1.
NimgintroNoYes YesYesNo MITHigh level GObject-Introspection based GTK3/GTK4 bindings for Nim language
OCamlLablGtkPartialPartial ?NoNo LGPL-2.1 with exception No, supported up to 2.16
ooRexxRexxGTKPartialNo ?NoNo CPLYes, 2.0 or later
Objective-CCoreGTKNoPartial ?NoNo LGPL-2.1
ObGTKPartialNo ?NoNo LGPL-2.1
Objective-C GTKPartialNo ?NoNo LGPL-2.1
PascalFree Pascalgtk packageYesYes ?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]
PerlGtk2-PerlYesYes NoYesYes LGPL-2.1
PHPPHP-GTKPartialPartial[11]?NoNo LGPL-2.1PHP until 5.2, GTK is GTK2
PrologPLGIPartialYes ?YesNo LGPL-2.1Dynamic Prolog binding to GObject libraries using GObject-Introspection.
PythonpgiPartialPartial ?YesNo LGPL-2.1GObject Introspection Bindings for PyPy.
pygir-ctypesPartialPartial ?YesNo BSDPure Python GObject Introspection Repository (GIR) wrapper using ctypes.
PyGObjectYesYes YesYesYes LGPL-2.1since 2.22[12]
PyGTKYesNo NoNoYes LGPL-2.1static bindings, use PyGObject
RRGtk2PartialNo ?NoNo GPL-2RGtk2.pdfArchived 2016-03-09 at the Wayback Machine
Racketgir???YesNo MIT[13]
RubyGirFFI-GtkPartialPartial ?YesNo LGPL-2.1GirFFI-based bindings for GTK. Supports both GTK+ 2 and GTK+ 3.
Ruby-GNOME2Archived 2008-08-21 at the Wayback MachinePartialYes YesNoNo MIT LicensePartial, supported up to 2.12, partly supported since 2.14[14]
Rustgtk-rsNoYes YesYesNo MIT[15]
gi-rustNoYes ?YesNo LGPL-2.1
SmalltalkGNU SmalltalkGTK+ bindingsYesNo ?NoNo GPL-2
Smalltalk YX GTK plugin YesNo ?NoNo MIT
SqueakGtkPartialNo ?NoNo MIT
Standard MLGiraffe LibraryNoYes ?YesNo LGPL-2.1
TclGnoclYesNo ?NoNo BSD
ValaValaYesYes YesYesYes LGPL-2.1language written for GObject system
WraplWrapl GTK+ modulePartialNo ?NoNo GPL-3No, but almost full up to 2.22

Gtk#

[edit]
Gtk#
Developer(s)Xamarin
Initial releaseMarch 12, 2004; 21 years ago (2004-03-12)
Stable release
2.12.41[16] / September 22, 2016; 8 years ago (2016-09-22)
Preview release
2.99.3 (for GTK3)[16] / June 6, 2014; 10 years ago (2014-06-06)
Repositoryhttps://github.com/mono/gtk-sharp
Written inC#, XML, Perl, C
Operating systemWindows, macOS, Linux
TypeWidget toolkit
LicenseGNU Lesser General Public License
Websitemono-project.com/GtkSharp

Gtk# is a set of .NET Framework bindings for the GTK graphical user interface (GUI) toolkit and assorted GNOMElibraries. The library facilitates building graphical GNOME applications using Mono or any other compliant Common Language Runtime (CLR). Gtk# is an event-driven system like any other modern windowing library where every widget allows associating handler methods, which get called when certain events occur.[citation needed]

Applications built using Gtk# will run on many platforms including Linux, Windows and macOS. The Mono packages for Windows include GTK, Gtk# and a native theme to make applications look like native Windows applications. Starting with Mono 1.9, running Gtk# applications on macOS no longer requires running an X11 server.[17]

Glade Interface Designer can be used with the Glade# bindings to easily design GUI applications. A GUI designer named Stetic is integrated with the MonoDevelopintegrated development environment (IDE).

In addition to support the standard GTK/GNOME stack of development tools, the gtk-dotnet.dll assembly provides a bridge to consume functionality available on the .NET stack. At this point this includes the functionality to use System.Drawing to draw on a widget.[citation needed]

As of September 2020, Gtk# support for Gtk3 remains in the preview phase and forked projects, such as GtkSharp, have been founded to provide full Gtk3 support for C# and other CLI languages. The lack of a released version of Gtk# with support for Gtk3 was cited as a reason to remove the Banshee media player in Ubuntu 12.04.[18]

See also

[edit]

References

[edit]
  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.{{cite web}}: CS1 maint: numeric names: authors list (link)
  15. ^"GTK-rs license". GitHub. 17 November 2021.
  16. ^ ab"Gtk# is a Mono/.NET binding to the cross platform Gtk+ GUI toolkit and the foundation of most GUI apps built with Mono: mono/gtk-sharp". November 16, 2019. Archived from the original on March 11, 2016. Retrieved September 1, 2016 – via GitHub.
  17. ^"Download Gtk#". The GTK+ Project. Archived from the original on December 14, 2013. Retrieved December 23, 2014.
  18. ^"'Bansheegeddon' may see Banshee, Mono dropped from Ubuntu default". ITWorld. Archived from the original on July 10, 2015. Retrieved August 31, 2015.
close