Skip to content
/ Freya Public
forked from marc2332/freya

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

License

Notifications You must be signed in to change notification settings

PlayForm/Freya

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Freya πŸ¦€

Freya logo

Discord Server Github Sponsors codecov

Website](https://freyaui.dev) | [Nightly Docs | Stable Docs | Book](https://book.freyaui.dev) | [Discord

Freya is a cross-paltform GUI library for Rust powered by 🧬 Dioxus](https://dioxuslabs.com) and 🎨 [Skia.

⚠️ 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);

    render!(
        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

About

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

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 95.3%
  • CSS 2.2%
  • Handlebars 1.4%
  • Other 1.1%