WRY (Webview Rendering librarY)

tao as a module for event loop and window creation

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

[dependencies]
wry = "0.11"

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 clang

Debian / Ubuntu:

sudo apt install libwebkit2gtk-4.0-dev libappindicator3-dev clang

Fedora

sudo dnf install gtk3-devel webkit2gtk3-devel libappindicator-gtk3-devel clang

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

Issues

Collection of the latest Issues

g-berthiaume

g-berthiaume

2

Describe the bug Compiling the example on windows fails.

Steps To Reproduce Steps to reproduce the behavior: cargo run --example hello_world

Platform and Versions (please complete the following information): OS: Windows 10 Home [64-bit] Rustc: rustc 1.58.1 (db9d1b20b 2022-01-20)

wusyong

wusyong

platform: Linux
0

Gtk has new release. We should update to it. The crates that we own should also update are:

  • tao
  • webkit2gtk-rs
  • soup2-rs
  • javascriptcore-rs
PerBothner

PerBothner

stauts: help wanted
0

This isn't really a feature request but rather a request to enhance the example applications. Warning: I am quite new to Rust, and it is quite likely an experienced Rust programmer would not have these problems.

I'm trying to create multiple non-trivial windows in the same application. The examples/multi_window.rs is a bit too simple, in that window2 is relatively simple and very different from window1. I'd like openWindow to create the same kind of window, which means using the same new_window function/closure to create both. But then I get into nasty move/ownership issues, which I haven't been able to solve, so far.

Attached is what I have so far. It builds and runs - but as soon as I uncomment the second new_window call I get lots of errors. What is the clean/recommended way to get that functionality? (Feel free to use anything in my code that you find useful if you enhance the examples.) The use of "http://example.com" is just a place-holder. Most likely would be to enhance the UserEvent::NewWindow to pass suitable options from JavaScript to the rpc-handler to the event_loop handler.

main-rs.txt

Note I also used the seemingly-newer EventLoop::with_use_event idiom from custom_titlebar.rs, instead of the mpsc::channel logic from multi_window.rs.

atlanticaccent

atlanticaccent

stauts: help wanted
0

Is your feature request related to a problem? Please describe. I'd like to be able to detect or monitor when the URL of a webview changes, for instance, when clicking on a link. This can be helpful for implementing things like custom download behaviour.

Describe the solution you'd like Either a new event describing the URL the current webview or a new webview has navigated to OR a function that can be called on a the WebviewBuilder which allows the registration of a callback which is executed whenever navigation ocurrs.

Describe alternatives you've considered You could register HTTP/HTTPS as custom protocols, do the fetch yourself in rust then pass the resulting data through, though this seems a bit extreme if you want to just say log page navigations.

You could also potentially insert an onbeforeunload handler using the with_initialization_script builder function, though that might not catch certain navigations events or popups (which may themselves be another problem altogether). There could be a number of other ways to do this through pure javascript too.

Would you assign yourself to implement this feature?

  • Yes
  • No

Additional context There may be an obvious way to do this that I haven't seen, but I can't find it.

amrbashir

amrbashir

type: feature request
8

Tauri has a lot of functions in its Js API that can and should be synchronous instead of async, for example the homeDir function in tauri's path module. Synchronous communication can also help boost the performance since it doesn't include any serializations (I think).

  • Webview2 has AddHostObjectToScript() that exposes full host objects to Js which can be used asynchronously and synchronously.
  • WkWebview has JsExport that works similar to Webview2 AddHostObjectToScript()
  • Webkit2gtk not sure if it has something similar or not but here is a good article, maybe?

Would you assign yourself to implement this feature?

  • Yes (partially)
  • No
adamthrash

adamthrash

type: bug
4

Describe the bug

CustomMenuItem accelerators in Windows don't trigger on_menu_event, though they do in macOS.

To Reproduce

Steps to reproduce the behavior:

  1. Clone minimal example repository here.
  2. Set up and run app (I use yarn install and yarn tauri dev).
  3. Click File -> Test and note output in terminal. ("test" Test registered!)
  4. Press Ctrl + T and note that output does not appear in terminal.

Expected behavior

Both clicking the menu item and triggering it via its accelerator produce output in the terminal on Windows, since both actions work on macOS.

