client: expose the terminal to screen readers via AccessKit #240
Labels
No labels
Area/ci
Area/cli
Area/client
Area/client-core
Area/daemon
Area/deps
Area/docs
Area/grid
Area/manual
Area/nix
Area/protocol
Area/pty
Area/render
Area/shaping
Area/skills
Area/transport
Area/vt
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Performance
Kind/Security
Kind/Testing
perf-regression-accepted
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Blocked
Status
Need More Info
Status
Upstream
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
felis-terminal/felis#240
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Target: 0.4.0.
felis draws every glyph on the GPU, so its window has no accessibility tree and screen readers (NVDA, Narrator, VoiceOver, Orca) read nothing. Accessibility is treated as a duty rather than a feature gated on a requesting user: the consumer is the OS's assistive technology, and only the process that owns the window can answer its queries. The design and its rejected alternatives go in
docs/explanation/accessibility.md(draft on thedocs/accessibilitybranch), with a fifth platform-shim entry innon-goals.md.Scope
accesskit_winitsupports winit 0.30) on Windows, macOS, and Linux:Window→Terminalrole → one text run per visible row, the cursor as the caret, and the selection.Out of scope (principle 4 or 1)
Open questions
TextRunnodes loop or panic (AccessKit#836, AccessKit#837).LayoutChangedwith element lists, which reset the VoiceOver cursor in iTerm2.Prior art
src/renderer/uia/UiaRenderer.cpp,TermControlAutomationPeer.cpp).GtkAccessibleTextwith prefix/suffix diff of viewport snapshots (src/vteaccess-gtk4.cc).iTermTextViewAccessibilityHelper.m.GtkAccessibleText(ghostty-org/ghostty#13779), viewport bug ghostty-org/ghostty#9932.Scope update: explicit announcements of new output moved to #241. This issue now covers the tree (viewport text as multi-run lines, caret, selection, geometry) and its text-changed events. The implementation design passed review; the PR will carry the code and the docs together.