【开源自荐】Yororen UI - 基于 Zed 的 gpui 框架的 Rust GUI 组件库,50+ 组件开箱即用

梦凌汐 2026-02-19 22:23 1

2026/02/20


感谢各位佬的回应,今天迁移到了 gpui-ce,并且在gpt的帮助下尝试着加了对应的 Skills,但是感觉写的挺一般 ^-^

如果有擅长这个的佬,欢迎联系我或者直接发pr




省流:^-^ GitHub: GitHub - MeowLynxSea/yororen-ui: Reusable UI components and widgets built on top of gpui.


crates.io: crates.io: Rust Package Registry



(我自己用 Yororen UI 做的 Minecraft 服务器网络加速工具,包含仪表盘、实时统计、自定义窗口边框、数据表格和虚拟化列表,在 Windows 上内存占用仅~20M)


最近在用 Rust 写几个桌面小工具,结果卡在 GUI 库选型上好一阵。来分享下我的纠结过程,以及最后怎么决定基于 gpui 自建组件库的。


为什么选 gpui?先吐槽下 Rust GUI 生态


其实一开始我也在看其他方案,但查着查着就发现各种劝退点:




  • egui - 确实轻量,写起来很直观。但界面"非原生",感觉差点意思。




  • Iced - 架构很优雅,但在复杂交互、动画体系和高质量文本场景下扩展成本偏高,更适合通用表单类应用。




  • Tauri - Web 技术生态丰富,但启动慢,占用相对较高,用 Rust 写个壳子包个 Web 页面总觉得哪里不对。UI 体验被 WebView/前端栈绑住(样式一致性、动画与高频交互等等)




  • GTK-rs / Qt - GTK 的 C 依赖和版本地狱让人头大,Qt 非商业授权麻烦,而且都不是"纯 Rust"方案。




gpui 是 Zed 编辑器团队开源的,我主要是被这几点吸引:



  • 自绘 GPU 渲染 —— 不依赖 WebView 或浏览器内核,完全由 Rust + GPU 控制渲染与事件系统

  • 高性能 —— 复杂编辑器级应用也能做到极快启动和较低内存占用

  • 响应式架构 —— 状态驱动视图更新,组件思维清晰,类似 React 的开发体验

  • 扎实的文本渲染能力 —— 作为编辑器底层框架,复杂文本场景已经在实践中验证


但 gpui 也有坑:太底层了。直接用的话要自己处理主题切换、动画曲线、图标资源… 对于想快速做工具的开发者门槛太高。


为什么不用 gpui-component?


然后我发现了 gpui-component,长桥团队维护的,1w+ Stars,看起来很"官方"的方案,但仔细看了代码和文档后,有几个点让我犹豫:



  1. 动画太基础 - 在代码库中搜索 animation,只能找到一个 cubic_bezier 函数。

  2. 国际化有点简陋 - 用 rust-i18n 宏实现,不能运行时热加载翻译文件,不支持本地化日期/货币格式,也没有 RTL 支持。

  3. 主题 API 不太顺手 - 扁平化设计(primary_hover),而不是语义化的(action.primary.hover_bg),扩展起来有点别扭。

  4. 依赖太多 - 30+ 个依赖(含 Tree Sitter 等),编译时间长,二进制膨胀。


gpui-component 功能确实丰富(图表、代码编辑器、Dock 布局),但对于想做精致小工具的我来说,反而显得笨重,而且关键体验(动画、i18n)不到位。


于是,我写了 Yororen UI


既然现有方案都不完美,决定基于 gpui 自建一套,主打 “开箱即用的轻量精致体验”


目前有什么?



  • 50+ 组件 - 按钮、输入框、徽章、工具提示、树形控件…日常够用

  • 完整的动画系统 - 60+ 缓动函数(elastic、bounce…)、预设动画(fade、slide、scale)、编排器(顺序/并行/交错)

  • 原生国际化 - 国际化支持 + 运行时加载/切换翻译文件 + LTR/RTL 支持 + 数字/日期本地化

  • 智能主题 - GlobalTheme + ActiveTheme 双层设计,自动跟随系统明暗切换

  • 20+ SVG 图标 - 通过 rust-embed 静态嵌入

  • 高级 Widgets - TitleBar(自定义窗口标题栏)、VirtualList(虚拟化列表)


