<div align="center">
# Masonry Winit
**A foundational framework for Rust GUI libraries**
[](https://crates.io/crates/masonry_winit)
[](https://docs.rs/masonry_winit)
[](#license)
\
[](https://xi.zulipchat.com/#narrow/stream/317477-masonry)
[](https://github.com/linebender/xilem/actions)
[](https://deps.rs/crate/masonry_winit)
</div>
[winit]: https://crates.io/crates/winit
This is the [Winit][winit] backend for the [Masonry] GUI framework.
See [Masonry's documentation] for more details, examples and resources.
## Example
```rust
use masonry::core::{ErasedAction, NewWidget, Widget, WidgetId, WidgetPod};
use masonry::dpi::LogicalSize;
use masonry::theme::default_property_set;
use masonry_winit::app::{AppDriver, DriverCtx, NewWindow, WindowId};
use masonry_winit::winit::window::Window;
struct Driver {
// ...
}
impl AppDriver for Driver {
fn on_action(
&mut self,
window_id: WindowId,
ctx: &mut DriverCtx<'_, '_>,
widget_id: WidgetId,
action: ErasedAction,
) {
// ...
}
}
fn main() {
let main_widget = {
// ...
};
let window_size = LogicalSize::new(400.0, 400.0);
let window_attributes = Window::default_attributes()
.with_title("My Masonry App")
.with_resizable(true)
.with_min_inner_size(window_size);
let driver = Driver {
// ...
};
let event_loop = masonry_winit::app::EventLoop::with_user_event()
.build()
.unwrap();
masonry_winit::app::run_with(
event_loop,
vec![NewWindow::new(
window_attributes,
NewWidget::new(main_widget).erased(),
)],
driver,
default_property_set(),
)
.unwrap();
}
```
(See the Masonry documentation for more detailed examples.)
[Masonry's documentation]: https://docs.rs/masonry
[Masonry]: https://crates.io/crates/masonry
## Minimum supported Rust Version (MSRV)
This version of Masonry Winit has been verified to compile with **Rust 1.88** and later.
Future versions of Masonry Winit might increase the Rust version requirement.
It will not be treated as a breaking change and as such can even happen with small patch releases.
## Community
Discussion of Masonry Winit development happens in the [Linebender Zulip](https://xi.zulipchat.com/), specifically the [#masonry channel](https://xi.zulipchat.com/#narrow/stream/317477-masonry).
All public content can be read without logging in.
Contributions are welcome by pull request.
The [Rust code of conduct] applies.
## License
Licensed under the Apache License, Version 2.0 ([LICENSE](LICENSE) or <http://www.apache.org/licenses/LICENSE-2.0>)
[Rust code of conduct]: https://www.rust-lang.org/policies/code-of-conduct