< 返回版块

MeowLynxSea 发表于 2026-02-21 10:53

Tags:GUI,gpui

image

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

最近在用 Rust 写几个桌面小工具,结果卡在 GUI 库选型上好一阵,最后怎么决定基于 gpui 自建组件库。

为什么不用 gpui-component?

选型过程中,我确实看到了 gpui-component,长桥团队维护的,1w+ Stars,看起来很"官方"的方案,但仔细看了代码和文档后,有几个点让我犹豫:

  1. 动画太基础 - 在代码库中搜索 animation,只能找到一个 cubic_bezier 函数。
  2. 国际化有点简陋 - 用 rust-i18n 宏实现,不能运行时热加载翻译文件,不支持本地化日期/货币格式,也没有 RTL 支持。
  3. 主题 API 不太顺手 - 扁平化设计(primary_hover),而不是语义化的(action.primary.hover_bg),扩展起来有点别扭。
  4. 依赖太多 - 大量依赖(含 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?

Yororen UI 可能会更适合你,如果:

  • 想要开箱即用的动画效果(gpui-component 几乎没动画)
  • 需要完整的国际化(运行时切换语言、RTL 支持)
  • 喜欢现代化的主题 API(语义化命名而不是扁平化)
  • 希望依赖轻量、编译快
  • 想做精致的小工具而非大型 IDE 类产品
  • 愿意接受早期版本,一起参与打磨

如果:

  • 需要内置图表、代码编辑器、Web等组件
  • 需要 Tree Sitter 语法高亮
  • 要做复杂的多面板 IDE(Dock 布局)
  • 追求生产级稳定性(毕竟 1w+ Stars嘛,久经考验)
  • 需要丰富的社区资源和现成方案

那还是选 gpui-component 吧~

试试看?

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

🔗 GitHub: https://github.com/MeowLynxSea/yororen-ui

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

  • 有动画/交互设计经验的朋友
  • 需要国际化支持的多语言应用开发者

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


Ext Link: https://github.com/MeowLynxSea/yororen-ui

评论区

写评论

还没有评论

1 共 0 条评论, 1 页