The gtk-rs
organization aims to provide safe Rust binding over GObject
-based libraries.
You can find more about it on https://gtk-rs.org.
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.
You can see the all the released crates' documentation in one place.
To regenerate crates using gir, please use the generator.py
file as follows:
$ python3 generator.py
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:
- 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 bycargo
andRust
.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:
$ python3 generator.py --gir-files-directory ../gir-files/
See python3 generator.py --help
for more details.