SwiftTUI

swift 5.6 platform macos platform linux

一种创新且极其简单的方式来构建基于文本的用户界面。

SwiftTUI 将 SwiftUI 带到终端。它提供了一个类似于 SwiftUI 的 API,用于构建带有基于文本的用户界面的终端应用程序。

工作原理

SwiftUI 的许多功能已经可以工作

✓ 属性包装器 @State@Binding@Environment@ObservedObject
✓ 堆栈、.frame().padding()GeometryReader@ViewBuilderForEachGroup
✓ 类似于 SwiftUI 的结构标识
✓ 使用 ScrollView 的可滚动列表
ButtonTextField 以及使用箭头键移动焦点
✓ 支持 ANSI、xterm 和 TrueColor 的 Color
✓ 具有粗体、斜体、下划线和删除线变体的 Text
.onAppear().border().foregroundColor().backgroundColor
✓ 应用于集合中所有视图的修饰符,就像在 SwiftUI 中一样

开始使用

要使用 SwiftTUI,您需要添加 SwiftTUI 包依赖项。在您的文件中导入 SwiftTUI,并使用支持的功能像 SwiftUI 视图一样编写您的视图。然后,使用您的一个视图作为根视图启动终端应用程序。这是您可以编写的最简单的 SwiftTUI 应用程序

import SwiftTUI

struct MyTerminalView: View {
  var body: some View {
    Text("Hello, world!")
  }
}

Application(rootView: MyTerminalView()).start()

要运行您的应用程序,请切换到您的包目录并从终端运行它

swift run

要了解更多信息并查看支持的功能,请查看文档

示例

这些示例项目包含在存储库中。

ToDoList (Examples/ToDoList)

这是一个非常简单的待办事项列表应用程序。使用箭头键移动。要完成一个待办事项,选择它,然后按 Enter 键或空格键。要添加新的待办事项,移动到文本字段,输入描述,然后按 Enter 键将其添加到列表中。完成的项目会在半秒后自动从列表中删除。

Flags (Examples/Flags)

这是一个国旗编辑器,如果您来自一个国旗由水平或垂直堆叠的颜色组成的简单国旗的国家/地区,您会同意这一点。选择国旗的一种颜色来更改它。使用右侧的选项来更改颜色数量或国旗方向。

展示

您正在开发使用 SwiftTUI 的项目吗?如果您希望在此处展示它,请与我联系。

soundcld

这是一个用于 SoundCloud 的 TUI 应用程序。它(尚未)公开提供。

更多

在 Reddit 上观看 SwiftTUI 的屏幕录像

在我的博客上了解 diffing 的工作原理

文档

您可以在此处找到生成的文档。

贡献

这是一个开源项目,欢迎贡献!SwiftTUI 的目标是在 API 和内部工作原理方面都类似于 SwiftUI,除非这些对于终端应用程序没有意义。SwiftUI 缺少但对终端应用程序有用的功能最好放在单独的项目中。