用 Go 编写应用逻辑、由各平台原生控件渲染的跨平台 UI 引擎。
marc2332/freya
用 Rust 编写的跨平台原生声明式 GUI 库,用于构建桌面和移动应用。
- Star
- 3,307
- Fork
- 152
- 未关闭 Issue
- 42
- 最近提交
- 16小时前
这是什么?
Freya 是一个用 Rust 编写的声明式 GUI 库,可以渲染跨平台的原生界面。开发者用 Rust 函数和组件描述界面,通过 use_state 等 Hook 管理状态,状态变化时依赖它的部分会自动重新渲染。0.4 版本起,Freya 不再基于 Dioxus,而是使用自研的响应式核心。
库内置了 Button、Switch、Slider、VirtualScrollView、Calendar、ColorPicker 等常用组件。通过可选的 feature 可以启用基于 tree-sitter 的代码编辑器、Markdown 渲染、路由、基于 freya-radio 的全局状态管理、基于 Fluent 的国际化、Material Design 样式、借助 Blitz 渲染 HTML/CSS、支持 PTY 的终端模拟器,以及基于 Plotters 的图表绘制。
freya-testing 支持无窗口的无头测试,可以模拟点击并把界面渲染为图片文件。项目还提供了用于查看组件树的开发者工具。
核心功能
- 01声明式组件模型,基于 Hook 的状态变化会自动重新渲染相关界面。
- 02内置 Button、Switch、Slider、Calendar、VirtualScrollView 等常用组件。
- 03可选的代码编辑器,文本使用 Rope 存储,语法高亮基于 tree-sitter。
- 04通过 feature 开关提供路由、全局状态管理和基于 Fluent 的国际化。
- 05内嵌支持 PTY 的终端模拟器,并可借助 Blitz 渲染 HTML/CSS。
- 06支持无头测试,并可将界面渲染为图片文件。
适用场景
- 使用纯 Rust 构建原生桌面工具。
- 开发代码编辑器、终端界面等开发者工具。
- 借助绘图功能制作数据可视化面板原型。
- 在不打开窗口的情况下为 Rust GUI 应用编写界面测试。
快速上手
- 1
在 Cargo.toml 中添加 Freya
- 2
带子模块克隆仓库
git clone --recurse-submodules https://github.com/marc2332/freya.git - 3
进入项目目录
cd freya - 4
运行一个示例
cargo run --example counter
使用前须知
- 运行示例需要 Rust 开发环境并拉取 git 子模块。
- 在 Windows 的 windows-gnu 工具链下可能出现编译错误。
收录于专题
标签
常见问题
- freya 是什么?
- 用 Rust 编写的跨平台原生声明式 GUI 库,用于构建桌面和移动应用。 Freya 是一个用 Rust 编写的声明式 GUI 库,可以渲染跨平台的原生界面。开发者用 Rust 函数和组件描述界面,通过 use_state 等 Hook 管理状态,状态变化时依赖它的部分会自动重新渲染。0.4 版本起,Freya 不再基于 Dioxus,而是使用自研的响应式核心。
- freya 可以免费使用吗?用的什么许可证?
- freya 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- freya 还在维护吗?
- 活跃维护中。freya 最近一次提交是在 2026年11月6日。
- freya 适合用来做什么?
- 使用纯 Rust 构建原生桌面工具。 开发代码编辑器、终端界面等开发者工具。 借助绘图功能制作数据可视化面板原型。 在不打开窗口的情况下为 Rust GUI 应用编写界面测试。
- freya 怎么安装和运行?
- 在 Cargo.toml 中添加 Freya 带子模块克隆仓库: git clone --recurse-submodules https://github.com/marc2332/freya.git 进入项目目录: cd freya 运行一个示例: cargo run --example counter
- 在哪里获取 freya?
- 源代码和安装说明在 GitHub 上:https://github.com/marc2332/freya
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
Slint 是一个声明式 GUI 工具包,用于在 Rust、C++、JavaScript 或 Python 应用中构建原生用户界面。
用 Elixir 声明式构建原生桌面应用的库,界面由 Rust 编写的 GPUI 渲染。
基于 C# 和 XAML 的跨平台 .NET UI 框架,可构建桌面、移动、嵌入式和 WebAssembly 应用。
用纯 Python 构建 Web、桌面和移动应用的框架,无需前端经验。
基于 Rust 的原生跨平台 UI 引擎,可用 Rust 或 TSX 编写应用,并使用各平台原生控件渲染。