我的无障碍技术栈与 Wayland 上的未来
摘要
一篇个人记述,讲述 Linux 桌面即将全面转向 Wayland 的未来将如何破坏依赖 Talon Voice 等输入工具的无障碍用户体验,并指出输入无障碍相较于输出无障碍受到的关注严重不足。
<p><a href="https://lobste.rs/s/giktao/my_accessibility_stack_future_on_wayland">评论</a></p>
查看缓存全文
缓存时间: 2026/05/31 02:14
# 我的无障碍技术栈与 Wayland 的未来——关于技术的疯狂碎碎念
来源:https://nocoffei.com/?p=451
这篇文章酝酿了相当一段时间。在过去 4 个月里,我写了 3 到 4 个草稿,一直在寻找最合适的表达方式。当我写完这篇的初稿后,它又在草稿箱里躺了两个月,我才真正完成它。最后,我决定直截了当是最好的方式,所以就是这样:
**随着 Linux 桌面转向一个只支持 Wayland 的未来,我将无法使用我的电脑,因为我所依赖的无障碍软件将被抛在后面。**
我使用的桌面环境 KDE Plasma 已宣布 (https://blogs.kde.org/2025/11/26/going-all-in-on-a-wayland-future/) 在 2027 年初将从系统中移除对 X11 的支持。这意味着大约 9 个月后,我将不再被那个桌面环境所欢迎,只能被迫坚守旧版本,或者转向仍然支持 X11 的更小众环境。
## 为什么?
Wayland 桌面最近在无障碍方面取得了巨大进步,对吧?嗯,有一类无障碍问题绝对*没有人*在讨论,而我今天就要来纠正这一点:
输入设备。
大多数关于无障碍的讨论都指的是*输出*,针对视力受限或失明的用户。Fireborn 去年撰写的[系列文章](https://fireborn.mataroa.blog/blog/i-want-to-love-linux-it-doesnt-love-me-back-post-1-built-for-control-but-not-for-people/)讨论了在失明状态下尝试使用 Linux 桌面时存在的无数问题。同样,GNOME 也一直在致力于支持 AccessKit (https://tesk.page/2025/07/25/gnome-calendar-a-new-era-of-accessibility-achieved-in-90-days/) 在其应用中,这有助于屏幕阅读器(如 Orca)通过文本转语音渲染内容。
但无障碍是双向的,人们同样可能难以向系统传达*输入*。我的情况就是如此:去年,经过一段逐步但稳定的衰退期,我被诊断出患有埃勒斯-当洛斯综合征(Ehlers-Danlos Syndrome),这是一种肌肉骨骼基因缺陷,会对身体造成各种破坏。这篇文章的早期草稿包含了我诊断和治疗这种罕见(且常被误诊)疾病的整个痛苦过程,但这其实并不重要——关键的是,它对我造成的影响是摧毁了手腕上所有那些让你弯曲手指(比如为了使用键盘或操作鼠标)的重要小肌肉。
感谢与一位过度活动障碍专家进行的数月高强度物理治疗,我重新获得了手部的部分功能;取决于具体哪天,我可以用一个特制键盘勉强打字几个小时。
(顺便说一句,我能恢复*任何*功能都算是个奇迹,很大程度上得益于我所在位置靠近专家、马萨诸塞州的宽松医疗休假政策,以及我在混乱不堪的美国医疗体系中享有的不可否认的特权地位。在很多平行世界里,我最终会永久残疾,甚至永远不知道原因。)
但重新生长一大群已经萎缩的小肌肉极其缓慢、非常痛苦,而且可能不会完美;我可能永远无法真正完全恢复。我所取得的进展不足以支撑我完成一整个工作日,更不用说连续几周了;我需要另一种方式来继续我的生活和职业生涯。
于是就有了 Talon Voice。
## Talon Voice
Talon 的[着陆页](https://talonvoice.com/)可能是现存最低调的页面之一,第一眼看上去并没有让人觉得它很可能是有史以来最强大的免提输入系统。Talon 是一个经过深思熟虑精心打造的核心:一个超快且准确的语音转文本机器学习模型、一种定制的脚本语言以及 Python,所有这些协同工作,为用户提供近乎无限的扩展能力,让他们可以打造自己的免提方式来与应用进行通信——无论是与应用配合……还是对抗它。(“对抗性无障碍”这个概念经常出现!)
[社区](https://github.com/talonhub/community)脚本系列是让 Talon 发挥作用的第一个安装项,而且它堪称巨无霸。这里面有数万行代码,全部由个人精心手工编写,以满足各自特定需求,然后汇聚成一个整体,以便其他人也能从他们的工作中受益。
借助 Talon,我可以做很多事情,比如:
- 聚焦应用,省去从任务栏中选中它们所需的鼠标移动和点击;
- 使用听写模式写文本(这篇文章的大部分内容都是用 Talon 写的);
- 使用浏览器的 [Rango 扩展](https://github.com/david-tejada/rango) 来与浏览器交互,完全免手(而且这其实比传统的鼠标移动更快);
- 编写自己的脚本,通过 D-Bus 调用[外部语音转文本程序](https://github.com/mkiol/dsnote),用于撰写较长散文的时候(Whisper-v3-large 是一个非常出色的模型,能理解它从未听过的专有名词,不过速度不够快);
- 发出嘶嘶声来滚动页面——无论我尝试使用什么输入设备,这个动作对我来说都非常痛苦(不过未来我可能会尝试在 Talon 中集成一个脚踏板)。
这样的例子不胜枚举,但我把这里要提的两个最棒的扩展留到了最后:
## gaze_ocr
gaze_ocr 是一个酷得令人难以置信的扩展,它让你可以直接通过 OCR 控制你的屏幕。
使用一个 OCR 后端(Linux 上没有提供,但我能接入 RapidOCR (https://github.com/rapidai/rapidocr)),gaze_ocr 会直接读取你屏幕上的内容,让你可以直接点击任何对象。使用眼动追踪器,它甚至能根据你实际在看什么来消除屏幕上文本的歧义。
如果没有视频,我真的无法充分展示它的魅力,所以我强烈建议你看一下这 60 秒的介绍:https://youtu.be/qkFy66WF3bU
简单来说,仅此一项就让生活变得超酷。任何应用都无需进行任何集成——但我却能与之交互。这就是最棒的对抗性无障碍!每当我使用这个包时,都感觉自己仿佛置身科幻电影中。但它甚至还不是我用的最强大的扩展……
## Cursorless
天啊,这真是太酷了。
解释 Cursorless 的最佳方式是观看视频演示,[主网站](https://www.cursorless.org/) 上就有。如果你不喜欢这种方式,Xe Iaso 几年前也写过一篇相当不错的[文字演示](https://xeiaso.net/notes/cursorless-alien-magic/)。
对于这两者都不想看的人,让我给个 TL;DR——Cursorless 是 Visual Studio Code 的一个扩展,它会构建一个语法树感知的源代码表示,然后让你通过绘制在代码标记上方的帽子(hat)来引用它们。将其与社区仓库中内置的、支持用语音编写数十种不同编程语言的功能相结合,你就拥有了一种强大的手段来编写代码,完全免手!
我从未真正“搞懂”Vim。是的,我知道怎么用它,但它就是没有“契合”我;我从未理解过像缓冲区、宏以及那些在你代码库中疯狂移动的复杂操作。相反,Cursorless 实际上相当直观,尽管需要学习曲线。例如,如果我想跳到这句话的开头,我观察到“Cursorless”上方帽子的颜色是粉色的,且位于字母 'C' 上方,于是我说:“pre pink cap”,通过 Talon 的[音标字母表](https://en.wikipedia.org/wiki/Pronunciation_respelling_for_English)来引用这个字符。
Cursorless 让我能够以一种其他编辑器从未提供过的方式(无论是键盘还是语音)进行编写。我太喜欢它了,甚至一直在为我工作中使用的软件编写它的定制实现。
真的,这就是整个 Talon 所做的——它让我能够与我的电脑交互,不仅是不受残疾限制,而且是以一种真正新颖且更强大的方式。在某种意义上,我很感激自己身处人类输入系统的前沿;只要有展示 Cursorless 的机会,我绝不会错过。
而这,正是仅支持 Wayland 的未来将从我这里剥夺的东西。
## 好的,那它为什么在 Wayland 上不行?
如果你是 Linux 桌面用户,你可能至少听说过从用了 40 多年的 X11 标准向 Wayland 的过渡。关键是,绝对没有人愿意再去碰那个垃圾代码堆了,而 Wayland 是 FOSS 桌面社区决定采用的未来。
但他们留下了很多重要的东西,并且花了数十年时间才追赶上来。
Talon 需要与窗口管理器和合成器进行深度集成,才能完成哪怕是最基本的任务,而 Wayland……根本没有提供执行**任何**这些操作的方法。
最基础的任务——向系统输入文本——似乎以真正“Wayland”的方式根本不可能实现。去年,xdotool(X11 事实上的输入自动化工具)的维护者[调查](https://www.semicomplete.com/blog/xdotool-and-exploring-wayland-fragmentation/)了如何实现这一点,然后困惑地离开了。更不用说窗口管理、鼠标定位、剪贴板管理、屏幕读取等所需的更高级 API 了…… Wayland 生态系统根本不支持这些东西。
“在 GNOME 里有办法,但 KDE 没有”,或者“是啊,wlroots 很久以前就实现了”这**不是**这个问题的答案。Linux 本身已经是一个小众生态系统(尽管我们都多么希望这不是真的),再要求跨平台开发者为 3 个或更多不同的合成器(Niri 呢?它用的是 Smithay 合成器!)编写它们深度集成系统的实现,是完全不合理的。哦,顺便说一下,这些合成器中没有一个是完整实现了你所需全部 API 接口的。
## 所以,这一切都将消失
因为向整个生态系统提供真正解决方案的进展一直停滞不前,并且被无休止的 Wayland 支持请求所淹没(而他根本无法满足这些请求),Talon 的主要(也是唯一的)开发者 Aegis 宣布:够了。Talon Voice 将立即从公开发布中移除所有 Linux 支持,因为 X11 正在逐渐退出,用户被切换到一个系统无法运行且无法返回的环境中。
> Talon 分为免费和付费层级。付费层级暂时会保留 X11 支持;这更多是为了减轻免费用户安装软件后发现它无法运行时带来的无尽负担。
这对任何人来说都不是一个理想的结果。这个声明也不是出于恶意,而是出于务实;既然没有任何办法去支持 2027 年的 Linux 桌面,唯一可行的答案就是……移除对 Linux 桌面的支持。
## 任务
Aegis 要求我们这些不希望看到 Talon 在 Linux 上消亡的人做以下事情:
- 无论出于何种原因,不要与他讨论 Wayland 支持;
- 作为社区,团结起来,成功实现 GNOME、KDE 和 wlroots 上 Talon 所需的全部 API 接口,
届时,Talon 才会考虑新的 Wayland 后端。
作为一个社区,我们一直在努力解决如何着手进行的问题,这也是写这篇文章如此困难且耗时如此之长的原因之一。Wayland 生态系统……可以这么说,它以对其用户面临的问题不太友善而闻名。漫长历史中最新的例子是 xdg-session-management 协议 (https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/18),它从最初的拉取请求到完成耗时惊人的**六年**。第二名是最近合并的 ext-zones 协议 (https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/264),它花了两年多才合并,这还不算之前花了数年时间进行研发以形成初始概念。
当我开始写这篇文章时,我曾相信:“这似乎是一个维护者根本不知道我们需求的问题;鉴于绝对没有人在讨论这件事,为一个未被讨论的问题实现解决方案是不可能的。”
现在看来,更准确的说法是,“没人讨论这个”基本上成了一个自我实现的预言。作为初步研究,我阅读了大量的邮件列表,其中大部分是两三年前的。这似乎是最后一次认真尝试联系维护者说明我们所面临的问题。
而我读到的东西简直丑陋不堪。
我不会向读者详细展示我读到的许多内容中最极端的部分,但有两个回复特别引起了我的注意——
- [Nate Graham 的回复](https://discuss.kde.org/t/questions-about-ui-automation-on-kwin-wayland/1778/10),讨论了作为应用开发者向上游 Wayland 贡献的实际现实,
- 以及[一位 GTK 维护者的回复](https://gitlab.com/fedora/dei/a11y/-/work_items/10#note_1812030188)(在一个讨论 Talon 但未提及其名称的帖子中),他拒绝参与讨论,称我们为“无障碍最大化主义者”,并引用了与当前话题无关的资源(再次强调,这是关于*输入*,而不是*输出*)。
读到这两个回复、许多其他类似的帖子以及 wayland-protocols 的普遍状态,对我这个曾相信只需要多些沟通的人来说,是并且仍然是**极其**令人沮丧的。这告诉我的是,Wayland 生态系统要求我们参与,却又让这种参与要么不可能(“哦,你是无障碍最大化主义者,我不需要听你的”),要么需要多年全职工作才能稍微推动一点点(参见:过去五年中编写的任何主要 Wayland 协议)。
所以现在我认为这就是没人谈论这件事的原因;**似乎连尝试都毫无意义**。
我无法想象 Aegis 在幕后经历过多少次这样的讨论;难怪他视 Linux 桌面为无法挽回的局面,并将挽救它的任何可能性都委托给了社区。
## 现在怎么办?
我不知道。
这篇文章的目的是清楚地说明我的无障碍需求、Talon 如何满足这些需求,以及为什么仅支持 Wayland 的未来将无法满足这些需求。
我热爱 Linux 桌面,不想被迫离开。我喜欢我舒适的 Plasma DE,支持我想玩的每个游戏、我需要的开发工具、[新硬件模块的尖端工具](https://nocoffei.com/?p=441);一个干净、没有广告、没有糟糕的 UI 重新设计、没有 AI 渗透到每个角落的体验。
我想我还在写这篇文章的真正原因,就像 fireborn 去年[说的](https://fireborn.mataroa.blog/blog/i-want-to-love-linux-it-doesnt-love-me-back-post-4-wayland-is-growing-up-and-now-we-dont-have-a-choice/)那样:**Wayland 正在长大,现在我们别无选择,只能尝试去贡献。**
所以也许外面确实有人知道该怎么做才能前进。这篇文章是希望能找到那些人而写的。你能帮助我们吗?
## 后记
自从六个月前开始使用这项技术以来,我已经爱上了它。当然,如果我能只用传统的键盘和鼠标,没有所有这些古怪的健康问题,我会更开心,但既然我拿到的是这副牌(或者更确切地说,是缺了那些牌),我已经过得相当不错了!
不得不去思考我的……
相似文章
我终于可以在2026年开始使用Wayland了吗?
作者重新评估了2026年Wayland在Linux上的可用性,指出虽然有改进,但NVIDIA驱动和8K显示器支持仍存在问题,使其仍未准备好用于其设置。
在Minecraft中作为模组实现的Wayland合成器
一个在游戏内实现了功能完整的Wayland合成器的Minecraft模组,允许用户在Minecraft世界中运行和管理应用程序。仅支持Linux。
《我的世界》中的 Wayland 合成器
一个在《我的世界》中实现完整 Wayland 合成器的模组,允许用户在游戏内启动和管理 Firefox、GIMP、VLC 等窗口。仅限 Linux。
wayland.fyi 极简主义 Wayland 特别兴趣小组
wayland.fyi 是一个主张简化 Wayland 实现的极简主义特别兴趣小组,该组织批评了 wlroots 等主流库的复杂性,并推崇 neuswc 等轻量级替代方案。
Linux延迟测量与合成器调优
一项详细调查,使用基于Teensy的LDAT工具测量游戏中的Linux延迟,在KDE Wayland下的Nvidia GPU上使用各种设置测量点击到光子延迟,并与Windows进行比较。