Use this file to discover all available pages before exploring further.
Kael lets you embed full web content, play audio and video files, and capture screens or input devices — all from the same GPU-accelerated render tree. Web content is rendered through platform-native engines so you get excellent fidelity with no bundled browser. Media playback and screen capture are optional feature-flagged modules that add zero overhead when you do not need them.
Send navigation commands to a WebView through the PlatformWebViewCommand enum. Commands are dispatched by matching on the id you assigned to the element:
use kael::webview::PlatformWebViewCommand;window.dispatch_webview_command(PlatformWebViewCommand::Navigate { id: "main-webview".into(), url: "https://docs.example.com".into(),});
Synchronize video frame rendering to the given audio clock.
.object_fit(ObjectFit)
How to fit the decoded frame within the element’s bounds (Contain, Cover, Fill, etc.).
Always pair a Video element with an AudioHandle via .sync_to() when your file contains an audio track. Without synchronization, audio and video can drift over time.
[dependencies]kael = { version = "*", features = ["screen-capture"] }
On Windows and Linux the screen-capture feature also requires either x11 or wayland. On Linux, Kael uses PipeWire via the scap_screen_capture module. On macOS it uses ScreenCaptureKit, and on Windows it uses the Windows Graphics Capture API.
session.pause().unwrap();session.resume().unwrap();session.stop().unwrap();// Query state at any timelet state = session.state(); // CaptureSessionState::Running | Paused | Stopped | …
Capture operations go through Kael’s PermissionBroker. Use cx.microphone_status(), cx.camera_status(), and cx.accessibility_status() to check permission state before starting a session, and call the corresponding request_*_permission methods to prompt the user:
use kael::PermissionStatus;match cx.microphone_status() { PermissionStatus::Granted => { // start microphone capture } PermissionStatus::Denied => { // show an error — user must grant permission in system settings } PermissionStatus::NotDetermined => { cx.request_microphone_permission(|granted| { if granted { // start microphone capture } }); }}