介绍 Kwi,一款全新的 KDE 终端模拟器
摘要
KDE 开发者 Eike Hein 宣布推出 Kwi,这是一款面向 KDE Plasma 和其他自由桌面环境的全新现代终端模拟器,基于 Ghostty 的 libghostty-vt 构建,采用 GPU 加速的 Qt Scene Graph 渲染器和 Kirigami 用户界面,号称性能比 Konsole 快 3 至 35 倍。
<p><a href="https://lobste.rs/s/lt44rt/introducing_kwi_new_kde_terminal">评论</a></p>
查看缓存全文
缓存时间: 2026/11/01 03:31
# 介绍 Kwi,一款全新的 KDE 终端模拟器
来源:https://blogs.kde.org/2026/11/01/introducing-kwi/
介绍 Kwi,一款全新的 KDE 终端模拟器
我开始开发一款新的 KDE 应用程序了。它叫 **Kwi**(读作 *kwee*)。
**Kwi** 旨在为 KDE Plasma 和其他自由桌面的用户提供现代、快速的终端。它基于稳健的技术栈构建,并遵循最新的 KDE 人机界面指南(HIG)和用户界面惯例。
下面是一张截图:
Kwi 的基本截图从某种意义上说,**Kwi** 的产品愿景是有点平淡无奇的:它就是你想要、也期望 KDE Plasma 终端具备的样子。当然,考虑到用户通常期待 KDE 软件拥有强大的功能,这并不意味着这个项目缺乏雄心。:\-)
为实现这些目标,**Kwi** 基于优秀的 Ghostty (https://ghostty.org/) 项目中的 **libghostty\-vt**,以及大家熟悉的成熟 KDE Frameworks 组件,例如 KPty (https://api.kde.org/kpty-index.html)。它拥有由 Qt Scene Graph 驱动、速度极快的 GPU 加速渲染器(Vulkan 或 OpenGL)。它的用户界面采用 Kirigami (https://develop.kde.org/frameworks/kirigami/) 最新、最出色的技术构建,能够很好地融入较新的 KDE 应用程序和 Plasma 桌面。
呼应这个主题,**Kwi** 的图标/标志是一只可爱的终端小幽灵。它的名字也由此而来:*kwisin*,或者更常见的 *gwisin*,是韩语 *귀신* 的罗马字转写,意思是幽灵。它的读音有点像 *kwee\-shin*。
Kwi 的标志和应用程序图标### Kwi 提供的功能
与历史悠久、成熟的 **Konsole** 相比,Kwi 还很年轻。目前,它提供的功能比 Konsole 更精简,并使用 KDE 最新的 HIG 模式精心实现。接下来,我们会缓慢而谨慎地在此基础上继续构建,运用社区在过去十年左右开展成熟设计流程时积累的全部经验(你好,VDG!)。这是一次审视现状的机会,让我们盘点其他终端如何实现这一领域较新的创新,并以 KDE 的方式参与竞争。
Konsole 与 Qt 两套用户界面技术栈中较老的那套——*QWidget*——联系非常紧密。QWidget 通常使用 CPU 渲染,Konsole 也是如此。较新的 KDE 软件(包括 Plasma 本身)通常使用 Qt Quick (https://doc.qt.io/qt-6/qtquick-index.html),通过 Vulkan 或 OpenGL 获得 GPU 加速。Kwi 也采用这种方式。对于某些终端应用程序,性能提升(根据基准测试的内容不同,速度比 Konsole 快 3 至 35 倍)确实能显著改善用户体验,而总体而言,它也应该有助于降低电池消耗。
Kwi 基于 libghostty\-vt (https://libghostty.tip.ghostty.org/index.html) 构建。这个项目将自身定位为一项生态系统建设:提供一个无界面库,处理所有棘手的终端解析和状态管理,赋能下游项目,形成水涨船高的局面。最近,它开始真正兑现这一承诺,在现代 TUI 功能支持方面超越了其他终端实现,而且没有把这些成果据为己有。虽然这个库还要在未来 4 至 6 个月的某个时候才会在 v1.0 中承诺 ABI/API 稳定,但它已经逐渐被一些大型热门项目采用,包括 neovim、ghostel 等。这里有一份列表 (https://github.com/Uzaaft/awesome-libghostty)。
Kwi 将这个库与 KDE/Qt 技术栈结合起来,使项目能够主要专注于桌面集成和渲染性能,而这两个领域通常都是 KDE 软件栈的强项。两者结合,已经带来了相较于 Konsole 的一些改进,例如:
- 常规- 将用户界面更新至最新的 KDE HIG - 根据基准测试不同,整体性能提升至 3–35 倍- 例如,在一台测试系统上运行 DOOM\-fire\-zig (https://github.com/const-void/DOOM-fire-zig) 时达到 870 fps,而 Konsole 为 23 fps
- 渲染- 通过 Vulkan 或 OpenGL 进行 GPU 加速渲染 - 更好地支持 KDE Plasma 系统配色方案,包括实时变更 - 改进对 Wayland 分数缩放的正确处理 - 改进终端文本渲染- 改进文本装饰的渲染(例如复杂下划线样式的 z 轴排序) - 改进连字支持,尤其是连字与着色和选区交互时的表现 - 支持 mode\-2027 字素宽度、Nerd Font 图标缩放等 - 改进对 Powerline 和几何符号的支持 - 支持 Unicode 占位符图像
- TUI 应用功能、终端功能的桌面集成等- 改进终端无障碍功能- 大幅改进供屏幕阅读器使用的文本提取 - 为屏幕阅读器提供更好的鼠标/命中检测/查询支持 - 更好地支持通过无障碍工具访问操作 - 支持 CSI 996/mode 2031 配色方案查询和更新 - 更完善地支持现代 TUI 协议- 更完整、速度显著更快的 Kitty 图像协议支持- 支持相对于父图像的图像定位 - 支持 Kitty 动画协议 - 支持 Kitty 鼠标光标形状协议 - 支持 Kitty/OSC 5522 和 OSC 1337 剪贴板协议 - 更完整地支持 OSC 9;4 进度协议,包括错误状态和不确定进度状态等 - 改进对 Kitty 键盘协议的支持
- 架构- 支持嵌入 Qt Quick/Kirigami 应用 - 更细粒度的线程架构,同时提升性能 - 针对容器化运行(例如 Flatpak)的效率进行额外优化
更深入的细节中,还有许多其他改进。
### 继续谈为什么要做这个——聊一点架构
为什么要做这个?首先,当然是为了带来上文详述的显著优势!但背后还有一些更深层的动机。
目前,我们面向开发者提供的组件存在一个空缺:Konsole 与较老的 QWidget 技术栈紧密绑定,它提供了一个可嵌入组件,供各种基于 QWidget 的 KDE 应用使用,例如 Dolphin、Kate 和 Yakuake(Kwi 项目为这些应用提供了可直接替换的解决方案)。然而,它没有为使用 Qt Quick/Kirigami 编写的 KDE 应用提供类似组件,而且也很难做到。这是增加这些 KDE 应用迁移至新技术栈阻力的一个(次要)因素。同时,新的 Qt Quick/Kirigami 应用也因此缺少一个完善的 KDE 终端组件可用。
Kwi 会安装一个公开的 Qt Quick/QML 模块,其他 KDE 应用可以导入并使用它,从而填补这一空缺。
此外,这也带来了相较于 Konsole 的一项架构改进:任何曾使用 Konsole KPart 组件开发应用的人(我曾开发并维护 Yakuake (https://apps.kde.org/yakuake/) 的 KDE 4 版本多年)都知道,Konsole 主应用有一个出了名的特点:它自己并不使用自己的 KPart。这导致 Konsole 与 Yakuake 等替代界面之间存在行为差异和一些奇怪的限制。这也是 Konsole 设置界面非常复杂、有时令人困惑的一个重要原因:选项看似随意地分散在主*设置*对话框或*编辑当前配置方案*对话框中——因为只有后者能从承载 KPart 的应用内打开。Kwi 也解决了这个问题:Kwi 应用本身就是围绕它提供给其他应用使用的同一个公开 QML 模块构建的。通过 KPart 可以访问的设置与应用本身完全相同。
前一节的改进列表也体现出一种规律:总体而言,Konsole 得到了良好的维护,也一直跟进现代终端功能。然而,由于修改老旧代码库需要投入大量精力,还需要高度专门化的终端知识,新功能的实现往往既不完整,也不够深入。例如,Konsole 确实支持 Kitty 图像,但在实际使用中,它的速度和完整性都不足以让它真正实用,通常会出现定位异常或图像分辨率偏低的问题。Kwi/libghostty 这种分工或许恰到好处,能够汇集并利用各方现有的合适资源,加快整个终端生态的发展。
### 未来展望
还有一些更长远的想法,会以某种方式用到 Kwi 的技术。
Linux 发行版目前正在从内核中的虚拟终端 (https://en.wikipedia.org/wiki/Virtual_console) 转向更好的用户空间解决方案,通常是 Kmscon (https://en.wikipedia.org/wiki/Kmscon)。总体来说,这是件好事,但从 KDE 的角度看,进一步实现无缝产品集成的潜力仍有待发掘。
Kwi 将让我们能够尝试基于 KDE 技术栈构建 Kmscon 的替代方案,首次提供一个具备完整无障碍和输入法(IME)支持、并与整个 Linux 用户界面行为一致的虚拟终端。不过,这能否成功还得交给时间检验,因为目前完全还没有开始尝试!
项目还需要应对的另一个挑战,是为 Konsole 用户提供更顺畅的迁移路径。Kwi 已经支持 Konsole 配色方案文件。不过,还有一个未解决的问题:嵌入 Konsole KPart 的 QWidget 应用需要修改一行代码,才能改为请求 Kwi KPart。我们需要找到一种优雅的解决方案来表达用户偏好,最好能在某个集中位置设置。
### 当前状态与如何试用 Kwi
Kwi 的开发已取得不少进展,也经过一小群朋友的有限测试,但它仍然*非常非常*新,甚至还没有打上 v0.1.0 标签。因此,请大幅降低预期,并做好立即遇到明显错误的准备 :\-)。它完全无法与持续开发了 29 年、每天被数百万人使用的 Konsole 相提并论。
也请不要把 Kwi 误解为 KDE 未来方向的某种宣告。目前,Kwi 是一次实验和一项提案,它唯一承诺的是开发一款你可以选择使用、也希望你会喜欢的应用。它是一个*选项*。其他事情还需要讨论,只有时间能给出答案。
话虽如此,我非常感谢大家的帮助和反馈。如果你发现了错误,可以在 KDE 的 Bugzilla (https://bugs.kde.org/) 上,为 *kwi* 应用提交报告。
如果你想今天就试用 Kwi,请查看它在 KDE Invent 上的代码仓库 (https://invent.kde.org/utilities/kwi)。
目前,构建 Kwi 可能有些困难,因为它依赖的软件版本非常新,很可能还没有进入你所用的发行版/操作系统。好在 KDE Invent CI/CD 也会生成 Flatpak 构建,并维护了一个可供安装的每日构建 Flatpak 仓库。这两者的链接都在代码仓库的 README 中。(不过请注意,在一段时间内,Flatpak 运行时提供的某些组件版本也可能过旧,目前尤其会影响 Union 主题。更新:Nate 已经悄悄修好了这个问题 (https://invent.kde.org/utilities/kwi/-/merge_requests/1)。)
接下来还有大量工作要做!
相似文章
Show HN: Shitty – 快速终端。内存不安全,而且比你的快
Shitty 是一个快速、开源的终端模拟器,使用 Vulkan/Metal 进行 GPU 渲染,并声称在基准测试中吞吐量高于 Alacritty、Kitty 和 Ghostty。
Ghostty 1.0 即将到来
Ghostty 1.0 是一款面向 macOS 和 Linux 的开源终端模拟器,将于 2024 年 12 月以 MIT 许可证公开发布,旨在成为现有终端的替代品,追求最快、功能最丰富且原生平台体验。
KDE 迎来 30 周年:Plasma 6.8、远程升级,以及告别 X11
KDE 发布 Plasma 6.8“30 周年纪念版”,庆祝其成立 30 周年。该版本不再支持原生 X11 会话,转而全面采用 Wayland。此次更新还默认启用 Nvidia 三重缓冲,集成 Kup 备份功能,并引入 kscreenctl 显示配置工具。
ghostel.el - 由 libghostty 驱动的终端模拟器
ghostel.el 是一个 Emacs 包,提供由 libghostty 驱动的终端模拟器,具有 shell 集成、输入模式和内联图像支持等功能。
@Pallavi_345: 说出一个比Ghostty更好的终端。我等着。
一条推文赞扬Ghostty终端模拟器,并挑战他人说出一个更好的。