examples/servo/README.md
Disclaimer: Servo is still experimental and not ready for productions use.
Integrate Servo Web Engine as WebView Component for Slint to render websites using hardware rendring on MacOS, Linux and software rendring on android for now.
webview to your .slint file.pub mod webview;
use slint::ComponentHandle;
use crate::webview::WebView;
slint::include_modules!();
pub fn main() {
let (device, queue) = setup_wgpu();
let app = MyApp::new().unwrap();
WebView::new(
app.clone_strong(),
"https://slint.dev".into(),
device,
queue,
);
app.run().unwrap();
}
fn setup_wgpu() -> (wgpu::Device, wgpu::Queue) {
let backends = wgpu::Backends::from_env().unwrap_or_default();
let instance = wgpu::Instance::new(&wgpu::InstanceDescriptor {
backends,
flags: Default::default(),
backend_options: Default::default(),
memory_budget_thresholds: Default::default(),
});
let adapter = spin_on::spin_on(async {
instance
.request_adapter(&Default::default())
.await
.unwrap()
});
let (device, queue) = spin_on::spin_on(async {
adapter.request_device(&Default::default()).await.unwrap()
});
slint::BackendSelector::new()
.require_wgpu_28(slint::wgpu_28::WGPUConfiguration::Manual {
instance,
adapter,
device: device.clone(),
queue: queue.clone()
})
.select()
.unwrap();
(device, queue)
}
${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --install "platforms;android-30"
rustup target add aarch64-linux-android
cargo install cargo-apk
export BINDGEN_EXTRA_CLANG_ARGS="--target=aarch64-linux-android30 --sysroot=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
export BINDGEN_EXTRA_CLANG_ARGS="--target=aarch64-linux-android30 --sysroot=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/sysroot"
cargo apk run --target aarch64-linux-android --lib