11 个版本

使用旧的 Rust 2015

0.3.0 2021年6月3日
0.2.5 2020年11月14日
0.2.4 2020年7月15日
0.2.3 2020年1月2日
0.1.1 2019年3月23日

#849 in 命令行界面

Download history 46/week @ 2024-03-12 25/week @ 2024-03-19 24/week @ 2024-03-26 60/week @ 2024-04-02 21/week @ 2024-04-09 21/week @ 2024-04-16 36/week @ 2024-04-23 32/week @ 2024-04-30 22/week @ 2024-05-07 25/week @ 2024-05-14 26/week @ 2024-05-21 33/week @ 2024-05-28 29/week @ 2024-06-04 30/week @ 2024-06-11 26/week @ 2024-06-18 17/week @ 2024-06-25

107 每月下载量
5 crates 中使用

MIT 协议

285KB
6K SLoC

unsegen

unsegen 是一个库,它简化了类似 ncurses 的文本用户界面 (TUI) 应用程序的创建。目前,unsegen 只提供 Rust 接口。

概述

该库由四个模块组成

  • base: 包括 Terminal 设置、使用 Windows 的“切片”以及向 Windows 的格式化写入等基本终端渲染功能。
  • widget: Widget 抽象和一些有用的基本 Widget,用于创建文本用户界面的基本构建块。
  • input: 原始终端输入事件,应用程序 (组件) Behavior 的常见抽象以及易于分发事件的手段。
  • container: 使用 Container 作为小部件和输入概念的组合,提供类似窗口管理器的高级功能。

以下库在 unsegen 的基础上构建,并提供高级功能

  • unsegen_jsonviewer 提供了一个交互式小部件,可以用于显示 JSON 值。
  • unsegen_pager 提供了一个带有语法高亮和行装饰的内存或文件后端行缓冲区查看器。
  • unsegen_signals 使用 unsegen 的输入模块,在常用的键组合上触发信号(例如,CTRL-C 上的 SIGINT)。
  • unsegen_terminal 提供了一个伪终端,可以轻松集成到使用 unsegen 的应用程序中。

入门

unsegencrates.io 上可用。您可以通过将以下行添加到 Cargo.toml 来安装它。

unsegen = "0.3.0"

截图

这是 ugdb 的截图,它是基于 unsegen 构建的。

示例

每个主要模块的文档顶部都有示例(例如,baseinputwidgetcontainer),这些示例应该足以让您开始。

对于使用 unsegen 的完整应用程序,您可以查看与 unsegen 和其主要动机一起开发的 ugdb

有关实现细节的一些说明

为了简单起见,布局在每个绘制调用中完成。这与计算小部件空间需求的递归调用相结合,导致渐进运行时间不是很好。然而,到目前为止,我发现这并没有成为问题。如果这成为问题,请提交一个问题。有解决方法(缓存小部件的 draw-结果),但在库中尚未实现方便的包装器。

许可

unsegen 在 MIT 许可下发布。

依赖关系

~6.5MB
~131K SLoC