Website | Nightly Docs | Stable Docs | Book | Discord
Freya is a cross-platform GUI library for Rust powered by 𧬠Dioxus and π¨ Skia.
It does not use any web tech, check the Differences with Dioxus.
fn app() -> Element {
let mut count = use_signal(|| 0);
rsx!(
rect {
height: "50%",
width: "100%",
main_align: "center",
cross_align: "center",
background: "rgb(0, 119, 182)",
color: "white",
shadow: "0 4 20 5 rgb(0, 0, 0, 80)",
label {
font_size: "75",
font_weight: "bold",
"{count}"
}
}
rect {
height: "50%",
width: "100%",
main_align: "center",
cross_align: "center",
direction: "horizontal",
Button {
onclick: move |_| count += 1,
label { "Increase" }
}
Button {
onclick: move |_| count -= 1,
label { "Decrease" }
}
}
)
} |
π Make sure to check the Setup guide first.
β οΈ If you happen to be on Windows usingwindows-gnu
and get compile errors, maybe go check this issue.
Clone this repo and run:
cargo run --example counter
You can also try freya-template
Add Freya and Dioxus as dependencies:
freya = "0.2"
dioxus = { version = "0.5", features = ["macro", "hooks"], default-features = false }
If you are interested in contributing please make sure to have read the Contributing guide first!
- βοΈ Built-in components (button, scroll views, switch and more)
- π Built-in hooks (animations, text editing and more)
- π Built-in developer tools (tree inspection, fps overlay)
- π§° Built-in headless runner to test UI
- π¨ Theming support
- π©οΈ Cross-platform (Windows, Linux, MacOS)
- πΌοΈ SKSL Shaders support
- π Multi-line text editing
- π¦Ύ Accessibility support
- 𧩠Compatible with dioxus-sdk and other Dioxus renderer-agnostic libraries
- Performant and low memory usage
- Good developer experience
- Cross-platform support
- Decent Accessibility support
- Useful testing APIs
- Useful and extensible built-in components and hooks
If you are interested in supporting the development of this project feel free to donate to my Github Sponsor page.
Thanks to my sponsors for supporting this project! π
- Jonathan Kelley and Evan Almloff for making Dioxus and all their help, specially when I was still creating Freya.
- Armin for making rust-skia and all his help and making the favor of hosting prebuilt binaries of skia for the combo of features use by Freya.
- geom3trik for helping me figure out how to add incremental rendering.
- Tropical for this contributions to improving accessibility and rendering.
- And to the rest of contributors and anybody who gave me any kind of feedback!
Valin βοΈ is a Work-In-Progress cross-platform code editor, made with Freya π¦ and Rust, by me.