#web-view #webview2 #webkit #web-apps #linux #windows

webview_app

Simple integration of a web view in an application window for windows and linux similar to Electron

5 releases (stable)

new 1.1.0 Dec 11, 2024
1.0.0-beta.40 Nov 10, 2024
0.5.1 Jul 24, 2021

#99 in GUI

Download history 514/week @ 2024-09-23 233/week @ 2024-09-30 584/week @ 2024-10-07 1674/week @ 2024-10-14 859/week @ 2024-10-21 387/week @ 2024-10-28 214/week @ 2024-11-04 97/week @ 2024-11-11 10/week @ 2024-11-18 1100/week @ 2024-12-02

1,320 downloads per month

MIT license

83KB
1.5K SLoC

webview-app

Rust Web View Application for Windows and Linux similar to Electron, but very light weight. It offers the possibility to make web requests from the web site to the rust app and to send events from rust to the web site. The web site can be hosted as integrated resource, of course alternatively via HTTP(s):// or file://.

Sample webview_app: Sample WebView app

Version >= 1.0.0

webview_app >= version 1.0.0 is completely redesigned and more light weight, it doesn't include a warp server anymore and doesn't need the tokio runtime either.

If you want to update from older version, you have to migrate, please look at this documentation or this tutorial.

If you don't want to migrate, you have to stick to the old version 0.5.1. Here is the crate documentation for Version 0.5.1.

Features

webview_app includes following features:

  • Functional approach with a builder pattern
  • (almost) the same setup for Windows and Linux version
  • Uses WebView2 on Windows and WebKitGtk-6.0 on Linux
  • Can serve the web site via resources (single file approach)
  • Optional save and restore of window bounds
  • Has an integrated event sink mechanismn, so you can retrieve javascript events from the Rust app
  • Offers the possibility to serve requests from javascript to Rust
  • You can expand the Gtk4 Window (on Linux) with a custom header bar
  • You can alternatively disable the Windows titlebar and borders, and you can build a title bar in HTML with standard Windows logic for closing, maximizing, restoring resizing, snap to dock, ...

Functional approach with webview builder:

fn on_activate(app: &Application)->WebView {
    let webview = WebView::builder(app)
        .title("Website form custom resources 🦞")
        .save_bounds()
        .devtools(true)
        .webroot(include_dir!("webroots/custom_resources"))
        .query_string("?param1=123&param2=456")
        .default_contextmenu_disabled()
        .build();

     webview
}

fn main() {
    Application::new("de.uriegel.hello")
    .on_activate(on_activate)
    .run();
}

Sample of a Windows App with custom titlebar: custom titlebar

Prerequisites on Linux (Fedora)

  • sudo dnf install gtk4-devel
  • sudo dnf install webkitgtk6.0-devel
  • sudo dnf install libadwaita-devel

Prerequisites on Linux (Ubuntu)

  • sudo apt install libgtk-4-dev
  • sudo apt install libwebkitgtk-6.0-dev
  • sudo apt install libadwaita-1-dev

Run examples

cargo run --example hello

oder

cargo run --example hello --release

Icon in Windows

Use winres and build-script build.rs with res.set_icon(). This Icon will be the web view windows icon.

Dependencies

~0.7–48MB
~710K SLoC