120 FPS 渲染
每一帧都由 GPU 绘制,高密度界面依然稳定流畅,不掉帧。
- RenderOnce
- GPU
生产就绪的 Rust UI 框架,提供 75+ 组件与原语、WebAssembly、无障碍与 UI 集成测试,并集成数据表格、Dock、图表、代码编辑器和 JavaScript 扩展能力。
gpui-kit = "0.6.0"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)),
)
}
}复杂桌面应用真正需要的系统能力,都已整合在框架之中。
每一帧都由 GPU 绘制,高密度界面依然稳定流畅,不掉帧。
虚拟滚动、列固定、列宽调整、排序与单元格选择,可承载数十万行。
只渲染可见区域,超长列表滚动依然保持流畅。
Rope 存储,20 万行仍保持稳定性能;内置 Tree-sitter 高亮与 LSP 诊断、补全、悬浮提示。
面板停靠、拖拽重排与缩放,并可序列化保存。
基于语义化 token 的明暗与多主题切换,而非无尽的样式字段。
应用与组件示例可通过 wasm32-unknown-unknown 在 Web 中运行,并与原生端共享实现。
交互层内置 AccessKit role、name、state、relationship 与 action。
在 headless window 中渲染真实组件,驱动鼠标与键盘,并验证状态、Focus、布局和无障碍。
使用 gpui-component 保持统一风格,基于 gpui-base 构建自己的设计系统,或用 gpui-shell 让应用可以被 JavaScript 扩展。
gpui-component 提供完整、成熟且开箱即用的视觉与交互系统。
Button::new("save")
.primary()
.label("Save changes")
.on_click(cx.listener(Self::save))复用 Focus、选择、浮层与虚拟化行为,视觉完全由你决定。
Button::new("save")
.on_click(cx.listener(Self::save))
.rounded_md()
.child("Save changes")宿主仍然是 Rust,扩展是 JavaScript:脚本能碰到什么由宿主逐项授予,界面则在同一个进程里画出来。
import { Button, text } from "gpui";
Button.new("save")
.on_click((_e, cx) => this.save(cx))
.child(text("Save changes"))行为属于基础层。视觉属于应用。
gpui-base 处理困难的交互机制:Focus、浮层定位、虚拟化与无障碍;你的产品决定它们最终呈现的样子。
探索 gpui-base