Konsole —— ANSI 转义码支持情况
Konsole 是 KDE 桌面的旗舰终端模拟器,自 1997 年 KDE 首版发布以来持续开发至今 —— 是开源世界中仍在维护的最古老终端代码库之一。它构建于自有的 VT 引擎(非 libvte)之上,由 KDE plasma-workspace 仓库维护;该引擎源自 Lars Doelle 1997 年的原始实现,由 Konsole 维护者(Robert Knight、Kurt Hindenburg、Tomaz Canabrava)二十多年来逐步重写。
ANSI 转义码兼容性方面,Konsole 属于 xterm 兼容性最广的终端之一:完整 SGR(24 位色、加粗、斜体、删除线)、完整光标 + 擦除 + 滚动、鼠标模式、括号粘贴、备用屏幕、OSC 8 超链接(自 18.08,2018 年)、完整 SGR 4:1–4:5 扩展下划线 + SGR 58 下划线着色(自 21.04,2021 年),以及 DEC Sixel 渲染(自 KDE Plasma 6.0 / Konsole 24.02,2024 年 2 月)。Konsole 标志性的转义扩展包括专有的 `OSC 50 ; SetProfile=…` —— 允许子进程从命令行触发实时切换 profile,该功能领先于现代声明式主题方案,至今仍是 Konsole 独有。
最近更新
特性支持情况
该终端在站点统一矩阵跟踪的 15 个特性上的表现。点击任意特性名可查看其在全部终端上的完整支持情况。
- 8 种基础色(30–37 / 40–47)SGR 30–37 前景,40–47 背景。支持
- 高亮(aixterm)色(90–97 / 100–107)aixterm SGR 扩展。支持
- 256 色调色板(38;5;n / 48;5;n)xterm 256 色扩展。支持
- 24 位真彩色(38;2;r;g;b)1670 万直接 RGB。设置 $COLORTERM=truecolor。支持
- 斜体(SGR 3)斜体文本属性。支持
- 扩展下划线(4:1–4:5)波浪/点/虚下划线样式。支持
- 删除线(SGR 9)文本中央的水平线。支持
- OSC 8 超链接内联可点击 URI。支持
- 备用屏幕(?1049h)全屏应用缓冲区。支持
- 鼠标跟踪(SGR ?1006)鼠标点击/拖拽事件。支持
- 括号粘贴(?2004)粘贴文本被 ESC[200~/ESC[201~ 包裹。支持
- 焦点事件(?1004)获得焦点时 ESC[I,失去时 ESC[O。支持
- Sixel 图形DEC sixel 内联位图。支持
- Kitty 图形协议PNG/RGB 内联图像和动画。支持
- 同步输出(?2026)原子化帧更新,避免撕裂。支持
在此终端可用的序列
该终端能完整处理的转义序列对应的权威参考页。每条均链接到完整页面,含字节形式、规范出处与多语言示例。
- SGR 38;2;R;G;B — 24 位真彩色前景
\x1b[38;2;R;G;Bm直接指定 16,777,216 种 RGB 前景色之一。
- OSC 8 — 内联超链接
\x1b]8;;URI\x07TEXT\x1b]8;;\x07在终端输出中渲染可点击超链接(gnome-terminal 3.26+、iTerm2、Windows Terminal、kitty 等)。
- DCS Sixel — 内联栅格图像(ESC P q … ESC \)
\x1bPq <sixel data> \x1b\\通过 Sixel 设备控制载荷在终端流中嵌入像素图像。
- SGR 4 — 下划线
\x1b[4m为后续文本添加下划线。
- DECSET 1049 — 备用屏幕缓冲
\x1b[?1049h (enter) \x1b[?1049l (leave)切换到独立屏幕缓冲区(vim/less 启动时使用)。
细节与版本说明
在生产中使用某序列前应知晓的、该终端特有的注意事项。
- Sixel 自 KDE Plasma 6.0 / Konsole 24.02(2024 年 2 月)起支持
- Konsole 在 24.02 周期与 KDE Plasma 6.0 同步发布 DEC Sixel 渲染。发送 Sixel 的程序(chafa、timg、neofetch-image、IPython 中的 matplotlib 显示)无需改动即可内联渲染。DA1 应答(`CSI c`)声明 sixel(`4`)。可通过 设置 ▸ 配置 Konsole ▸ 配置文件 ▸ 编辑 ▸ 高级 ▸ 模式 ▸ "启用 Sixel" 启用(新建配置文件默认开启;老配置文件需手动切换一次)。
- OSC 50 ; SetProfile=… —— Konsole 独有的实时配置文件切换
- Konsole 支持 `printf '\e]50;SetProfile=Profile_Name\a'` 从 shell 或子程序在运行时切换当前标签的配置文件(配色方案、字体、滚屏策略)。其他终端均未实现完全相同的 OSC —— 多数终端使用 Konsole 不兼容的 OSC 50 变体仅用于字体更改。典型用法:进入 SSH 会话时切到深色配置,su 至 root 时切到红色提示配置。可通过 $KONSOLE_VERSION 环境变量检测(Konsole 自动设置)。
- 标签 + 分屏自 KDE 4.x 起原生支持 —— 内置 4 分屏网格
- Konsole 自 KDE 4.0(2008 年)起原生支持标签页,自 KDE 4.4(2010 年)起支持 2×2 分屏 —— 基础多面板工作流无需 tmux。每个面板都是独立 shell 进程(而非 tmux 客户端),分屏继承父配置文件。括号粘贴与 OSC 8 超链接的边界在各面板独立保留。可使用 Ctrl+Shift+H 将面板分离为新标签。
- 响铃模式经由 KDE 通知系统而非仅 BEL
- 当子进程发出 `\a`(BEL)时,Konsole 的默认行为是通过系统级 KDE 通知守护进程(plasma-systemtray + KGlobalAccel)呈现该响铃,并遵循用户的通知偏好。其他终端通常仅播放音效或闪烁标题栏。可在 设置 ▸ 配置 Konsole ▸ 配置文件 ▸ 编辑 ▸ 终端响铃 中配置。该机制非常适合从长时间运行的命令触发桌面通知 —— 例如 `make && printf '\a'`。