WRY

用于 Tauri 的 Rust 跨平台 WebView 库。(Cross-platform WebView library in Rust for Tauri. [WIP])

  • Owner: tauri-apps/wry
  • Platform: Windows,Mac,Linux
  • License:: Apache License 2.0
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

WRY (Webview Rendering librarY)

Cross-platform WebView rendering library in Rust that supports all major desktop platforms like Windows, macOS, and Linux.

[dependencies]
wry = "0.9"

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 gtksourceview3 libappindicator-gtk3

Debian / Ubuntu:

sudo apt install libwebkit2gtk-4.0-dev libgtksourceview-3.0-dev libappindicator3-dev

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

Main metrics

Overview
Name With Ownertauri-apps/wry
Primary LanguageRust
Program languageRust (Language Count: 5)
Platform
License:Apache License 2.0
所有者活动
Created At2020-07-12 15:12:44
Pushed At2025-05-24 14:06:05
Last Commit At
Release Count174
Last Release Namewry-v0.51.2 (Posted on )
First Release Namev0.5 (Posted on )
用户参与
Stargazers Count4.2k
Watchers Count40
Fork Count337
Commits Count1.1k
Has Issues Enabled
Issues Count429
Issue Open Count107
Pull Requests Count887
Pull Requests Open Count17
Pull Requests Close Count153
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private