Rust + GPUI

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.

Rust + GPUI 21 themes, hot-reload SQLite + auto-updater
See it in action

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.

gpui-starter
Welcome to GPUI Starter
A boilerplate for building desktop apps with GPUI
21 themes
2 languages
100% Rust
Settings
Dark Mode
Theme
Catppuccin Tokyo Night Dracula One Dark
Search pages and commands...
Home
Open the Home page
Form
Open the Form page
Settings
Open settings
设置
深色模式
语言
English 简体中文
Create Account
Full Name
John Doe
Email
invalid
Enter a valid email address
Password
••••
Create Account Reset
Quick Start

Three commands to a running app

$ git clone https://github.com/hmziqrs/gpui-boilerplate.git
$ cd gpui-app
$ cargo run

Requires Rust 1.85+. Runs on macOS (Metal), Linux (X11 + Wayland), and Windows.

21
Themes, hot-reload
6
Pages with sidebar
2
Languages (en, zh-CN)
Cmd+K
Command palette
gpui-query
Async data crate
Features

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 architecture

21 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 guide

Internationalization

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 setup

Command 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 docs

Form 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 guide

macOS 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 docs

Auto-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 setup

Crash 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.