Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gtk-rs/gtk3-rs
Rust bindings for GTK 3
https://github.com/gtk-rs/gtk3-rs
atk gdk gdkx11 gtk gtk-rs gtk3 gtk3-macros
Last synced: about 1 month ago
JSON representation
Rust bindings for GTK 3
- Host: GitHub
- URL: https://github.com/gtk-rs/gtk3-rs
- Owner: gtk-rs
- License: mit
- Archived: true
- Created: 2020-10-14T13:46:29.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2024-03-04T12:41:15.000Z (9 months ago)
- Last Synced: 2024-10-17T14:34:45.173Z (about 2 months ago)
- Topics: atk, gdk, gdkx11, gtk, gtk-rs, gtk3, gtk3-macros
- Language: Rust
- Homepage: https://gtk-rs.org
- Size: 346 MB
- Stars: 508
- Watchers: 12
- Forks: 90
- Open Issues: 44
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- awesome-rust-cn - gtk-rs/gtk3-rs - (库 Libraries / GUI GUI)
- awesome-rust-list - gtk-rs/gtk3-rs - rs/gtk3-rs?style=social"/> : Rust bindings for GTK 3. [gtk-rs.org](https://gtk-rs.org/) (Graphics Library)
- awesome-rust-list - gtk-rs/gtk3-rs - rs/gtk3-rs?style=social"/> : Rust bindings for GTK 3. [gtk-rs.org](https://gtk-rs.org/) (Graphics Library)
README
# gtk3-rs ![CI](https://github.com/gtk-rs/gtk3-rs/workflows/CI/badge.svg)
**This project is UNMAINTAINED. Please take a look at [gtk4-rs](https://github.com/gtk-rs/gtk4-rs) instead!**
The `gtk-rs` organization aims to provide safe Rust binding over `GObject`-based libraries.
You can find more about it on .This repository contains all the "core" crates of the gtk-rs organization. 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.70.0`.
## Documentation
- [Examples](examples)
- The Rust API [Stable](https://gtk-rs.org/gtk3-rs/stable/latest/docs/) / [Development](https://gtk-rs.org/gtk3-rs/git/docs/)## Ecosystem
The `gtk3-rs` repository contains Rust crates for GTK 3. 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 frameworkAdditionally, 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 `gtk-rs` repository, you will
need to be careful and ensure that they do not pull in incompatible versions of core
crates like `glib-rs`.## Regenerating
To regenerate crates using [gir], please use the `generator.py`
file as follows:```bash
$ python3 generator.py
```If you didn't do so yet, please check out all the submodules before via
```bash
$ git submodule update --checkout
```## Development
This repository is mostly split into two branches: `master` and `crate`.
`master` contains the not yet released code and is where new developments
are happening. `crate` contains the last release source code and isn't supposed to
be updated.This repository is structured as follows:
```text
- crate/
|
|-- README.md
|-- Gir.toml
|-- Cargo.toml
|-- src/
|-- sys/
```The `crate` is a "top" directory (so "atk" or "gdk" in here for example).
Each crate contains:* `README.md`: explanations about the crate itself and eventually some details.
* `Cargo.toml`: descriptor of the crate, used by `cargo` and `Rust`.
* `Gir.toml`: configuration used by [gir] to generate most of the crates' code.
* `src`: the source code of the crate.
* `sys`: the 1:1 bindings of the C API.The `gir` and `gir-files` top folders are not crates, but are git submodules
which respectively contain the [gir] tool and the [gir files] used by the generator.When running `generator.py` the tool will automatically update these git
submodules and run the [gir] tool on the [gir files] to regenerate the code.During development, it is useful to execute the generator with a different
version of the [gir] tool or of the [gir files], for instance to test if
the code generation is successful before submitting a pull request to update
one of the submodules. This can be done by specifying arguments to the
generator script, for instance, to run the generator on a local copy of the
gir files:```bash
$ python3 generator.py --gir-files-directory ../gir-files/
```See `python3 generator.py --help` for more details.
[gir]: https://github.com/gtk-rs/gir
[gir files]: https://github.com/gtk-rs/gir-files