Firewheel

Documentation Crates.io License

This crate is currently experimental and incomplete.


Firewheel is a low-level, retained-mode, event-driven, barebones, "DIY" toolkit for making high-performance GUIs. It is NOT a complete GUI framework with ready-made widgets, but rather a toolkit to aid in building your own widgets and GUI systems.

This project was born out of the need for a high-performance GUI toolkit for Meadowlark. Meadowlark's GUI is quite unconventional (as far as generic GUI toolkits are concerned), because it contains a whole lot of custom widgets, custom layout logic, custom rendering logic (with shaders), and unique performance optimization challenges. So in the end I decided to develop an in-house toolkit that is tailored to the needs of Meadowlark (and to my personal coding workflow).

If you are just looking for a easy-to-use/feature rich GUI toolkit in Rust, please check out one of these GUI toolkits instead (that being said, depending on your definition of "simple", you may still enjoy using Firewheel ;) ) * Vizia * native Rust * retained mode * data-driven * can be used to make audio plugin GUIs * Iced * native Rust * immediate mode * data-driven * can be used to make audio plugin GUIs * Egui * native Rust * immediate mode * data-driven * can be used to make audio plugin GUIs * Tauri * web based * Slint * native-ish Rust * retained mode * data-driven * Druid * native Rust * retained mode * data-driven * Relm * Rust wrapper around GTK+ * retained mode * event-driven * gtk4-rs * Rust bindings to GTK4 * retained mode * event-driven * gtk3-rs * Rust bindings to GTK3 * retained mode * event-driven * imgui-rs * Rust bindings to imgui * immediate mode * data-driven * can be used to make audio plugin GUIs

How it works

Non-goals

FAQ