Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/PistonDevelopers/conrod

An easy-to-use, 2D GUI library written entirely in Rust.
https://github.com/PistonDevelopers/conrod

gui rust

Last synced: about 1 month ago
JSON representation

An easy-to-use, 2D GUI library written entirely in Rust.

Awesome Lists containing this project

README

        

# NOTICE: Original maintainer stepping down

I'll no longer be maintaining conrod for the reasons discussed
[here](https://github.com/PistonDevelopers/conrod/issues/1454). If you're
looking for a similar yet nicer replacement GUI library, I recommend
[egui](https://crates.io/crates/egui). If you're interested in taking over
maintenance, please express your interest
[here](https://github.com/PistonDevelopers/conrod/issues/1454).

---

# Conrod [![Actions Status](https://github.com/pistondevelopers/conrod/workflows/conrod/badge.svg)](https://github.com/pistondevelopers/conrod/actions) [![Crates.io](https://img.shields.io/crates/l/conrod_core.svg)](https://github.com/PistonDevelopers/conrod/blob/master/LICENSE)

An easy-to-use, 2D GUI library written entirely in Rust.

Guide
-----

1. [**What is Conrod?**][1]
- [A Brief Summary][1.1]
- [Screenshots and Videos][1.2]
- [Feature Overview][1.3]
- [Available Widgets][1.4]
- [Primitive Widgets][1.4.1]
- [Common Use Widgets][1.4.2]
- [Immediate Mode][1.5]
- [What is it?][1.5.1]
- [Why use it?][1.5.2]
- [Is Conrod Immediate or Retained?][1.5.3]
- [The Builder Pattern][1.6]
2. [**Getting Started**][2]
- [Installing Rust and Cargo][2.1]
- [Running the Conrod Examples][2.2]
3. [**Hello World**][3]
- [Creating a new project][3.1]
- [Conrod Setup][3.2]
-[Back ends][3.2.1]
- [Creating a Window][3.3]
- [Event Handling][3.4]
4. **Using and Customising Themes**
- What is a `Theme`?
- Custom Themes
- Serializing Themes
5. **Designing Custom Widgets (using the Widget trait)**
- The `Widget` trait
- The `widget_style!` macro
- The `builder_methods!` macro
- Making a `Button` widget
6. **Custom Graphics and Window Backends**
- Demonstration of Backend Implementation (using glium and glutin)
7. **Internals**
- The `Ui`'s Widget `Graph`
- `Ui::set_widgets` - How does it work?
8. **FAQ**

*The Guide is a work-in-progress. If a section is not linked, it is likely not yet implemented.*

Crates
------

| Crate | Badges | Description |
| --- | --- | --- |
| **`conrod_core`** | [![Crates.io](https://img.shields.io/crates/v/conrod_core.svg)](https://crates.io/crates/conrod_core) [![docs.rs](https://docs.rs/conrod_core/badge.svg)](https://docs.rs/conrod_core/) | The fundamentals for any conrod project. |
| **`conrod_derive`** | [![Crates.io](https://img.shields.io/crates/v/conrod_derive.svg)](https://crates.io/crates/conrod_derive) [![docs.rs](https://docs.rs/conrod_derive/badge.svg)](https://docs.rs/conrod_derive/) | Provides the `WidgetCommon` and `WidgetStyle` derive macros. |
| **`conrod_winit`** | [![Crates.io](https://img.shields.io/crates/v/conrod_winit.svg)](https://crates.io/crates/conrod_winit) [![docs.rs](https://docs.rs/conrod_winit/badge.svg)](https://docs.rs/conrod_winit/) | Simplifies using `conrod_core` with `winit` |
| **`conrod_gfx`** | [![Crates.io](https://img.shields.io/crates/v/conrod_gfx.svg)](https://crates.io/crates/conrod_gfx) [![docs.rs](https://docs.rs/conrod_gfx/badge.svg)](https://docs.rs/conrod_gfx/) | Simplifies using `conrod_core` with the gfx ecosystem |
| **`conrod_wgpu`** | [![Crates.io](https://img.shields.io/crates/v/conrod_wgpu.svg)](https://crates.io/crates/conrod_wgpu) [![docs.rs](https://docs.rs/conrod_wgpu/badge.svg)](https://docs.rs/conrod_wgpu/) | Simplifies using `conrod_core` with `wgpu` |
| **`conrod_glium`** | [![Crates.io](https://img.shields.io/crates/v/conrod_glium.svg)](https://crates.io/crates/conrod_glium) [![docs.rs](https://docs.rs/conrod_glium/badge.svg)](https://docs.rs/conrod_glium/) | Simplifies using `conrod_core` with `glium` |
| **`conrod_piston`** | [![Crates.io](https://img.shields.io/crates/v/conrod_piston.svg)](https://crates.io/crates/conrod_piston) [![docs.rs](https://docs.rs/conrod_piston/badge.svg)](https://docs.rs/conrod_piston/) | Simplifies using `conrod_core` with `piston` |
| **`conrod_vulkano`** | [![Crates.io](https://img.shields.io/crates/v/conrod_vulkano.svg)](https://crates.io/crates/conrod_vulkano) [![docs.rs](https://docs.rs/conrod_vulkano/badge.svg)](https://docs.rs/conrod_vulkano/) | Simplifies using `conrod_core` with `vulkano` |

Current State
-------------

We're just starting to reach a stable-ish API pattern! There will still be some
large changes, however these are more likely to be new features than API
overhauls.

To get a clearer idea of where we're at see the [issues] and in particular, the
[1.0.0 milestone].

Contributing
------------

Want to help out? See [Piston's how to contribute guide][Contributing].

License
-------

Licensed under either of

* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)

at your option.

**Contributions**

Unless 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
dual licensed as above, without any additional terms or conditions.

**Example Assets**

- [Google Noto](https://www.google.com/get/noto/) (Apache2)

[The API Documentation]: https://docs.rs/conrod_core/
[The Guide]: https://docs.rs/conrod_core/latest/conrod_core/guide/index.html

[1]: https://docs.rs/conrod_core/latest/conrod_core/guide/chapter_1/index.html
[1.1]: https://docs.rs/conrod_core/latest/conrod_core/guide/chapter_1/index.html#a-brief-history
[1.2]: https://docs.rs/conrod_core/latest/conrod_core/guide/chapter_1/index.html#screenshots-and-videos
[1.3]: https://docs.rs/conrod_core/latest/conrod_core/guide/chapter_1/index.html#feature-overview
[1.4]: https://docs.rs/conrod_core/latest/conrod_core/guide/chapter_1/index.html#available-widgets
[1.4.1]: https://docs.rs/conrod_core/latest/conrod_core/guide/chapter_1/index.html#primitive-widgets
[1.4.2]: https://docs.rs/conrod_core/latest/conrod_core/guide/chapter_1/index.html#common-use-widgets
[1.5]: https://docs.rs/conrod_core/latest/conrod_core/guide/chapter_1/index.html#immediate-mode
[1.5.1]: https://docs.rs/conrod_core/latest/conrod_core/guide/chapter_1/index.html#what-is-it
[1.5.2]: https://docs.rs/conrod_core/latest/conrod_core/guide/chapter_1/index.html#why-use-it
[1.5.3]: https://docs.rs/conrod_core/latest/conrod_core/guide/chapter_1/index.html#is-conrod-immediate-or-retained
[1.6]: https://docs.rs/conrod_core/latest/conrod_core/guide/chapter_1/index.html#the-builder-pattern
[2]: https://docs.rs/conrod_core/latest/conrod_core/guide/chapter_2/index.html
[2.1]: https://docs.rs/conrod_core/latest/conrod_core/guide/chapter_2/index.html#installing-rust-and-cargo
[2.2]: https://docs.rs/conrod_core/latest/conrod_core/guide/chapter_2/index.html#running-the-conrod-examples
[3]: https://docs.rs/conrod_core/latest/conrod_core/guide/chapter_3/index.html
[3.1]: https://docs.rs/conrod_core/latest/conrod_core/guide/chapter_3/index.html#creating-a-new-project
[3.2]: https://docs.rs/conrod_core/latest/conrod_core/guide/chapter_3/index.html#setting-up-conrod
[3.2.1]: https://docs.rs/conrod_core/latest/conrod_core/guide/chapter_3/index.html#backends
[3.3]: https://docs.rs/conrod_core/latest/conrod_core/guide/chapter_3/index.html#creating-a-window
[3.4]: https://docs.rs/conrod_core/latest/conrod_core/guide/chapter_3/index.html#handling-events

[issues]: https://github.com/PistonDevelopers/conrod/issues
[1.0.0 milestone]: https://github.com/PistonDevelopers/conrod/milestones/1.0.0

[Contributing]: https://github.com/PistonDevelopers/piston/blob/master/CONTRIBUTING.md