LWN:让Linux桌面的无障碍功能更加现代化!

关注了就能看到更多这么棒的文章哦~

Modernizing accessibility for desktop Linux

By Joe Brockmeier
May 6, 2024
OSSNA
ChatGPT translation
https://lwn.net/Articles/971541/

在某些方面,比如在游戏领域,过去几年中 Linux 桌面取得了巨大进步。但在其他方面,比如无障碍性(accessibility),它的表现状况却停滞不前。在 北美开源峰会(OSSNA)上,Matt Campbell 发表了讲话,谈到了现代化桌面 Linux 的无障碍性的必要性和方法。这包括讨论了一个名为 Newton 的初创项目,该项目可能会极大地改善 Linux 桌面的无障碍性。

Campbell 在无障碍性方面有着悠久的历史。正如他在 GNOME 无障碍性博客的一篇 文章 中所写的,他已经在无障碍性工具领域工作了 20 多年,而且他自己也有视觉障碍。他是 AccessKit 的首席开发人员,这是一个用 Rust 编写的项目,旨在让开发人员在其应用程序中实现一次无障碍功能就能在 Windows、macOS 和 Linux 上实现跨平台运行。

概述

他在演讲开始时简要介绍了无障碍性和辅助技术(ATs, accessibility and assistive technologies)给听众。在谈到无障碍性时,Campbell 表示,“我们谈论的是使应用程序可供那些依赖辅助技术的残障人士访问(比如通过屏幕阅读器和语音识别等替代输入方式)”。

b828e0e24f3c63bc1b1bc92cfc0c5d37.png

Linux 桌面上的辅助技术,如 GNOME 的 Orca 屏幕阅读器,是通过进程间通信(IPC)与应用程序进行通信。通常,这通过无障碍性 API(如开源系统的 辅助技术服务提供者接口(AT-SPI))来实现。AT-SPI 最初由 Sun 公司为 GNOME 在其 CORBA 对象请求代理上实现,后来在 2008 年迁移到了基于 D-Bus。

他说,AT-SPI 的关键概念是无障碍性树—类似于 HTML 的 文档对象模型(DOM)。该树包含一系列节点的层次结构,从根节点的应用程序窗口开始,然后是布局容器,如 GTK 的 HBox,然后是文本标签和控件作为结构中的叶节点。当发生某些事件时,比如键盘焦点或文本选择发生变化时,用户界面工具包会向 AT-SPI 发送事件,然后传递给正在使用的辅助技术。

根据 Campbell 的说法,今天 AT-SPI 存在一些问题,比如“Wayland 的崛起和像 Flatpak 这样的安全沙箱”。这些问题中断了无障碍事件树与窗口系统之间的直接连接,因此像 Orca 这样的应用程序无法验证事件是否实际来自具有焦点的应用程序。

Campbell 说,一个更深层次的问题是“过多的 IPC”。按照当前的实现方式,屏幕阅读器“不会立即在本地获得所有所需的信息,因此必须来回进行多次 IPC 往返”。这可能导致延迟,并且在应用程序对视觉用户来说正常的情况下,屏幕阅读器可能会无响应。

无障碍性协议中的这种 IPC 方法导致了盲人用户相比于有视觉用户的不平等访问的一个原因[…] 就好像每当应用程序忙碌时,屏幕就会在应用程序再次在主线程上对事件进行响应之前变黑。但事实并非如此—普通用户可以继续观看屏幕上最后绘制的内容,并在应用程序准备好时根据他们的决定来采取下一步行动。

介绍 Newton

不得不绕过 IPC,这就限制了哪些辅助技术功能可用。这使他开始介绍 Newton,这是一个他正在为 GNOME 基金会承包的 Wayland 本地无障碍性架构项目。 (GNOME 的 GitLab 实例上提供了一个高级概述,但没有提到 Newton 这个名字。)这个名字来自于 Wayland 惯例,即选择新英格兰地区的位置作为名称。但 Newton 不仅仅是在马萨诸塞州城市中随意选择的一个名字,它是 Carroll Center for the Blind 的所在地。

