{"id":13496635,"url":"https://github.com/gtk-rs/gtk4-rs","last_synced_at":"2025-05-14T08:05:16.569Z","repository":{"id":37793491,"uuid":"186402701","full_name":"gtk-rs/gtk4-rs","owner":"gtk-rs","description":"Rust bindings of GTK 4","archived":false,"fork":false,"pushed_at":"2025-05-13T08:46:08.000Z","size":402804,"stargazers_count":2055,"open_issues_count":76,"forks_count":189,"subscribers_count":17,"default_branch":"main","last_synced_at":"2025-05-14T08:04:23.072Z","etag":null,"topics":["gdk4","gdk4-wayland","gdk4-x11","gsk4","gtk-rs","gtk4","gtk4-macros","gtk4-rs"],"latest_commit_sha":null,"homepage":"https://gtk-rs.org/gtk4-rs/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gtk-rs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"open_collective":"gtk-rs"}},"created_at":"2019-05-13T11:01:46.000Z","updated_at":"2025-05-13T17:30:33.000Z","dependencies_parsed_at":"2024-04-17T01:24:44.952Z","dependency_job_id":"272d28dd-bbc9-4280-b54b-fbafdc496459","html_url":"https://github.com/gtk-rs/gtk4-rs","commit_stats":{"total_commits":3017,"total_committers":100,"mean_commits":30.17,"dds":0.5376201524693405,"last_synced_commit":"2c90e2167c502fd4adc0984cfffc99b6e0257926"},"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gtk-rs%2Fgtk4-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gtk-rs%2Fgtk4-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gtk-rs%2Fgtk4-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gtk-rs%2Fgtk4-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gtk-rs","download_url":"https://codeload.github.com/gtk-rs/gtk4-rs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254101588,"owners_count":22014907,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gdk4","gdk4-wayland","gdk4-x11","gsk4","gtk-rs","gtk4","gtk4-macros","gtk4-rs"],"created_at":"2024-07-31T19:01:53.790Z","updated_at":"2025-05-14T08:05:16.550Z","avatar_url":"https://github.com/gtk-rs.png","language":"Rust","funding_links":["https://opencollective.com/gtk-rs"],"categories":["Rust","Libraries","Graphics Library"],"sub_categories":["GUI"],"readme":"# gtk4-rs ![CI](https://github.com/gtk-rs/gtk4-rs/workflows/CI/badge.svg)\n\nA group of crates that aims to provide complete [GTK](https://gtk.org/) 4 bindings. This repository contains all the \"core\" crates of GTK 4.\n\n- [GTK](./gtk4)\n- [GDK](./gdk4): An intermediate layer which isolates GTK from the details of the windowing system.\n  - [GDK Macos](./gdk4-macos): Macos backend specific functions.\n  - [GDK Wayland](./gdk4-wayland): Wayland backend specific functions.\n  - [GDK Win32](./gdk4-win32): Windows backend specific functions.\n  - [GDK X11](./gdk4-x11): X backend specific functions.\n- [GSK](./gsk4): An intermediate layer which isolates GTK from the details of the OpenGL or Vulkan implementation.\n\nThe GTK 4 crates also depends on other libraries part of the platform like:\n\n- [GLib](https://github.com/gtk-rs/gtk-rs-core/tree/main/glib)\n- [Gio](https://github.com/gtk-rs/gtk-rs-core/tree/main/gio)\n- [Graphene](https://github.com/gtk-rs/gtk-rs-core/tree/main/graphene)\n- [Cairo](https://github.com/gtk-rs/gtk-rs-core/tree/main/cairo)\n- [Pango](https://github.com/gtk-rs/gtk-rs-core/tree/main/pango)\n\nThose 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.\n\nFor more information about each crate, please refer to their `README.md` file in their directory.\n\n## Minimum supported Rust version\n\nCurrently, the minimum supported Rust version is `1.80`.\n\n## Documentation\n\n- [Examples](https://github.com/gtk-rs/gtk4-rs/tree/main/examples)\n- Book [Stable](https://gtk-rs.org/gtk4-rs/stable/latest/book/)\n- The Rust API [Stable](https://gtk-rs.org/gtk4-rs/stable/latest/docs/) / [Development](https://gtk-rs.org/gtk4-rs/git/docs/)\n\n### Useful links\n\n- [Website](https://gtk-rs.org)\n- [Discourse](https://discourse.gnome.org/)\n- Matrix: [#rust:gnome.org](https://matrix.to/#/#rust:gnome.org)\n\n## Ecosystem\n\nThe `gtk4-rs` repository contains Rust crates for GTK 4. However there is a large ecosystem of `GObject` libraries and many of these\nlibraries have Rust bindings based on the tooling included in `gtk-rs`.\nOf particular note:\n\n* [gtk-rs-core](https://github.com/gtk-rs/gtk-rs-core) - bindings for some of the core libraries such as `glib`, `gio`, `pango`, `graphene`\n* [gstreamer-rs](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs) - bindings for the GStreamer media framework\n\nAdditionally, Rust bindings for various libraries are hosted on\n[GNOME's GitLab](https://gitlab.gnome.org) instance and can be found at\n\u003chttps://gitlab.gnome.org/World/Rust\u003e.\n\nWhen using crates that are not part of the `gtk4-rs` repository, you will\nneed to be careful and ensure that they do not pull in incompatible versions of core\ncrates like `glib-rs`.\n\n### Built with GTK4 Rust bindings\n\nA small list of applications built with gtk4-rs:\n\n- [Solanum](https://gitlab.gnome.org/World/Solanum): A pomodoro timer\n- [Shortwave](https://gitlab.gnome.org/World/Shortwave): An internet radio player\n- [Authenticator](https://gitlab.gnome.org/World/Authenticator): A two-factor code generator\n- [Health](https://gitlab.gnome.org/World/Health): A health tracking app\n- [Video Trimmer](https://gitlab.gnome.org/YaLTeR/video-trimmer): A fast video trimmer\n\nLibraries built with gtk4-rs:\n\n- [Relm4](https://github.com/Relm4/relm4): An idiomatic GUI library inspired by Elm\n\n## Contributing\n\nThe bindings are composed of two parts:\n\n- Automatically generated ones using [gir]\n- Manual parts\n\nThe automatic ones can be generated using the [`generator.py`](https://github.com/gtk-rs/gir/blob/main/generator.py) script\n\n```bash\npython3 ./generator.py\n```\n\nIf you didn't do so yet, please check out all the submodules before via\n\n```bash\n$ git submodule update --checkout\n```\n\nAll the crates except `gtk4-macros` follow this structure\n\n```text\n   ./crate \n   ├── Gir.toml\n   ├── README.md\n   ├── src\n   │   ╰── auto\n   ├── sys\n   ╰── tests\n```\n\n- `README.md`: Explanations about the crate itself and eventually some details.\n- `Gir.toml`: Used by [gir] to generate most of the code.\n- `src`: Contains the source code of the crate.\n- `src/auto`: Contains the automatically generated part of the source code.\n- `sys`: Contains the 1:1 bindings of the C API.\n\n[gir]: https://github.com/gtk-rs/gir\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgtk-rs%2Fgtk4-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgtk-rs%2Fgtk4-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgtk-rs%2Fgtk4-rs/lists"}