GUI Creation
The areweguiyet page also tracks a number of other efforts, but may not be actively kept up to date.
The GUI libraries on this page have different goals. Some let you create stand-alone desktop applications, others are meant to be embedded inside your own render pipeline and some can run inside your browser by compiling to WebAssembly. Embeddable GUI libraries are usually meant for use in games and similar applications.
Rust Libraries
These are crates which contain mostly or only Rust code.
Most of them share some common deficiencies, like a lack of font shaping and font fallback.[1][2][3][4]
Some of these crates use
0.28.7 for creating windows and handling input and inherit some of winit
winit
's input handling deficiencies.[5][6][7]
Despite these issues, many of these crates are perfectly usable for personal projects.
Crate name | Status (latest version) | Development Status (last updated) | Embeddable
Can you use the library within your own render pipeline?
|
Desktop
Does the library handle window creation and the render pipeline?
|
WebAssembly
Can the GUI be rendered on a website?
|
Notes |
---|---|---|---|---|---|---|
1.0.0-alpha4 (home)
|
Experimental (0.1.0) | Stalled (crates.io: n/a
The crate is only a placeholder. To use azul, depend on the git repository. , repository: 2020/03/10)
|
Based on WebRender. | |||
0.76.1
|
Experimental (0.70.0) | Active (crates.io: 2020/05/9, repository: 2020/07/29) | Part of the Piston project. Do not use the conrod crate, which is outdated. Used by Veloren (forked).
| |||
0.11.3
|
Experimental (0.1.0) | Active (crates.io: 2020/08/10, repository: 2020/08/20) | Part of the emerging Bevy game engine. | |||
0.8.3
|
Experimental (0.6.0) | Active (crates.io: 2020/06/01, repository: 2020/07/26) | ||||
0.23.0
|
Experimental (0.1.2) | Active (crates.io: 2020/06/10, repository: 2020/07/23) | Immediate mode GUI inspired by imgui. | |||
0.10.0
|
Experimental (0.1.1) | Active (crates.io: 2020/04/15, repository: 2020/07/28) | Inspired by Elm | |||
0.14.0-alpha
|
Experimental (0.4.1) | Active (crates.io: 2020/05/07, repository: 2020/07/21) | Embedding support is a goal for the project. | |||
0.3.1-alpha4
|
Experimental (0.3.1-alpha3) | Active (crates.io: 2020/08/13, repository: 2020/08/13) | Uses an ECS library under the hood. Part of the Redox project. |
Rust bindings/wrappers
These crates aim to provide Rust-y interfaces to libraries/toolkits which are written in some language other than Rust.
Crate name | Status (latest version) | Development Status (last updated) | Wraps | Embeddable
Can you use the library within your own render pipeline?
|
Desktop
Does the library handle window creation and the render pipeline?
|
Notes |
---|---|---|---|---|---|---|
0.18.1 (home)
|
GTK+ 3 | |||||
1.4.13
|
FLTK | |||||
0.11.0
|
Dear ImGui (imgui) | Has been used in some farily notable games | ||||
0.24.1
|
GTK+ 3 (via 0.18.1 )
|
Inspired by Elm | ||||
0.5.58
|
sciter | Not open source. The "Free" plan does not allow static linking. Uses a mix of HTML, CSS and a custom scripting language to drive the GUI. |
See also
References
- ↑ hecrj/iced#33 Text shaping and font fallback
- ↑ kas-gui/kas#13 Text processing
- ↑ kas-gui/kas-text#1 Design requirements
- ↑ linebender/druid#883 text work planning & discussion
- ↑ rust-windowing/winit#753 A keyboard input model
- ↑ rust-windowing/winit#734 Duplicate key events on macOS
- ↑ rust-windowing/winit#1488 macOS: Repeated key's ReceivedCharacter cancelled by previous key's keyUp event