Screenshots

NA

Platform and Versions (required):

PerBothner

PerBothner

type: enhancement
1

Gtk uses "overlay scrollbars" which are only shown on mouseover. This saves space but causes some problems: For example you can't click in the area that is covered by the scrollbar. It also causes portability problems in terms of area calculations and event handling.

Overlay scrollbars are neat in some applications, but I don't think they should be the default for Wry applications. Ideally, it would be an option that can be overridden, but defaults to disabled.

I found this link helpful.

fivethousand

fivethousand

stauts: help wanted
0

Describe the bug Pointer lock is broken on both Linux and macOS (and maybe on Windows, too).

Steps To Reproduce

Expected behavior Click on the canvas. The mouse pointer should disappear, and you should be able to move the red dot with your mouse. After pressing ESC, the mouse pointer should be at the same position where it was when entering pointer lock.

Observed behavior Linux: Mouse pointer disappears, but seems to be forced into the top left corner of the window. Getting mouse movement does not work (which is most likely why one wants pointer lock in the first place, otherwise it is rather useless), and when exiting pointer lock (ESC), the mouse pointer is in the top left corner of the window.

macOS: Pointer lock does not work at all.

Note: Pointer lock (of the website used for demonstration) works flawlessly in Safari/Chrome (macOS) and in Firefox/Vivaldi (Linux).

Platform and Versions (please complete the following information): OS: macOS (11.6), Linux (Manjaro 21.1.6) Rustc: 1.56.1

Would you assign yourself to resolve this bug?

  • Yes
  • No
tauri-apps[bot]

tauri-apps[bot]

stauts: help wanted
1

This issue has been upstream from https://github.com/tauri-apps/tauri/issues/2604

Describe the bug

Thank you for the amazing work, progress and transparency with the community.

I’m going through a challenge with WebKit. I’ll try to be a brief as possible.

My app is based on Nuxt, using Nuxt Auth with HTTPOnly and Secure Cookie, Axios, and connects to the backend through Axios proxy and withcredentials.

I found out that my app was not login in on Safari/Tauri. After taking a look when it comes to setting Secure cookies locally, not all browsers behave in the same way. For example, Safari doesn’t set Secure cookies on localhost, but Firefox and Chrome do.

To test, I generated a local SSL Certificate and it works on Safari and Tauri Dev but not on Tauri Build.

Set-Cookie: XSRF-TOKEN=eyJ0eXAiOiJK; expires=Fri, 08 Oct 2021 18:47:22 GMT; HttpOnly; Max-Age=2592000; Path=/; SameSite=Lax; Secure

References

https://web.dev/when-to-use-local-https/

Update

The same behavior is happening in the Linux environment.

tauri-apps[bot]

tauri-apps[bot]

stauts: help wanted
0

This issue has been upstream from https://github.com/tauri-apps/tauri/issues/2735

Is your feature request related to a problem? Please describe. I want to rely on navigator.language or navigator.languages in the webview to determine which language a user prefers and to then translate the app.

On WSL 2 / Ubuntu 20 the language is just "c", on Windows 10 with WebView2 it does not respect language settings on the system or browser (Edge) level, on native Ubuntu 20 it had a language that was actually more accurate then the system setting, but did not respect the system setting as well. I don't have access to a macos device.

Describe the solution you'd like Ideally navigator.language or navigator.languages contain languages that match the system level user preferences.

Describe alternatives you've considered One could call system level APIs (different for every platform, i guess) from Rust to determine the preferences and expose those to Rust and finally the webview. Without changing navigator.language or navigator.languages this approach is not ideal, because some libraries rely on those fields. Maybe an approach where those preferences are exposed on the navigator and additionally have exposed to Rust and Webview via functions.

wusyong

wusyong

type: bug
1

Despite Webkitgtk allows registering custom protocol, the parameter URISchemeRequest will only contain URI. Other properties will all be empty.

I haven't filed a bug on Webkit's bugzilla since trying to propose a mcve in C is more difficult than I thought. Maybe it can be simpler than stream_range example?

jkelleyrtp

jkelleyrtp

type: feature request
4

Right now, RPC handlers and custom protocol take callbacks. However, in these handlers, you might want to perform some sort of async action on the Rust side. The JS is already awaiting the RPC call, so it should be possible to perform async on the Rust side, but it is not without blocking the handler's thread.

