A modern retained-mode GUI library in Rust with extreme performance and control, geared towards audio software
  • Rust 98.2%
  • WGSL 1.8%
Find a file
2025-10-14 01:10:05 +02:00
assets overhaul styling system 2024-08-09 16:07:13 -05:00
crates add panel resizer frame 2025-10-10 18:07:49 -05:00
examples add multiwindow example 2025-10-10 18:42:07 -05:00
src add panel resizer frame 2025-10-10 18:07:49 -05:00
.gitignore rewrite 2025-09-22 11:53:05 -05:00
Cargo.toml more progress 2025-10-09 17:44:02 -05:00
LICENSE-APACHE moved to Codeberg 2025-09-21 18:44:34 -05:00
LICENSE-MIT moved to Codeberg 2025-09-21 18:44:34 -05:00
README.md rewrite 2025-09-22 11:53:05 -05:00
ROADMAP.md Update ROADMAP.md 2025-10-14 01:10:05 +02:00

Yarrow

Documentation Crates.io License

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

at your option.