A group of crates that aims to provide complete GTK 4 bindings. This repository contains all the "core" crates of GTK 4.
- GTK
- GDK: An intermediate layer which isolates GTK from the details of the windowing system.
- GDK Wayland: Wayland backend specific functions.
- GDK X11: X backend specific functions.
- GSK: An intermediate layer which isolates GTK from the details of the OpenGL or Vulkan implementation.
The GTK 4 crates also depends on other libraries part of the platform like:
Those are common with the GTK 3 and GStreamer bindings and are part of the gtk-rs-core repository.
For more information about each crate, please refer to their README.md
file in their directory.
Currently, the minimum supported Rust version is 1.54.0
.
- Examples
- Book Stable / Development
- The Rust API Stable / Development
- Website
- Discourse
- Matrix: #rust:gnome.org
The gtk4-rs
repository contains Rust crates for GTK 4. However there is a large ecosystem of GObject
libraries and many of these
libraries have Rust bindings based on the tooling included in gtk-rs
.
Of particular note:
- gtk-rs-core - bindings for some of the core libraries such as
glib
,gio
,pango
,graphene
- gstreamer-rs - bindings for the GStreamer media framework
Additionally, Rust bindings for various libraries are hosted on GNOME's GitLab instance and can be found at https://gitlab.gnome.org/World/Rust.
When using crates that are not part of the gtk4-rs
repository, you will
need to be careful and ensure that they do not pull in incompatible versions of core
crates like glib-rs
.
Below is a list of applications built using the Rust bindings of GTK 4
The bindings are composed of two parts:
- Automatically generated ones using gir
- Manual parts
The automatic ones can be generated using the generator.py
script
python3 ./generator.py
All the crates except gtk4-macros
follow this structure
./crate
├── Gir.toml
├── README.md
├── src
│ ╰── auto
├── sys
╰── tests
README.md
: Explanations about the crate itself and eventually some details.Gir.toml
: Used by gir to generate most of the code.src
: Contains the source code of the crate.src/auto
: Contains the automatically generated part of the source code.sys
: Contains the 1:1 bindings of the C API.