List of language bindings for GTK

Last updated

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? License Notes
2.243.124.0 GIR Official
Ada GtkAda PartialPartial?YesNo GPL-3 Supported up to 3.14. [3] [4]
C GTKYesYesYesYes 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 NoYesNoNoNo LGPL-2.1 Support for GTK 3 is available up to 3.22.
Gir.Core ??PartialPartialNo MIT
Crystal crystal-gobject NoYesPartialYesNo BSD
gtk4.cr NoNoYesYesNo 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 bindingsYesPartial?NoNo LGPL-3 with exceptionSupported 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 YesYesYesYesYes 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 NoYesYesYesNo 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 YesYesNoNoYes GPL-2 with exceptionUnavailable on Microsoft Windows
Julia Gtk.jl YesYes?NoNo MIT Includes Glib support
JavaScript Gjs YesYesYesYesYes MIT GNOME wiki, based on Mozilla's SpiderMonkey
Node-Gtk NoYesPartialYesNo 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-kt NoPartialPartialPartialNo 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 gintro NoYesYesYesNo MIT High level GObject-Introspection based GTK3/GTK4 bindings for Nim language
OCaml LablGtk PartialPartial?NoNo LGPL-2.1 with exceptionNo, 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 exceptionSupported 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 YesYesNoYesYes 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 YesYesYesYesYes LGPL-2.1 since 2.22 [12]
PyGTK YesNoNoNoYes 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 PartialYesYesNoNo MIT License Partial, supported up to 2.12, partly supported since 2.14 [14]
Rust gtk-rs NoYesYesYesNo MIT [15]
gi-rust NoYes?YesNo LGPL-2.1
Smalltalk GNU Smalltalk GTK+ bindings YesNo?NoNo GPL-2
Smalltalk YX GTK pluginYesNo?NoNo MIT
SqueakGtk PartialNo?NoNo MIT
Standard ML Giraffe Library NoYes?YesNo LGPL-2.1
Tcl Gnocl YesNo?NoNo BSD
Vala Vala YesYesYesYesYes 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

Related Research Articles

<span class="mw-page-title-main">FLTK</span>

Fast Light Toolkit (FLTK) is a cross-platform widget library for graphical user interfaces (GUIs), developed by Bill Spitzak and others. Made to accommodate 3D graphics programming, it has an interface to OpenGL, but it is also suitable for general GUI programming.

<span class="mw-page-title-main">Glade Interface Designer</span> Graphical user interface builder

Glade Interface Designer is a graphical user interface builder for GTK, with additional components for GNOME. In its third version, Glade is programming language–independent, and does not produce code for events, but rather an XML file that is then used with an appropriate binding. See List of language bindings for GTK for the available ones.

<span class="mw-page-title-main">PyGTK</span> Set of Python wrappers for the GTK graphical user interface library

PyGTK is a set of Python wrappers for the GTK graphical user interface library. PyGTK is free software and licensed under the LGPL. It is analogous to PyQt/PySide and wxPython, the Python wrappers for Qt and wxWidgets, respectively. Its original author is GNOME developer James Henstridge. There are six people in the core development team, with various other people who have submitted patches and bug reports. PyGTK has been selected as the environment of choice for applications running on One Laptop Per Child systems.

<span class="mw-page-title-main">PHP-GTK</span> PHP library for GTK+ GUI applications

PHP-GTK is a set of language bindings for the programming language PHP which allow GTK graphical user interface (GUI) applications to be written in PHP. PHP-GTK provides an object-oriented programming interface to GTK classes and functions. PHP-GTK partly supports GTK2, but GTK3 is unsupported.

<span class="mw-page-title-main">GObject</span> Free software library

The GLib Object System, or GObject, is a free software library providing a portable object system and transparent cross-language interoperability. GObject is designed for use both directly in C programs to provide object-oriented C-based APIs and through bindings to other languages to provide transparent cross-language interoperability, e.g. PyGObject.

<span class="mw-page-title-main">GLib</span> Software library

GLib is a bundle of three low-level system libraries written in C and developed mainly by GNOME. GLib's code was separated from GTK, so it can be used by software other than GNOME and has been developed in parallel ever since.

