Ghostty VoiceOver Accessibility Fork
A research fork of Ghostty implementing a screen-reader accessibility layer for the terminal.
- Status
- Research fork
- Date
- July 2026
- What it is
- This fork implements a VoiceOver-oriented accessibility layer for Ghostty. The accessibility tree is a projection of the Zig terminal source state, not a second model derived from rendered output.
- Architecture
- The projection is built on the existing render thread with no new threads. Cell geometry for
accessibilityFrameis computed on demand from grid coordinates and kept separate from the audio and reading path. - Flood handling
- Flood detection reads PTY output counters including bytes, newlines and scroll-lines rather than render dirty-rows. This avoids false floods from repaints, startup paint and cursor movement.
- Notification model
- The PTY layer decides whether speech is allowed. The projection diff only supplies payload when authorized, so viewport scrolls do not re-surface old output as new content.
- VoiceOver behavior
- Passwords are suppressed through screen-derived announcements, not keystroke-derived announcements. Burst output is suppressed during flood and summarized on settle. Alt-screen and full-screen TUIs are review-only.
- Verification
- Verified with trace logs and CPU benchmarks against the upstream baseline. VoiceOver-off cost is effectively zero, flood-time CPU stays below baseline, and there is no post-flood drain.
- Role
- Accessibility architecture, implementation, trace validation, performance benchmarking and demo capture.
- Reference
- GitHub repository
This is not affiliated with the official Ghostty app. It is a research project.
Blinding Pixels · GitHub