他概述了 Newton 的三个高级设计目标。首先,当辅助技术未激活时,它不应该对资源有任何影响。其次,它应该使合成器成为“最终真相的来源”,而不是信任应用程序提供的更新。最后,它应该将复杂性从应用程序或用户界面工具包转移到辅助技术和 Newton 的客户端库。

需要进行最多工作的是无障碍性开发人员,因此我们希望尽可能地简化应用程序、工具包和合成器的开发,并让他们很容易地为我们无障碍性开发人员提供我们所需要的东西。

Campbell 说,Newton 是在 AccessKit 的基础上构建的。“就好像我从一开始就设计 AccessKit 考虑到了类似 Newton 的东西,因为我确实是这样做的。”

该项目从一开始就被设计为与沙箱应用程序一起使用,并使用推模型而不是 AT-SPI 的拉模型。应用程序将更新推送到合成器,然后再传递给辅助技术。“当用户向屏幕阅读器或其他辅助技术发出命令时,AT 需要的所有信息来响应该命令的查看屏幕上的内容已经存在。” Campbell 说,这将更加鲁棒地处理挂起或繁忙的应用程序。这也是一种被证明有效的方法。他指出,Firefox 和 Chromium 浏览器已经为其内部无障碍性架构实现了这种模型。无障碍性 API 实现在主浏览器进程中,而不是渲染每个页面的沙箱进程。渲染器进程将无障碍性树推送到主进程,然后主进程缓存树并响应辅助技术客户端。

当前状态

目前,Newton 的协议尚未最终确定,但项目已经进行得足够深入,Campbell 已经为 AccessKit、Orca 和 GNOME 的 Mutter 显示服务器编写了原型实现。他表示,目前正在致力于将 AccessKit 集成到 GTK 中,这将是首次在 Windows 和 macOS 上实现 GTK 应用程序的无障碍功能。

在完成 GTK 集成后的下一步是开始使用真实应用程序进行测试,并使用那些给现有技术带来麻烦的使用案例对其进行压力测试。这将有助于确定需要进行优化的地方。“我们不会进行过早的优化,我们会找出我们实际需要优化的地方。”

他说,架构也需要在 GNOME Shell 中实现,并且这将涉及“大量审查”与所有相关利益相关者进行讨论。尽管他的工作重点是 GNOME,“我应该指出,我个人希望确保其他桌面环境的开发人员也能参与进来”。一旦一切都最终确定下来,就会是确保文档足够详细,以便可以在其他环境中实现,并且“这个项目不会成为一个人的专利”。

“到了这一步,你们中的一些人可能会想‘给我看看代码’,”他说。观众们表示同意。他没有提供所有存储库的链接,而是提供了Orca 和 GTK AccessKit 集成 的原型的链接。Campbell 表示,这些是开始探索该技术栈的最佳方式。

如果一切顺利,Newton 将不仅仅提供现有功能的更好版本,还将开启新的可能性。Campbell 时间不多了,但他迅速描述了一些场景,例如即使远程机器上没有运行辅助技术,也可以允许远程桌面会话保持无障碍访问功能。他还表示,使用 Newton 可能还可以提供屏幕截图和屏幕录像的无障碍访问,因为辅助性树可以与图像捆绑在一起或者随着屏幕录像一起推送。

他总结说,该项目可以提供“我认为自由桌面环境中一段时间内无障碍性需要的更新了”。更重要的是,“我们可以提高技术水平,不仅仅是与我们已经在自由桌面上拥有的东西相比”,而是与专有平台相比。

他对 Sovereign Tech 基金为通过 GNOME 资助他的工作表示感谢,也感谢 GNOME 基金会协调此工作。

虽然时间不多,但我设法提了一个问题,询问了此工作对用户可用的时间表。Campbell 表示他不确定,但不太可能在今年晚些时候的 GNOME 47 发布时准备好。它可能会在 GNOME 48 发布时准备好,但“我不能做出任何承诺”。他指出,他目前的合同将于六月结束,并计划在合同结束前尽可能取得进展。此外,“我们将看看会发生什么”。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

724aeadbd129a7ee5cfcde71d312c5f1.jpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值