3 releases
0.13.4 | Feb 20, 2022 |
---|---|
0.13.3 | Feb 20, 2022 |
0.13.2 | Feb 19, 2022 |
#1284 in GUI
2MB
2.5K
SLoC
Cross-platform WebView rendering library in Rust that supports all major desktop platforms like Windows, macOS, and Linux.
Overview
Wry connects the web engine on each platform and provides easy to use and unified interface to render WebView. It also re-exports tao as a module for event loop and window creation.
Usage
The minimum example to create a Window and browse a website looks like following:
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,
_ => (),
}
});
}
There are also more samples under examples
, you can enter commands like following to try them:
cargo run --example multi_window
For more information, please read the documentation below.
Documentation
Platform-specific notes
All platforms uses tao to build the window, and wry re-export it as application module. Here are the underlying web engine each platform uses, and some dependencies you might need to install.
Linux
Tao uses gtk-rs and its related libraries for window creation and wry also needs WebKitGTK for WebView. So please make sure following packages are installed:
Arch Linux / Manjaro:
sudo pacman -S webkit2gtk libappindicator-gtk3
Debian / Ubuntu:
sudo apt install libwebkit2gtk-4.0-dev libappindicator3-dev
Fedora
sudo dnf install gtk3-devel webkit2gtk3-devel libappindicator-gtk3-devel
macOS
WebKit is native on macOS so everything should be fine.
If you are cross-compiling for macOS using osxcross and encounter a runtime panic like Class with name WKWebViewConfiguration could not be found
it's possible that WebKit.framework
has not been linked correctly, to fix this set the RUSTFLAGS
environment variable:
RUSTFLAGS="-l framework=WebKit" cargo build --target=x86_64-apple-darwin --release
Windows
WebView2 provided by Microsoft Edge Chromium is used. So wry supports Windows 7, 8, and 10.
License
Apache-2.0/MIT
Dependencies
~6–54MB
~764K SLoC