All Projects → gtk-rs → gtk-rs-core

gtk-rs / gtk-rs-core

Licence: MIT license
Rust bindings for GNOME libraries

Programming Languages

rust
11053 projects
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to gtk-rs-core

oxbar
configurable X11 status bar for OpenBSD (and xstatbar successor)
Stars: ✭ 36 (-79.89%)
Mutual labels:  cairo, pango
gtk3-rs
Rust bindings for GTK 3
Stars: ✭ 451 (+151.96%)
Mutual labels:  gtk-rs
Cairo
Swift library for Cairo
Stars: ✭ 33 (-81.56%)
Mutual labels:  cairo
gagar
Standalone graphical agar.io Python client/bot using GTK and agarnet
Stars: ✭ 21 (-88.27%)
Mutual labels:  cairo
lambda-layer-canvas-nodejs
AWS Lambda Layer with node-canvas and its dependencies packaged, provides a Cairo backed Mozilla Web Canvas API implementation
Stars: ✭ 36 (-79.89%)
Mutual labels:  cairo
cairomate
Structured, dependable legos for Starknet development.
Stars: ✭ 134 (-25.14%)
Mutual labels:  cairo
slope
C/Gtk+ data visualization library.
Stars: ✭ 91 (-49.16%)
Mutual labels:  cairo
i3lock-color
The world's most popular non-default computer lockscreen.
Stars: ✭ 904 (+405.03%)
Mutual labels:  cairo
Generative-Art
A selection of generative art scripts written in Python
Stars: ✭ 284 (+58.66%)
Mutual labels:  cairo
fastapi-debug-toolbar
A debug toolbar for FastAPI.
Stars: ✭ 90 (-49.72%)
Mutual labels:  graphene
Czkawka
Multi functional app to find duplicates, empty folders, similar images etc.
Stars: ✭ 5,360 (+2894.41%)
Mutual labels:  gtk-rs
ocaml-cairo
Binding to Cairo, a 2D Vector Graphics Library.
Stars: ✭ 39 (-78.21%)
Mutual labels:  cairo
go-life
Conway's Game of Life in Go
Stars: ✭ 13 (-92.74%)
Mutual labels:  gio
live-chart
A real-time charting library for Vala and GTK3 based on Cairo
Stars: ✭ 47 (-73.74%)
Mutual labels:  cairo
gobject-example-rs
Example for exporting a GObject/C API from Rust
Stars: ✭ 31 (-82.68%)
Mutual labels:  glib
ape
The smart contract development tool for Pythonistas, Data Scientists, and Security Professionals
Stars: ✭ 339 (+89.39%)
Mutual labels:  cairo
Conky
Light-weight system monitor for X.
Stars: ✭ 5,123 (+2762.01%)
Mutual labels:  cairo
argent-x
ArgentX browser extension for StarkNet - made with ❤️ by Argent
Stars: ✭ 419 (+134.08%)
Mutual labels:  cairo
node-poppler
Asynchronous node.js wrapper for the Poppler PDF rendering library
Stars: ✭ 97 (-45.81%)
Mutual labels:  cairo
go-view
Go-View is a project to build a rudementary GUI library for Go.
Stars: ✭ 19 (-89.39%)
Mutual labels:  cairo

gtk-rs-core CI

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.

Minimum supported Rust version

Currently, the minimum supported Rust version is 1.64.0.

Documentation

Ecosystem

The gtk-rs-core repository contains Rust crates for the foundational GObject-based libraries. 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:

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 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:

$ python3 generator.py

If you didn't do so yet, please check out all the submodules before via

$ 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:

- 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:

$ python3 generator.py --gir-files-directory ../gir-files/

See python3 generator.py --help for more details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].