/freya

Cross-platform GUI library for πŸ¦€ Rust powered by 🧬 Dioxus and 🎨 Skia.

Primary LanguageRustMIT LicenseMIT

Freya πŸ¦€

Freya logo

Discord Server Github Sponsors codecov

Website | Nightly Docs | Stable Docs | Book | Discord

Freya is a cross-paltform GUI library for Rust powered by 🧬 Dioxus and 🎨 Skia.

It does not use any web tech, check the Differences with Dioxus.

⚠️ It's currently work in progress, but you can already play with it! You can join the Discord server if you have any question or issue.



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" }
            }
        }
    )
}

Freya Demo

Sponsors πŸ€—

Thanks to my sponsors for supporting this project! πŸ˜„

ι«˜εΊ†δΈ°

Want to try it? πŸ€”

πŸ‘‹ Make sure to check the Setup guide first.

⚠️ If you happen to be on Windows using windows-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

Usage πŸ“œ

Add Freya and Dioxus as dependencies:

freya = "0.2"
dioxus = { version = "0.5", features = ["macro", "hooks"], default-features = false }

Features ✨

  • ⛏️ Built-in components (button, scroll views, switch and more)
  • πŸš‡ Built-in hooks library (animations, text editing and more)
  • πŸ” Built-in devtools panel
  • 🧰 Built-in headless runner to test UI
  • 🎨 Theming support (not extensible yet ⚠️)
  • πŸ›©οΈ Cross-platform (Windows, Linux, MacOS)
  • πŸ–ΌοΈ SKSL Shaders support
  • πŸ”„οΈ Dioxus Hot-reload support
  • πŸ“’ Multi-line text editing
  • 🦾 Basic Accessibility Support (experimental ⚠️)
  • 🧩Compatible with dioxus-sdk and other Dioxus renderer-agnostic libraries

Goals 😁

  • 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

🀠 Projects

Valin βš’οΈ is a Work-In-Progress cross-platform code editor, made with Freya πŸ¦€ and Rust, by me.

Valin

MIT License