Skip to content

WRY Webview Rendering library

LicenseChat Serverwebsitehttps://good-labs.github.io/greater-good-affirmation/assets/images/badge.svgsupport

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

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:

fnmain() -> 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 the following to try them:

cargo run --example multi_window

For more information, please read the documentation below.

Platform-specific notes

All platforms use TAO to build the window, and wry re-exports it as an application module. Here is 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 the following packages are installed:

Arch Linux / Manjaro:

sudo pacman -S webkit2gtk
sudo pacman -S libappindicator-gtk3 # For tray feature

The libayatana-indicator package can be installed from the Arch User Repository (AUR).

Debian / Ubuntu:

sudo apt install libwebkit2gtk-4.0-dev
# For tray feature, choose one of following package
sudo apt install libayatana-appindicator3-dev
sudo apt install libappindicator3-dev

Fedora

sudo dnf install gtk3-devel webkit2gtk3-devel
# For tray feature
sudo dnf install libappindicator-gtk3-devel

Fedora does not have the Ayatana package yet, so you need to use the GTK one, see the feature flags documentation.

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.

Android / iOS

We have experimental support of mobile ends. If you are interested in playing or hacking it, please follow this note.

When building for Android, WRY generates kotlin files that are needed to run WRY on Android and you have to set the following environment variables:

  • WRY_ANDROID_REVERSED_DOMAIN
  • WRY_ANDROID_APP_NAME_SNAKE_CASE
  • WRY_ANDROID_KOTLIN_FILES_OUT_DIR

You can skip setting these environment variables if you are using the WRY template from our cargo-mobile fork.

License

Apache-2.0/MIT

About

Fork of Tauri's cross-platform WebView library with additional hacks for RaptorFX

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - RaptorFX-JS/wry: Fork of Tauri's cross-platform WebView library with additional hacks for RaptorFX · GitHub
Skip to content

WRY Webview Rendering library

LicenseChat Serverwebsitehttps://good-labs.github.io/greater-good-affirmation/assets/images/badge.svgsupport

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

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:

fnmain() -> 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 the following to try them:

cargo run --example multi_window

For more information, please read the documentation below.

Platform-specific notes

All platforms use TAO to build the window, and wry re-exports it as an application module. Here is 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 the following packages are installed:

Arch Linux / Manjaro:

sudo pacman -S webkit2gtk
sudo pacman -S libappindicator-gtk3 # For tray feature

The libayatana-indicator package can be installed from the Arch User Repository (AUR).

Debian / Ubuntu:

sudo apt install libwebkit2gtk-4.0-dev
# For tray feature, choose one of following package
sudo apt install libayatana-appindicator3-dev
sudo apt install libappindicator3-dev

Fedora

sudo dnf install gtk3-devel webkit2gtk3-devel
# For tray feature
sudo dnf install libappindicator-gtk3-devel

Fedora does not have the Ayatana package yet, so you need to use the GTK one, see the feature flags documentation.

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.

Android / iOS

We have experimental support of mobile ends. If you are interested in playing or hacking it, please follow this note.

When building for Android, WRY generates kotlin files that are needed to run WRY on Android and you have to set the following environment variables:

  • WRY_ANDROID_REVERSED_DOMAIN
  • WRY_ANDROID_APP_NAME_SNAKE_CASE
  • WRY_ANDROID_KOTLIN_FILES_OUT_DIR

You can skip setting these environment variables if you are using the WRY template from our cargo-mobile fork.

License

Apache-2.0/MIT

About

Fork of Tauri's cross-platform WebView library with additional hacks for RaptorFX

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - RaptorFX-JS/wry: Fork of Tauri's cross-platform WebView library with additional hacks for RaptorFX · GitHub
Skip to content

WRY Webview Rendering library

LicenseChat Serverwebsitehttps://good-labs.github.io/greater-good-affirmation/assets/images/badge.svgsupport

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

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:

fnmain() -> 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 the following to try them:

cargo run --example multi_window

For more information, please read the documentation below.

Platform-specific notes

All platforms use TAO to build the window, and wry re-exports it as an application module. Here is 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 the following packages are installed:

Arch Linux / Manjaro:

sudo pacman -S webkit2gtk
sudo pacman -S libappindicator-gtk3 # For tray feature

The libayatana-indicator package can be installed from the Arch User Repository (AUR).

Debian / Ubuntu:

sudo apt install libwebkit2gtk-4.0-dev
# For tray feature, choose one of following package
sudo apt install libayatana-appindicator3-dev
sudo apt install libappindicator3-dev

Fedora

sudo dnf install gtk3-devel webkit2gtk3-devel
# For tray feature
sudo dnf install libappindicator-gtk3-devel

Fedora does not have the Ayatana package yet, so you need to use the GTK one, see the feature flags documentation.

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.

Android / iOS

We have experimental support of mobile ends. If you are interested in playing or hacking it, please follow this note.

