D 的 TUI(文本用户界面)?

TUI (text user interface) for D?

我想在 D 中编写一个带有文本 UI 的控制台应用程序。我查看了 curses,但它似乎只适用于 unix。是否有任何跨平台的替代方案?

很久以前就是这样。但是,众所周知,ncurses 在 Windows 上也能很好地工作。在 Windows 上构建它的最简单方法是在 MSYS2 shell 内。确实没有其他跨平台替代品可以替代 Curses(找出为什么他们将项目命名为 "curses",您就会发现为什么没有好的替代品)。

我的 terminal.d 可以用作 TUI 库的基础。

https://github.com/adamdruppe/arsd/blob/master/terminal.d

它没有必需的依赖项,因此您只需下载该文件并使用 dmd yourfile.d terminal.d 开始构建。这是一个获取输入的示例程序:http://arsdnet.net/dcode/book/chapter_12/07/input.d

您还可以使用terminal.moveTo(x, y); terminal.color(Color.green, Color.black); terminal.writef("something"); terminal.flush();等移动和绘制。

在 terminal.d 本身中寻找 version(Demo) 以寻找 main 来处理各种输入事件,包括鼠标事件。

虽然 terminal.d 主要提供较低级别的功能(其主要的高级功能是 terminal.getline,非常适合基于行的应用程序但不适用于 TUI),它应该提供编写小文本小部件库。

而且我认为有人可能做过一次,但我不记得在哪里。

terminal.d 适用于 Windows 和 Posix 系统,适用于最常见的终端,如 xterm。 ncurses 更全面,在更模糊的目标上可能有更少的错误,但 terminal.d 作为单个文件,更容易构建。