Introduction: The Illusion of Accessibility
In the developer world, a misconception persists: if an application runs in a terminal, it is inherently accessible. The lack of graphics, complex DOM, or WebGL canvases leads to the belief that accessibility is ensured by the mere presence of raw text, easily interpretable by a screen reader. However, many modern Text User Interfaces (TUIs) turn out to be more hostile to accessibility than poorly coded graphical interfaces.
Distinguishing CLI from TUI
To understand this issue, it is crucial to distinguish between two often-confused concepts: the Command Line Interface (CLI) and the Text User Interface (TUI).
CLI: The Linear Stream
CLIs operate on a standard input/output model (stdin/stdout). You type a command, the system shows the result below, and the cursor moves down. This linear and chronological stream is ideal for a screen reader, especially kernel-level ones like Speakup.
TUI: The Spatial Grid
Unlike the CLI, the TUI treats the terminal window as a 2D grid of pixels, where each character cell is a pixel. It abandons the temporal flow for a spatial layout, making interpretation by a screen reader much more complex.
Case Study: gemini-cli and Its Challenges
Consider the example of gemini-cli, a tool written in Node.js using the Ink framework. While it appears as a simple chat interface, Ink tries to reconcile a React component tree with a terminal grid. For a sighted user, screen updates seem instantaneous. For a screen reader user, it's a disaster.
When the AI is "thinking," the tool updates a timer or a spinner. This involves moving the hardware cursor to the timer location, writing the new time, and moving it back. For a Speakup or NVDA user, this results in a constant stream of disjointed information, making it impossible to focus on text input.
Modern Frameworks and Tools: A Double-Edged Sword
Tools like Ink (JS/React), Bubble Tea (Go), or tcell, while designed to enhance developer experience, complicate the task for blind users. These frameworks treat the screen as a reactive canvas, where every update triggers a complete redraw, disrupting screen readers.
Impact on Accessibility
This reactive approach results in an information bombardment for screen reader users. Each update triggers an instant readout, often without logical continuity, making the user experience frustrating.
Conclusion: Rethinking TUIs for Better Accessibility
It is imperative for developers to reconsider TUI design with accessibility in mind. This involves a better understanding of blind users' needs and using technologies that favor a linear and coherent information flow.
Let's discuss your project in 15 minutes.