Rust bindings of GTK 4
2,341
stars
3,883
commits
Rust
primary language
Sep 11, 2026
updated
A group of crates that aims to provide complete GTK 4 bindings. This repository contains all the "core" crates of GTK 4.
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.83.
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:
glib, gio, pango, grapheneAdditionally, 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.
A small list of applications built with gtk4-rs:
Libraries built with gtk4-rs:
gtk-rs is a project by humans for humans. We prefer contributions that are produced by human creativity, we expect a human to take full responsibility for each contribution, and we will take more joy in reviewing contributions when there's people at the other end of the line to stand by their changes.
If you use LLM/GenAI tools for your contributions, here are the rules you must follow:
Always disclose the use of LLM/GenAI tools when creating an issue or a merge request. Do not include trailers like “Co-authored-by:” or “Assisted-by:” in commit messages, since they serve as free advertising for AI companies.
A COMPUTER CAN NEVER BE HELD ACCOUNTABLE. THEREFORE A COMPUTER MUST NEVER MAKE A MAINTENANCE DECISION.
The bindings are composed of two parts:
The automatic ones can be generated using the generator.py script
python3 ./generator.py
If you didn't do so yet, please check out all the submodules before via
$ git submodule update --checkout
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.(top 30 of 119)
Rust
97.3%
C
2.5%
Rust bindings of GTK 4
2,341
stars
3,883
commits
Rust
primary language
Sep 11, 2026
updated
A group of crates that aims to provide complete GTK 4 bindings. This repository contains all the "core" crates of GTK 4.
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.83.
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:
glib, gio, pango, grapheneAdditionally, 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.
A small list of applications built with gtk4-rs:
Libraries built with gtk4-rs:
gtk-rs is a project by humans for humans. We prefer contributions that are produced by human creativity, we expect a human to take full responsibility for each contribution, and we will take more joy in reviewing contributions when there's people at the other end of the line to stand by their changes.
If you use LLM/GenAI tools for your contributions, here are the rules you must follow:
Always disclose the use of LLM/GenAI tools when creating an issue or a merge request. Do not include trailers like “Co-authored-by:” or “Assisted-by:” in commit messages, since they serve as free advertising for AI companies.
A COMPUTER CAN NEVER BE HELD ACCOUNTABLE. THEREFORE A COMPUTER MUST NEVER MAKE A MAINTENANCE DECISION.
The bindings are composed of two parts:
The automatic ones can be generated using the generator.py script
python3 ./generator.py
If you didn't do so yet, please check out all the submodules before via
$ git submodule update --checkout
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.(top 30 of 119)
Rust
97.3%
C
2.5%