Introducing Kwi, a new KDE terminal emulator

本文为原文前 6,000 字符的节选翻译,完整内容请查看原文。

Introducing Kwi, a new KDE terminal emulator

Introducing Kwi, a new KDE terminal emulator Sunday, 1 November 2026 | Eike Hein #kde-apps I’ve started work on a new KDE application. It’s called Kwi (pronounced kwee).

介绍 Kwi,一款全新的 KDE 终端模拟器 2026 年 11 月 1 日,星期日 | Eike Hein #kde-apps 我已经开始着手开发一款新的 KDE 应用程序,它叫 Kwi(发音为 kwee)。

Kwi is designed to provide users of KDE Plasma and other free desktops with a modern and fast terminal, built on a robust tech stack and following the latest KDE HIG and UI conventions. Here’s a screenshot:

Kwi 旨在为 KDE Plasma 及其他自由桌面用户提供一个现代且快速的终端,它基于稳健的技术栈构建,并遵循最新的 KDE 人机交互指南(HIG)和 UI 规范。 以下是截图:

In some sense, the product vision for Kwi is to be kind of unexciting: Just what you want and expect out of a KDE Plasma terminal. Of course, given the powerful nature users generally expect from KDE software, this does not make the project lacking in ambition. :-)

从某种意义上说,Kwi 的产品愿景是保持一种“平淡无奇”:即提供你对 KDE Plasma 终端所期望的一切。当然,考虑到用户通常对 KDE 软件所抱有的强大功能期待,这并不意味着该项目缺乏雄心。:-)

To achieve things, Kwi builds on libghostty-vt from the excellent Ghostty project and familiar, mature KDE Frameworks such as KPty. It has a very speedy GPU-accelerated (Vulkan or OpenGL) renderer powered by the Qt Scene Graph. Its user interface is built with the latest and greatest by Kirigami, making it blend in very well among more recent KDE applications and the Plasma desktop.

为了实现这些目标,Kwi 基于优秀的 Ghostty 项目中的 libghostty-vt 以及熟悉的、成熟的 KDE 框架(如 KPty)构建。它拥有一个由 Qt Scene Graph 驱动的、速度极快的 GPU 加速(Vulkan 或 OpenGL)渲染器。其用户界面由最新、最棒的 Kirigami 构建,使其能够很好地融入较新的 KDE 应用程序和 Plasma 桌面中。

In keeping with the theme, Kwi’s icon/logo is a cute little terminal ghost. This is also how it came to bear its name: kwisin, or more typically gwisin, is a romanized form of 귀신 - Korean for ghost. It’s pronounced a little bit like kwee-shin.

为了契合主题,Kwi 的图标/Logo 是一个可爱的小终端幽灵。这也是它得名的由来:kwisin,或者更常见的 gwisin,是韩语“귀신”(意为幽灵)的罗马化拼写。它的发音有点像 kwee-shin。

Things Kwi has to offer Compared to the venerable and mature Konsole, Kwi is young and new. At the moment it offers a more streamlined feature set than Konsole, carefully realized using KDE’s latest HIG patterns. The way forward will be to build on this slowly and carefully, using everything we’ve learned as a community about running mature design processes over the last decade or so (hello, VDG!). It’s a chance to canvass the scene, take stock of how other terminals implement more recent innovations in this space, and compete with a KDE spin on things.

Kwi 提供的功能 与古老而成熟的 Konsole 相比,Kwi 还很年轻。目前,它提供的功能集比 Konsole 更精简,并使用 KDE 最新的 HIG 模式精心实现。未来的发展方向将是缓慢而谨慎地在此基础上构建,利用我们在过去十年左右作为社区在运行成熟设计流程方面所学到的一切(向 VDG 致敬!)。这是一个审视行业现状、评估其他终端如何实现该领域最新创新,并以 KDE 的特色进行竞争的机会。

Konsole is very intertwined with the older of the two user interface tech stacks in Qt, QWidget. QWidget typically renders using the CPU, and so does Konsole. Newer KDE software (including Plasma itself) typically uses Qt Quick and benefits from GPU acceleration via Vulkan or OpenGL instead. This is what Kwi does as well. For certain terminal applications the performance gain (3x-35x faster than Konsole depending on what’s being benchmarked) can make an actual big difference in the user experience, but generally it should also help reduce battery usage.

Konsole 与 Qt 中两种用户界面技术栈中较旧的一种——QWidget 紧密交织在一起。QWidget 通常使用 CPU 进行渲染,Konsole 也是如此。较新的 KDE 软件(包括 Plasma 本身)通常使用 Qt Quick,并受益于通过 Vulkan 或 OpenGL 实现的 GPU 加速。Kwi 也是这样做的。对于某些终端应用程序,性能提升(根据基准测试的不同,比 Konsole 快 3 到 35 倍)可以在用户体验上产生巨大的实际差异,而且通常也有助于降低电池消耗。

Kwi is built on libghostty-vt, a project that describes itself as an ecosystem play - provide a headless lib that takes care of all the gnarly terminal parsing and state, enable downstream projects and become sort of a rising tide that lifts all boats. It’s starting to really deliver on this promise lately, outpacing other terminal implementations on support for modern TUI features and not hoarding all this good only for itself. While the library will only make an ABI/API stable v1.0 promise at some point in the next 4-6 months, it’s already slowly being adopted by big and popular projects, including Neovim, Ghostel and many more. Here’s a list.

Kwi 基于 libghostty-vt 构建,该项目自称为一种生态系统策略——提供一个处理所有复杂终端解析和状态的无头库,赋能下游项目,并成为一种“水涨船高”的力量。最近,它开始真正兑现这一承诺,在对现代 TUI 特性的支持上超越了其他终端实现,并且没有将这些优势据为己有。虽然该库预计在未来 4 到 6 个月内才会做出 ABI/API 稳定的 v1.0 承诺,但它已经开始被 Neovim、Ghostel 等大型热门项目缓慢采用。这里有一个列表。