<span class="mw-page-title-main">Matplotlib</span> Library for creating static, animated, and interactive visualizations in Python.

Matplotlib is a plotting library for the Python programming language and its numerical mathematics extension NumPy. It provides an object-oriented API for embedding plots into applications using general-purpose GUI toolkits like Tkinter, wxPython, Qt, or GTK. There is also a procedural "pylab" interface based on a state machine, designed to closely resemble that of MATLAB, though its use is discouraged. SciPy makes use of Matplotlib.

The following tables list notable software packages that are nominal IDEs; standalone tools such as source-code editors and GUI builders are not included. These IDEs are listed in alphabetic order of the supported language.

<span class="mw-page-title-main">Vala (programming language)</span> Programming language

Vala is an object-oriented programming language with a self-hosting compiler that generates C code and uses the GObject system.

Clutter is a discontinued GObject-based graphics library for creating hardware-accelerated user interfaces. Clutter is an OpenGL-based 'interactive canvas' library and does not contain any graphical control elements. It relies upon OpenGL (1.4+) or OpenGL ES for rendering,. It also supports media playback using GStreamer and 2D graphics rendering using Cairo.

<span class="mw-page-title-main">PyChess</span> Chess software

PyChess is a free software chess client developed for GNU. It allows users to play offline or online via the Free Internet Chess Server (FICS). PyChess also incorporates a built-in chess engine, which in contrast to most other chess AIs is written in the Python language and focuses more on fun of play than raw strength. For more advanced users, PyChess allows for virtually any other external chess engine to be used with it.

<span class="mw-page-title-main">GTK</span> Free and open-source cross-platform widget toolkit for creating graphical user interfaces

GTK is a free software cross-platform widget toolkit for creating graphical user interfaces (GUIs). It is licensed under the terms of the GNU Lesser General Public License, allowing both free and proprietary software to use it. It is one of the most popular toolkits for the Wayland and X11 windowing systems.

Seed is a JavaScript interpreter and a library of the GNOME project to create standalone applications in JavaScript. It uses the JavaScript engine JavaScriptCore of the WebKit project. It is possible to easily create modules in C.

<span class="mw-page-title-main">Spyder (software)</span> IDE for scientific programming in Python

Spyder is an open-source cross-platform integrated development environment (IDE) for scientific programming in the Python language. Spyder integrates with a number of prominent packages in the scientific Python stack, including NumPy, SciPy, Matplotlib, pandas, IPython, SymPy and Cython, as well as other open-source software. It is released under the MIT license.

wxPHP is an extension the programming language PHP that wraps the wxWidgets library, which allows writing cross-platform software desktop applications that make use of the native graphical components available to the different platforms. It supports the three major operating systems: Windows, Linux, and macOS by using PHP. Applications are written in PHP, which is an interpreted language. Thus, it needs no intermediate compiling step to run an application, if the PHP interpreter has the extension available.

<span class="mw-page-title-main">GNOME Builder</span> General purpose integrated development environment (IDE) for the GNOME platform

GNOME Builder is a general purpose integrated development environment (IDE) for the GNOME platform, primarily designed to aid in writing GNOME-based applications. It was initially released on March 24, 2015. The application's tagline is "A toolsmith for GNOME-based applications".

<span class="mw-page-title-main">GNOME Terminator</span> Terminal emulator influenced by GNOME Terminal

GNOME Terminator is a free and open-source terminal emulator for Linux programmed in Python, licensed under GPL-2.0-only. The goal of the project is to produce a useful tool for arranging terminals. It is inspired by programs such as gnome-multi-term, QuadKonsole, etc. In that the main focus is arranging terminals in grids. Terminator packages exist for Arch, Debian/Ubuntu, Fedora, OpenSUSE, Gentoo, Snap, FreeBSD, OpenBSD. In 2017 took second place in voting at opensource.com, after Gnome Terminal.

<span class="mw-page-title-main">Qalculate!</span>

Qalculate! is an arbitrary precision cross-platform software calculator. It supports complex mathematical operations and concepts such as derivation, integration, data plotting, and unit conversion. It is a free and open-source software released under GPL v2.

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.{{cite web}}: CS1 maint: numeric names: authors list (link)
  15. "GTK-rs license". GitHub . 17 November 2021.