3 个版本 (重大更改)
新功能 0.4.0 | 2024 年 8 月 20 日 |
---|---|
0.3.0 | 2024 年 5 月 12 日 |
0.2.0 | 2023 年 12 月 28 日 |
#86 在 GUI 中排名
183 每月下载量
2.5MB
25K SLoC
Cushy
Cushy 是一个用于 Rust 编程语言的实验性图形用户界面 (GUI) 库。它具有反应式数据模型,旨在轻松创建响应式、高效的用户界面。为了实现跨平台开发的便捷性,Cushy 使用自己的样式一致的 Widget
组件。
Cushy 基于
Kludgine
,一个由winit
驱动的二维图形库- 用于窗口/输入
wgpu
用于图形cosmic_text
用于文本布局 + 光栅化
palette
用于基于 OKLab 的 HSL 颜色计算arboard
用于剪贴板支持figures
用于基于整数的二维数学
开始使用 Cushy
Widget
特性是 Cushy 的构建块:每个用户界面元素都实现了 Widget
。有关 Cushy 的工作原理,请参阅 Widget
特性的 文档。内置组件的列表可以在 cushy::widgets
模块中找到。
Cushy 使用反应式数据模型。要了解反应式数据模型的工作原理,可以参考以下示例,该示例显示了一个按钮,其标签会递增
fn main() -> cushy::Result {
// Create a dynamic usize.
let count = Dynamic::new(0_isize);
// Create a new label displaying `count`
count
.to_label()
// Use the label as the contents of a button
.into_button()
// Set the `on_click` callback to a closure that increments the counter.
.on_click(move |_| count.set(count.get() + 1))
// Run the application
.run()
}
以下是一些了解 Cushy 的方法
-
探索 示例目录。Cushy 中的许多功能最初都是通过创建示例进行测试的。其中许多示例专注于演示单个功能,但也有一些复杂的示例,例如主题编辑器/预览器
-
浏览用户指南。用户指南仍在完善中,但其中的示例包含CI生成的截图和动画
项目状态
该项目处于早期开发阶段,但正在迅速成为一个不错的框架。目前被视为alpha版本且不受支持,主要关注@ecton的项目,他的主要目标是将其用于自己的项目。功能请求和错误修复将根据@ecton的需求优先处理。
如果您想贡献,错误修复总是受欢迎的。在开发新功能之前,请打开一个issue提出功能及其旨在解决的问题。这样做将有助于减少合并pull requests时的摩擦,因为它确保更改符合维护者对Cushy的愿景。
开源许可
该项目,如Khonsu Labs的所有项目一样,是开源的。此存储库在MIT许可证或Apache许可证2.0下可用。
要了解更多关于贡献的信息,请参阅CONTRIBUTING.md。
依赖项
~25–64MB
~1M SLoC