- Die Annahme, dass Terminal-Apps textbasiert und damit von Natur aus barrierefrei seien, zerbricht bei modernen TUIs; Frameworks wie Ink, Bubble Tea und tcell können für Screenreader-Nutzer sogar ein feindlicheres Umfeld schaffen
- CLIs arbeiten mit linearen
stdin/stdout-Streams, in denen sich Ausgaben chronologisch ansammeln, während TUIs das Terminal als zeichenzellenbasiertes 2D-Raster behandeln, dem Screenreader nur schwer folgen können - Bei
gemini-clizeichnet Ink den React-Komponentenbaum passend zum Terminalraster neu und bewegt dabei den Cursor zwischen Spinner, Timer und Gesprächsverlauf, was bei Speakup und NVDA wiederholtes Vorlesen, Abstürze und Eingabeverzögerungen auslösen kann - Ältere Werkzeuge wie
nano,vim,menuconfigund Irssi reduzieren den Lärm durch Koordinatenaktualisierungen und minimieren Störungen der Eingabezeile durch versteckten Cursor, Fokus auf einer einzelnen Spalte und die Nutzung von VT100-Scrollbereichen - Wer barrierefreie Terminal-Werkzeuge bauen will, sollte deklarative UI-Frameworks vermeiden, die das Terminal wie eine Leinwand behandeln und aggressiv neu zeichnen, und stattdessen ein Verhalten nahe an einfachen, linearen CLI-Streams sicherstellen
Das Missverständnis „Text ist also barrierefrei“
- Die Annahme, dass Anwendungen, die im Terminal laufen, von Natur aus barrierefrei sind, passt nicht zur realen Nutzungspraxis
- Die Erwartung, dass Screenreader rohen ASCII-Text leicht interpretieren können, weil es keine Grafik, kein komplexes DOM und keine WebGL-Canvas gibt, bricht bei modernen TUIs zusammen
- Terminal-UI-Frameworks wie Ink (JS/React), Bubble Tea (Go) und tcell sollen die Developer Experience (DX) verbessern, können für blinde Nutzer aber ein feindlicheres Umfeld schaffen
- In Sachen Barrierefreiheit sind moderne TUIs oft sogar schlechter als schlecht umgesetzte grafische Oberflächen
Strukturelle Unterschiede zwischen CLI und TUI
-
CLI: linearer Stream
- CLIs arbeiten auf Basis von
stdin/stdout; man gibt einen Befehl ein, das Ergebnis wird darunter angefügt und der Cursor wandert nach unten - Weil die Ausgabe linear ist und sich chronologisch aufbaut, passt sie gut zu kernelnahen Screenreadern wie Speakup
- CLIs arbeiten auf Basis von
-
TUI: 2D-Raster
- TUIs behandeln das Terminalfenster nicht als Textstream, sondern als 2D-Raster, in dem einzelne Zeichenfelder wie Pixel beschrieben werden
- Damit wird der zeitliche Fluss aufgegeben und ein räumliches Layout priorisiert, was für Screenreader schwer nachzuverfolgen ist
Die Probleme, die sich bei gemini-cli zeigen
gemini-cliist ein mit Node.js und dem Ink-Framework geschriebenes Werkzeug und wirkt oberflächlich wie ein simples Chat-Interface- Intern versucht Ink, den React-Komponentenbaum an das Terminalraster anzupassen
- Bei der Nutzung mit Speakup (Linux) oder NVDA (Windows) scheitert die Anwendung nicht einfach nur, sondern überschüttet den Screenreader fortlaufend mit neu zu lesenden Inhalten
-
Ein Bildschirm, der sich wie eine reaktive Leinwand verhält
- Das Framework behandelt den Bildschirm wie eine reaktive Leinwand, weshalb jede Aktualisierung ein Neuzeichnen auslöst
- Während die KI „nachdenkt“, bewegt es den Hardware-Cursor zur Position des Timers, schreibt die neue Zeit und setzt ihn dann wieder zurück
- Für sehende Nutzer ist das ein sofort vorübergehender Vorgang, für Screenreader-Nutzer klingt es aber wie „Responding... Time elapsed 1s... Responding... Time elapsed 2s...“ in Dauerschleife
- Während der Cursor kurz zwischen Statusanzeige, Spinner und Gesprächsverlauf springt, versucht Speakup jeweils den Inhalt unter dem Cursor vorzulesen
- Dadurch vermischen sich Timer-Aktualisierungen und Gesprächsfragmente, sodass es schwer wird, sich auf die eigentliche Eingabe zu konzentrieren
-
Instabilität mit NVDA und beim Einfügen
- Wenn man unter Windows mit NVDA ein Terminal öffnet, sich per SSH auf ein Linux-System verbindet, an eine
screen-Sitzung anhängt und dann Text einfügt, kann NVDA sofort abstürzen oder das System stark instabil werden - Jedes eingegebene Zeichen und jedes eingefügte Textstück verändert den Zustand der Anwendung, woraufhin das Framework entscheidet, dass die Oberfläche neu gerendert werden muss
- Wenn der Gesprächsverlauf Teil dieses Zustands ist, versucht es sofort, das Layout von tausenden Textzeilen neu zu berechnen oder neu zu zeichnen
- Je mehr Gesprächsnachrichten vorhanden sind, desto häufiger tritt dieses Problem auf
- Selbst die Tastenkombination
Insert+5, mit der dynamische Inhaltsmeldungen vermieden werden sollen, hilft hier nicht
- Wenn man unter Windows mit NVDA ein Terminal öffnet, sich per SSH auf ein Linux-System verbindet, an eine
-
Schleife aus Eingabeverzögerungen
- Wenn Frameworks wie Ink in einer Single-Thread-Umgebung wie Node.js laufen, nimmt der Leistungsabfall mit wachsendem Verlauf stark zu
- Beim Einfügen großer Textblöcke müssen Differenzen über tausende Zeilen berechnet werden
- Das System ist dann damit beschäftigt zu ermitteln, wie der Bildschirm neu gezeichnet werden soll, und verarbeitet Eingaben verspätet
- Schon nach einem einzelnen Tastendruck kann man bis zu 10 Sekunden warten, bis das Zeichen wieder angezeigt wird
Warum alte Werkzeuge funktionieren
- Werkzeuge wie
nano,vimundmenuconfigwerden nicht genutzt, weil sie in Sachen Barrierefreiheit immer perfekt wären - Entscheidend ist vielmehr, dass diese Werkzeuge den Cursor vollständig verbergen oder den Lärm aus der Cursorpositionsverfolgung reduzieren können
-
nanoundvim: Cursor verbergen- Wenn man
nanomit Optionen wie--constantshowstartet, die die Cursorposition anzeigen, odervimohne bestimmte Einstellungen nutzt, kann die Benutzbarkeit zusammenbrechen - Wenn der Cursor sichtbar ist und die Verfolgung aktiv bleibt, priorisiert Speakup Cursorpositionsaktualisierungen gegenüber dem Zeichen-Echo
- Gibt der Nutzer „a“ ein, hört er statt „a“ dann „Column 2“, bei „b“ entsprechend „Column 3“
- Diese alten Werkzeuge lassen sich so konfigurieren, dass visuelle Cursor- oder Statusleistenaktualisierungen unterdrückt werden, sodass sich der Screenreader auf den Zeichen-Eingabestream statt auf Koordinatenaktualisierungen stützt
- Moderne Frameworks bieten in der Regel keinen „no-cursor“- oder „headless“-Modus und setzen voraus, dass ein sichtbarer Cursor unverzichtbar ist
- Wenn man
-
menuconfig: Fokus auf einer einzelnen Spalte- Das
menuconfigdes Linux-Kernels funktioniert, weil es strikt einen Fokus in nur einer Spalte beibehält - Es gibt zwar Rahmen und Überschriften, aber der aktive Bereich ist eine vertikale Liste, und der Cursor bleibt auf diese Liste fixiert
- Er springt nicht zur Aktualisierung einer Uhr nach rechts unten und danach zur Titelaktualisierung nach links oben
- Die räumliche Komplexität bleibt gering, sodass Screenreader nicht die Orientierung verlieren
- Das
-
Irssi: Nutzung von Scrollbereichen
- Irssi ist nicht zufällig zugänglich, sondern ein Chat-Werkzeug, das seit mehr als 20 Jahren über eine eigene Rendering-Engine VT100-Scrollbereiche nutzt
- Wenn eine neue Nachricht ankommt, weist es den Terminaltreiber an: „Definiere Zeile 1 bis 23 als Scrollbereich“
- Danach sendet es den Befehl zum Hochscrollen, das Terminal verschiebt den Inhalt nach oben und zeichnet den neuen Text unten in diesem Bereich ein
- Auf diese Weise werden Störungen der Eingabezeile minimiert
- Statt jedes Zeichen auf dem Bildschirm manuell neu zu schreiben, stützt es sich auf Hardware-Funktionen des Terminals
- Moderne Frameworks ignorieren solche Hardware-Funktionen oft, berechnen stattdessen Zustandsdifferenzen des Bildschirms und schreiben Zeichen neu; das ist rechenintensiver und barrierefeindlich
Die Probleme bei der Bearbeitung von gemini-cli-Issues
- Google und die Maintainer von
gemini-cliwirken zwar so, als nähmen sie Barrierefreiheit ernst, im Repository bleiben aber wichtige Regressionen in der Barrierefreiheit liegen - Bei Barrierefreiheitsregressionen wie Issue #3435 und Issue #11305 gibt es weder Diskussion, noch Roadmap, noch Fixes
- Issue #1553 sollte genau solche Ausfälle der Barrierefreiheit nachverfolgen, wurde aber nicht gelöst und stattdessen automatisch von einem Bot geschlossen
- Der Bot schließt das Issue mit einer Standardformulierung, wonach es wegen langer Inaktivität und zur Pflege des Backlogs beendet werde
- Einen Bericht zur Barrierefreiheit zu schließen, nur weil Maintainer monatelang nichts daran getan haben, ist keine Aufräumarbeit, sondern eher das Verbergen von Belegen
- Es sendet das Signal, dass Bugs verschwinden, wenn man sie nur lange genug ignoriert, während die Software für blinde Nutzer in der Praxis weiterhin unbenutzbar bleibt
- Die Kennzahl „Closed Issues“ des Projekts mag dadurch besser aussehen, die Barrierefreiheitsprobleme sind damit aber nicht gelöst
Fazit für den Bau barrierefreier Terminal-Werkzeuge
- Wer Barrierefreiheit bei Terminal-Anwendungen ernst nimmt, sollte aufhören, deklarative UI-Frameworks zu verwenden, die das Terminal wie eine Leinwand behandeln
- „Moderne“ TUI-Stacks sind darauf optimiert, dass Entwickler Code bequem wie in React schreiben können, und opfern dafür die Fähigkeit der Maschine, Text effizient zu rendern
- Wenn eine Anwendung nicht sicherstellt, dass Nutzer den Cursor verbergen können, oder auf aggressives Neuzeichnen angewiesen ist, um Spinner und Timer anzuzeigen, wird sie zu einem unzugänglichen Werkzeug
- Für blinde Nutzer ist ein einfacher, linearer CLI-Stream weitaus besser als eine „smarte“ TUI, die verzögert reagiert, ständig neue Inhalte vorliest und den Cursor über den ganzen Bildschirm verstreut
2 Kommentare
Hacker-News-Kommentare
Als ich mir die gerenderte UI von Claude Code ansah, wurde mir zum ersten Mal klar, dass eine TUI eher einem UI-System im Stil von DOS oder Borland ähnelt als einer Kommandozeilenoberfläche
Beim Blick auf die Einstellung
CLAUDE_CODE_NO_FLICKER=1wurde sichtbar, dass diese TUI mehrere Ebenen mithilfe von Terminal-Steuercodes übereinanderlegtIch habe auch die Terminal-Implementierung von Ink für React gelesen: https://github.com/vadimdemedes/ink
Spannend fand ich, wie das Ergebnis nicht wie pixelbasierte Grafik wirkt, sondern eher wie früher bei WordPerfect oder WordStar, und für sehbehinderte Nutzer ist die Nutzbarkeit ähnlich. Allerdings erinnere ich mich, dass 80x25-Braille-Pads für DOS-Tools besser funktionierten als spätere Screenreader
Je mehr man sich die heute populären TUIs ansieht, desto schlechter wirken sie. Es fühlt sich an, als hätte man alle schlechtesten Praktiken aus den Anfängen des Programmierens zusammengeworfen und in eine schwerfällige, träge Gallerte gepackt, die unter ihrem eigenen Gewicht zusammenbrechen könnte
Das ist dieselbe Kategorie wie das, was man früher unter DOS baute, als Windows noch nicht weit verbreitet oder nicht gut genug war, daher überrascht es nicht, wenn es katastrophal ist oder ohne Verständnis für die Fähigkeiten des laufenden Terminals entwickelt wurde
Ich fand es immer etwas erstaunlich, warum TUIs so beliebt sind. Die Stärke des Terminals liegt im Streaming-Modell, und kombinierbare Utilities sind ein Vorteil, der bei grafischen UIs viel seltener ist
Ich verstehe den Punkt, dass die Beschränkungen des Terminals das TUI-Design dazu zwingen können, sich stärker auf den Zweck des Werkzeugs als auf Schmuck zu konzentrieren, aber persönlich finde ich das nicht besonders überzeugend
Es gibt bereits eine recht große Gruppe von Engineers, die mit Vim/Neovim/tmux/zellij leben und im Terminal zu Hause sind, und da viele Entwicklungsaufgaben ohnehin über Skripte im Terminal laufen, besteht Nachfrage, möglichst viele Arbeitsabläufe dorthin zu verlagern
Auf wichtigen Plattformen wie macOS und Linux ist Distribution über Paketmanager praktisch gelöst, während die Distribution nativer Cross-Platform-Apps weiterhin fragmentiert ist
Dank dieser Nachfrage und der Distributionsvorteile sind TUI-Komponenten wie Ink für React oder Bubble Tea für Go deutlich besser geworden, und Electron hat ein Image als langsame, aufgeblähte App-Plattform, das Entwickler eher abschreckt
Am Ende wechseln erfolgreiche Produkte oft auch in andere Formen, etwa wenn Claude Code zu Claude Cowork führt oder OpenCode um OpenCode Web erweitert wird, aber die Product-Market-Fit von Developer-Tools lässt sich per TUI schneller testen, und auch nach einer anderen UI bleiben viele Nutzer dem Terminal treu
Das hätte man auch leicht in einer grafischen UI nachbilden können, aber Tastaturkürzel wurden später zur Nebensache
Auch heute trifft man noch Nutzer, die solche alten Arbeitsabläufe vermissen, und sie beschreiben das als „alte Textoberflächen“, also als TUI. Hört man genauer hin, wollen sie in Wahrheit vor allem einen blitzschnellen, tastaturzentrierten Ablauf. Bei der Dateneingabe zählt nicht Animation, sondern Geschwindigkeit
Anfänger mögen Eye-Candy, Fortgeschrittene achten irgendwann nicht mehr darauf
Durch die Beschränkungen des Terminals sehen Apps meist ähnlich aus und verhalten sich ähnlich. In der Außenwelt werden UX-Standards im Alltag ignoriert, obwohl sie möglich wären, aber TUI ist gewissermaßen der Punkt mit den wenigsten Überraschungen
Mit TUI-Tools konnte ich mir bei Bedarf eine eigene unsichtbare IDE bauen. Dank guake und yakuake lässt sie sich verbergen, und dank zellij ist sie nach Projekten und Tabs organisiert. Für gemischte Tätigkeiten wie meine heutige Arbeit passt das perfekt
Stilvoll würde das aber wohl niemand nennen
Aus Sicht von Projekt-Maintainern kann man das anders sehen. Die Menschen, die ein Projekt besitzen und pflegen, können in den Issues festlegen, was Open und Closed bedeuten, und Nutzer müssen dem nicht unbedingt zustimmen
Man kann Open zum Beispiel im Sinn von „noch nicht eingeordnet oder aktiv in Bearbeitung“ verwenden und Closed im Sinn von „wir haben dieses Ticket gesehen, aber im Moment wird niemand im Team daran arbeiten“
Das heißt, Closed muss nicht zwingend „abgelehnt und endgültig entschieden“ bedeuten, sondern kann „aktuell kein Arbeitsgegenstand“ heißen. Auch wenn das nicht für alle intuitiv ist, lässt es sich rechtfertigen, wenn es dem Projektteam hilft, die Arbeitsmenge zu ordnen
Google achtet im Allgemeinen recht gut auf Barrierefreiheit und veröffentlicht für die meisten Produkte auch Konformitätsberichte: https://belonging.google/accessibility-conformance-reports/
Ich stimme dieser Einschätzung zu. Noch weiter gedacht wäre es viel einfacher gewesen, wenn Entwickler das bereits ziemlich zufriedenstellende CUA, also den IBM-Standard Common User Access, eingehalten und weiter formalisiert hätten: https://en.wikipedia.org/wiki/IBM_Common_User_Access
Wenn Entwickler mit verschiedenen UI-Konfigurationen experimentieren wollen, kann man sie das tun lassen, solange im Hintergrund ein CUA erhalten bleibt, das sowohl Maschinen als auch Menschen aufrufen können. Leider war Ergonomie nie eine Stärke von Entwicklern
Das ist ein gut dokumentiertes Problem zwischen TUI und Windows
Als in den 90ern die meisten SAP-Systeme von AS/400-Terminals auf Windows NT umgestellt wurden, berichteten viele von stark sinkender Produktivität
Ich habe nicht bei SAP gearbeitet, aber meine Mutter schon, und der Wechsel ging von vollständig tabellarischen, auf Funktionstasten basierenden Abläufen hin zu Mausgreifen, Bewegen und viel Klicken. In vielen Funktionen verschwanden Tab-Navigation und F-Tasten
Sie zeigte mir, wie man mit
ESC ESC F4 F3 TAB TABmit enormer Geschwindigkeit durchs ganze System kam, und das war nicht einmal das eigentliche System, sondern ein TerminalKurz gesagt: Windows-basierte Apps sind besser für Auffindbarkeit und neue Nutzer, terminalbasierte Apps sind schneller und besser für Navigation aus dem Gedächtnis und für Power-User
Erfolgreiche Apps für Experten oder Power-User sind tatsächlich immer mit Blick auf solche schnellen Wege gebaut. Selbst das oft grundlos gehasste Ribbon von Microsoft ist ein Beispiel dafür. Es ist per Tastatur bedienbar, anpassbar und zugleich gut auffindbar
Grafische UIs lockern nur die Beschränkungen, wodurch es leichter wird, die User Experience zu ruinieren
TUI sollte ursprünglich eine einfache Option sein, jetzt ist sie zu einer Web-App im Terminal-Kostüm geworden
Von einer Web-App ist das weit entfernt und auf den meisten Achsen deutlich schlechter
Zum Mythos „weil es Text ist, ist es zugänglich“: Nein, ist es nicht. Niemand glaubt das wirklich
Entwickler sagen so etwas über Textdokumente und unter Vorbehalt über einzelne Terminal-Apps wie grep, cut oder ls. Dasselbe über TUIs zu sagen, ist schwer vorstellbar
Das Problem ist nicht die Nutzung deklarativer UI-Frameworks an sich, sondern dass die von diesen Frameworks erzeugten Rendering-Engines Barrierefreiheit nicht berücksichtigen
Aber offenbar hat sich niemand darum gekümmert, sondern ist bei „Es ist ein Terminal, also machen wir es hübsch“ stehen geblieben
TUI wird noch einmal neu entdeckt werden, diesmal ohne fensterartige Elemente. Nur wenige merken es bisher, aber es könnte am Ende sprite-basiert sein wie eine C64-Konsole. Vielleicht macht das irgendwo schon jemand
Fenster und Panels kann man inzwischen ruhig verabschieden. Ruhige Textumgebungen sind auch 2026 noch Teil der kulturellen DNA der Menschheit, und in diesem Medium ist noch erstaunlich wenig erforscht
Die kognitive Aggressivität des modernen Webs kommt mir tatsächlich eher wie ein größerer Albtraum vor, in einem sehr halluzinatorischen Sinn aus wahllos vermischten Bildern, Videos und Werbung ohne Kontext
Lobste.rs-Kommentare
Dieser Artikel riecht wie viele andere Blogposts stark nach KI-unterstütztem Schreiben
LLMs lieben solche Titel: „The Architectural Flaw“, „The Lag Loop“, „Why The ‘Old Guard’ Works“, „The Lost Art of Scrolling Regions“, „The ‘Stale Bot’ excuse: A Case Study in Neglect“
Das hätte ein großartiger Blogpost sein können, aber wenn es wirkt, als hätte der Autor nur eine Gliederung in ChatGPT geworfen und es dann dabei belassen, ist das für Leser und Autor gleichermaßen ein Verlust
Genauso, wenn ein sehr spezielles einmaliges Problem als „klassisches“ Problem bezeichnet wird
Wirklich deprimierend. Kurz gesagt: Es gibt zugängliche TUIs wie Irssi, aber moderne TUI-Frameworks ignorieren solche Vorbilder und verlassen sich stattdessen auf Grid-Diffs und Cursorbewegungen
Screenreader lesen den Inhalt an der Cursorposition vor, wenn sich der Cursor bewegt, wodurch das Ergebnis durcheinandergerät oder es zu massivem Vorlese-Spam kommt
Ich bin nicht sicher, ob die technische Erklärung hier vollständig korrekt ist
Insbesondere unterstützte Ink lange Zeit überhaupt kein inkrementelles Rendering, und die meisten mit Ink gebauten Apps aktivieren es noch immer nicht. Dieses inkrementelle Rendering ist zudem zeilenbasiert und bewegt den Cursor nicht tatsächlich zur Position eines Timers
Gemini CLI benötigt zum Aktivieren des inkrementellen Renderings die Nutzung eines Alternate Buffers, was deaktiviert wird, wenn der eingebaute screenreaderfreundliche Modus aktiv ist, wie hier zu sehen ist. Die Dokumentation zur entsprechenden Option ist hier
Außerdem sind Python rich/textual trotz einer langsameren und meist Single-Thread-orientierten Sprache oft deutlich schneller als Ink. Das Berechnen von Diffs über Tausende Zeilen hinweg ist nicht zwangsläufig so langsam und dauert auch keine 10 Sekunden
Ich zweifle nicht daran, dass die User Experience frustrierend und kaputt ist, aber die konkret angegebene Ursache wirkt womöglich wie eine LLM-Halluzination oder basiert auf unvollständigen Informationen. Das inkrementelle Rendering von Ink funktioniert selbst dann nicht so, wie es beschrieben wird
In Wirklichkeit ist es wahrscheinlich eher so, dass vollständige Screen-Redraws Screenreader verwirren und zeilenbasierte Redraws dazu führen, dass beliebige zusammenhanglose Textfragmente erneut vorgelesen werden, auch wenn sie mit der Änderung nichts zu tun haben
Es ist nicht fair, nur den TUIs die Schuld zu geben
Das eigentliche Problem ist, dass die Barrierefreiheitsunterstützung fast im gesamten Stack miserabel ist
Erstens verwenden die meisten GPU-gerenderten Terminalemulatoren überhaupt keine vom System bereitgestellten Accessibility-APIs. Wenn Text per GPU gerendert wird, können Accessibility-Tools ihn nicht „lesen“ und sehen nur ein Bild. Dazu gehören Kitty, Alacritty und WezTerm. Mein Terminal Ghostty ist unter macOS über Accessibility-APIs lesbar, ebenso iTerm2 und Terminal.app
Zweitens gibt es keinerlei Terminal-Sequenzen oder standardisierte Verfahren, mit denen TUIs Barrierefreiheitsinformationen an den Terminalemulator übergeben könnten. Es bräuchte etwas wie ARIA-artige Annotationen für Terminalzellen, Laufbereiche und Regionen, aber solche Versuche gibt es nicht. Selbst wenn ein TUI den Cursor sauber handhabt, wird es in vielen Anwendungsfällen Probleme geben
Als Beispiel habe ich in Ghostty an der Integration von OSC133 mit Accessibility-APIs gearbeitet, um jeden Shell-Prompt, jede Eingabe und jeden Befehl nicht nur als einfache Textbox, sondern als strukturell sinnvolle Elemente sichtbar zu machen. Das zeigt, dass Terminal-Spezifikation, TUI und Terminalemulator zusammenpassen müssen
Der gesamte Stack ist verrottet, und es gibt kaum Leute, die ihn ernsthaft reparieren wollen. Auch ich kann mit meiner begrenzten Zeit nur mein Bestes tun, aber das ist ein riesiges Thema, das sogar Ökosystem-Politik erfordert, und kaum zu bewältigen
Als Bonus ist die zugleich coole und schreckliche Realität, dass KI hier tatsächlich bei Verbesserungen der Barrierefreiheit hilft. Viele KI-Tools nutzen oder missbrauchen Accessibility-APIs, um Fensterlisten zu lesen und Eingaben auszuführen. Deshalb beginnen mehr Apps, Accessibility-Integration wegen KI-Anwendungsfällen deutlich ernster zu nehmen
Dass Claude Code und gemini-cli nicht auf readline basieren, macht mich jeden Tag wütend
Sie haben ein paar ähnliche Tastenbelegungen eingebaut, aber der lange Schwanz vertrauter readline-Shortcuts fehlt
Anthropic könnte ruhig zugeben, dass die Entscheidung „wir müssen es wie Webentwicklung machen“ ein Fehler war, und wieder bei readline anfangen
Die Vorstellung, dass die vertraute Entwicklererfahrung der Leute, die solche Tools bauen, wichtiger sei als die vertraute Benutzererfahrung der Leute, die sie benutzen, ist falsch
Es gibt tatsächlich kaum bekannte Drittanbieter-Lösungen, die gut gepflegt werden. Wenn man eine flexible Eingabebox braucht, muss man sie von Grund auf selbst bauen
Im Gegensatz zum hervorragenden Input-Widget von Textual oder einer anderen Bibliothek im JS-Ökosystem, OpenTUI
Ich mag LLMs nicht, deshalb ist eine schlechte UI für mich persönlich eher ein Vorteil, aber es könnte Gründe geben, readline nicht zu verwenden
Ich glaube, Terminal-Editoren wie kakoune und helix werden es schwer haben, Barrierefreiheitsanforderungen zu erfüllen, sofern sie nicht den Trick des „Cursor-Versteckens“ nutzen
Selbst dann sind sie wahrscheinlich nicht so zugänglich wie VS Code
Welche zugänglichen plattformübergreifenden IDE-lites oder IDEs außer VS Code gibt es eigentlich? Die zunehmend feindselige Haltung von VS Code gefällt mir nicht. Vielleicht die IDEs von JetBrains
Der Nachteil ist, dass Emacs selbst zwar plattformübergreifend ist, emacspeak wegen TTS aber möglicherweise schwach von Linux abhängt. Vielleicht auch nicht. Unter Windows habe ich es nie ausprobiert
Für blinde Menschen braucht man emacspeak oder die Accessibility-Tools der jeweiligen Plattform für Sehbehinderte
Barrierefreiheit ist ein Spektrum, keine Checkbox
Links hat einen eigenen Braille-Terminalmodus, der gefälschte GUI-Elemente in einfachere Vollbildmenüs umwandelt und die Navigation per Pfeiltasten ebenfalls auf Zeilenbasis umstellt
Ein weiteres interessantes Beispiel ist edbrowse. Das ist ein Textmodus-Browser des blinden Entwicklers Karl Dahlke, der im Gegensatz zu populäreren Textmodus-Webbrowsern keine TUI verwendet, sondern eine Befehlszeilenschnittstelle im Stil von ed
Wenn es sich um das Ink-Framework handelt, ist das wahrscheinlich der Grund, warum die CLI 100 % CPU verbraucht, für immer hängen bleibt und lange Chatverläufe immer wieder neu rendert. Schade