All Projects → d-e-s-o → gui

d-e-s-o / gui

Licence: GPL-3.0 License
A generic UI library/framework.

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to gui

twang
Library for pure Rust advanced audio synthesis.
Stars: ✭ 83 (+418.75%)
Mutual labels:  rust-library, rust-crate
whoami
Rust crate to get the current user and environment.
Stars: ✭ 68 (+325%)
Mutual labels:  rust-library, rust-crate
Grex
A command-line tool and library for generating regular expressions from user-provided test cases
Stars: ✭ 4,847 (+30193.75%)
Mutual labels:  rust-library, rust-crate
trickster
user-friendly linux memory hacking library
Stars: ✭ 50 (+212.5%)
Mutual labels:  rust-library, rust-crate
daemonize-me
Rust library to ease the task of creating daemons
Stars: ✭ 34 (+112.5%)
Mutual labels:  rust-library, rust-crate
rspark
▁▂▆▇▁▄█▁ Sparklines for Rust apps
Stars: ✭ 50 (+212.5%)
Mutual labels:  rust-library, rust-crate
webbrowser-rs
Rust library to open URLs in the web browsers available on a platform
Stars: ✭ 150 (+837.5%)
Mutual labels:  rust-library, rust-crate
kul
A unique textual notation that can be used as both a data format and a markup language and that has powerful extensibility of both lexical syntax and semantics, and a Rust library for parsing it.
Stars: ✭ 12 (-25%)
Mutual labels:  rust-library, rust-crate
Curio
A Blazing Fast HTTP Client
Stars: ✭ 35 (+118.75%)
Mutual labels:  rust-library, rust-crate
poem
A full-featured and easy-to-use web framework with the Rust programming language.
Stars: ✭ 1,167 (+7193.75%)
Mutual labels:  rust-library, rust-crate
murmur3
A rust implementation of murmur3
Stars: ✭ 48 (+200%)
Mutual labels:  rust-library
fixie-trie
Compact tries for fixed-width keys
Stars: ✭ 23 (+43.75%)
Mutual labels:  rust-library
meyda-rs
This may become an audio feature extraction library for Rust.
Stars: ✭ 15 (-6.25%)
Mutual labels:  rust-library
spherical-cow
A high volume fraction sphere packing library
Stars: ✭ 24 (+50%)
Mutual labels:  rust-library
bmemcached-rs
Rust binary memcached implementation
Stars: ✭ 24 (+50%)
Mutual labels:  rust-library
neo4rs
Neo4j driver for rust
Stars: ✭ 41 (+156.25%)
Mutual labels:  rust-crate
warc
⚙️ A Rust library for reading and writing WARC files
Stars: ✭ 26 (+62.5%)
Mutual labels:  rust-library
rs-process-memory
A rust library that allows you to read/write into the memory of other processes
Stars: ✭ 63 (+293.75%)
Mutual labels:  rust-library
ode-solvers
Numerical methods to solve ordinary differential equations in Rust.
Stars: ✭ 19 (+18.75%)
Mutual labels:  rust-crate
libjail-rs
Rust implementation of a FreeBSD jail library
Stars: ✭ 32 (+100%)
Mutual labels:  rust-library

pipeline coverage crates.io Docs rustc

gui

gui (short for generic user interface) is a crate providing basic user interface functionality. It strives to be as independent as possible of the underlying system architecture. That is, it is compatible with windowing as well as terminal based systems and it does not rely on the specifics of any GUI toolkit.

Part of this story means that it is not an out-of-the-box replacement for your favorite user interface toolkit (think: GTK+, Qt, wxWidgets to name popular ones), but that it should be seen more as a building block, providing certain hooks and basic functionality typically seen in a UI. The infrastructure for dispatching events to widgets is an example. To make proper use of it, the functionality provided by this crate needs to be glued with the underlying system.

gui is used for exploring parts of the design space for user interface architecture using Rust. Design of UI systems in Rust is generally considered hard and to a large degree an unsolved problem, although there are various promising designs out there.

The crate uses Rust's async/await for ergonomic event handling and message passing between widgets and to the best of the author's knowledge, is the first doing so.

Features

  • completely independent of underlying architecture
    • generic over events and messages used
    • compatible with any rendering library
  • async/await based event handling and message passing support
  • no dependencies other than async-trait to work around current short comings in Rust

Status

The crate is under active development, and while its core has been reasonably stable for a while, changes should be anticipated in the future.

Given this current state, changes in API design are to be expected.

Example Usage

The notnow program is relying on the gui crate for the creation of its terminal based UI. The basic workings can be seen there.

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