Kwi marries the library to the KDE/Qt tech stack, which allows the project to focus mostly on desktop integration and rendering performance, two areas where KDE’s software stack is generally second to none. The combination of the two offers some improvements over Konsole already, for example:

Kwi 将该库与 KDE/Qt 技术栈相结合,使项目能够主要专注于桌面集成和渲染性能,这两个领域 KDE 的软件栈通常是首屈一指的。两者的结合已经比 Konsole 带来了一些改进,例如:

General UI lift-up to the latest KDE HIG Automatic sync to the system color scheme 3x–35x faster overall performance, depending on the benchmark E.g. 870 fps in DOOM-fire-zig on a test system, vs. 23 fps in Konsole

常规 UI 升级至最新的 KDE HIG 自动同步系统配色方案 整体性能提升 3 到 35 倍(取决于基准测试) 例如:在测试系统上 DOOM-fire-zig 达到 870 fps,而 Konsole 为 23 fps

Rendering GPU-accelerated rendering via Vulkan or OpenGL Better support for using the KDE Plasma system color scheme, including live changes Improved support for correct handling of Wayland fractional scaling Improved terminal text rendering Improved rendering of text decorations (e.g. z-sorting for complex underline styles) Improved support for ligatures, especially when they interact with coloration and selection Support for mode-2027 grapheme widths, Nerd Font icon scaling, etc. Improved support for Powerline and geometry symbols Support for Unicode placeholder images

渲染 通过 Vulkan 或 OpenGL 进行 GPU 加速渲染 更好地支持使用 KDE Plasma 系统配色方案,包括实时更改 改进了对 Wayland 分数缩放正确处理的支持 改进了终端文本渲染 改进了文本装饰的渲染(例如复杂下划线样式的 z-sorting) 改进了对连字的支持,特别是在它们与颜色和选择交互时 支持 mode-2027 字形宽度、Nerd Font 图标缩放等 改进了对 Powerline 和几何符号的支持 支持 Unicode 占位符图像

TUI app features, desktop integrations for terminal features, etc. Improved accessibility in the terminal Much improved text extraction for screen readers Better mouse/hitscan/query support for screen readers Better support for accessing actions from accessibility tools Support for CSI 996/mode 2031 color scheme queries and updates Improved, more complete support for modern TUI protocols More complete, significantly faster support for the Kitty image protocol Support for parent-relative image placement Support for the Kitty animation protocol Support for the Kitty mouse cursor shape protocol Support for the Kitty/OSC 5522 and OSC 1337 clipboard protocols More complete support for the OSC 9;4 progress protocol, including error and indeterminate states, etc. Improved support for the Kitty keyboard protocol

TUI 应用特性、终端特性的桌面集成等 改进了终端的可访问性 大幅改进了屏幕阅读器的文本提取功能 为屏幕阅读器提供了更好的鼠标/点击扫描/查询支持 更好地支持从辅助功能工具访问操作 支持 CSI 996/mode 2031 配色方案查询和更新 改进且更完整的现代 TUI 协议支持 更完整、速度显著更快的 Kitty 图像协议支持 支持父级相对图像放置 支持 Kitty 动画协议 支持 Kitty 鼠标光标形状协议 支持 Kitty/OSC 5522 和 OSC 1337 剪贴板协议 更完整地支持 OSC 9;4 进度协议,包括错误和不确定状态等 改进了对 Kitty 键盘协议的支持

Architecture Support for embedding into Qt Quick/Kirigami apps More fine-grained threading architecture, also improving performance Additional optimizations for running efficiently when containerized (e.g. as a Flatpak) And many more, deeper down in the weeds.

架构 支持嵌入到 Qt Quick/Kirigami 应用程序中 更细粒度的线程架构,进一步提升性能 针对容器化运行(例如作为 Flatpak)的额外优化 以及更多深层次的改进。

Why make this, continued - a little bit about architecture Why make this? First of all, to deliver the marked advantages detailed above! But there are also a few deeper motivations at play. There’s a gap we currently have in our developer offerings: Konsole, being strongly tied into the older QWidget tech stack, offers an embeddable component used in various QWidget-based KDE apps, for example Dolphin, Kate and Yakuake (the Kwi project offers a drop-in replacement solution for these apps). It doesn’t offer anything similar to KDE apps written in Qt Quick/Kirigami, however, nor can it easily. This is a (minor) factor increasing the friction to move these KDE apps to the new tech stack. It also leaves new Qt Quick/Kirigami apps without a well-realized KDE terminal component to use. Kwi installs a public Qt Quick/QML module that c

为什么要开发这个,续——关于架构的一点说明 为什么要开发这个?首先,是为了实现上述显著的优势!但背后还有一些更深层次的动机。 我们目前的开发者产品中存在一个缺口:Konsole 由于与较旧的 QWidget 技术栈紧密绑定,提供了一个用于各种基于 QWidget 的 KDE 应用程序(如 Dolphin、Kate 和 Yakuake)的可嵌入组件(Kwi 项目为这些应用程序提供了直接替换方案)。然而,它并没有为用 Qt Quick/Kirigami 编写的 KDE 应用程序提供类似的东西,也不容易做到。这是增加将这些 KDE 应用程序迁移到新技术栈阻力的一项(次要)因素。这也导致新的 Qt Quick/Kirigami 应用程序没有一个完善的 KDE 终端组件可以使用。 Kwi 安装了一个公共的 Qt Quick/QML 模块,该模块 c