Silkie 配置

这些选项用于在 kitty.conf 中配置 Silkie 的扩展。文件位置、语法和继承的设置见 kitty 配置参考。

下面的默认值和说明来自 Silkie 的配置定义。

电子纸与配色切换

对于外接电子纸显示器,包括被操作系统识别为普通显示器的 BOOX 显示器,请在 kitty.conf 中添加::

eink_mode yes

Silkie 使用白底黑字,并通过 显示信息协议 向应用报告 kind=eink。应用可利用这一信息避免动画、平滑滚动和频繁重绘。软件需要支持该协议才能使用此信息。

按 ctrl+shift+f12 在白底黑字和黑底白字之间切换。两种配色下,显示器都仍报告为电子纸。按 ctrl+shift+alt+f12 切换电子纸模式。这些快捷键使用 kitty_mod``(默认 ``ctrl+shift),并影响全部 Silkie 窗口。命令面板中也可执行这些操作。自定义快捷键::

map f6 set_color_scheme toggle
map f7 set_eink_mode toggle

在任意显示器上使用 color_scheme light 或 color_scheme dark 可固定配色。set_color_scheme auto 恢复配置颜色和自动主题;若启用电子纸模式,则恢复白底黑字。明确指定的浅色和深色优先于自动主题及操作系统外观变化。重新加载配置会恢复已保存的选择。

电子纸模式声明显示器类型,但不假定其色深或刷新时序。如果已知面板有十六级灰度,还可设置::

display_info color=gray bits=4

彩色电子纸显示器可省略这一行,或声明其实际能力。仍可使用 display_info kind=eink 仅覆盖报告信息,而不改变配色。这些声明应用于 Silkie 进程的全部窗口,因此在普通显示器和电子纸显示器之间移动时,应切换相应模式。

字体与中日韩文本

Silkie 默认的 font_family 是 Iosevka。请安装 Iosevka,以及衬线字体角色所需的 Iosevka Slab。协议选择、字体下载链接和中日韩文本行为见 字体选择协议。应用不附带字体文件。

font_role

可重复指定的角色到字体映射,使用 kitty 的字体描述语法。默认为 sans Iosevka 和 serif Iosevka Slab。default 保留给 font_family。配置的角色可包含字体特性和可变轴设置;角色数量没有固定限制。

cjk_font

默认:auto。优先使用对应地区的 Sarasa Term、Noto Sans CJK 或 Noto Sans Mono CJK,再使用地区系统字体和平台字形回退。明确指定字体可覆盖这一偏好。

cjk_font_locale

默认:auto。选择 jp、kr、sc、tc 或 hk,以使用相应地区的中日韩字形。自动选择遵循进程的区域设置;未指定时默认为 sc。

输入限制

这些限制适用于程序写入终端的数据,每项都表示最大值。默认值 0 表示不限制。仅当需要约束试图耗尽内存或时间的程序时才应设置。Goblin View 使用 csi-limit 和 escape-limit;Goblin Skiff 使用 --csi-limit、--escape-limit 和 --vector-depth-limit。虚线、光栅和曲线限制适用于 Silkie 栅格化矢量图像时。

csi_limit

