Welcome to the Dioxus community! Blitz is a "native" HTML/CSS renderer built to support the "Dioxus Native" project. It is effectively a lightweight webview except that the JavaScript engine is replaced with a native Rust API which allows Rust reactivity / state management libraries like Dioxus to interface with it directly.
Talk to us in: the #native channel in the Dioxus Discord
All platforms require Rust, Python 3 and a C toolchain.
Rust can be installed via https://rustup.rs
Python is pre-installed. We recommend using the C toolchaing from the Xcode Command Line tools.
Usually requires installing Python. We recommend installing using https://docs.astral.sh/uv/, but any Python 3 should work.
To build Blitz you need a C toolchain plus a few dependencies:
pkg-configand a C compiler (build-essential)python3— used to generate code while buildingstylolibssl-dev(OpenSSL) — required byreqwestviablitz-netlibfontconfig-dev(fontconfig) — required byparley/fontiquefor system-font enumeration
For example on Ubuntu:
sudo apt-get update
sudo apt-get install build-essential pkg-config python3 libssl-dev libfontconfig-devTo run Blitz as windowed application you additionally need X11 and/or Wayland. These are usually already present on a desktop Linux install, but may need to be installed in server setups or if using a system like Nix that requires explicit dependencies. needed there.
For example on Ubuntu:
sudo apt-get update
sudo apt-get install libfontconfig-dev libx11-dev libxcb1-dev libwayland-devThe optional file dialog feature uses rfd
with its xdg-portal backend. So one of the following must be available for
a dialog to actually open:
- a running
xdg-desktop-portalservice plus a backend for your desktop environment (e.g.xdg-desktop-portal-gtk,-kde,-gnome, or-wlr) - the
zenityexecutable, whichrfdfalls back to.
You can add the following JSON to your .vscode/settings.json to automically build Blitz on all supported targets.
{
"rust-analyzer.check.features": "all",
"rust-analyzer.cargo.features": "all",
"rust-analyzer.check.allTargets": true,
"rust-analyzer.cargo.allTargets": true
}