gtk4-rs
                                
                                 gtk4-rs copied to clipboard
                                
                                    gtk4-rs copied to clipboard
                            
                            
                            
                        Rust bindings of GTK 4
gtk4-rs 
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.
Minimum supported Rust version
Currently, the minimum supported Rust version is 1.57.0.
Documentation
- Examples
- Book Stable
- The Rust API Stable / Development
Useful links
- Website
- Discourse
- Matrix: #rust:gnome.org
Ecosystem
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.
Built with GTK4 Rust bindings
Below is a list of applications built using the Rust bindings of GTK 4
Contributing
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.