依赖少,编译快,二进制精简。


Demo 展示






选 Yororen UI 还是 gpui-component?


虽然 gpui-component 确实很好用,但是还是要推广一下自己的项目的嘛


Yororen UI 更适合你,如果:



  • 想要开箱即用的动画效果(gpui-component 几乎没动画)

  • 需要完整的国际化(运行时切换语言、RTL 支持)

  • 喜欢现代化的主题 API(语义化命名而不是扁平化)

  • 希望依赖轻量、编译快

  • 想做精致的小工具而非大型 IDE 类产品

  • 愿意接受早期版本,一起参与打磨


如果:



  • 需要内置图表、代码编辑器、Web等组件

  • 需要 Tree Sitter 语法高亮

  • 要做复杂的多面板 IDE(Dock 布局)

  • 追求生产级稳定性(毕竟 1w+ Stars嘛,久经考验)

  • 需要丰富的社区资源和现成方案


那还是选 gpui-component 吧~


试试看?


Yororen UI 目前 v0.2.0,Apache 2.0 协议开源:


^-^ GitHub: GitHub - MeowLynxSea/yororen-ui: Reusable UI components and widgets built on top of gpui.


crates.io: crates.io: Rust Package Registry


如果你也在用 gpui 做项目,或者在 Rust GUI 选型上纠结,欢迎试用、提 Issue、PR!特别是:



  • 有动画/交互设计经验的朋友

  • 需要国际化支持的多语言应用开发者


目前项目刚刚起步,很多地方还不完善,请多包涵~如果各位有兴趣,欢迎和我一起建设~

最新回复 (19)
  • infinite 02-19 22:24
    1

    感谢分享

  • 大帅哥 02-19 22:44
    2

    感谢推荐

  • 十方 02-19 22:54
    3

    感谢佬,学习一下

  • Max Qian 02-19 23:38
    4

    感谢分享,确保不赖

  • 雪安 02-19 23:44
    5

    感谢感谢,研究下去。每次都套tarui

  • fonlan 02-19 23:48
    6

    建议大佬再开发个对应的skill,让AI能通过skill写出高质量的代码

  • 梦凌汐 楼主 02-19 23:48
    7

    好嘟,方便的话麻烦提个issue记录一下

  • iSold 02-20 00:24
    8

    支持一下!

  • clen 02-20 00:34
    9



    不过听说gpui后面不维护了额

  • 梦凌汐 楼主 02-20 09:39
    10

    感谢支持喵

  • HaveBeenUsed 02-20 09:44
    11

    智齿智齿~~~

  • 梦凌汐 楼主 02-20 09:56
    12

    确实如此,这个框架在之前是在gpui基础上开发的,后续会考虑迁移到gpui-ce

  • 72 02-20 10:48
    13

    太强了!

  • 梦凌汐 楼主 02-20 22:11
    14

    尝试着做了一版,不过效果不尽人意 ^-^

    也可能是我用来测试的模型是m2.5的原因 换成codex之后效果好很多

  • loo 03-01 18:53
    15

    后面可以增加一下调用电脑打印机方面的吗,感觉rust这块比较不友好

  • 小飞 03-21 20:21
    16

    我也用gpui开发了一个桌面程序,现在用的gpui-component组件,看看后续能不能切换到大佬的这套UI组件上。GitHub - feigeCode/onetcli: One Net Client — A cross-platform desktop client for databases, SSH/SFTP, terminals & AI, all in one place. · GitHub

  • shadowverse 03-28 19:09
    17

    如果重点是动画和国际化的小缺陷,为什么不直接在gpui-component上补全这些功能?这样也可以拿来吹吹

  • jychen.linux 04-14 14:14
    18

    好用,希望增加vnc和rdp远程桌面功能

  • 小飞 04-16 09:18
    19

    正在考虑加rdp和vnc,可以在github上提一个特性issue

* 帖子来源Linux.do
返回