为 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 实现了所有历史终端功能。

继承的 kitty 协议

上游终端协议索引 是了解 kitty 对传统终端协议所做扩展的入口。这些是继承的参考规范,而非 Silkie 专有扩展。

上游规范

领域

阅读上游文档

图像与键盘输入

图形;键盘

文本与屏幕呈现

下划线;文本尺寸;多个光标;取消滚动

色彩与属性

色彩控制;矩形区域属性

交互与桌面集成

指针形状;拖放;桌面通知

数据交换

剪贴板;文件传输

其他控制

其他协议

Silkie 扩展导览

以下链接打开 Silkie 规范,其中包含传输格式、回复和实现细节。Silkie 扩展参考手册 也按类别列出这些规范。

Silkie 规范及其前置知识

领域

Silkie 规范

配套阅读

能力探测与通用规则

扩展能力协议; OSC 777 扩展封装

OSC 与 ST 控制字符串封装

输入

数位板指针协议; 滚动协议; 触控板手势协议; 触觉反馈协议

通用封装与各协议的探测规则

矢量渲染与墨迹

矢量图像; 终端侧墨迹; GPU 表面(零拷贝)

kitty 图形;墨迹功能所需的数位板输入

色彩与透明度

HDR 亮度协议; 广色域颜色; 字符单元背景透明度

SGR、kitty 图形、显示信息

字体族与排版

字体选择协议

SGR、kitty 字体配置与文本尺寸

图像光标

图像指针扩展

kitty 指针形状与图形

显示与时序

显示信息协议; 低延迟协议; 画面呈现协议

通用封装与各协议定义的时钟和单位

设置与工具

Silkie 配置; 显示指针信息; 窗口操作

kitty 配置、按键映射和 kitten 工具

例如,矢量绘图应用需要 kitty 图形协议传输和放置图像,使用 Silkie 矢量格式描述场景,再用数位板和墨迹协议处理笔输入与本地笔迹渲染。矢量规范本身不定义完整的图形传输机制。

Kitten 与应用 API

实现导览

以下源码文件位于 silkie 分支。

源码位置

职责

源代码

仓库与规范源码

代码仓库;文档

终端序列解析与屏幕行为

kitty/vt-parser.c; kitty/screen.c

图形、矢量与墨迹

kitty/graphics.c; kitty/vector.c; kitty/fonts/vector.py; kittens/tui/vector.py; kitty/ink.c

输入与平台集成

kitty/mouse.c; glfw

Kitten 工具与输入检查器

kittens; kittens/show_pointer

终端应用辅助库

tools/tui

配置声明

kitty/options/definition.py

终端测试

kitty_tests

能力探测与清理

启用可选模式前先查询支持情况;未收到回复时应设置超时,并为不支持的功能保留回退方案。OSC 777 能力注册表覆盖其选择器族;图形格式、SGR 扩展和其他协议分别在自身规范中规定探测方法。退出或挂起时,按协议要求关闭自己启用的模式。还需考虑远程连接和多路复用器:应用实际可用的能力取决于通向终端的完整路径。