longbridge/gpui-kit

▲ 2,526 stars today★ 16,476⑂ 1,011

Rust GUI components for building fantastic cross-platform desktop application by using GPUI.

About longbridge/gpui-kit

longbridge/gpui-kit is an open-source project on GitHub, mainly written in Rust. Rust GUI components for building fantastic cross-platform desktop application by using GPUI. It currently holds 16,476 stars and 1,011 forks with 102 open issues, and was last pushed on 2026-10-07 (repository created 2024-06-13).

Project Overview

Git Homed tracks it on the Today's Trending board.

GitHub Repository Details

Repository longbridge/gpui-kit · default branch main · size 34400 KB · watchers 50 · source: GitHub REST API and repository README

README

https://github.com/longbridge/gpui-kit/blob/HEAD/GPUI Kit logo
GPUI Kit

English | 简体中文

Build Status Docs Crates.io

Build fantastic, high-performance desktop apps with Rust and GPUI.

GPUI Kit is a comprehensive Rust desktop application framework. It combines a production-ready UI system with application-grade data, layout, and editing capabilities, all built on a reusable foundation of behavior, state, and infrastructure. GPUI Kit ships 75+ documented components and primitives, WebAssembly support, AccessKit accessibility, UI integration testing, and an optional JavaScript extension runtime.

Documentation:

gpui-kit             The one crate applications depend on
├── gpui-base        Unstyled behavior, state, and infrastructure
└── gpui-component   GPUI Component: the complete styled UI system

gpui-kit pins the matching GPUI release and re-exports GPUI, base, component, and assets, so a Rust application lists a single dependency. JavaScript extension hosts add gpui-shell separately; gpui-component-shell supplies the styled catalog.

See the executable application recipe and AI-assisted development acceptance checks for a tested starting point and verification commands.

Features

Framework Architecture

Three layers. One ecosystem.

Use gpui-component to keep the application coherent with one complete visual and interaction system. Use gpui-base when your product needs to create and own that system itself. Use gpui-shell when the application should be extensible in JavaScript after it ships.

| gpui-component | gpui-base | gpui-shell | | -------------------------------- | --------------------------------------------- | ------------------------------------------ | | Complete, styled components | Unstyled behavior and infrastructure | JavaScript runtime hosted by Rust | | Productive defaults with theming | Full control over structure and visual design | Capabilities granted one at a time | | Best for building applications | Best for building design systems | Best for plugins and scripted applications |

                             APPLICATION
                                  │
              ┌───────────────────┼───────────────────┐
              │                   │                   │
              ▼                   ▼                   ▼
    ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
    │  gpui-component  │ │ Your Design      │ │    gpui-shell    │
    │    Styled UI     │ │ System           │ │  JS extensions   │
    └────────┬─────────┘ └────────┬─────────┘ └────────┬─────────┘
             │                    │                    │
             └────────────────────┼────────────────────┘
                                  ▼
                        ┌──────────────────┐
                        │    gpui-base     │
                        │ Behavior · State │
                        │ Infrastructure   │
                        └────────┬─────────┘
                                 ▼
                               GPUI
Behavior belongs to the foundation. Presentation belongs to the application.

Use gpui-component when you want polished controls ready to ship. Build on gpui-base when your application should own its component source, layout, styling, and motion while reusing difficult interaction behavior. Add gpui-shell when contributors should extend the product without a fork or a release.

The layering follows the same separation that makes the shadcn ecosystem flexible:

| GPUI Kit ecosystem | Web ecosystem | | ------------------------------------ | ------------------------------- | | GPUI | HTML + Tailwind CSS | | gpui-base | Base UI | | gpui-component | shadcn's styled component layer |

Explore the architecture →

Showcase

GPUI Kit has powered Longbridge Pro from day one. The framework is extracted from the demands of a publicly shipped commercial desktop application rather than designed in isolation.

GPUI provides the rendering foundation. Longbridge provides the production foundation.
https://github.com/longbridge/gpui-kit/blob/HEAD/Image

Usage

[dependencies]
gpui-kit = "0.7"

gpui-kit always brings in GPUI and gpui-base; gpui-component and the default icon set are on by default. Turn default features off to keep only the layers you use. The gpui-component features (inspector, decimal, tree-sitter, and each tree-sitter-) are available under the same names.

GPUI Fast

Enable the optional gpui-fast feature to select GPUI Fast for the core, native platforms, WebAssembly, and every enabled Kit layer:

[dependencies]
gpui-kit = { version = "0.7", features = ["gpui-fast"] }

