# gtk4-rs **Repository Path**: linruohan/gtk4-rs ## Basic Information - **Project Name**: gtk4-rs - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: 0.1 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-11-06 - **Last Updated**: 2025-02-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # gtk4-rs ![CI](https://github.com/gtk-rs/gtk4-rs/workflows/CI/badge.svg) A group of crates that aims to provide complete [GTK](https://gtk.org/) 4 bindings. This repository contains all the "core" crates of GTK 4. - [GTK](./gtk4) - [GDK](./gdk4): An intermediate layer which isolates GTK from the details of the windowing system. - [GDK Wayland](./gdk4-wayland): Wayland backend specific functions. - [GDK X11](./gdk4-x11): X backend specific functions. - [GSK](./gsk4): 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: - [GLib](https://github.com/gtk-rs/gtk-rs-core/tree/master/glib) - [Gio](https://github.com/gtk-rs/gtk-rs-core/tree/master/gio) - [Graphene](https://github.com/gtk-rs/gtk-rs-core/tree/master/graphene) - [Cairo](https://github.com/gtk-rs/gtk-rs-core/tree/master/cairo) - [Pango](https://github.com/gtk-rs/gtk-rs-core/tree/master/pango) Those are common with the GTK 3 and GStreamer bindings and are part of the [gtk-rs-core](https://github.com/gtk-rs/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.51.0`. ## Documentation - [Examples](https://github.com/gtk-rs/gtk4-rs/tree/master/examples) - Book [Stable](https://gtk-rs.org/gtk4-rs/stable/latest/book/) / [Development](https://gtk-rs.org/gtk4-rs/git/book/) - The Rust API [Stable](https://gtk-rs.org/gtk4-rs/stable/latest/docs/) / [Development](https://gtk-rs.org/gtk4-rs/git/docs/) ### Useful links - [Website](https://gtk-rs.org) - [Discourse](https://discourse.gnome.org/) - Matrix: [#rust:gnome.org](https://matrix.to/#/#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](https://github.com/gtk-rs/gtk-rs-core) - bindings for some of the core libraries such as `glib`, `gio`, `pango`, `graphene` * [gstreamer-rs](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs) - bindings for the GStreamer media framework Additionally, Rust bindings for various libraries are hosted on [GNOME's GitLab](https://gitlab.gnome.org) instance and can be found at . 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 - [Solanum](https://gitlab.gnome.org/World/Solanum) - [Shortwave](https://gitlab.gnome.org/World/Shortwave) - [Authenticator](https://gitlab.gnome.org/World/Authenticator) - [Health](https://gitlab.gnome.org/Cogitri/Health) - [Video Trimmer](https://gitlab.gnome.org/YaLTeR/video-trimmer) ## 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`](https://github.com/gtk-rs/gir/blob/master/generator.py) script ```bash python3 ./generator.py ``` All the crates except `gtk4-macros` follow this structure ```text ./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. [gir]: https://github.com/gtk-rs/gir