Ich wollte Emacs nur hübsch machen — 24-Bit-Farben im Terminal verwenden
- Die Emacs-Community ist aktiv, und über LSP werden moderne Autovervollständigung sowie Inline-Typprüfung bereitgestellt.
- In grafischen Umgebungen unterstützt Emacs automatisch 24-Bit-Farben, im Terminal jedoch nicht.
ANSI-Escape-Codes
- Frühe Hardware-Terminals boten untereinander inkompatible Steuerzeichen, und ANSI standardisierte diese.
- Mit SGR (Select Graphics Rendition) lassen sich verschiedene Darstellungsattribute für Zeichen festlegen.
3-, 4- und 8-Bit-Farben
- Als Farben eingeführt wurden, gab es acht Grundfarben; später kamen helle Farben hinzu, sodass es insgesamt 16 Farben wurden.
- 1999 fügte Todd Larason xterm per Patch Unterstützung für 256 Farben hinzu.
Woher kommt die Unterstützung für 24-Bit-Farben?
- Wie 8-Bit- und 24-Bit-Farben an kompatible Terminals gesendet werden, ist gut dokumentiert.
- Im ANSI-Standardisierungsprozess der 70er Jahre und später in ISO 8613-6 (ITU T.416) der 90er wurden 38 und 48 als erweiterte Modi für Vorder- und Hintergrundfarben definiert.
Terminfo
- Terminfo stellt eine Datenbank mit Terminal-Fähigkeiten bereit, und über die Umgebungsvariable TERM wird Programmen mitgeteilt, welchen Terminfo-Eintrag sie verwenden sollen.
xterm-256color und xterm-direct unterstützen jeweils 256 Farben bzw. RGB-Farben.
TERM-Konfiguration: das Semikolon-Problem
- Da viele Terminals nur die Semikolon-Syntax unterstützen, sollte geprüft werden, ob TERM korrekt gesetzt ist.
Emacs-Konfiguration
- Emacs dokumentiert, wie sich die Unterstützung für True Color erkennen lässt.
RGB ist die grundlegende Farbfunktion von Emacs und sucht zunächst nach den Strings setf24 und setb24.
Verschachtelte Terminals
- Ein typischer Workflow verwendet mehrere ineinander verschachtelte Terminals.
- Alle Ebenen müssen 24-Bit-Farben verstehen und korrekt umsetzen.
Grafische Terminal-Emulatoren
- Die meisten Terminals setzen TERM auf einen sinnvollen Standardwert oder erlauben dessen Überschreibung.
ssh
ssh überträgt den TERM-Wert an den entfernten Host.
tmux
- Innerhalb von
tmux sollte ein TERM wie tmux-direct gesetzt werden.
Meinung von GN⁺
- Das Wichtigste an diesem Artikel ist der Wunsch von Nutzern, auch in Terminal-Umgebungen hochwertige Farben zu verwenden, sowie die technischen Fortschritte, die das ermöglichen.
- Die Unterstützung für 24-Bit-Farben ist eine wichtige Funktion, mit der Entwickler eine bessere User Experience bieten können, besonders bei Tools wie Code-Editoren, wo sie den visuellen Komfort deutlich verbessert.
- Dieser Artikel dürfte für Terminal- und Emacs-Nutzer interessant und hilfreich sein und liefert nützliche Informationen für alle, die auch in einer terminalbasierten Arbeitsumgebung ein hervorragendes visuelles Erlebnis anstreben.
1 Kommentare
Hacker-News-Kommentare
Drückt Verwunderung über die Komplexität von Terminal-Anwendungen aus und bedankt sich bei den Entwicklern von Terminal-Anwendungen wie iTerm und Kitty.
terminfomit Verbindungen zu HTTP oder SMTP über das altmodische telnet und weist auf die Komplexität textbasierter Schnittstellen hin.Hält es persönlich für einfacher, die 16-Farben-Palette für jede Terminal-App anzupassen, als den Terminal-Code auf Anwendungsseite exakt abzustimmen.
.Xdefaultsund in benutzerdefinierten Theme-Dateien mit der Endung.el.lsund Ähnlichem besser werden.Vermutet, dass der Autor eine bessere Erfahrung gehabt hätte, wenn er
export COLORTERM=truecolorgekannt hätte.Betont, dass man bei der Nutzung von Emacs nicht zwingend ein Terminal verwenden muss und stattdessen einen „grafischen“ Frontend für MacOS, Windows, X.org oder Wayland nutzen kann.
Weist darauf hin, dass sich die Computerwelt möglicherweise verrannt hat, indem produktive Systeme noch immer Terminal-Emulatoren, Editoren und Betriebssystemversionen aus den 1970er Jahren verwenden.
Macht scherzhaft deutlich, dass er Emacs mit Cool Retro Term einfach nur cooler aussehen lassen wollte.
Stellt fest, dass im Windows-10-Kommandoprompt standardmäßige ANSI-Escape-Sequenzen funktionieren und auch 24-Bit-Farben gut unterstützt werden.
Erwähnt, dass der beste Punkt an Emacs gegenüber vim/neovim sei, dass GUI-Unterstützung als erstklassiger Bestandteil behandelt wird.
Sagt, dass er diese Funktion nicht nutzen werde, weil seine Emacs-Konfiguration Farben nur sehr sparsam einsetzt, findet die Lektüre aber dennoch ausgesprochen angenehm.
Kritisiert, dass es wirklich beschämend sei, wenn Standards an hohe Preise gebunden sind und Menschen deshalb gezwungen werden, auch ohne Kauf so weit zu gehen.