图像指针扩展

Silkie 为 kitty 指针形状协议 添加了基于图像的指针。该规范定义 OSC 22 封装、形状栈和查询。

图像形状

在 0.50.0 版本加入.

程序可将通过 终端图形协议 发送的图像用作指针,例如绘图程序在笔下显示当前画笔的大小和颜色。在任何接受形状名称的位置,以下名称::

image:<image id>:<hotspot x>:<hotspot y>

引用同一窗口中以该 i= ID 传输的图像。热点是图像中位于指针位置的像素,以左上角为原点;可以省略一个或两个坐标,默认值为零。例如,将宽 2 像素、直径 48 像素的圆形轮廓作为图像 9 发送,并让其中心与指针对齐::

<OSC> 22 ; image:9:24:24 <ESC>\

图像的每个像素对应一个物理像素,与图形协议显示未缩放放置图像的方式相同,因此按画布中实际画笔大小绘制的预览可与画笔对齐。CSI 14 t 和 CSI 16 t 报告的窗口和字符单元尺寸也使用相同的像素单位。动画图像使用当前帧;图像帧的变化会反映到指针上。

名称只是对图像的引用。设置形状时若对应 ID 的图像不存在,或图像随后被删除,则忽略该条目,指针回退到栈中下一层形状或默认形状,直到再次传输该 ID 的图像。因此删除图像不会弹出栈条目。图像形状生效时,?__current__ 的回复是带有两个热点坐标的图像名称。只要终端支持图像形状,查询形式 ?image:1:2:3 就返回 1,无论图像 1 是否存在。

图像超过平台允许的指针尺寸时(例如 X11 上的大图像),按不存在处理。多路复用器或 mosh 等中继原样透传名称,由远端终端在该窗口的图像中解析 ID。