When building for Android, WRY generates kotlin files that are needed to run WRY on Android and you have to set the following environment variables:

  • WRY_ANDROID_REVERSED_DOMAIN
  • WRY_ANDROID_APP_NAME_SNAKE_CASE
  • WRY_ANDROID_KOTLIN_FILES_OUT_DIR

You can skip setting these environment variables if you are using the WRY template from our cargo-mobile fork.

License

Apache-2.0/MIT

About

Fork of Tauri's cross-platform WebView library with additional hacks for RaptorFX

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - RaptorFX-JS/wry: Fork of Tauri's cross-platform WebView library with additional hacks for RaptorFX · GitHub
Skip to content

WRY Webview Rendering library

LicenseChat Serverwebsitehttps://good-labs.github.io/greater-good-affirmation/assets/images/badge.svgsupport

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

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:

fnmain() -> 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 the following to try them:

cargo run --example multi_window

For more information, please read the documentation below.

Platform-specific notes

All platforms use TAO to build the window, and wry re-exports it as an application module. Here is 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 the following packages are installed:

Arch Linux / Manjaro:

sudo pacman -S webkit2gtk
sudo pacman -S libappindicator-gtk3 # For tray feature

The libayatana-indicator package can be installed from the Arch User Repository (AUR).

Debian / Ubuntu:

sudo apt install libwebkit2gtk-4.0-dev
# For tray feature, choose one of following package
sudo apt install libayatana-appindicator3-dev
sudo apt install libappindicator3-dev

Fedora

sudo dnf install gtk3-devel webkit2gtk3-devel
# For tray feature
sudo dnf install libappindicator-gtk3-devel

Fedora does not have the Ayatana package yet, so you need to use the GTK one, see the feature flags documentation.

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.

Android / iOS

We have experimental support of mobile ends. If you are interested in playing or hacking it, please follow this note.

When building for Android, WRY generates kotlin files that are needed to run WRY on Android and you have to set the following environment variables:

  • WRY_ANDROID_REVERSED_DOMAIN
  • WRY_ANDROID_APP_NAME_SNAKE_CASE
  • WRY_ANDROID_KOTLIN_FILES_OUT_DIR

You can skip setting these environment variables if you are using the WRY template from our cargo-mobile fork.

License

Apache-2.0/MIT

About

Fork of Tauri's cross-platform WebView library with additional hacks for RaptorFX

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - RaptorFX-JS/wry: Fork of Tauri's cross-platform WebView library with additional hacks for RaptorFX · GitHub
Skip to content

WRY Webview Rendering library

LicenseChat Serverwebsitehttps://good-labs.github.io/greater-good-affirmation/assets/images/badge.svgsupport

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

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:

fnmain() -> 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 the following to try them:

cargo run --example multi_window

For more information, please read the documentation below.

Platform-specific notes

All platforms use TAO to build the window, and wry re-exports it as an application module. Here is 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 the following packages are installed:

Arch Linux / Manjaro:

sudo pacman -S webkit2gtk
sudo pacman -S libappindicator-gtk3 # For tray feature

The libayatana-indicator package can be installed from the Arch User Repository (AUR).

Debian / Ubuntu:

sudo apt install libwebkit2gtk-4.0-dev
# For tray feature, choose one of following package
sudo apt install libayatana-appindicator3-dev
sudo apt install libappindicator3-dev

Fedora

sudo dnf install gtk3-devel webkit2gtk3-devel
# For tray feature
sudo dnf install libappindicator-gtk3-devel

Fedora does not have the Ayatana package yet, so you need to use the GTK one, see the feature flags documentation.

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.

Android / iOS

We have experimental support of mobile ends. If you are interested in playing or hacking it, please follow this note.

When building for Android, WRY generates kotlin files that are needed to run WRY on Android and you have to set the following environment variables:

  • WRY_ANDROID_REVERSED_DOMAIN
  • WRY_ANDROID_APP_NAME_SNAKE_CASE
  • WRY_ANDROID_KOTLIN_FILES_OUT_DIR

You can skip setting these environment variables if you are using the WRY template from our cargo-mobile fork.

License

Apache-2.0/MIT

About

Fork of Tauri's cross-platform WebView library with additional hacks for RaptorFX

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - RaptorFX-JS/wry: Fork of Tauri's cross-platform WebView library with additional hacks for RaptorFX · GitHub
Skip to content

WRY Webview Rendering library

LicenseChat Serverwebsitehttps://good-labs.github.io/greater-good-affirmation/assets/images/badge.svgsupport

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

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:

fnmain() -> 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 the following to try them:

cargo run --example multi_window

For more information, please read the documentation below.

Platform-specific notes

All platforms use TAO to build the window, and wry re-exports it as an application module. Here is 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 the following packages are installed:

Arch Linux / Manjaro:

sudo pacman -S webkit2gtk
sudo pacman -S libappindicator-gtk3 # For tray feature

