加入收藏 | 设为首页 | 会员中心 | 我要投稿 草根网 (https://www.0372zz.com/)- 容器安全、云日志、云数据迁移、行业智能、数据仓库!
当前位置: 首页 > 建站 > 正文

Linux无障碍环境搭建:6年测评师实战指南

发布时间:2026-11-07 14:18:11 所属栏目:建站 来源:DaWei
导读:  稿子被改到第九版那一刻,我切开终端敲了个 sudo apt install brltty——就为验证语音合成器在 KDE 的 TTS 管道里到底走不走 PulseAudio 重定向。结果弹出个「Failed to load module “module-null-sink”」。我盯

  稿子被改到第九版那一刻,我切开终端敲了个 sudo apt install brltty——就为验证语音合成器在 KDE 的 TTS 管道里到底走不走 PulseAudio 重定向。结果弹出个「Failed to load module “module-null-sink”」。我盯了三秒,把终端最小化,顺手把桌上那只干了的马克杯推到右下角,杯底划出一道浅灰印。


  你记得上次我们跟前端对空态按钮的 disabled 颜色吗?他坚持要用色板里那个说不清的灰——#7A7A7A,说是和 iOS 原生 disabled 一致。我说那是 macOS 14.5 的,你们用的是 Chromium 128。他翻白眼说:“那 Linux 屏幕上它就是看起来像 disabled。” 我没接话。因为我知道他昨天下午三点十七分,一边听播客一边调栅格,顺手把首屏的 padding-top 改成 48px 而不是 40px,就因为觉得“呼吸感更足”。而我昨天测了八台设备,其中三台是老旧的 ThinkPad X230,声卡驱动根本不认新版 Speech Dispatcher 的 dbus 接口……但没人问这个。


  我原以为装个 Orca 就能跑通全流程。结果一开机进 GNOME,Orca 直接挂了三次:第一次是因 gnome-shell 扩展加载顺序错乱,第二次是因 Wayland 下 AT-SPI 总线未正确继承 session bus,第三次……算了,记不清是第几版了,反正那次重启后我听见旁边工位小陈在刷短视频外放,女声尖着嗓子喊“家人们点个关注”,持续了整整四分二十三秒。我没抬头,但把切图文件夹里的命名又看了一遍:`icon_btn_disabled_v3_newfinal_fix2.svg`、`icon_btn_disabled_v3_newfinal_fix2_2024Q3_final-1.svg`……全堆在 `./src/assets/icons/` 下,连个子文件夹都没有。


  优胜劣汰?对。不是说哪个方案高级,是活下来的全靠打补丁打得快。比如你装 NVDA on Wine——早废了;ChromeVox?Chromium 120 后弃用;Orca 还行,但得关掉 GNOME 的 Accessibility Settings 里的「Screen Reader」开关,否则两个服务抢 focus chain,读到一半卡死。而 JAWS?Linux 上从来就没正经活过。所以现在剩下什么?Orca + Speech Dispatcher + espeak-ng + brltty + 一个手动配好的 systemd user service 来确保 tts 在登录前就位。别的都死透了。包括去年那个号称支持盲文热插拔的 Rust 写的实验项目,commit 到 v0.2.3 就停更,README 最后一行写着「依赖 kernel 6.5+,实测 6.8.2 可能 crash」——谁还敢推生产?


  窗台上的绿萝死了半盆。叶尖焦黄卷着,茎部发软,但根还在土里。保洁阿姨上周换过水,说“这盆看着还能救”,我就没扔。就像我们测的那些无障碍测试报告——有些数据字段填得密密麻麻,但一问「是否验证过高对比度模式下 SVG 图标 fallback 文本是否随 theme 切换」,立马哑火。我见过一份报告写「支持 WCAG 2.1 AA」,翻到最后附录才发现他们只测了 Firefox + NVDA Windows 版,Linux 没跑,Wayland 没跑,甚至没列设备型号。那报告写了 23 页。我记得清清楚楚。但甲方签单的时候,看的是封皮那个烫金 logo,不是第 17 页表格里漏填的「AT-SPI2 组件注册状态」栏。


  数位笔的笔尖刚换过。昨天换的,旧笔尖磨秃了,压感曲线飘得厉害。我用它描过三张焦点路径示意图,全是错的。第一张画了 keyboard-only tab 顺序,第二张加了 screen reader focus order,第三张想叠一层 voice command 的触发热区……后来全删了,因为实际测下来,90% 的用户根本不会同时启用三套辅助栈。他们要么用键盘+Orca,要么只开高对比度+鼠标,最多加个放大镜。没人真去配那个语音命令的语法树——除非你是 Mozilla 工程师,自己天天改 Gecko。


  显示器有点色偏。左边亮些,右边暗一档,调了两次 gamma,第三次直接放弃。你知道最烦什么吗?是测试时发现「高对比度主题生效了,但 SVG 图标的 元素里 fill="currentColor" 不受 theme 影响」。这问题在 Chrome 和 Firefox 表现还不一样:Chrome 认 currentColor,Firefox 在 high contrast mode 下强制覆写成 black/white。我们最后怎么解的?给所有图标补 ,再写一堆冗余 fill 声明。你猜 PR 里 reviewer 写的 comment 是啥?“语义重复,建议抽离成组件”。好啊。那组件里得预置 7 种 forced-colors 状态,还得兼容老 Edge 的 -ms-high-contrast,对吧?可没人写这部分。最后还是 patch 里硬塞的 CSS,就两行,加了个 !important。对,就这两行救了整条无障碍链路。


  产品与需求。上个月需求文档写“支持视障用户流畅操作账户设置页”,结果交付时忘了账户页有四个动态加载的 async section——每个 section 的 aria-live region 没统一设 polite,导致 Orca 连读五次“loading... loading... loading...”然后卡住。我提 bug 时截图标红了三处 DOM 结构,其中一处是空态占位符用了 div 而非 role="status"。产品扫了一眼,说“这个优先级低”。我没争。因为我知道他说的“低”,是指“低于下周一上线的 banner A/B test”。


文章配图,仅供参考

  下一步?我把 brltty 的 systemd service 拆成 user slice 加了个 restart=on-failure,现在每次崩溃能自动拉起。但没写文档。也没推 repo。就存我本地 ~/bin/ 下,命名是 `fix-brltty-restart.sh`,里面有一行注释:「别问为什么用 sh 不用 bash,问就是 init 不认 $HOME/.bashrc」。你要的话,我现在可以发你。或者你先把你那边切图命名规范理一理?我看你上次交的 assets 里还有 `icon_arrow_down_blue_hover_active_focus.svg`……它真的需要 hover+active+focus 三个状态全叠一起?

(编辑:草根网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!