为 Silkie 开发软件¶
Silkie 是 kitty 终端模拟器 的一个分支。kitty 在传统的 VT/xterm 风格终端协议上扩展了图形、键盘及其他协议。Kittens 是 kitty 的配套工具和插件,使用终端能力并可为 kitty 增添功能。Silkie 增加了更多终端协议和 show_pointer 工具。
Silkie 的行为分散记录在终端标准、kitty 手册和 Silkie 扩展规范中。本指南提供这些资料及相关实现文件的链接。
源代码与版本¶
Silkie 源代码位于 silkie 分支。
上游 kitty 手册描述的行为可能与所用 Silkie 构建不同。对应版本的源代码展示了功能的实现方式。运行时能力查询则告诉应用哪些扩展、版本和可选功能可用。
入门¶
如果尚不熟悉 kitty,kitty 概览 介绍终端本身,kitten 概览 介绍配套工具与插件。下文的 终端基础 和 继承的 kitty 协议 介绍 Silkie 所依赖的标准与协议。
要为应用添加 Silkie 功能,请先阅读 扩展能力协议 和 OSC 777 扩展封装,再从 Silkie 扩展导览 选择所需协议。每项规范都说明如何探测支持、使用功能及完成清理,并列出平台限制。请在目标终端中测试应用,并为不可用功能提供回退方案。
开发 kitten、终端用户界面、远程控制客户端和 shell 集成时,参阅 Kitten 与应用 API。若要调查行为或为 Silkie 贡献修改,实现导览 可引导你找到相关代码。
终端基础¶
兼容模型是终端通过字节流接收文本和控制序列。以下参考资料解释了继承的术语;这不表示 Silkie 实现了所有历史终端功能。
ECMA-48:控制功能 定义控制功能语法,包括 CSI、SGR、OSC 和字符串终止符。
XTerm 控制序列 介绍光标移动、屏幕模式、鼠标报告及其他常见终端交互所用的 VT/xterm 约定。
Silkie 的 terminfo 源码 描述向使用 terminfo 的应用公布的能力。
继承的 kitty 协议¶
上游终端协议索引 是了解 kitty 对传统终端协议所做扩展的入口。这些是继承的参考规范,而非 Silkie 专有扩展。
Silkie 扩展导览¶
以下链接打开 Silkie 规范,其中包含传输格式、回复和实现细节。Silkie 扩展参考手册 也按类别列出这些规范。
领域 |
Silkie 规范 |
配套阅读 |
|---|---|---|
能力探测与通用规则 |
OSC 与 ST 控制字符串封装 |
|
输入 |
通用封装与各协议的探测规则 |
|
矢量渲染与墨迹 |
kitty 图形;墨迹功能所需的数位板输入 |
|
色彩与透明度 |
SGR、kitty 图形、显示信息 |
|
字体族与排版 |
SGR、kitty 字体配置与文本尺寸 |
|
图像光标 |
kitty 指针形状与图形 |
|
显示与时序 |
通用封装与各协议定义的时钟和单位 |
|
设置与工具 |
kitty 配置、按键映射和 kitten 工具 |
例如,矢量绘图应用需要 kitty 图形协议传输和放置图像,使用 Silkie 矢量格式描述场景,再用数位板和墨迹协议处理笔输入与本地笔迹渲染。矢量规范本身不定义完整的图形传输机制。
Kitten 与应用 API¶
实现导览¶
以下源码文件位于 silkie 分支。
职责 |
源代码 |
|---|---|
仓库与规范源码 |
|
终端序列解析与屏幕行为 |
|
图形、矢量与墨迹 |
kitty/graphics.c; kitty/vector.c; kitty/fonts/vector.py; kittens/tui/vector.py; kitty/ink.c |
输入与平台集成 |
|
Kitten 工具与输入检查器 |
|
终端应用辅助库 |
|
配置声明 |
|
终端测试 |
能力探测与清理¶
启用可选模式前先查询支持情况;未收到回复时应设置超时,并为不支持的功能保留回退方案。OSC 777 能力注册表覆盖其选择器族;图形格式、SGR 扩展和其他协议分别在自身规范中规定探测方法。退出或挂起时,按协议要求关闭自己启用的模式。还需考虑远程连接和多路复用器:应用实际可用的能力取决于通向终端的完整路径。