Windows GUI in Rust — WinUI, winit, egui, iced, Slint
Pick a UI path for Windows apps: native WinUI via windows-rs or cross‑platform stacks like winit/tao with egui, iced, or Slint. Understand trade-offs, packaging, and DPI.
Choosing your GUI path
WinUI (Windows App SDK)
Native Windows look, deep platform access, modern controls. Requires Windows App SDK runtime and MSIX packaging for best experience.
winit/tao + egui
Immediate‑mode UI, fast iteration, low boilerplate. Great for tools, editors, launchers with custom rendering.
iced
Declarative UI with a widget tree, good structure for multi‑screen apps. Cross‑platform with a native feel.
Slint
Declarative UI language, native rendering backends, efficient for desktop and embedded scenarios.
Packaging & distribution
- WinUI: Prefer MSIX. Ship the Windows App SDK as framework‑dependent or include it in your package.
- winit/egui/iced/Slint: Classic installers (MSI/NSIS/Inno) or portable zips work well. Sign your binaries.
- Enable code signing to reduce SmartScreen friction. EV certs provide the fastest reputation building.
DPI, accessibility, and performance
- Set per‑monitor DPI awareness to avoid blurry UIs on 4K displays.
- Verify keyboard navigation and labels for assistive tech users.
- Profile first paints and event loops (especially for immediate‑mode UIs).
Next steps
- Integrate native APIs: windows-rs in Practice.
- Plan your installer and signing: Packaging guide.