单条 CSI 序列的最大字节数,即 ESC [ 之后直到并包括最终字节的全部内容。更长的序列会被忽略。0 表示 CSI 长度不限。带数量参数的光标移动和编辑操作仍限制在屏幕范围内。

escape_limit

单条 OSC、APC、DCS、PM 或 SOS 序列的最大字节数,不计引入符和终止符。更长的序列会被丢弃。0 表示这些序列长度不限。剪贴板写入仍受 clipboard_max_size 限制。

vector_depth_limit

矢量元素可嵌套的最大分组层数。更深的元素不绘制。0 表示深度不限。无论如何设置,父级链中的循环都会被拒绝。

vector_dash_limit

单条路径描边的最大虚线边界数。若路径需要更多边界,则绘制为实线。0 表示绘制全部虚线。

vector_raster_limit

单个矢量图像光栅的最大像素数。请求的尺寸过大时按比例缩小。0 表示按实际显示尺寸栅格化。

vector_curve_limit

将一条曲线或一个圆展平时使用的最大线段数。0 表示按展平误差需要生成线段。

hdr

默认:detect。

允许 HDR 显示器显示高于 SDR 白色的亮度。普通 SDR 内容与关闭此选项时完全相同;HDR 仅为程序通过 HDR 亮度协议、cursor_brightness 和 HDR 图像请求的内容增加亮度。默认值 detect 会在无需切换显示模式、且具备相应能力的显示器上启用 HDR:包括 macOS 上支持 EDR 的显示器(含 MacBook 内置显示器),以及 Wayland 上已经提供 HDR 亮度余量的显示器。窗口移到其他屏幕时会跟随显示器变化。no 禁用 HDR;auto 仅在屏幕上存在亮于 SDR 白色的内容时启用扩展范围;always 则不论检测结果都保持启用。Silkie 不会将显示器切换为 HDR 模式;需要这样做的外接显示器必须在系统显示设置中启用。修改此选项后请重启 Silkie。支持 macOS;Wayland 还需要合成器实现色彩管理,并由图形驱动提供浮点窗口表面,详见 HDR 亮度协议。

hdr_max_headroom

默认:4.0。

Silkie 用于 HDR 内容的最大亮度,以 SDR 白色的倍数表示。显示器可能提供更大的亮度余量,尤其在较低亮度设置下,但过亮的文本不适合阅读。超出此值的请求会被钳制。显示器自身的限制始终适用。

cursor_brightness

默认:1.0。

块状光标的亮度,以 SDR 白色的倍数表示,例如 2.0 表示普通白色文本亮度的两倍。大于一的值仅在 HDR 显示器且启用 hdr 时生效,否则按普通方式绘制光标。参阅 HDR 亮度协议。

wayland_colorspace

默认:srgb。

Wayland 上操作系统窗口所用的色彩空间。默认 srgb 保持原有行为。displayp3 或 rec2020 会告知合成器窗口属于相应广色域;程序标注了广色域的颜色和图像会在该色域显示,而非裁剪到 sRGB,详见 广色域颜色。auto 在三者中选择窗口所在显示器能够完整显示的最宽色域。所有未标注色域的内容均按 sRGB 处理并保持原貌,这与 macos_colorspace 不同。需要合成器支持色彩管理;否则窗口保持 sRGB。广色域窗口会额外对像素执行一次处理。

eink_mode

默认:no。

即使操作系统将显示器识别为普通显示器,也声明它为电子纸,例如外接 BOOX 显示器。Silkie 通过 显示协议 报告 kind=eink,并在 color_scheme 为 auto 时使用白底黑字。明确设置 color_scheme dark 在电子纸上也有效。

此设置适用于全部 Silkie 窗口。运行时可用 set_eink_mode yes、no 或 toggle 切换,默认快捷键为 ctrl+shift+alt+f12。显示信息订阅者会收到变化通知。重新加载配置会恢复配置中的设置。

电子纸模式不会推断色彩能力和刷新时序。如有需要,使用 display_info 声明,例如十六级灰度面板可设置 display_info color=gray bits=4。电子纸模式优先于 display_info kind=...。

color_scheme

默认:auto。

用 light 选择白底黑字,dark 选择黑底白字。这些内置高对比度配色也会设置光标、选区和标签栏颜色。auto 使用配置的颜色和自动主题文件,但 eink_mode 启用时会选择浅色配色。

运行时可用 set_color_scheme light、dark、auto 或 toggle 切换。默认快捷键为 ctrl+shift+f12。变化适用于全部窗口,包括新窗口,直至重新加载配置。订阅 kitty 色彩偏好通知的应用会收到通知。

display_info

默认:空(不覆盖)。

用于补充操作系统无法报告的显示属性,回答通过 显示协议 发起查询的程序。以空格分隔的 key=value 键值对会覆盖 Silkie 的检测结果,例如电子墨水显示器::

display_info kind=eink color=gray bits=4

可用的键为 kind`(:code:`lcd、oled、eink 或 unknown)、color`(:code:`rgb、gray 或 mono)、bits`(每个颜色通道的位数)、:code:`gamut`(:code:`srgb、p3、rec2020 或 unknown)、headroom、scale、period`(刷新周期,单位微秒)和 :code:`ppi。

tablet_hardware_ids

默认:no。

是否允许通过 数位板指针协议 告知程序笔和数位板的硬件标识:笔的序列号、类型标识,以及数位板的厂商和产品 ID。序列号可识别笔的所有者,而查询程序可能运行在另一台机器上,因此默认拒绝通过模式位 8 请求这些信息:读回的该位为关闭,且不发送标识。笔、数位板和控制板的其他信息仍照常报告。

haptic_feedback

默认:yes。

允许程序在触控板上播放触觉反馈,参阅 触觉反馈协议。仅适用于 macOS。