The handler and callbacks should allow some sort of async code, or allow the RPC requests to be resumed at a later point in time. It would be okay if the handlers kept async code if the response could be deferred internally, and a handle could be generated that allowed responding outside of the handler itself.

wusyong

wusyong

type: feature request
0

Since webview2 1.0.721 has been stable for a while and we have changed our dep to windows-rs thanks to @wravery which can auto generate all bindings for us. We should use webview2's API to handle file drop instead of defining COM object ourselves. https://docs.microsoft.com/en-us/microsoft-edge/webview2/reference/win32/icorewebview2experimentalcompositioncontroller3?view=webview2-1.0.721-prerelease&preserve-view=true

mynameisvasco

mynameisvasco

type: feature request
7

Is your feature request related to a problem? Yes, developers can't use startup flags when they instantiate new web windows.

Describe the solution you'd like It's common knowledge that browsers often accept startup flags. In my personal opinion, I think that this project would benefit if such an option was provided. For instance, in WebWindows2 there are flags that allow us to use a proxy server --proxy-server 192.168.1.0:8080, or to change the user data directory --user-data-dir="/random_dir".

WebView2 startup arguments

Would you assign yourself to implement this feature?

  • Yes
  • No
gigioSouza

gigioSouza

stauts: help wanted
0

Describe the bug When navigating through the TAB button in a form, some elements are skipped:

  • input radio
  • input checkbox
  • button

Steps To Reproduce Clone the snapshot/tabbing-behavior branch from repo

Install front-end dependencies with npm install and run the following commands in different terminal windows:

Follow this gif to setup the first steps which you'll just need to select a directory where you want the app to store your data, like sqlite database. It will create a directory called consolidAcao in the directory you choose. You may skip this step, first skip the gif. tauri-tabindex-4

To skip the apps first steps, open the devtools in the console tab and run the following command in it:

You'll be redirected to the following page image

Now you'll only need to press the TAB button from your keyboard and check that the input radio, input checkbox and button will never get focused. (I added a CSS to outline in red the focused element).

All elements in this sample are using the atribute tabindex with a number greater than 0

Expected behavior Be able to interact with any form control using TAB navigation.

Screenshots Tabbing in Tauri instance tauri-tabindex-1

Tabbing in Brave Browser tauri-tabindex-2

Tabbing in Safari, after allowing tab navigation through System Preferences tauri-tabindex-3

Platform and Versions (please complete the following information): OS: Mac OS, version 11.5.0 X64 Rustc: 1.54.0 Node: v16.6.1

Would you assign yourself to resolve this bug?

  • Yes
  • No

Additional context None

lumenian

lumenian

type: enhancement
1

Describe the bug Clicking on the window's resize area at the moment doesn't stop the mouse event from propagation to the webview content.

  • UI components often listen for mouse events. Window resizing should not close modal dialogues and context menus
  • Window resizing will trigger unexpected mouse input in games

Steps To Reproduce

  1. Add an event listener for any of the mouse click events
  2. Resize the window (width decorations set to false) - expect the event callback to fire

Expected behavior Resizing the app's window should not propagate the mouse click event to the webview. This is also the way Electron handles it, as far as I could confirm.

renovate[bot]

renovate[bot]

0

This issue provides visibility into Renovate updates and their statuses. Learn more

Repository problems

These problems occurred while renovating this repository.

  • WARN: App has not been granted permissions to update Workflows - aborting branch.

Other Branches

These updates are pending. To force PRs open, click the checkbox below.

  • chore(deps): update actions/cache action to v2.1.7

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.


  • Check this box to trigger a request for Renovate to run again on this repository
PerBothner

PerBothner

type: enhancement
13

Is your feature request related to a problem? Please describe. The custom_titlebar example does not handle window resize when dragging the window borders using touch events. (It handles windows move using touch or mouse, but resize only using the mouse.)

Describe the solution you'd like Resize window using touch-drag of windows borders.

Would you assign yourself to implement this feature? Don't know what is needed.

Additional context Tested on Fedora Linux 34, with Gnome/Wayland desktop. See issue #397.

PooyaEimandar

