- Rust 98.2%
- WGSL 1.8%
| assets | ||
| crates | ||
| examples | ||
| src | ||
| .gitignore | ||
| Cargo.toml | ||
| LICENSE-APACHE | ||
| LICENSE-MIT | ||
| README.md | ||
| ROADMAP.md | ||
Yarrow
A modern imperative GUI library in Rust with extreme performance and control, geared towards audio software.
What to Expect
Yarrow is currently functional but still very incomplete. See the roadmap for details.
Yarrow is built from the ground-up for the Meadowlark DAW project. This GUI library is just a side project, so don't expect the same level of support as other GUI libraries.
Only the features needed for Meadowlark and its plugins are planned. The aim is NOT to be a generic, general-purpose GUI library.
That being said, contributions are welcome!
Philosophy
Yarrow is much different from other modern GUI libraries. Instead of focusing on an "elegant and easy to use" declarative API, Yarrow instead provides users with a novel imperative API with complete control over exactly how frames are styled, laid-out, and updated.
Features
- Cross-platform (Linux, Mac, and Windows)
- Native and lightweight (no web technologies!)
- Ultra-fast hardware-accelerated rendering in wgpu with support for text, vector graphics, textures, and custom shaders
- Extreme performance (you are in control over exactly how your frames are updated!)
- Can be used for both standalone applications and audio plugins
- Designed from the ground up to support multi-windowed applications
- Powerful "virtual slider" logic that feels great to use, with optional "pointer locking" support
- Accessibility and localization support*
- Permissive license
*Yarrow does not automatically set up accessibility for you. You must manually provide Yarrow with information on how accessibility tools should navigate your program.
Getting Started
To get started, read the [book] (TODO)
This repository only houses the GUI library. For examples and guides on how to use Yarrow for audio plugin development, see (TODO).
Contributing
(TODO)
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0), or
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.