SuperAPI AI 工具集

dotnet-terminal-gui

编程与开发

查看项目

更新于 10-16 07:23

技能介绍

用途:使用 Terminal.Gui v2 构建完整的终端用户界面(TUI)应用,包含窗口、菜单、对话框、视图、布局、事件处理、颜色主题与鼠标支持,跨 Windows、macOS、Linux 终端运行。

版本假设:.NET 8.0+ 为基线;Terminal.Gui 2.0.0-alpha 是面向新项目的活跃开发线,API 稳定且功能全面,Beta 前可能有破坏性变更;v1.x(1.19.0)处于维护模式,不再新增功能。

主要能力:应用生命周期与初始化;视图、布局(Pos/Dim)、菜单、对话框、事件处理;数据绑定、颜色主题、鼠标支持。布局统一为单一模型,位置由 Pos(X、Y)控制,尺寸由 Dim(Width、Height)控制,均相对 SuperView 内容区。Frame 为最外层矩形,Viewport 为可见内容区(可滚动)。

使用方式:通过 NuGet 引用 Terminal.Gui 2.0.0-alpha,目标框架 net8.0 或更高。v2 采用基于实例的模型,使用 Application.Create().Init() 并配合 IDisposable 与 using 语句进行资源清理。

限制与注意事项:不要使用 v1 静态生命周期模式;View.AutoSize 已移除,改用 Dim.Auto();Button.Clicked 由 Button.Accepting 取代;ScrollView、NStack.ustring、StatusItem 均已移除;Terminal.Gui 为单线程,禁止从后台线程调用 UI 操作,需用 Application.Invoke() 回到 UI 线程;关闭窗口应调用 RequestStop(),直接 Dispose() 会破坏终端状态;不要硬编码终端尺寸,使用 Dim.Fill()、Dim.Percent()、Pos.Center() 实现响应式布局;崩溃时需保证终端状态恢复。

平台差异:macOS Terminal.app 修饰键支持有限,iTerm2 与 WezTerm 支持更好;SSH 会话能力取决于客户端终端;旧版 Windows conhost Unicode 支持有限,Windows Terminal 支持完整;tmux/screen 可能拦截组合键,可设置 TERM=xterm-256color。

不在范围内:富控制台输出(表格、进度条、提示)见 dotnet-spectre-console;CLI 命令行解析见 dotnet-system-commandline;CLI 应用架构与分发见 dotnet-cli-architecture 与 dotnet-cli-distribution。详细代码示例见该技能目录下的 examples.md。