PooyaEimandar

type: feature request
2

Hello Thank you for contributing to this amazing project. Does wry support render to texture? I mean something like offscreen rendering?

icidasset

icidasset

stauts: help wanted
5

Describe the bug The service worker cannot be loaded because of the custom tauri:// protocol, it requires https:// or http://localhost specifically.

Steps To Reproduce Load a service worker.

You can fork this repo https://github.com/icidasset/diffuse and use the Github action to compile it on all platforms.

Expected behavior The service worker should load successfully.

Screenshots Screenshot 2021-08-20 at 16 53 40

Platform and Versions (please complete the following information): OS: Mac Rustc: 1.53.0

Would you assign yourself to resolve this bug?

  • Yes
  • No

Additional context Chatted about this on the Tauri discord and tried this suggestion https://stackoverflow.com/questions/49673399/service-workers-unavailable-in-wkwebview-in-ios-11-3/49673400#49673400 But that doesn't work unfortunately.

shiMusa

shiMusa

type: feature request
3

Is your feature request related to a problem? Please describe. Currently, it is not possible to zoom the webview (e.g. via Ctrl +, Ctrl -, or Ctrl mousewheel) as expected since every (to me) known browser supports it.

Describe the solution you'd like

  1. Automatically enable the typical shortcuts for zooming in and out
  2. typescript/javascript method for changing the scaling factor (zoom).

Describe alternatives you've considered Currently, the only suggestion was to change the CSS property document.style.zoom.

imxood

imxood

stauts: help wanted
9

Describe the bug

After tens of minutes or a few hours, something is unresponsive

Steps To Reproduce

Expected behavior

Screenshots

normal:

not normal:

  1. rust is ok, js event is Ok, css hover is Ok, webgl render is Ok, but the text is gone

or:

  1. rust is ok, js event is Ok, css hover is Ok, but webgl render is not Ok

Platform and Versions (please complete the following information):

Would you assign yourself to resolve this bug?

  • Yes
  • No

Additional context Add any other context about the problem here.

wusyong

wusyong

type: bug
0

Describe the bug WebKitWebView would load twice if sharing the same WekKitWebContext.

Steps To Reproduce https://github.com/wusyong/gtkbrowser

Expected behavior Each WebView should only load one URL/page.

Platform and Versions: OS: Linux

Would you assign yourself to resolve this bug?

  • Yes
  • No

Additional context Above repo opens 10 webview windows. All of them share the same web context which registers a "gtk" URL scheme that loads a simple HTML. But some window's pages will be stolen by others. (One window will show nothing and the other will display two HTML files) We've tried adding locks but it has to be added after "load_changed" signal. Otherwise, the situation is still the same. And if I do so, it'll take a long time to show all windows (each window is displayed one by one)

Here's the tracking issue on Webkit's Bugzilla: https://bugs.webkit.org/show_bug.cgi?id=229116

bdjnk

bdjnk

stauts: help wanted
3

Describe the bug

Generate an a tag with the download attribute set and the href attribute pointing to a blob: URL. For example the following.

(example source)

Clicking such a link in any modern browser will initiate download of the linked resource. In Tauri, nothing happens.

To Reproduce

  1. Generate an a tag with the download attribute set and the href attribute pointing to a blob: URL.
  2. Click on the link generated in step 1.
  3. Observe nothing happens

Expected behavior

Download of the linked resource should initiate.

Platform and Versions (required):

Additional context

