在GitHub,我们致力于让所有开发者无论能力或工具偏好如何都能使用我们的工具。命令行界面(CLI)是开发者体验的重要组成部分,GitHub CLI 正是将 GitHub 的强大功能带入终端的产物。
在无障碍性方面,终端与网页浏览器或图形用户界面有着根本区别,其历史甚至早于网络本身。虽然像《网页内容无障碍指南》(WCAG)这样的标准为网页和图形应用的无障碍化提供了清晰路径,但终端和 CLI 领域却缺乏等效的全面标准。W3C 为非线性软件提供了一些高层指导,但并未规定具体技术,留出了大量解释和创新空间。
这一空白促使我们创造性地思考终端无障碍性的实现方式。我们最近的公开预览版重点关注三个关键群体的需求:依赖屏幕阅读器的用户、需要高对比度的用户,以及需要自定义颜色选项的用户。运行最新版 GitHub CLI 中的 gh a11y
即可启用这些功能。
理解终端环境
基于文本的命令行应用与图形或网页应用存在根本差异。在网页上,辅助技术利用文档对象模型(DOM)推断页面结构和上下文。相比之下,CLI 的主要输出是纯文本,没有隐藏标记。终端模拟器作为文本应用的“用户代理”,按服务器应用的指示渲染字符。辅助技术访问这个字符矩阵,分析其布局,并尝试推断结构。
为屏幕阅读器重新设计提示和进度显示
GitHub CLI 作为命令行应用的优势之一是其丰富的提示体验,为用户提供了输入命令选项的交互界面。然而,这种丰富的交互体验对语音合成屏幕阅读器构成了障碍:非字母数字视觉提示和持续屏幕重绘用于视觉或其他效果的做法,很难被正确解读为语音。
为了减少混淆,让盲人和低视力用户能够自信地回答问题和导航选择,我们引入了新的提示体验,使语音合成屏幕阅读器能够准确向用户传达提示。我们的新提示器使用 Charm 的开源 charmbracelet/huh 提示库构建。
另一个为视觉效果而重绘终端的用例是显示进度条。我们现有的实现使用通过重绘屏幕显示不同盲文字符组成的“旋转器”来指示命令正在执行。语音合成屏幕阅读器无法很好地处理这种情况:
这已被静态文本进度指示器取代(在可能的情况下显示与执行操作相关的消息,否则回退到通用的“Working…”消息)。我们正在努力识别其他可以进一步改进上下文文本的区域。
颜色、对比度和自定义
颜色在终端中不仅仅是装饰:它是突出显示信息、发出错误信号和引导工作流程的重要工具。但颜色也可能成为障碍——如果终端背景色与文本颜色之间的对比度过低,部分用户将难以辨认显示的信息。与网页浏览器不同,终端的背景色不是由应用程序设置的,而是由用户的终端模拟器处理。为了保持对比度,命令行应用程序必须考虑这一变量。
我们用于渲染 Markdown 的旧调色板未考虑终端背景色,在某些情况下导致对比度较低。
颜色本身也很重要。不同的终端环境具有不同的颜色能力(有些支持 4 位,有些 8 位,有些 24 位等)。无论能力如何,终端都允许用户自定义颜色偏好,选择不同色调的显示方式。然而,大多数终端仅支持更改有限子集的颜色:即 ANSI 4 位颜色表中的十六种颜色。GitHub CLI 已大力调整我们的调色板以适配 4 位颜色,使用户能够通过终端偏好完全自定义他们的体验。我们在决定使用哪些 4 位颜色时,借鉴了 Primer 开创的无障碍性基础。
为 CLI 社区构建
我们的改进旨在支持广泛的开发者需求,从需要屏幕阅读器的盲人用户,到需要高对比度的低视力用户,再到需要可自定义颜色选项的色盲用户。但此公开预览版并不代表我们团队对让所有开发者都能使用 GitHub CLI 的承诺的终点。我们打算让扩展作者更容易实现我们对核心 CLI 所做的相同无障碍改进。这将使用户在所有 GitHub CLI 命令(无论是官方还是社区维护的)中获得一致的体验,从而使更多工作流程默认具备无障碍性。我们还在研究如何自定义命令输出的表格格式,使其更易于屏幕阅读器读取/解释。我们很高兴继续我们的无障碍之旅。
征集反馈
我们邀请您帮助我们实现让 GitHub CLI 成为所有开发者可用体验的目标:
- 尝试使用:将 GitHub CLI 更新到 v2.72.0 并在终端中运行
gh a11y
以了解如何启用这些新的无障碍功能。 - 分享您的体验:加入我们的 GitHub CLI 无障碍性讨论以提供反馈或建议。
- 联系我们:如果您有与我们无障碍角色相关的亲身经历,请联系无障碍团队或参与我们的讨论小组。
展望未来
为命令行适配无障碍标准既是一个挑战,也是一个机遇。我们致力于分享我们的方法,向社区学习,并帮助为无障碍 CLI 工具树立新标准。
感谢您与我们一起构建更易访问的 GitHub。