Coder Social home page Coder Social logo

pinkdiamond1 / wry Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tauri-apps/wry

0.0 1.0 0.0 6.38 MB

Cross-platform WebView library in Rust for Tauri.

License: Apache License 2.0

JavaScript 0.84% Rust 87.86% Kotlin 11.10% CSS 0.06% HTML 0.14%

wry's Introduction

WRY Webview Rendering library

License Chat Server website https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg support

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:

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

cargo run --example multi_window

For more information, please read the documentation below.

Documentation

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-4.1
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.1-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 webkit2gtk4.1-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, 10 and 11.

Android / iOS

Wry supports mobile with the help of tauri-mobile CLI to create template project. If you are interested in playing or hacking it, please follow MOBILE.md.

If you wish to create Android project yourself, there are a few kotlin files that are needed to run wry on Android and you have to set the following environment variables:

  • WRY_ANDROID_PACKAGE which is the reversed domain name of your android project and the app name in snake_case for example: com.wry.example.wry_app
  • WRY_ANDROID_LIBRARY for example: if your cargo project has a lib name wry_app, it will generate libwry_app.so so you se this env var to wry_app
  • WRY_ANDROID_KOTLIN_FILES_OUT_DIR for example: path/to/app/src/main/kotlin/com/wry/example

License

Apache-2.0/MIT

wry's People

Contributors

amrbashir avatar atlanticaccent avatar bg5hfc avatar chippers avatar dannyhuangxd avatar dvc94ch avatar fabianlars avatar github-actions[bot] avatar jbolda avatar jensmertelmeyer avatar jonaskruckenberg avatar keiya01 avatar lemarier avatar liamsegura avatar lily-mosquitoes avatar lorenzolewis avatar lucasfernog avatar morajabi avatar nklayman avatar nothingismagick avatar perbothner avatar pewsheen avatar probablykasper avatar renovate[bot] avatar rhysd avatar simonhyll avatar spwilson2 avatar tmpfs avatar wravery avatar wusyong avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.