{"id":13625964,"url":"https://github.com/Grokmoo/thyme","last_synced_at":"2025-04-16T11:30:59.032Z","repository":{"id":48519285,"uuid":"284858130","full_name":"Grokmoo/thyme","owner":"Grokmoo","description":"Themable Immediate Mode User Interface Toolkit in Rust","archived":false,"fork":false,"pushed_at":"2025-02-17T22:54:48.000Z","size":2013,"stargazers_count":96,"open_issues_count":19,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-13T04:59:41.881Z","etag":null,"topics":["gui","immediate-gui","opengl","rust","themable","ui","wgpu"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Grokmoo.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":"2020-08-04T02:34:55.000Z","updated_at":"2025-02-17T22:54:51.000Z","dependencies_parsed_at":"2023-11-17T08:52:41.566Z","dependency_job_id":"21f52eb7-063c-4ab4-80cd-c0d294f2b7b9","html_url":"https://github.com/Grokmoo/thyme","commit_stats":{"total_commits":310,"total_committers":3,"mean_commits":"103.33333333333333","dds":0.006451612903225823,"last_synced_commit":"70989d68c1a5d29fd9eb8e0f80cc86f7e5328b55"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Grokmoo%2Fthyme","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Grokmoo%2Fthyme/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Grokmoo%2Fthyme/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Grokmoo%2Fthyme/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Grokmoo","download_url":"https://codeload.github.com/Grokmoo/thyme/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248665756,"owners_count":21142123,"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","immediate-gui","opengl","rust","themable","ui","wgpu"],"created_at":"2024-08-01T21:02:06.685Z","updated_at":"2025-04-16T11:30:59.026Z","avatar_url":"https://github.com/Grokmoo.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# Thyme - Themable Immediate Mode GUI\r\n\r\n[![Crates.io](https://img.shields.io/crates/v/thyme.svg)](https://crates.io/crates/thyme)\r\n[![Docs.rs](https://docs.rs/thyme/badge.svg)](https://docs.rs/thyme)\r\n\r\nThyme is a Graphical User Interface (GUI) library written in pure, safe, Rust.  All widgets are rendered using image sources, instead of the line art more commonly used by other Immediate Mode GUIs.  The image definitions, fonts, and style attributes are all specified in a unified theme.  This is generally drawn from a file, but any [Serde](https://serde.rs/) compatible source should work.  Live Reload is supported for asset files for a more efficient workflow.\r\n\r\nA composite image showcasing three different themes:\r\n![Screenshot](screenshot.png)\r\n\r\nThyme produces a set of Draw Lists which are sent to a swappable graphics backend - currently [Glium](https://github.com/glium/glium) and [Raw GL](https://github.com/brendanzab/gl-rs/) are supported.  We have previously supported [wgpu](https://github.com/gfx-rs/wgpu) but the rate of change there has been too great for the author to keep up and support is not current.  The I/O backend is also swappable - although currently only [winit](https://github.com/rust-windowing/winit) is supported.  Fonts are rendered to a texture on the GPU using [rusttype](https://github.com/redox-os/rusttype).  \r\n\r\nPerformance is acceptable or better for most use cases, with the complete cycle of generating the widget tree, creating the draw data, and rendering taking less than 1 ms for quite complex UIs.\r\n\r\n## Getting Started\r\n\r\n### Running the examples\r\n\r\nThe demo contains an example role playing game (RPG) character generator program that uses many of the features of Thyme.\r\n\r\n```bash\r\ngit clone https://github.com/Grokmoo/thyme.git\r\ncd thyme\r\ncargo run --example demo_glium --features glium_backend # Run demo using glium\r\ncargo run --example demo_gl --features gl_backend # Run demo using OpenGL\r\n```\r\n\r\nRun the hello_world example with either Glium or GL:\r\n```bash\r\ncargo run --example hello_glium --features glium_backend\r\ncargo run --example hello_gl --features gl_backend\r\n```\r\n\r\n### Starting your own project\r\n\r\nAdd the following to your Cargo.toml file:\r\n\r\n```toml\r\n[dependencies]\r\nthyme = { version = \"0.7\", features = [\"glium_backend\"] }\r\n```\r\n\r\nSee [hello_glium](examples/hello_glium.rs) for the bare minimum to get started with your preferred renderer.  As a starting point, you can copy the [data](examples/data) folder into your own project and import the resources there, as in the example.\r\n\r\n## [Documentation](https://docs.rs/thyme)\r\n\r\nSee the [docs](https://docs.rs/thyme) for the full API reference as well as theme definition format.\r\n\r\n## Why Thyme?\r\n\r\nAt its core, Thyme is an immediate mode GUI library similar to other libraries such as [Dear ImGui](https://github.com/ocornut/imgui).  However,\r\nunlike many of those libraries Thyme is focused on extreme customizability and flexibility needed for production applications, especially games.\r\n\r\nWith Thyme, you can customize exactly how you want your UI to look and operate.  Thyme also focuses a great deal on being performant, while still\r\nretaining the benefits of a true immediate mode GUI.  Thyme also implements a number of tricks granting more layout flexibility than traditional\r\nimmediate mode libraries, although there are still some limitations.\r\n\r\nThis flexibility comes at the cost of needing to specify theme, font, and image files.  But, Thyme comes with some such files as examples to help you\r\nget started.  Separating assets out in this manner can also significantly improve your workflow, especially with Thyme's built in support for live\r\nreload.  This strikes a balance, enabling very fast iteration on layout and appearance while still keeping your UI logic in compiled Rust code.\r\n\r\nThis flexibility does come at a cost, of course - There is quite a bit of overhead in getting started compared to similar libraries.  Once you get up and\r\nrunning, though, the overhead is fairly minor.  Performance is also very good and should be at least on-par with other immediate mode GUIs.\r\n\r\nThyme comes with a library of widgets similar to most UI libraries.  However, Thyme's widgets are written entirely using the public API, so the \r\n[`source`](src/recipes.rs) for these can serve as examples and templates for your own custom widgets.\r\n\r\nIt is also written from scratch in 100% Rust!\r\n\r\n## License\r\n[License]: #license\r\n\r\nLicensed under Apache License, Version 2.0, ([LICENSE](LICENSE) or http://www.apache.org/licenses/LICENSE-2.0).\r\n\r\nNote that some of the sample theme images are licensed under a Creative Commons license, see [attribution](examples/data/images/attribution.txt).\r\n\r\n### License of contributions\r\n\r\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGrokmoo%2Fthyme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FGrokmoo%2Fthyme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGrokmoo%2Fthyme/lists"}