Crate wry[][src]

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, tray, and win32 are enabled by default.

  • file-drop: Enables with_file_drop_handler to control the behaviour when there are files interacting with the window.
  • protocol: Enables with_custom_protocol to define custom URL scheme for handling tasks like loading assets.
  • 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 install libappindicator, sourceview, and clang package.
  • menu: Enables menu item variants on Linux. You can still create those types if you 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 install sourceview package.
  • win32: Enables purely Win32 APIs to build the WebView on Windows. This makes backward compatibility down to Windows 7 possible.
  • dox: Enables this in package.metadata.docs.rs section to skip linking some Linux libraries and prevent from building documentation on doc.rs fails.

Debug build

Debug profile enables tools like inspector for development or debug usage. Note this will call private APIs on macOS.

Modules

application

Re-exported Tao APIs

webview

WebView struct and associated types.

Enums

Error

Errors returned by wry.

Value

Represents any valid JSON value.

Type Definitions

Result

Convenient type alias of Result type for wry.