The libayatana-indicator package can be installed from the Arch User Repository (AUR).

Debian / Ubuntu:

sudo apt install libwebkit2gtk-4.0-dev
# For tray feature, choose one of following package
sudo apt install libayatana-appindicator3-dev
sudo apt install libappindicator3-dev

Fedora

sudo dnf install gtk3-devel webkit2gtk3-devel
# For tray feature
sudo dnf install libappindicator-gtk3-devel

Fedora does not have the Ayatana package yet, so you need to use the GTK one, see the feature flags documentation.

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.

Android / iOS

We have experimental support of mobile ends. If you are interested in playing or hacking it, please follow this note.

When building for Android, WRY generates kotlin files that are needed to run WRY on Android and you have to set the following environment variables:

  • WRY_ANDROID_REVERSED_DOMAIN
  • WRY_ANDROID_APP_NAME_SNAKE_CASE
  • WRY_ANDROID_KOTLIN_FILES_OUT_DIR

You can skip setting these environment variables if you are using the WRY template from our cargo-mobile fork.

License

Apache-2.0/MIT

About

Fork of Tauri's cross-platform WebView library with additional hacks for RaptorFX

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - RaptorFX-JS/wry: Fork of Tauri's cross-platform WebView library with additional hacks for RaptorFX · GitHub
Skip to content

WRY Webview Rendering library

LicenseChat Serverwebsitehttps://good-labs.github.io/greater-good-affirmation/assets/images/badge.svgsupport

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

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:

fnmain() -> 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 the following to try them:

cargo run --example multi_window

For more information, please read the documentation below.

Platform-specific notes

All platforms use TAO to build the window, and wry re-exports it as an application module. Here is 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 the following packages are installed:

Arch Linux / Manjaro:

sudo pacman -S webkit2gtk
sudo pacman -S libappindicator-gtk3 # For tray feature

The libayatana-indicator package can be installed from the Arch User Repository (AUR).

Debian / Ubuntu:

sudo apt install libwebkit2gtk-4.0-dev
# For tray feature, choose one of following package
sudo apt install libayatana-appindicator3-dev
sudo apt install libappindicator3-dev

Fedora

sudo dnf install gtk3-devel webkit2gtk3-devel
# For tray feature
sudo dnf install libappindicator-gtk3-devel

Fedora does not have the Ayatana package yet, so you need to use the GTK one, see the feature flags documentation.

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.

Android / iOS

We have experimental support of mobile ends. If you are interested in playing or hacking it, please follow this note.

When building for Android, WRY generates kotlin files that are needed to run WRY on Android and you have to set the following environment variables:

  • WRY_ANDROID_REVERSED_DOMAIN
  • WRY_ANDROID_APP_NAME_SNAKE_CASE
  • WRY_ANDROID_KOTLIN_FILES_OUT_DIR

You can skip setting these environment variables if you are using the WRY template from our cargo-mobile fork.

License

Apache-2.0/MIT

About

Fork of Tauri's cross-platform WebView library with additional hacks for RaptorFX

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - RaptorFX-JS/wry: Fork of Tauri's cross-platform WebView library with additional hacks for RaptorFX · GitHub
Skip to content

WRY Webview Rendering library

LicenseChat Serverwebsitehttps://good-labs.github.io/greater-good-affirmation/assets/images/badge.svgsupport

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

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:

fnmain() -> 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 the following to try them:

cargo run --example multi_window

For more information, please read the documentation below.

Platform-specific notes

All platforms use TAO to build the window, and wry re-exports it as an application module. Here is 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 the following packages are installed:

Arch Linux / Manjaro:

sudo pacman -S webkit2gtk
sudo pacman -S libappindicator-gtk3 # For tray feature

The libayatana-indicator package can be installed from the Arch User Repository (AUR).

Debian / Ubuntu:

sudo apt install libwebkit2gtk-4.0-dev
# For tray feature, choose one of following package
sudo apt install libayatana-appindicator3-dev
sudo apt install libappindicator3-dev

Fedora

sudo dnf install gtk3-devel webkit2gtk3-devel
# For tray feature
sudo dnf install libappindicator-gtk3-devel

Fedora does not have the Ayatana package yet, so you need to use the GTK one, see the feature flags documentation.

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.

Android / iOS

We have experimental support of mobile ends. If you are interested in playing or hacking it, please follow this note.

When building for Android, WRY generates kotlin files that are needed to run WRY on Android and you have to set the following environment variables:

  • WRY_ANDROID_REVERSED_DOMAIN
  • WRY_ANDROID_APP_NAME_SNAKE_CASE
  • WRY_ANDROID_KOTLIN_FILES_OUT_DIR

You can skip setting these environment variables if you are using the WRY template from our cargo-mobile fork.

License

Apache-2.0/MIT

About

Fork of Tauri's cross-platform WebView library with additional hacks for RaptorFX

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages