经过 Longbridge 生产验证

构建出色的高性能桌面应用。

一个综合性的 Rust 桌面开发框架,集完整 UI 系统、数据表格、Dock 布局、图表与代码编辑器于一体,并可用 JavaScript 扩展;从第一天起用于构建 Longbridge Pro。

  • 13.8k GitHub stars
  • Apache-2.0 许可
  • macOS / Windows / Linux
Cargo.tomlgpui-kit = "0.6.0"
main.rs
use gpui_kit::component::{button::*, *};

impl Render for HelloWorld {
    fn render(&mut self, _: &mut Window, cx: &mut Context<Self>) -> impl IntoElement {
        div()
            .v_flex()
            .gap_2()
            .items_center()
            .child("Hello, World!")
            .child(
                Button::new("ok")
                    .primary()
                    .label("Let's Go!")
                    .on_click(cx.listener(Self::go)),
            )
    }
}
核心能力

为信息密集型软件而生。

复杂桌面应用真正需要的系统能力,都已整合在框架之中。

120 FPS 渲染

每一帧都由 GPU 绘制,高密度界面依然稳定流畅,不掉帧。

  • RenderOnce
  • GPU

复杂数据表格

虚拟滚动、列固定、列宽调整、排序与单元格选择,可承载数十万行。

  • Table
  • DataTable

高性能虚拟列表

只渲染可见区域,超长列表滚动依然保持流畅。

  • VirtualList
  • List

完整代码编辑器

Rope 存储,20 万行仍保持稳定性能;内置 Tree-sitter 高亮与 LSP 诊断、补全、悬浮提示。

  • Rope
  • Tree-Sitter
  • LSP
  • Highlighter

Dock 自由布局

面板停靠、拖拽重排、缩放与 Tiles 自由布局,并可序列化保存。

  • DockArea
  • DockLayout
  • TabGroup

多主题支持

基于语义化 token 的明暗与多主题切换,而非无尽的样式字段。

  • Theme
  • ThemeColor
  • ActiveTheme
三个层次,一个生态

决定由谁掌控视觉系统。

使用 gpui-component 保持统一风格,基于 gpui-base 构建自己的设计系统,或用 gpui-shell 让应用可以被 JavaScript 扩展。

gpui-component

保持风格统一

gpui-component 提供完整、成熟且开箱即用的视觉与交互系统。

Button::new("save")
    .primary()
    .label("Save changes")
    .on_click(cx.listener(Self::save))
  • 60+ 个成品组件
  • 内置明暗主题
  • 开箱即用的交互细节
开始使用
gpui-base

拥有设计系统

复用焦点、选择、浮层与虚拟化行为,视觉完全由你决定。

Button::new("save")
    .on_click(cx.listener(Self::save))
    .rounded_md()
    .child("Save changes")
  • 零样式原语
  • 完整可访问性行为
  • 视觉表达 100% 自主
阅读 gpui-base 文档
gpui-shell

用 JavaScript 扩展应用

宿主仍然是 Rust,扩展是 JavaScript:脚本能碰到什么由宿主逐项授予,界面则在同一个进程里画出来。

import { Button, text } from "gpui";

Button.new("save")
    .on_click((_e, cx) => this.save(cx))
    .child(text("Save changes"))
  • 扩展产品不必 fork,也不必发新版本
  • 默认不授予任何系统能力
  • 保存文件即 hot-reload,无需重启
了解 gpui-shell
设计原则
行为属于基础层。视觉属于应用。

gpui-base 处理困难的交互机制:焦点、浮层定位、虚拟化与无障碍;你的产品决定它们最终呈现的样子。

探索 gpui-base