All Projects → gtk-rs → gtk3-rs

gtk-rs / gtk3-rs

Licence: MIT license
Rust bindings for GTK 3

Programming Languages

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

Projects that are alternatives of or similar to gtk3-rs

Gala
Gala Window Manager
Stars: ✭ 173 (-61.64%)
Mutual labels:  gtk, gtk3
Files
File browser designed for elementary OS
Stars: ✭ 187 (-58.54%)
Mutual labels:  gtk, gtk3
Awesome Gtk
List of awesome GTK+ (gtk3) applications
Stars: ✭ 174 (-61.42%)
Mutual labels:  gtk, gtk3
Gintro
High level GObject-Introspection based GTK3/GTK4 bindings for Nim language
Stars: ✭ 141 (-68.74%)
Mutual labels:  gtk, gtk3
GabTag
A gtk linux application to handle audio tags 🎵
Stars: ✭ 34 (-92.46%)
Mutual labels:  gtk, gtk3
Clamtk
An easy to use, light-weight, on-demand virus scanner for Linux systems
Stars: ✭ 151 (-66.52%)
Mutual labels:  gtk, gtk3
Paperwork
Personal document manager (Linux/Windows) -- Moved to Gnome's Gitlab
Stars: ✭ 2,392 (+430.38%)
Mutual labels:  gtk, gtk3
Mail
Mail app designed for elementary OS
Stars: ✭ 130 (-71.18%)
Mutual labels:  gtk, gtk3
gftp
gFTP is a free multithreaded file transfer client for *NIX based machines. 56 language translations available.
Stars: ✭ 81 (-82.04%)
Mutual labels:  gtk, gtk3
React Gtk
React Native bridge for gtk desktop applications
Stars: ✭ 209 (-53.66%)
Mutual labels:  gtk, gtk3
Drill
Search files without indexing, but clever crawling
Stars: ✭ 224 (-50.33%)
Mutual labels:  gtk, gtk3
switchboard-plug-wallet
Manage Payment Methods and related settings
Stars: ✭ 17 (-96.23%)
Mutual labels:  gtk, gtk3
Galacritty
WIP GTK terminal emulator based on Alacritty
Stars: ✭ 136 (-69.84%)
Mutual labels:  gtk, gtk3
Granite
Library that extends GTK with common widgets and utilities
Stars: ✭ 164 (-63.64%)
Mutual labels:  gtk, gtk3
Ephemeral
A private-by-default, always-incognito browser for elementary OS
Stars: ✭ 133 (-70.51%)
Mutual labels:  gtk, gtk3
Swiftgtk
A Swift wrapper around gtk-3.x and gtk-4.x that is largely auto-generated from gobject-introspection
Stars: ✭ 180 (-60.09%)
Mutual labels:  gtk, gtk3
Glide
Linux/macOS media player based on GStreamer and GTK+
Stars: ✭ 123 (-72.73%)
Mutual labels:  gtk, gtk3
Byte
A Music Player designed for elementary OS
Stars: ✭ 128 (-71.62%)
Mutual labels:  gtk, gtk3
Srain
Modern IRC client written in GTK
Stars: ✭ 197 (-56.32%)
Mutual labels:  gtk, gtk3
Nwg Launchers
GTK-based launchers: application grid, button bar, dmenu for sway and other window managers
Stars: ✭ 211 (-53.22%)
Mutual labels:  gtk, gtk3

gtk3-rs 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.63.0.

Documentation

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 - bindings for some of the core libraries such as glib, gio, pango, graphene
  • gstreamer-rs - bindings for the GStreamer media framework

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].