Repolode
marc2332

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. 1

    在 Cargo.toml 中添加 Freya

  2. 2

    带子模块克隆仓库

    git clone --recurse-submodules https://github.com/marc2332/freya.git
  3. 3

    进入项目目录

    cd freya
  4. 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 数据每日更新。

相关项目