#widgets #user-interface #reactive #ui #data-model #2d-graphics

cushy

一个由 wgpu 驱动的图形用户界面 (GUI) 库,具有反应式数据模型

3 个版本 (重大更改)

新功能 0.4.0 2024 年 8 月 20 日
0.3.0 2024 年 5 月 12 日
0.2.0 2023 年 12 月 28 日

#86GUI 中排名

Download history 148/week @ 2024-05-12 22/week @ 2024-05-19 1/week @ 2024-05-26 7/week @ 2024-06-02 3/week @ 2024-06-09 225/week @ 2024-06-16 3/week @ 2024-06-23 24/week @ 2024-06-30 1/week @ 2024-07-07 5/week @ 2024-07-21 12/week @ 2024-07-28 1/week @ 2024-08-04 169/week @ 2024-08-18

183 每月下载量

MIT/Apache

2.5MB
25K SLoC

Cushy

Cushy is considered alpha and unsupported crate version Documentation for v0.4.0 Cushy User's Guide

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 中的许多功能最初都是通过创建示例进行测试的。其中许多示例专注于演示单个功能,但也有一些复杂的示例,例如主题编辑器/预览器

    Theme Editor Example

  • 浏览用户指南。用户指南仍在完善中,但其中的示例包含CI生成的截图和动画

    Hello, World User Guide Example

  • 讨论区提问或在Discord上提问。

项目状态

该项目处于早期开发阶段,但正在迅速成为一个不错的框架。目前被视为alpha版本且不受支持,主要关注@ecton的项目,他的主要目标是将其用于自己的项目。功能请求和错误修复将根据@ecton的需求优先处理。

如果您想贡献,错误修复总是受欢迎的。在开发新功能之前,请打开一个issue提出功能及其旨在解决的问题。这样做将有助于减少合并pull requests时的摩擦,因为它确保更改符合维护者对Cushy的愿景。

开源许可

该项目,如Khonsu Labs的所有项目一样,是开源的。此存储库在MIT许可证Apache许可证2.0下可用。

要了解更多关于贡献的信息,请参阅CONTRIBUTING.md

依赖项

~25–64MB
~1M SLoC