Keep the same imports, initialization, and test macros; no application [patch] or crate alias is needed. The default backend remains the pinned upstream GPUI snapshot. Cargo features are additive, so upstream packages still compile when Fast is selected. See Getting Started for feature combinations and comparison commands.

Basic Example

use gpui_kit::component::button::*;
use gpui_kit::component::*;
use gpui_kit::*;

pub struct HelloWorld; impl Render for HelloWorld { fn render(&mut self, _: &mut Window, _: &mut Context) -> impl IntoElement { div() .v_flex() .gap_2() .size_full() .items_center() .justify_center() .child("Hello, World!") .child( Button::new("ok") .primary() .label("Let's Go!") .on_click(|_, _, _| println!("Clicked!")), ) } }

fn main() { gpui_kit::application().run(move |cx| { // This must be called before using any GPUI Component features. gpui_kit::init(cx);

gpui_kit::open_window(WindowOptions::default(), cx, |_, cx| { cx.new(|_| HelloWorld) }) .expect("Failed to open window"); }); }

gpui_kit::open_window is the application window entry point and always mounts a Base Root. Component initialization registers styled window facilities; Cargo features do not select a different root type.

Icons

The default assets feature bundles the Lucide icon set as gpui-kit-assets; pass it to the application with gpui_kit::application().with_assets(gpui_kit::assets::Assets). To ship your own icons instead, leave that feature out and name the SVG files as defined in IconName.

Skills for AI Coding Agents

Install the GPUI Kit skills for your AI coding agent (Cursor, Claude Code, Gemini CLI, Codex, etc.):

npx skills add longbridge/gpui-kit

| Skill | Description | | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- | | gpui-kit | Setup, component catalog, usage patterns, GPUI mechanics (elements, entities, async, focus, actions, tests), and the Coding Guides. | | gpui-kit-design-guides | The Design Guides: layout, spacing, hierarchy, interaction states, overlays, and interface copy. |

Development

Desktop Gallery (Story)

The story crate is a gallery application that showcases all available components. Run it with:

cargo run

Examples

Some larger examples reuse the story gallery components and run as standalone packages:

# Dock layout system (panels, split views, tabs)
cargo run -p example-dock

Markdown rendering

cargo run -p example-markdown

HTML rendering

cargo run -p example-html

The examples directory also contains standalone examples, each focused on a single feature. Each example is a separate crate, run them with cargo run -p :

# Code editor with LSP support and syntax highlighting
cargo run -p example-editor

Basic hello world

cargo run -p hello_world

System monitor (real-time charts with CPU/memory data)

cargo run -p system_monitor

Window title customization

cargo run -p window_title

Check out CONTRIBUTING.md for more details.

Compare to others

See the comparison with Iced, egui and Qt 6 on the site.

License

Software source and documentation code examples: Apache-2.0.

Documentation prose and original illustrations in the Docs, Base, Component, and Shell sections (including Chinese translations) for which GPUI Kit holds licensing rights are also offered under CC BY 4.0. When copying or adapting that material, credit GPUI Kit, link to the source page and CC BY 4.0 license, and indicate changes. Existing Apache-2.0 permissions remain; earlier revisions retain their prior terms, and third-party contributions keep their own licenses unless separately authorized. Using facts or ideas without copying protected expression does not require attribution under CC BY 4.0.

GitHub Stars & Activity

16,476Stars
1,011Forks
102Open issues
RustLanguage

GitHub Popularity

GitHub stars16,476
Forks1,011
Open issues102
Primary languageRust
LicenseNOASSERTION
Stars gained today2,526
Created2024-06-13
Last pushed2026-10-07

Trending History

Monthly boardrank #60 · ▲ 2,526 stars

Related GitHub Projects

1

tensorflow / tensorflow

C++★ 200,718⑂ 78,963▲ 24 stars
→
2

jackfrued / Python-100-Days

Jupyter Notebook★ 187,000⑂ 55,751▲ 41 stars
→
3

flutter / flutter

Dart★ 179,503⑂ 33,595▲ 164 stars
→
4

vercel / next.js

JavaScript★ 143,110⑂ 34,506▲ 79 stars
→
5

addyosmani / agent-skills

JavaScript★ 104,501⑂ 10,908▲ 750 stars
→
6

mui / material-ui

JavaScript★ 99,161⑂ 32,506▲ 15 stars
→
7

Leonxlnx / taste-skill

JavaScript★ 94,412⑂ 6,422▲ 320 stars
→
8

NationalSecurityAgency / ghidra

Java★ 82,717⑂ 9,195▲ 588 stars
→

More Trending Repositories