kitty 术语表与环境变量完全指南:从窗口层级体系到子进程环境变量机制 kitty 术语表与环境变量完全指南从窗口层级体系到子进程环境变量机制【免费下载链接】kittyIf you live in the terminal, kitty is made for you! Cross-platform, fast, feature-rich, GPU based.项目地址: https://gitcode.com/GitHub_Trending/ki/kitty本文基于 kitty 官方文档 docs/glossary.rst 整理并深化。kitty 的窗口系统OS Window / Tab / Window / Layout构成了其全部用户界面术语的基础而两套环境变量体系——“影响 kitty 行为的变量”和“kitty 注入给子进程的变量”——则是脚本化、远程控制和 shell 集成的核心接口。读完本文你将掌握 kitty 术语的准确含义并能利用环境变量定制配置目录、启用远程控制、实现 SSH 无交互认证以及理解 kitty 子进程环境变量的组装机制。1. 窗口体系两种窗口、Tab 与布局kitty 明确区分两种“窗口”见 docs/glossary.rst 中的os_window与window词条OS Window操作系统窗口由操作系统管理的窗口一个 OS Window 包含一个或多个 kittytabkitty window终端窗口运行具体 shell/程序的终端实例多个 kitty window 通过layout组织在一个 tab 内tab一组按 layout 组织的 kitty window每个 OS Window 含一个或多个 tablayout管理 tab 内窗口分组、尺寸与位置的“平铺窗口管理器”窗口的大小和位置由布局自动维护。从源码结构看这套层级与仓库中的代码组织一一对应窗口与 tab 的运行时逻辑位于 kitty/tabs.py而布局实现则集中在 kitty/layout/ 目录下包括grid.py网格、splits.py分屏、tall.py、stack.py、vertical.py等具体布局其接口定义在 kitty/layout/interface.py。布局的完整行为细节可参阅官方文档 docs/layouts.rst。2. Overlay覆盖窗口的用途与“主窗口”例外overlay词条说明覆盖窗口是一个完全覆盖现有 kitty window 的 kitty window。kitty 内部大量使用 overlay典型场景包括显示回滚缓冲scrollback buffer显示 hints kittenunicode_input 等输入法辅助界面。关键规则是普通 overlay 面向短时长弹出在判定“当前工作目录”或获取 kitten/launch 命令的输入文本时它不被视为活动窗口active window。如果需要创建被视为主窗口main window的 overlay应使用launch动作的overlay-main参数相关行为定义见 docs/launch.rst。3. Hyperlinks 与 Kittens两个高频术语Hyperlinks终端可以像网页一样携带超链接kitty 允许按链接类型与 URL 精确控制点击后的行为打开浏览器、复制到剪贴板等策略配置见 docs/open_actions.rst。Kittens小型、独立、静态编译的命令行程序设计为在 kitty window 内运行提供查看图片、便捷连接远程机器、文件传输、Unicode 输入等能力。kittens 也可以用 Python 编写以定制和扩展 kitty入门指南见 docs/kittens_intro.rst。官方自带 kittens 的绝大多数用 Go 编写配有一个小型 Python shim 处理进程内交互部分——这一点在仓库中可以直接验证kittens/目录下每个 kitten 均包含 Go 源码如main.go与main.pyshim例如 kittens/ssh/main.go 与 kittens/ssh/main.pykittens 进程启动时会设置KITTY_CONFIG_DIRECTORY指向 kitty 配置目录见 kittens/runner.py。4. 缓动函数Easing Function与 SIMD缓动函数控制动画随时间的推进方式kitty 支持 CSS 的缓动函数语法。常用取值linear恒定速率ease-in-out起步慢、中段快、结尾慢。这两类函数用于驱动 kitty 内的多种动画典型配置项是cursor_blink_interval光标闪烁与visual_bell_duration视觉铃声二者均在 kitty/options/definition.py 中定义动画计算的 C 层实现位于 kitty/animation.c。SIMDSingle Instruction, Multiple Data向量编程指用单条 CPU 指令处理多个数据单元可显著加速数据处理。kitty 在运行时探测 CPU 能力并在 SSE4.2 / AVX2 / AVX-512 实现之间选择从源码结构看kitty/simd-string.c 先探测 CPU 特性再读取KITTY_SIMD环境变量进行覆盖取值128对应 SSE4.2、256对应 AVX2当前源码中还存在512取值映射到 AVX-512 实现。对应实现分别编译自 kitty/simd-string-128.c、kitty/simd-string-256.c 与 kitty/simd-string-512.c。警告与文档一致KITTY_SIMD会覆盖 CPU 能力探测。若设置为 CPU 不支持的向量宽度kitty 会以 SIGILL 崩溃设置为其他任意值则禁用 SIMD 指令。5. 影响 kitty 行为的环境变量以下变量在 kitty启动前设置用于改变 kitty 自身的运行行为全部词条来自 docs/glossary.rst变量作用默认值 / 备注KITTY_CONFIG_DIRECTORY控制 kitty 查找kitty.conf及其他配置文件的目录~/.config/kitty查找机制详见kitty --configKITTY_CACHE_DIRECTORY缓存文件存放位置~/.cache/kittymacOS 为~/Library/Caches/kittyKITTY_RUNTIME_DIRECTORY运行时文件如 socket存放位置若定义了XDG_RUNTIME_DIR则用之否则用缓存目录下的 run 子目录VISUALkitty 使用的终端文本编辑器如vi、nano例如响应edit_config_file快捷键打开kitty.conf时—EDITOR同VISUAL在VISUAL未设置时使用—SHELL当shell选项设为.时kitty 运行的默认 shell—GLFW_IM_MODULE设为ibus以启用 X11 下的 IME 支持输入方法相关KITTY_WAYLAND_DETECT_MODIFIERS设为非空值时kitty 在 Wayland 下尝试自动发现 XKB 修饰键对 hyper 等非标准修饰键有用发现失败时回退到 Wayland 默认 XKB 映射—SSH_ASKPASS指定 SSH 询问密码的程序设置后 ssh kitten 默认使用它详见 docs/kittens/ssh.rst 的askpass选项KITTY_CLONE_SOURCE_CODE克隆窗口时以eval执行的 shell 代码配合 clone-in-kitty 功能—KITTY_CLONE_SOURCE_PATH克隆窗口时被 source 的文件路径—KITTY_DEVELOP_FROM指向 kitty 源码目录kitty 将从该处加载 Python 代码仅对官方二进制构建有效—KITTY_RC_PASSWORD配合remote_control_password选项使用远程控制的口令见 docs/remote-control.rst前三个目录变量的解析逻辑可以在 kitty/constants.py 中直接验证KITTY_CACHE_DIRECTORY与KITTY_RUNTIME_DIRECTORY均先查环境变量再回退到 XDG 默认路径。6. kitty 为子进程设置的环境变量kitty 启动每个子进程shell、kitten、任意 launch 命令时会注入一组环境变量它们是脚本感知终端环境、与 kitty 安全通信的基础。以下清单完整继承自 docs/glossary.rst变量说明LANG仅在 macOS 上设置。若 macOS 用户设置中的国家/语言组合成无效 locale会被设为en_US.UTF-8PATHkitty 把自己的安装路径前置到 PATH确保 shell 中调用kitty系列功能正常工作KITTY_WINDOW_ID子程序所在 kitty window 的整数 ID可配合 远程控制 使用KITTY_PID承载子程序的 kitty 进程 PID程序可据此向 kitty 发送SIGUSR1信号触发配置重载KITTY_PUBLIC_KEY公钥程序可用它通过远程控协议安全地与 kitty 通信格式为protocol:key dataWINDOWID所在 OS Window 的 ID仅在 X11、macOS 等有窗口 ID 的平台可用TERM终端名称默认xterm-kitty由term选项控制TERMINFO指向包含 kitty terminfo 数据库的目录路径或 base64 编码的 terminfo 数据本身由terminfo_type选项决定形式仓库中打包的原始数据见 terminfo/kitty.terminfo 与 terminfo/kitty.termcapKITTY_INSTALLATION_DIRkitty 安装目录路径COLORTERM固定设为truecolor表明 kitty 支持 1600 万色KITTY_LISTEN_ON当启用了远程控制 且通过kitty --listen-on或listen_on使用 socket 时设置内容为 socket 路径使远程命令无需再写kitten --to也可能为fd:num形式的文件描述符此时远程控制通信走该 fdKITTY_PIPE_DATA使用launch --stdin-source将屏幕/回滚内容管道给子程序时描述屏幕布局的数据KITTY_CHILD_CMDLINE在终端响铃触发command_on_bell回调程序时设为该 kitty window 中子进程的命令行KITTY_COMMON_OPTS运行 kittens 时设置包含若干常用 kitty 选项的值使 kittens 无需加载kitty.conf即可使用KITTY_SHELL_INTEGRATION启用 shell 集成时设置随后被 shell 集成脚本自动移除KITTY_SI_RUN_COMMAND_AT_STARTUP设为一个表达式shell 集成脚本在 shell 启动后会对其执行eval注意该变量在 kitty 自身启动环境中的取值会被忽略最适用于launch动作的--env参数ZDOTDIR对 zsh 启用 shell 集成时设置使 zsh 自动加载集成脚本XDG_DATA_DIRS对 fish 启用 shell 集成时设置使 fish 自动加载集成脚本ENV对 bash 启用 shell 集成时设置使 bash 自动加载集成脚本KITTY_OS在kitty.conf使用 include 指令时设置取值linux、macos、bsd便于按操作系统 include 不同配置KITTY_HOLDkitty 因--hold标志运行 shell 时设为1可在 shell rc 文件中据此定制行为KITTY_SIMD设为128使用 128 位向量寄存器、256使用 256 位其他值禁用 SIMD。会覆盖 CPU 探测不匹配会导致 SIGILLshell 集成相关变量ZDOTDIR、XDG_DATA_DIRS、ENV、KITTY_SHELL_INTEGRATION的注入逻辑集中在 kitty/shell_integration.py对 fish 会拼接XDG_DATA_DIRS第 19-26 行对 zsh 会把ZDOTDIR指到集成脚本目录并保存原值第 52-69 行最终在 第 245 行 设置KITTY_SHELL_INTEGRATION标记。集成脚本本体位于 shell-integration/ 目录按 bash/zsh/fish 分目录存放。7. 源码级验证子进程环境变量如何被组装理解上述变量“何时、为何”被设置最有价值的入口是 kitty/child.py 中ChildProcess.get_final_env()第 368-428 行。其组装顺序可概括为以default_env()为基线并叠加本次启动附加的环境self.env无条件写入核心变量TERM取term选项、COLORTERMtruecolor、KITTY_PID、KITTY_PUBLIC_KEY取自boss.encryption_public_key、KITTY_INSTALLATION_DIR第 382-404 行按terminfo_type选项分支处理TERMINFOpath模式写入 terminfo 目录路径direct模式写入 base64 编码的 terminfo 数据第 398-403 行若启用了 shell 集成调用modify_shell_environ注入ZDOTDIR/ENV/XDG_DATA_DIRS等变量若本次启动带有启动命令写入KITTY_SI_RUN_COMMAND_AT_STARTUP第 417-427 行。KITTY_LISTEN_ON的三种形态同样可见于此处通过 fd 传递时设为fd:num第 386-387 行否则在 kitty 处于监听状态时写入boss.listening_on的 socket 地址再否则显式删除该变量防止陈旧值泄漏给子进程。KITTY_WINDOW_ID的注入则发生在窗口层kitty/tabs.py 中按窗口 id 写入子进程环境供kitty 远程控制命令定位目标窗口。此外两个“kittens 特供”变量在 kitty/boss.py 中组装KITTY_COMMON_OPTS以 JSON 序列化常用选项第 2555 行KITTY_PIPE_DATA以scrolled_by:cursor_x,cursor_y:lines,columns格式描述屏幕布局第 3064 行供 docs/pipe.rst 所述的管道功能消费。8. 实战要点与验证方式远程控制的免--to用法在启用了listen_on的 kitty 中运行程序直接echo $KITTY_LISTEN_ON即可拿到 socket 路径或 fd 描述符远程命令的完整协议见 docs/rc_protocol.rst 与 docs/remote-control.rst。SSH 无交互认证设置SSH_ASKPASS后ssh kitten 默认复用该程序获取凭据行为细节与askpass选项见 docs/kittens/ssh.rst。配置调试kitty 提供配置调试支持环境变量解析与配置查找逻辑可对照 kitty/debug_config.py 与 kitty/constants.py 阅读测试用例 kitty_tests/datatypes.py 中还演示了通过KITTY_CONFIG_DIRECTORY指向临时目录来隔离配置的场景第 685-719 行。shell 内自检在 kitty 窗口中执行echo $KITTY_WINDOW_ID $KITTY_PID $TERM $COLORTERM $KITTY_INSTALLATION_DIR即可验证本文第 6 节所列变量确实按文档语义被注入zsh/bash/fish 用户可进一步确认ZDOTDIR、ENV/XDG_DATA_DIRS已被指向 kitty 的 shell 集成脚本目录。本文所有术语定义与环境变量清单以 docs/glossary.rst 为准源码引用路径均位于当前仓库根目录下可按文中相对路径继续深入阅读。【免费下载链接】kittyIf you live in the terminal, kitty is made for you! Cross-platform, fast, feature-rich, GPU based.项目地址: https://gitcode.com/GitHub_Trending/ki/kitty创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考