先上项目 Git hub 地址:

前几天,我们给大家分享了两款终端 GUI 程序: 和 。有些人问到,它们使用的是哪个终端 GUI 库。虽然文章中我有提到,这里再一次专门撰文分享。

gocui 是一个 Go 语言用来开发控制台应用的 UI 工具包。

主要特性:

  • 最小化 API.
  • 视图 (窗口) 实现接口 io.ReadWriter.
  • 支持重叠视图
  • 可在运行时修改 GUI
  • 全局或者是视图层级的快捷键绑定
  • 支持鼠标操作
  • 彩色文本输出
  • 可定制化的编辑模式
  • 易于构建可重用的 UI 部件,复杂的布局等

示例代码如下

作者给出了几个 Demo 截图:

除了该作者自己实现的 lazydocker 和 lazygit 使用了该库外,还有如下的一些项目使用了该库。

  • komanda-cli: 为开发者准备的 IRC 客户端
  • vuls: 针对 Linux/FreeBSD 的 Agentless 漏洞扫码程序
  • wuzz: 用于 HTTP 请求的 cli 工具.
  • httplab: 交互式 Web Server
  • domainr: 基于关键词的检查域名可用性的工具
  • gotime: 任务和项目的时间追踪器
  • claws: 测试 websockets 的交互式命令行工具
  • terminews: 终端 RSS 阅读器
  • diagram: 转换 asccii 图表为手绘图表的工具
  • pody: 在 Kubernetes 集群中管理 Pods 的 CLI app
  • kubexp: Kubernetes 客户端.
  • kcli: 检查 kafka 中 topics/partitions/messages 的工具
  • fac: git 合并冲突解析器
  • JSON ui: 为您的终端提供交互式 JSON 资源管理器
  • cointop: 用于跟踪加密货币的交互式终端 UI 应用程序

喜欢终端的朋友,可以把玩把玩~