| Crates.io | masonry_winit |
| lib.rs | masonry_winit |
| version | 0.4.0 |
| created_at | 2025-05-10 20:41:23.007199+00 |
| updated_at | 2025-10-29 10:11:45.52958+00 |
| description | Data-oriented Rust UI design toolkit. |
| homepage | |
| repository | https://github.com/linebender/xilem |
| max_upload_size | |
| id | 1668807 |
| size | 178,100 |
This is the Winit backend for the Masonry GUI framework.
See Masonry's documentation for more details, examples and resources.
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.)
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.
Discussion of Masonry Winit development happens in the Linebender Zulip, specifically the #masonry channel. All public content can be read without logging in.
Contributions are welcome by pull request. The Rust code of conduct applies.
Licensed under the Apache License, Version 2.0 (LICENSE or http://www.apache.org/licenses/LICENSE-2.0)