#web-view #cross-platform #desktop #rendering #window #events #macos

UWUWUW

跨平台 WebView 渲染库

3 个版本

0.13.4 2022年2月20日
0.13.3 2022年2月20日
0.13.2 2022年2月19日

#1132 in GUI

Apache-2.0 OR MIT 以及可能 LGPL-3.0

2MB
2.5K SLoC

WRY Webview Rendering library

支持所有主要桌面平台(如 Windows、macOS 和 Linux)的跨平台 WebView 渲染库。

概述

Wry 连接每个平台的网络引擎,并提供易于使用且统一的接口以渲染 WebView。它还作为模块重新导出 tao 以用于事件循环和窗口创建。

用法

创建窗口并浏览网站的示例代码如下

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,
      _ => (),
    }
  });
}

examples 目录下还有更多示例,您可以输入以下命令尝试它们

cargo run --example multi_window

有关更多信息,请参阅以下文档。

文档

平台特定说明

所有平台都使用 tao 来构建窗口,而 wry 将其作为应用程序模块重新导出。以下是每个平台使用的底层网络引擎以及可能需要安装的一些依赖项。

Linux

Tao 使用 gtk-rs 及其相关库来创建窗口,wry 也需要 WebKitGTK 用于 WebView。因此,请确保已安装以下包

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 是 macOS 的本地库,因此一切应该正常。

如果您使用 osxcross 为 macOS 进行交叉编译并遇到类似 无法找到具有名称 WKWebViewConfiguration 的类 的运行时崩溃,则可能是 WebKit.framework 没有正确链接,要修复此问题,请设置 RUSTFLAGS 环境变量

RUSTFLAGS="-l framework=WebKit" cargo build --target=x86_64-apple-darwin --release

Windows

使用 Microsoft Edge Chromium 提供的 WebView2。因此,wry 支持 Windows 7、8 和 10。

许可证

Apache-2.0/MIT

依赖项

~5–53MB
~774K SLoC