Expand description
Wry is a Cross-platform WebView rendering library.
To build a Window with WebView embedded, we could use application module to create
EventLoop and the window. It’s a module that re-exports APIs from tao. Then
use webview module to create the WebView from the Window. Here’s a minimum example
showing how to create a hello world window and load the url to Tauri website.
fn main() -> wry::Result<()> {
use wry::{
application::{
event::{Event, StartCause, WindowEvent},
event_loop::{ControlFlow, EventLoop},
window::WindowBuilder,
},
webview::WebViewBuilder,
};
let event_loop = EventLoop::new();
let window = WindowBuilder::new()
.with_title("Hello World")
.build(&event_loop)?;
let _webview = WebViewBuilder::new(window)?
.with_url("https://tauri.studio")?
.build()?;
event_loop.run(move |event, _, control_flow| {
*control_flow = ControlFlow::Wait;
match event {
Event::NewEvents(StartCause::Init) => println!("Wry has started!"),
Event::WindowEvent {
event: WindowEvent::CloseRequested,
..
} => *control_flow = ControlFlow::Exit,
_ => (),
}
});
}Feature flags
Wry uses a set of feature flags to toggle several advanced features. file-drop, protocol,
and tray are enabled by default.
file-drop: Enableswith_file_drop_handlerto control the behaviour when there are files interacting with the window. Enabled by default.protocol: Enableswith_custom_protocolto define custom URL scheme for handling tasks like loading assets. Enabled by default.tray: Enables system tray and more menu item variants on Linux. You can still create those types if you disable it. They just don’t create the actual objects. We set this flag because some implementations require more installed packages. Disable this if you don’t want to installlibappindicatorpackage. Enabled by default.ayatana: Enable this if you wish to use more updatelibayatana-appindicatorsincelibappindicatoris no longer maintained.devtool: Enable devtool on macOS requires calling private functions. While it’s still enabled in debug build on mac, it will require this feature flag to actually enable it in release build. Avoid this in release build if your app needs to publish to App Store.transparent: Transparent background on macOS requires calling private functions. Avoid this in release build if your app needs to publish to App Store.fullscreen: Fullscreen video and other media on macOS requires calling private functions. Avoid this in release build if your app needs to publish to App Store.dox: Enables this inpackage.metadata.docs.rssection to skip linking some Linux libraries and prevent from building documentation on doc.rs fails.
Modules
Enums
Type Definitions
Convenient type alias of Result type for wry.