If a valid navigable URL (eg https://duckduckgo.com/) is used as the href of an a tag with the download attribute set, clicking the resultant link navigates to the given URL instead of downloading the content there.

Versions

Find the latest versions by id

wry-v0.12.2 - Aug 23, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 340 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (169 crate dependencies) \`

[0.12.2]

  • Fixed a Linux multi-window issue where the internal url loader didn't unlock when flushed while empty

    • 5377821 Fix async multiwindow deadlock (#382) on 2021-08-16
  • The custom protocol now return a Request and expect a Response.

  • This allow us to get the complete request from the Webview. (Method, GET, POST, PUT etc..) Read the complete header.

  • And allow us to be more flexible in the future without bringing breaking changes.

  • d202573 refactor: Custom protcol request/response (#387) on 2021-08-22

  • On Linux, automation callbacks now use the first created webview as the return value

    • f9d7049 Use the first created webview for webkit2gtk automation callbacks (#383) on 2021-08-16

Cargo Publish

\` Updating crates.io index Packaging wry v0.12.2 (/home/runner/work/wry/wry) Uploading wry v0.12.2 (/home/runner/work/wry/wry) \`

wry-v0.12.1 - Aug 12, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 323 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (166 crate dependencies) \`

[0.12.1]

  • Add html attributes as another method to load the page. This can provide some other origin header and make CORS request possible.
    • 02ad372 feat: html string attributes (#368) on 2021-08-12
  • Shorter protocol name on Windows. This can make origin be shorter too.
    • 2d9f5c9 Shorter protocol name on Windows (#367) on 2021-08-12

Cargo Publish

\` Updating crates.io index Packaging wry v0.12.1 (/home/runner/work/wry/wry) Uploading wry v0.12.1 (/home/runner/work/wry/wry) \`

wry-v0.12.0 - Aug 09, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 322 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (164 crate dependencies) \`

[0.12.0]

  • Custom Protocol handlers no longer take a &Window parameter.
    • 0e2574c Remove &Window parameter from Custom Protocol handlers (#361) on 2021-07-28
  • Update gtk to version 0.14. This also remove requirement of clang.
    • 251a80b Update gtk to versoin 0.14 (#364) on 2021-08-06
  • Update tao to v0.5. Please see release notes on tao for more information.
  • Add flags to support all other possible unix systems.
    • c0d0a78 Add flags to support all other unix systems. (#352) on 2021-07-21
  • Support having multiple webkit2gtk WebViews on a single WebContext.
    • 3f03d6b Support multiple webviews on a single WebContext (webkit2gtk) (#359) on 2021-07-28
  • On Windows, Fix cusror flickering when Tao widnow is without decorations
    • e28bcce fix(windows): fix mouse style flicker when decorations: false (#350) on 2021-07-20
  • Remove winrt support since it's outdated for a long time. We will reimplement it again once windws-rs is stable!
    • c37973e chore(windows): remove winrt support (#356) on 2021-07-24

Cargo Publish

\` Updating crates.io index Packaging wry v0.12.0 (/home/runner/work/wry/wry) Uploading wry v0.12.0 (/home/runner/work/wry/wry) \`

wry-v0.11.0 - Jul 15, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 317 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (187 crate dependencies) \`

[0.11.0]

  • Allow resizing of borderless window on Windows
    • bd10b8e feat(Windows): resize borderless window (#333) on 2021-07-15
  • Mark enums as #[non_exhaustive] to prevent breaking changes on enum update.
    • f07ae14 refactor: add #[non_exhaustive] attributes to enums (#304) on 2021-07-08
  • Bump tao to 0.4. Please refer to tao changelog for more details.
    • 6eb10d4 bump tao to 0.4 and fix examples (#329) on 2021-07-14
    • Add focus method to Webview
  • Add WebviewExtWindows trait with controller method
  • 621ed1f feat: add .focus() to Webview (#325) on 2021-07-05
  • 96b7b94 Add controller method instead (#326) on 2021-07-07
  • macOS: Remove handler in the webview as it should be handled with the menu.
    • 5a9df15 fix(macos): Remove keypress handler in the webview for copy/paste/cut (#328) on 2021-07-07
  • Fixes multiple custom protocols registration on Windows.
    • 923d346 fix(windows): multiple custom protocols, closes #323 (#324) on 2021-07-02

Cargo Publish

\` Updating crates.io index Packaging wry v0.11.0 (/home/runner/work/wry/wry) Uploading wry v0.11.0 (/home/runner/work/wry/wry) \`

wry-v0.10.3 - Jun 29, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 307 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (186 crate dependencies) \`

[0.10.3]

  • #315 fixed Webview2 runtime performance issues.
    • d3c9b16 Fix Webview2 runtime performance issues (#316) on 2021-06-29

Cargo Publish

\` Updating crates.io index Packaging wry v0.10.3 (/home/runner/work/wry/wry) Uploading wry v0.10.3 (/home/runner/work/wry/wry) \`

wry-v0.10.2 - Jun 23, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 307 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (186 crate dependencies) \`

[0.10.2]

  • Fix file explorer getting blocked by automation.
    • 0c5cdd8 Fix file explorer getting blocked by automation (#310) on 2021-06-23

Cargo Publish

\` Updating crates.io index Packaging wry v0.10.2 (/home/runner/work/wry/wry) Uploading wry v0.10.2 (/home/runner/work/wry/wry) \`

wry-v0.10.1 - Jun 22, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 307 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (186 crate dependencies) \`

[0.10.1]

  • WebContext::set_allows_automation is now available to specify if the context should allow automation (e.g. WebDriver). It is only enforced on Linux, but may expand platforms in the future.
    • 4ad0bf1 move set_allows_automation to WebContext method (#302) on 2021-06-21

Cargo Publish

\` Updating crates.io index Packaging wry v0.10.1 (/home/runner/work/wry/wry) Uploading wry v0.10.1 (/home/runner/work/wry/wry) \`

wry-v0.10.0 - Jun 22, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 307 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (186 crate dependencies) \`

[0.10.0]

  • Add WebViewAttributes
  • Add with_web_context method that can work well with builder pattern.
    • 48f53a3 Add with_web_context method (#292) on 2021-06-13
  • Change the custom protocol handler on macOS so it returns a response on error and a status code on success.
    • 6b869b1 fix(macos): custom protocol response with status code + error response (#279) on 2021-05-20
  • Update signature of custom protocol closure. It should return a mime type string now.
    • cc9fc4b Add mimetype to return type of custom protocol (#296) on 2021-06-13
  • Fix webview creation when using new_any_thread of event loop.
    • 4d62cf5 Fix webview creation when using new_any_thread on Windows (#298) on 2021-06-18
  • Remove Dispatcher, dispatch_script and dispatcher in the webview module and add a js parameter to evaluate_script.
    • de4a5fa refactor: remove Dispatcher and related methods, closes #290 (#291) on 2021-06-09
  • Removes the image dependency.
    • 1d5cc59 chore(deps): remove image dependency (#274) on 2021-05-19
  • Bump tao to 0.3 and add more examples.

For more details, please refer to tao changelog.

  • cd4697e bump tao to 0.3 with examples (#294) on 2021-06-21
  • Add wry::webview::WebContext. It's now a required argument on WebViewBuilder::build.

Cargo Publish

\` Updating crates.io index Packaging wry v0.10.0 (/home/runner/work/wry/wry) Uploading wry v0.10.0 (/home/runner/work/wry/wry) \`

wry-v0.9.4 - May 18, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 302 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (202 crate dependencies) \`

[0.9.4]

  • Update tao to v0.2.6

Cargo Publish

\` Updating crates.io index Packaging wry v0.9.4 (/home/runner/work/wry/wry) Uploading wry v0.9.4 (/home/runner/work/wry/wry) \`

wry-v0.9.3 - May 17, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 302 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (202 crate dependencies) \`

[0.9.3]

  • Expose webview_version function in the webview module.
    • 4df310e feat: get webview version (#259) on 2021-05-12
  • Add print method on Linux and Windows.
    • 54c5ec7 Implement print method on Linux and Windows (#264) on 2021-05-17
  • Disable smooth scrolling on Linux to match bahaviour on browsers.
    • 3e786bb Disable smooth scrolling on Linux (#268) on 2021-05-17

Cargo Publish

\` Updating crates.io index Packaging wry v0.9.3 (/home/runner/work/wry/wry) Uploading wry v0.9.3 (/home/runner/work/wry/wry) \`

wry-v0.9.2 - May 10, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 301 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (202 crate dependencies) \`

[0.9.2]

  • Add tray feature flag from tao.
    • 093c25e feat: expose tray feature flag (#256) on 2021-05-10

Cargo Publish

\` Updating crates.io index Packaging wry v0.9.2 (/home/runner/work/wry/wry) Uploading wry v0.9.2 (/home/runner/work/wry/wry) \`

wry-v0.9.1 - May 09, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 301 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (202 crate dependencies) \`

[0.9.1]

  • Correctly set visibilty when building Window on gtk-backend
    • 4395ad1 fix: only call show_all when needed (#227) on 2021-05-02
  • Fix macOS cursors and other minors UI glitch.
    • d550b2f fix(macOS): Window layers (#220) on 2021-04-28
  • Expose print() function to the webview. Work only on macOS for now.
  • Fix macOS windows order for tray (statusbar) applications.
    • 229275f fix: macOS windows order (#242) on 2021-05-07
  • Add request_redraw method of Window on Linux
    • 03abfa0 Add request_redraw method on Linux (#222) on 2021-04-30
  • Add tao as window dependency.
    • 483bad0 feat: tao as window dependency (#230) on 2021-05-03
  • Close the window when the instance is dropped on Linux and Windows.
    • 3f2cc28 fix: close window when the instance is dropped (#228) on 2021-05-02
  • Remove winit dependency on Linux
    • fa15076 feat: winit interface for gtk (#163) on 2021-04-19
    • 39d6f59 publish new versions (#166) on 2021-04-29
    • 4ef8330 Remove winit dependency on Linux (#226) on 2021-04-30

Cargo Publish

\` Updating crates.io index Packaging wry v0.9.1 (/home/runner/work/wry/wry) Uploading wry v0.9.1 (/home/runner/work/wry/wry) \`

wry-v0.9.0 - Apr 28, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 289 security advisories (from /Users/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (219 crate dependencies) \`

[0.9.0]

  • Refactor signatures of most closure types
    • b8823fe refactor: signature of closure types (#167) on 2021-04-19
  • Drop handler closures properly on macOS.
  • Fix history.pushState in webview2.
    • dd0fa46 Use http instead of file for windows custom protocol workaround (#173) on 2021-04-20
  • The data_directory field now affects the IndexedDB and LocalStorage directories on Linux.
    • 1a6c821 feat(linux): implement custom user data path (#188) on 2021-04-22
  • Fix runtime panic on macOS, when no file handler are defined.
    • 22a4991 bug(macOS): Runtime panic when no file_drop_handler (#177) on 2021-04-20
  • Add position field on WindowAttribute
    • 2b3be7a Add position field on WindowAttribute (#219) on 2021-04-28
  • Fix panic on mutiple custom protocol registration.
    • 01647a2 Fix custom protocol registry on mac (#205) on 2021-04-26
  • Fix SVG render with the custom protocol.
    • 890cfe5 fix(custom-protocol): SVG mime type - close #168 (#169) on 2021-04-19
  • Initial custom WindowExtWindows trait.
    • 1ef1f58 feat: custom WindowExtWindow trait (#191) on 2021-04-23
  • Fix transparency on Windows
    • e278556 fix: transparency on Windows (#217) on 2021-04-28
  • Add platform module and WindowExtUnix trait on Linux
    • 004e298 feat: WindowExtUnix trait (#192) on 2021-04-23
  • Make sure custom protocol on Windows is over HTTPS.
    • c36db35 fix(custom-protocol): Make sure custom protocol on Windows is over HTTPS. (#179) on 2021-04-20
  • Initial winit interface for gtk backend
    • fa15076 feat: winit interface for gtk (#163) on 2021-04-19

Cargo Publish

\` Updating crates.io index Packaging wry v0.9.0 (/Users/runner/work/wry/wry) Uploading wry v0.9.0 (/Users/runner/work/wry/wry) \`

wry-v0.8.0 - Apr 14, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 288 security advisories (from /Users/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (223 crate dependencies) \`

[0.8.0]

  • Wry now accepts multiple custom protocol registerations.
  • Apply license header for SPDX compliance.
  • Remove bindings crate and use windows-webview2 as dependency instead.
    • c2156a4 Move to windows-webview2 as dependency for winrt impl (#144) on 2021-04-03

Cargo Publish

\` Updating crates.io index Packaging wry v0.8.0 (/Users/runner/work/wry/wry) Uploading wry v0.8.0 (/Users/runner/work/wry/wry) \`

wry-v0.7.0 - Apr 02, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 278 security advisories (from /Users/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (215 crate dependencies) \`

[0.7.0]

  • Add old win32 implementation on windows as default feature flag.
    • 1a88cd2 refactor: Add win32 implementation and feature flag for both backends (#139) on 2021-04-02
  • Adds a WindowProxy to the file drop handler closure - WindowFileDropHandler.
    • 20cb051 feat: add WindowProxy to file drop handler closure (#140) on 2021-04-01

Cargo Publish

\` Updating crates.io index Packaging wry v0.7.0 (/Users/runner/work/wry/wry) Uploading wry v0.7.0 (/Users/runner/work/wry/wry) \`

wry-v0.6.2 - Apr 01, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 278 security advisories (from /Users/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (215 crate dependencies) \`

[0.6.2]

  • Add pipe back to version check for covector config. This prevents the CI failure on publish if it exists already. The issue was patched in covector (and tests in place so it doesn't break in the future).
    • a32829c chore: add pipe for publish check back in (#131) on 2021-03-28
  • Fix messages to the webview from the backend being delayed on Linux/GTK when the user is not actively engaged with the UI.
    • d2a2a9f fix: spawn async event loop on gtk to prevent delayed messages (#135) on 2021-03-31
  • Add draggable regions, just add drag-region class to the html element.
    • b2a0bfc feat/ draggable-region (#92) on 2021-03-25
  • Add event listener in application proxy
  • Better result errror handling
    • 485035f chore: better result error handling (#124) on 2021-03-21
  • Fix visibility on webview2 when window was invisible previously and then shown.
    • 6d31706 Fix visibility on webview2 when window was invisible previously (#128) on 2021-03-24

Cargo Publish

\` Updating crates.io index Packaging wry v0.6.2 (/Users/runner/work/wry/wry) Uploading wry v0.6.2 (/Users/runner/work/wry/wry) \`

wry-v0.6.1 - Mar 21, 2021

  • Add attribute option to allow WebView on Windows use user_data folder
    • 8dd58ee feat/ allow webview2 (windows) to use optional user_data folder provided by the attributes (#120) on 2021-03-21

wry-v0.6.0 - Mar 11, 2021

  • Initialize covector!
    • 33b64ed chore: covector init (#55) on 2021-02-21
  • Support Windows 7, 8, and 10
    • fbf0d17 Adopt Webview2 on Windows (#48) on 2021-02-20
  • Dev tools are enabled on debug build
  • Add skip task bar option
    • 395b6fb feat: skip_taskbar for windows (#49) on 2021-02-20
  • Add custom protocol option
  • Add transparent option to mac and linux
  • Error type has Send/Sync traits
    • 3536b83 Add .changes file in prepare of v0.6 on 2021-02-24
  • Replace Callback with RPC handler
    • e215157 Implement draft RPC API (#95) on 2021-03-04
  • Add File drop handlers

v0.5.1 - Feb 20, 2021

Now support Window 7, 8, and 10!

Information - Updated Jan 28, 2022

Stars: 883
Forks: 58
Issues: 43

Repositories & Extras

cargo-ndk - Build Rust code for Android

This cargo extension handles all the environment configuration needed for successfully building libraries

cargo-ndk - Build Rust code for Android

A simple HTML game build using Rust and Yew with a touch of Javascript

Follow the instalation instructions from

A simple HTML game build using Rust and Yew with a touch of Javascript

A rust crate for building zones

It is an in-progress project to implement the functionality in the

A rust crate for building zones

Build Rust RPC services powered by Warp + Reqwest

Provides server and client macros to implement the boilerplate for service RPC over

Build Rust RPC services powered by Warp + Reqwest

This is a rust library for building R1CS gadgets over prime fields, which are useful...

This is a rust library for building R1CS gadgets over prime fields, which are useful in SNARKs and other argument systems

This is a rust library for building R1CS gadgets over prime fields, which are useful...

cargo-pio = Cargo + PlatformIO

Build Rust embedded projects with PlatformIO!

cargo-pio = Cargo + PlatformIO

Rubrail is a Rust library for building Touch Bar interfaces for Mac OS X

It creates a persistent icon in the 'Control Strip' region on the right side of the touchbar

Rubrail is a Rust library for building Touch Bar interfaces for Mac OS X

Library crate for common tasks when building rust projects

Intended for use with cargo-auto

Library crate for common tasks when building rust projects

Pure rust building block for distributed systems

The objective of bifrost is to build a solid foundation for distributed systems in rust

Pure rust building block for distributed systems
Facebook Instagram Twitter GitHub Dribbble
Privacy