A declarative desktop GUI framework for the Rust programming language.
# Features
- ### __Cross-platform (Windows, Linux, MacOS)__
Build desktop applications which look and behave the same for Windows, Mac, and Linux.
- ### __Declarative__
Write GUI code in a declarative way in pure Rust (no DSL macros).
- ### __Reactive__
Views derive from application state. Change the state and the views which bind to it update automatically.
- ### __Flexible layout__
Create flexible layouts which adapt to changes in size. Powered by [morphorm](https://github.com/vizia/morphorm).
- ### __Powerful styling__
Take advantage of stylesheets with hot-reloading to fully customize the look of your application.
- ### __Animations__
Bring your applications to life with animations.
- ### __Built-in views and themes__
Utilize over 25 ready-made views as well as two built-in themes (light and dark) to get you started. Includes 4250+ SVG icons, provided by [Tabler Icons](https://tabler-icons.io).
- ### __Accessibility__
Make your applications accessible to assistive technologies such as screen readers, powered by [accesskit](https://github.com/accesskit/accesskit).
- ### __Localization__
Adapt your application to different locales, including translating text with [fluent](https://github.com/projectfluent/fluent-rs).
- ### __Optimised rendering__
Vizia leverages the powerful and robust [skia](https://github.com/rust-skia/rust-skia) library for rendering, with further optimizations to only draw what is necessary.
- ### __Audio plugin development__
Vizia provides an alternative [baseview](https://github.com/RustAudio/baseview) windowing backend for audio plugin development, for example with the [nih-plug](https://github.com/robbert-vdh/nih-plug) framework.
# Widget Gallery
Explore all of the built-in views in the widget gallery. Run with:
```bash
cargo run --release -p widget_gallery
```
# At a Glance
A simple counter application. Run with `cargo run --example counter`.
```
…
```
# Learning
## Book
A guide book for vizia is available [here](https://book.vizia.dev).
## Docs
Auto-generated code documentation can be found [here](https://docs.vizia.dev).
## Examples
A list of [examples](https://github.com/vizia/vizia/tree/main/examples) is included in the repository.
To run an example:
```bash
cargo run --release --example name_of_example
```
TThere are also example applications which are packages with their own Cargo.toml files. To run, for example, the widget gallery, use the following command:
```bash
cargo run -p widget_gallery
```
Where widget_gallery should be replaced with the name of the example package you wish to run.
# Contributing and Community
The Vizia project welcomes contributions from developers of all experience levels! Whether you’re interested in:
- Reporting bugs in the framework or examples
- Improving documentation and examples
- Adding features or optimizations
- Fixing issues or reviewing pull requests
- Writing custom widgets or extensions
All contributions are valuable.
For help with vizia, or to get involved with contributing to the project, come join us on [our discord](https://discord.gg/aNkTPsRm2w).
# License and Attribution
Vizia is licensed under [MIT](https://github.com/vizia/vizia/blob/main/LICENSE).
Vizia logo designed by [Lunae Somnia](https://github.com/LunaeSomnia).