Questions we get asked a lot.
From "what is GPUI?" to SQLite internals. If your question is not here, try the docs, check the blog, or open an issue.
Getting Started 4 questions
What is GPUI and how does it work?
GPUI is Zed's GPU-accelerated UI framework for Rust. It renders directly via Metal and Vulkan, uses a retained entity system for state, and ships production code inside the Zed editor.
Why should I use gpui-starter instead of building from scratch?
gpui-starter is a production-ready GPUI boilerplate with themes, i18n, forms, navigation, auto-update, and more so you skip weeks of wiring and ship your app faster.
How do I install and set up a GPUI Rust desktop project?
Step-by-step guide to cloning, building, and running gpui-starter. Covers Rust toolchain requirements, system dependencies for macOS and Linux, common build errors, and project structure.
Does GPUI work on Windows, Linux, and macOS?
GPUI supports macOS (Metal) and Linux (Vulkan) today. Windows support is in active development. gpui-starter runs on every platform GPUI supports with no extra configuration.
Features 11 questions
How do I customize themes and switch between dark and light mode?
gpui-starter ships 40 theme variants from 24 families as JSON files. Themes hot-reload from disk, switch instantly at runtime via the menu or Cmd+K, and persist across restarts.
How do I add or create a custom theme in gpui-starter?
Add a new theme by creating a JSON file in the themes/ directory with your color palette. The app hot-reloads it instantly with no recompile.
How do I add multi-language support and i18n to a Rust desktop app?
gpui-starter uses Mozilla's Fluent system via the es-fluent crate for type-safe, plural-aware translations with runtime language switching.
How do I add form validation in a GPUI Rust app?
gpui-starter uses gpui-form derive macros with koruma validation rules for type-safe, localized form handling. Covers built-in validators, custom rules, inline errors, and the touched pattern.
How do I use the Cmd+K command launcher in a GPUI app?
The Cmd+K command palette provides fuzzy search across all registered app actions: page navigation, theme switching, language changes, undo/redo, and custom commands. Covers built-in actions, keyboard shortcuts, and how to register your own commands.
How do I add a system tray icon to a Rust desktop app on macOS?
gpui-starter ships a macOS menu bar tray icon built with the tray-icon crate. Left-click opens the command launcher; no native code or plugins needed.
What keyboard shortcuts are available and how do I customize them?
Complete list of keyboard shortcuts in gpui-starter, how key bindings work under the hood, and how to add your own.
How do I implement undo and redo in my GPUI app?
gpui-starter ships a command-pattern undo/redo stack with Cmd+Z / Cmd+Y support, menu integration, and an easy pattern for adding your own reversible operations.
How do I store passwords and API keys securely in a Rust desktop app?
gpui-starter stores secrets in the OS keyring (Keychain on macOS, Credential Manager on Windows, Secret Service on Linux) using the keyring crate, never in SQLite or config files.
How do notifications work in a Rust desktop app?
gpui-starter sends desktop notifications through native OS APIs with automatic fallback: macOS UNUserNotificationCenter, then notify-rust for Linux and Windows, then in-app toast. Covers permission handling, the persistent inbox, interactive actions, and how to send your own notifications.
How does the first-run setup and onboarding work?
gpui-starter detects fresh installs and shows a one-time setup panel for locale, notifications, and other defaults. Runs once after install or when the user resets app state.
Advanced 3 questions
Where does gpui-starter store app data on disk?
App data lives in SQLite (WAL mode) and a JSON config file, both under platform-standard directories resolved by the directories crate. Secrets go to the OS keyring instead.
How do I debug or view the internal state of a GPUI app?
gpui-starter ships a diagnostics page that exposes live app state across every subsystem: lifecycle, storage, telemetry, connectivity, crash reports, and more.
Does gpui-starter collect telemetry or tracking data?
No. Telemetry is disabled by default with opt-in local-only logging and optional OTLP export behind a consent gate.
Still have questions?
Check the docs, browse the blog, or ask on GitHub.