{"id":20384947,"url":"https://github.com/d-e-s-o/gui","last_synced_at":"2025-07-05T04:12:55.745Z","repository":{"id":62439860,"uuid":"136279464","full_name":"d-e-s-o/gui","owner":"d-e-s-o","description":"A generic UI library/framework.","archived":false,"fork":false,"pushed_at":"2024-07-31T08:21:33.000Z","size":515,"stargazers_count":18,"open_issues_count":1,"forks_count":1,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-12-09T14:00:10.150Z","etag":null,"topics":["gui","rust","rust-crate","rust-library"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/d-e-s-o.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-06-06T05:59:24.000Z","updated_at":"2024-08-08T11:44:37.000Z","dependencies_parsed_at":"2024-11-15T02:31:52.907Z","dependency_job_id":"b8409d44-e1b0-4a0e-aba0-43c72f197478","html_url":"https://github.com/d-e-s-o/gui","commit_stats":{"total_commits":197,"total_committers":1,"mean_commits":197.0,"dds":0.0,"last_synced_commit":"e629f8a588140279792612732229c88dc1fe2d12"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d-e-s-o%2Fgui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d-e-s-o%2Fgui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d-e-s-o%2Fgui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d-e-s-o%2Fgui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/d-e-s-o","download_url":"https://codeload.github.com/d-e-s-o/gui/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229886928,"owners_count":18139563,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gui","rust","rust-crate","rust-library"],"created_at":"2024-11-15T02:30:57.259Z","updated_at":"2024-12-19T12:10:36.244Z","avatar_url":"https://github.com/d-e-s-o.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![pipeline](https://github.com/d-e-s-o/gui/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/d-e-s-o/gui/actions/workflows/test.yml)\n[![coverage](https://codecov.io/gh/d-e-s-o/gui/branch/main/graph/badge.svg)](https://codecov.io/gh/d-e-s-o/gui)\n[![crates.io](https://img.shields.io/crates/v/gui.svg)](https://crates.io/crates/gui)\n[![Docs](https://docs.rs/gui/badge.svg)](https://docs.rs/gui)\n[![rustc](https://img.shields.io/badge/rustc-1.58+-blue.svg)](https://blog.rust-lang.org/2022/01/13/Rust-1.58.0.html)\n\ngui\n===\n\n- [Documentation][docs-rs]\n- [Changelog](CHANGELOG.md)\n\n**gui** (short for **g**eneric **u**ser **i**nterface) is a crate\nproviding basic user interface functionality. It strives to be\nas independent as possible of the underlying system architecture. That\nis, it is compatible with windowing as well as terminal based systems\nand it does not rely on the specifics of any GUI toolkit.\n\nPart of this story means that it is not an out-of-the-box replacement\nfor your favorite user interface toolkit (think: [GTK+][gtk], [Qt][qt],\n[wxWidgets][wxwidgets] to name popular ones), but that it should be seen\nmore as a building block, providing certain hooks and basic\nfunctionality typically seen in a UI. The infrastructure for dispatching\nevents to widgets is an example. To make proper use of it, the\nfunctionality provided by this crate needs to be glued with the\nunderlying system.\n\n**gui** is used for exploring parts of the design space for user\ninterface architecture using [Rust][rust-lang]. Design of UI systems in\nRust is generally considered hard and to a large degree an unsolved\nproblem, although there are various promising designs out there.\n\nThe crate uses Rust's `async`/`await` for ergonomic event handling and\nmessage passing between widgets and to the best of the author's knowledge,\nis the first doing so.\n\n\nFeatures\n--------\n- completely independent of underlying architecture\n  - generic over events and messages used\n  - compatible with any rendering library\n- `async`/`await` based event handling and message passing support\n- no dependencies other than [`async-trait`][async-trait] to work around\n  current short comings in Rust\n\n\nStatus\n------\n\nThe crate is under active development, and while its core has been\nreasonably stable for a while, changes should be anticipated in the\nfuture.\n\nGiven this current state, changes in API design are to be expected.\n\n\nExample Usage\n-------------\n\nThe [`notnow`][notnow] program is relying on the **gui** crate for the\ncreation of its terminal based UI. The basic workings can be seen there.\n\n[async-trait]: https://crates.io/crates/async-trait\n[docs-rs]: https://docs.rs/crate/gui\n[gtk]: https://www.gtk.org\n[qt]: https://www.qt.io\n[wxwidgets]: https://wxwidgets.org\n[rust-lang]: https://www.rust-lang.org\n[notnow]: https://crates.io/crates/notnow\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd-e-s-o%2Fgui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fd-e-s-o%2Fgui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd-e-s-o%2Fgui/lists"}