GTK: screen reader accessibility (Orca / AT-SPI) for the terminal surface #13746
What do you want to change?I want to start upstreaming my work on Ghostty's GTK apprt accessibility for blind users. I added GtkAccessibleText/Hypertext support to Ghostty's surface so Orca could read what is displayed in the terminal. What works now: text reading, flat review (line/word nav), typing echo and command output, focus changes between surfaces, caret and selection, OSC 8 + regex links, text attributes, braille. I commented at #2351 when I started this work. I now have a working implementation at https://github.com/alex19EP/ghostty/tree/gtk-accessibility-poc, which I have been daily driving myself for 4 months, and I also invited Orca users to test it. I also tried to extensively cover the new code with tests: I have Zig unit tests and also a test harness which drives AT-SPI, similar to the macOS one. The AT-SPI harness is excluded from CI. I also found and fixed three bugs in Orca terminal reading support itself along the way; all three are merged upstream. If you are OK with this, I would upstream it in small PRs, e.g.:
Each PR would contain its own tests. The AT-SPI harness is Python + pytest — would you want it in-tree, or should I keep it on my branch? AI usage disclosureClaude Code heavily assisted me with the implementation. Architecture and testing were mine. I also read the Zig code and corrected some incorrect AI assumptions, such as emitting text change events on every frame even when nothing changed, and feeding bytes instead of codepoints to AT-SPI. Why do you want to make this change?Before my implementation, the only accessible terminals for blind Linux users were VTE-based ones such as GNOME Terminal. VTE's a11y implementation has bugs that have gone unfixed for a long time, and it is rather slow. As a blind Linux user who uses Orca and a braille display, and relies on a terminal for daily work, I started looking at Ghostty, and I liked its performance and feature list. The only problem was the total inaccessibility. I looked at requests to add a11y to Ghostty and found #2351, where Mitchell said Linux could be indefinitely delayed until it was clear what improvements were possible — and this branch is an answer to that question. I acknowledge that:
|
Replies: 1 comment
|
!vouch |
!vouch