Ship a Rust desktop app
on GPUI, fast.
Production-ready GPUI boilerplate with multi-page routing, 21 themes, Cmd+K command launcher, i18n, form validation, SQLite persistence, auto-updater, and macOS tray. Clone it and start building your actual product.
A working GPUI app,
not a hello-world.
Six pages, sidebar routing, theme switching, form validation, and a command palette. Running out of the box after cargo run.
Three commands to a running app
Requires Rust 1.85+. Runs on macOS (Metal), Linux (X11 + Wayland), and Windows.
The plumbing is done. Ship your product.
Multi-page architecture
Resizable sidebar, six working pages (Home, Form, Settings, About, Diagnostics, Notifications), and route-based navigation. Adding a new page means implementing one Render trait and registering the route. That is it.
Learn about the architecture21 themes with hot-reload
Catppuccin, Dracula, Tokyo Night, Solarized, Nord, and 16 more. Edit the JSON file, save, see changes instantly. Switch between light and dark at runtime.
Theme guideInternationalization
Built on es-fluent (Fluent message format). Ships with English and Simplified Chinese. Add a new .ftl file and the app picks it up. Error messages included.
i18n setupCommand palette
Cmd+K opens a floating popup with fuzzy search. Navigate to any page, switch themes, or trigger actions without touching the mouse. Full keyboard navigation.
Command palette docsForm validation
gpui-form handles input binding, koruma handles validation rules (email, phone, URL, required). Error messages are localized through Fluent, so your Chinese users see Chinese errors.
Forms guidemacOS tray and global hotkeys
Menu bar icon with a click-to-open launcher. Option+Space as a global hotkey that works from any app. Single-instance enforcement so you never get duplicate windows.
gpui-query
TanStack Query-inspired library for GPUI. Fetch, cache, and sync async data with stale-while-revalidate, automatic refetching, and query invalidation. Ships as a separate crate.
gpui-query docsAuto-updater
Ed25519-signed manifests ensure the update your app downloads is the one you published. Works with GitHub Releases. The user gets a prompt; you control the flow.
Auto-updater setupCrash reporting
Panic hooks capture stack traces and write structured crash reports to disk. Next launch, your app can surface them or upload them.
Diagnostics page
Live view of app state: active entities, subsystem health, theme metadata, and debug actions. Useful during development and for user support.
Telemetry
Three modes: disabled, local-only, or remote. The consent gate is explicit. You decide what to collect and where it goes.
Undo/Redo
Command pattern with keyboard shortcuts (Cmd+Z / Cmd+Y). Stack-based, works across any operation. One trait to implement per action.
Stop wiring boilerplate.
Start shipping your app.
You get a working multi-page GPUI app with themes, persistence, auto-updates, and accessibility. Delete the pages you do not need and build what matters.