- Pour afficher correctement dans Emacs en terminal des thèmes comme Solarized, l’important n’est pas tant la couleur 24 bits elle-même que le fait que le terminal, terminfo, tmux et mosh comprennent tous la même capacité couleur d’un bout à l’autre
- Les couleurs RGB sont largement utilisées sous la forme
ESC[38;2;<r>;<g>;<b>m, mais la syntaxe avec deux-points, plus proche du standard, coexiste toujours avec la syntaxe à points-virgules répandue dans les implémentations réelles, ce qui complique la compatibilité xterm-256coloretxterm-directannoncent respectivement une palette de 256 couleurs et 16 777 216 couleurs, mais le modèle centré sur les palettes de terminfo ne parvient pas à représenter proprement les couleurs RGB directes- En pratique, il peut falloir des valeurs alternatives de
TERMcomme les entrées-directdencurses-term,tmux-direct, la série mosh 1.4, ouvscode-direct, et certaines couches n’acceptent encore que la syntaxe à points-virgules - Pour utiliser de façon fiable les fonctionnalités des terminaux modernes,
TERMet terminfo ne suffisent pas : il faudrait un mode de description séparé, mis à jour plus vite selon le nom et la version du terminal
Pourquoi la couleur 24 bits est nécessaire dans Emacs en terminal
- Emacs en environnement graphique prend automatiquement en charge la couleur 24 bits, ce qui permet d’afficher correctement des thèmes comme Solarized et les polices
- Si l’on utilise le même thème dans un terminal, l’expression des couleurs est plus limitée et l’affichage peut être moins agréable
- Les terminaux populaires prennent en charge la couleur 24 bits depuis longtemps, mais pour qu’un programme l’utilise, il faut que la détection des capacités et la configuration soient toutes deux correctes
- L’objectif est double
- trouver comment activer la prise en charge du truecolor dans l’environnement terminal actuel
- comprendre comment les problèmes de couleur d’Emacs se rattachent aux standards de terminaux des années 1970 à 1990
Codes d’échappement ANSI et histoire des extensions de couleur
- Les premiers terminaux matériels utilisaient des systèmes de codes de contrôle différents, et la normalisation ANSI était nécessaire pour créer des logiciels portables
- Les codes d’échappement ANSI existent depuis les années 1970, et pour la couleur, le point clé est SGR (Select Graphics Rendition)
- gras ou intensité
- italique
- clignotement
- couleur de premier plan et d’arrière-plan
- autres attributs d’affichage des caractères
- Au départ, la couleur était une couleur 3 bits correspondant aux 8 sommets du cube RGB
- avec le noir, le blanc, les primaires additives et les primaires soustractives
- Ensuite, l’ajout d’un bit pour les couleurs vives ou le gras a permis de passer à 16 couleurs
- « bright black » correspond à un gris foncé
- En 1999, Todd Larason a ajouté à xterm un patch de prise en charge des 256 couleurs
- échantillonnage d’un cube RGB 6x6x6
- rampe de niveaux de gris sur 24 niveaux
- il existe aussi une variante 88 couleurs, rare mais encore prise en charge
Comment la syntaxe de la couleur 24 bits est apparue
- Dans les terminaux compatibles, les couleurs 8 bits et 24 bits se définissent ainsi
ESC[38;5;<n>m: définit comme couleur de premier plan le numéronde la paletteESC[38;2;<r>;<g>;<b>m: définit comme couleur de premier plan les valeurs RGBr,g,b
- Les nombres
5et2sont liés au mode de couleur étendu de l’ISO 8613-6, c’est-à-dire ITU T.4162: couleur directe dans l’espace RGB5: couleur indexée
- La normalisation a suivi cette chronologie
- années 1970 : ANSI standardise les séquences d’échappement des terminaux, ce qui mène à ANSI X3.64 et ECMA-48
- 1979 : la 2e édition d’ECMA-48 assigne SGR 30~37 et 40~47 aux couleurs de premier plan et d’arrière-plan en 3 bits
- 1984 : la 3e édition d’ECMA-48 introduit la notion de couleur de premier plan et d’arrière-plan par défaut, et assigne 39 et 49
- 1991 : la 5e édition d’ECMA-48 laisse 38 et 48 « pour une normalisation future » avec une référence à l’ISO 8613-6
- 1993 : l’ISO 8613-6 définit 38 et 48 comme modes étendus de couleur de premier plan et d’arrière-plan
- Pour séparer les sous-paramètres, l’usage des deux-points est plus proche du standard, mais dans les implémentations réelles, les points-virgules se sont largement imposés
ESC[38;5;3mpeut être interprété, sur un terminal qui ne connaît pas SGR 38, comme trois paramètres distincts38,5,3- La FAQ de xterm par Thomas Dickey explique qu’à l’époque, une copie de l’ITU T.416 coûtait cher, et que séparer les valeurs RGB par des points-virgules comme les autres paramètres SGR était une erreur
- Chronologie associée
- 1999 : Thomas Dickey intègre dans xterm le patch 256 couleurs de Todd Larason, avec la syntaxe ambiguë à points-virgules
- 2006 : Konsole prend en charge les 256 couleurs et le truecolor 24 bits avec la même syntaxe à points-virgules que xterm
- 2012 : xterm est modifié pour accepter aussi la syntaxe à deux-points, plus proche du standard
- 2016 : la console intégrée de Windows 10 prend en charge les codes d’échappement ANSI et la couleur 24 bits, mais utilise la syntaxe à points-virgules
- 2019 : Windows Terminal prend aussi en charge les codes d’échappement ANSI, mais utilise la syntaxe à points-virgules
- 2022 : Microsoft annonce la transition de l’écosystème, du sous-système de console historique de style VGA vers l’émulation de terminal ANSI
- 2022 : Konsole ajoute la prise en charge de la syntaxe à deux-points conforme au standard
Comment terminfo représente les capacités de couleur
- terminfo fournit une base de données de capacités de terminaux et un mécanisme pour générer les séquences d’échappement adaptées
- La variable d’environnement
TERMindique l’entrée terminfo à utiliser par le programme, et elle est aussi transmise automatiquement lors d’une connexionssh toeaffiche la liste des entrées terminfo installées, etinfocmppermet d’inspecter les capacités d’une entrée donnée- Pour la couleur, trois capacités sont importantes
colors: nombre de couleurs prises en charge par le terminalsetaf: définition de la couleur de premier plansetab: définition de la couleur d’arrière-plan
- Dans
xterm-256color,setafproduit des séquences différentes selon le numéro de couleur- 0~7 : utilise les paramètres ANSI SGR 30~37
- 8~15 : utilise les couleurs vives non standard 90~97
- au-delà : utilise la palette 256 couleurs sous la forme
38;5;<n>
xterm-directest une entrée terminfo pour le RGB 24 bits qui annoncecolorsà 16 777 216cccest désactivé, ce qui indique qu’on ne peut pas assigner une nouvelle valeur RGB à un index de couleur- les entrées liées à la modification dynamique des couleurs à l’exécution, comme
initc,oc,rs1, sont aussi absentes setafetsetabutilisent la forme à deux-points38:2::...
Les limites du modèle de couleur directe de terminfo
- Le modèle de programmation de terminfo et de ncurses est fondamentalement centré sur les entrées de palette
- il y a N entrées de palette
- chaque entrée possède une valeur RGB par défaut
- le modèle suppose que le terminal peut modifier ces valeurs
- Les terminaux
-directreprésentent la couleur 24 bits comme s’il existait 16 777 216 entrées de palette- chaque entrée correspond à un cube RGB 8:8:8
- ces valeurs ne peuvent pas être modifiées
- Pour des raisons de compatibilité, l’approche
xterm-directréserve les 7 bleus les plus sombres pour rester compatible avec les 8 couleurs ANSI de base- le noir est exclu
- cela évite que des programmes existants, supposant une certaine sémantique de
setaf, n’affichent un bleu très foncé presque illisible
- Pour cette raison, l’approche
-directn’est pas compatible avec l’approche-256color- les programmes doivent savoir que 256 couleurs signifie couleurs indexées, et 16 777 216 couleurs signifie couleur directe
- il existe aussi l’exception consistant à éviter les 7 bleus les plus sombres
- Dans un problème lié à termwiz, le programme s’attendait à la palette
xterm-256color, mais produisait en réalité des bleus très foncés difficiles à lire- l’issue était encore ouverte au moment de la rédaction, mais @quark-zju a intégré une correction, et termwiz se comporte maintenant de façon raisonnable
- Le cœur du problème relève moins du terminal lui-même que des contraintes de terminfo
- un terminal prenant en charge la couleur 24 bits semble aussi prendre en charge la palette 256 couleurs de xterm et la modification dynamique des valeurs RGB
- terminfo n’est pas suffisant pour représenter précisément et rapidement l’écosystème moderne des émulateurs de terminaux
Réglage de TERM et compatibilité avec les points-virgules
- Comme beaucoup de programmes utilisent terminfo, la valeur de
TERMdoit être correctement définie - Même si l’on souhaite uniformiser l’usage de la syntaxe SGR à deux-points, de nombreux environnements n’acceptent encore que la syntaxe à points-virgules
- Les entrées terminfo sont composées de briques de base
xterm+direct: syntaxe à deux-points proche du standardxterm+indirect: pour les anciens terminaux ne prenant en charge que les points-virgules
- Après recherche sur
xterm+indirect,vscode-directsemblait le meilleur choix- comme il cible les terminaux Microsoft, il a été jugé suffisamment proche de Windows Terminal et de Windows Console
- toutes les fonctions n’ont pas été auditées, mais cela fonctionne
- Sur beaucoup de serveurs, les entrées terminfo
-directpeuvent ne pas être installées- sur la plupart des systèmes, la base terminfo par défaut se trouve dans le paquet
ncurses-base - les entrées de terminaux étendues nécessitent le paquet
ncurses-term
- sur la plupart des systèmes, la base terminfo par défaut se trouve dans le paquet
- Une entrée terminfo
winconsolea été ajoutée à ncurses pendant la rédaction, mais elle ne prend pas en charge la couleur 24 bits et n’a encore été publiée dans aucune version de ncurses
Comment Emacs détecte le truecolor
- Emacs documente sa manière de détecter la prise en charge du truecolor sur un TTY
- En lançant
(display-color-cells)viaM-x eval-expression, on peut vérifier si Emacs reconnaît 16 777 216 couleurs - La documentation d’Emacs traite aussi des limites terminfo du mode
-direct- sur les terminaux disposant de la capacité
RGB, les couleurs de#000001à#000007peuvent être traitées comme des couleurs indexées plutôt que comme du RGB direct - cela sert à conserver la compatibilité descendante avec les applications qui ne connaissent pas la couleur directe
- si cela pose problème, on peut utiliser une définition de terminal personnalisée avec
setb24etsetf24
- sur les terminaux disposant de la capacité
- Emacs cherche d’abord les chaînes
setf24etsetb24, puis utiliseRGBcomme solution de repli - Dans les entrées terminfo observées sur le système,
setf24n’était pas présent
Dans des terminaux imbriqués, toutes les couches doivent être correctes
- Un flux de travail courant empile plusieurs couches de terminal
- ouvrir un émulateur de terminal graphique sur le poste local
- se connecter à une machine distante ou à une VM via mosh
- démarrer tmux
- ajouter ensuite un terminal interne à Emacs, Asciinema, GNU Screen, etc.
- Chaque couche implémente sa propre machine à états de séquences d’échappement ANSI
- Pour que la couleur 24 bits fonctionne, toutes les couches doivent comprendre les séquences d’échappement générées à partir du terminfo de la valeur
TERMinterne, et les transmettre correctement en fonction du terminfo externe - Les logiciels concernés doivent donc être suffisamment récents
- Ubuntu LTS fournit actuellement mosh 1.3, il a donc fallu activer le PPA mosh-dev
- La valeur de
TERMà l’intérieur de chaque couche doit aussi être exacte- à l’intérieur de tmux, on utilise
tmux-direct - mosh n’a pas de terminfo standard, il faut donc choisir une valeur suffisamment proche
- à l’intérieur de tmux, on utilise
Réglages selon l’environnement
-
Émulateur de terminal graphique
- la plupart des terminaux définissent un
TERMadapté par défaut, ou permettent à l’utilisateur de le surcharger - Konsole propose une option pour choisir la valeur de
TERM
- la plupart des terminaux définissent un
-
ssh
sshtransmet la valeur deTERMau nouveau shell- si l’hôte distant possède la même entrée terminfo, la configuration reste relativement simple
-
tmux
- lorsque tmux démarre,
TERMpeut être défini surscreen - on corrige cela en changeant le terminal par défaut dans
~/.tmux.conf
set -g default-terminal "tmux-direct"- on peut aussi envisager de définir
tmux-directuniquement si leTERMextérieur prend en charge la couleur 24 bits, et sinon conserverscreenoutmux-256color
- lorsque tmux démarre,
-
mosh
- les versions récentes de mosh prennent en charge la couleur 24 bits, mais n’annoncent d’elles-mêmes que 8 ou 256 couleurs
- l’utilisateur doit donc définir
TERMde façon appropriée - mosh vise la compatibilité xterm, mais dans SGR 38 et 48, il ne prend en charge que la syntaxe à points-virgules
TERM=xterm-directne fonctionne pasvscode-directa été utilisé comme alternative la plus proche dexterm-direct- comme il n’existe pas de variable simple pour indiquer que mosh est en cours d’utilisation, un script
detect-mosh.rsa été écrit puis appelé depuis.bashrc - il vérifie si le processus shell est un enfant de
mosh-server - il n’a pas été établi avec certitude si compiler du Rust pendant le chemin de connexion convient aux hôtes peu puissants
Résultat final et problèmes restants
- Après configuration, le thème s’affiche en couleur 24 bits dans Emacs, y compris à l’intérieur de tmux et de mosh
- Il reste trois problèmes principaux
- les terminaux ne sont pas totalement d’accord sur la syntaxe et les fonctionnalités
- terminfo est la voie standard pour interroger les capacités
- terminfo est limité, parfois inexact, et les nouvelles versions sortent peu fréquemment
Quelle suite après terminfo
- Les logiciels qui veulent exploiter pleinement les fonctionnalités des terminaux modernes doivent dépasser terminfo
- Directions possibles
- continuer à utiliser la variable
TERM, largement prise en charge - ne pas dépendre uniquement du terminfo ancien fourni par l’OS ou la distribution, et permettre au programme de connaître les capacités du terminal indépendamment
- intégrer dans une bibliothèque mise à jour fréquemment des informations sur les émulateurs de terminaux d’environ la dernière décennie, classées par nom et version
- ne plus inclure la prise en charge des terminaux matériels devenus difficilement utilisables
- continuer à prendre en charge les fichiers terminfo fournis par l’OS et leur format, mais avec un protocole permettant de savoir quelle information est la plus récente
- ajouter un
TERMVERSIONoptionnel pour distinguer, par exemple, les différences de capacités entre Konsole 2022 et Konsole 2023 - représenter sans ambiguïté des fonctions modernes comme la couleur 24 bits, l’animation de palette 256 couleurs, les liens URL, ou le protocole graphique Kitty
- continuer à utiliser la variable
- Une approche rétrocompatible pour les programmes legacy est aussi possible
- un programme lancé depuis
.bashrcutiliseraitTERMetTERMVERSIONpour générer dans$HOME/.terminfo/un fichier terminfo binaire - il générerait des capacités 24 bits explicites comme
RGB,setf24,setb24 - les programmes qui ne connaissent pas RGB pourraient supposer une palette 256 couleurs, avec conservation de
colors#0x100,initc,oc
- un programme lancé depuis
1 commentaires
Avis de Hacker News
Fouiller dans terminfo, c’est comme éclairer des hiéroglyphes avec une torche vacillante au fond de catacombes
C’est presque étrange quand on pense à toute la complexité que contient une simple application de terminal, et cela rend encore plus reconnaissant envers les développeurs de terminaux comme iTerm et Kitty
J’ai regroupé des fonctions pour définir la couleur des onglets dans iTerm+zsh : https://gist.github.com/aclarknexient/84ebe33c1879f921685304...
Comparé à l’ancienne façon de se connecter à HTTP ou SMTP avec telnet, le texte lui-même est simple, mais ce qui l’affiche est une application complexe qui prend en charge toutes sortes de fonctionnalités
Aujourd’hui, c’est un choix possible parce que je suis pratiquement le seul utilisateur de ce terminal, mais les terminaux modernes prennent en charge un sous-ensemble commun assez large, ce qui est moins pénible que de voir les applications ne pas reconnaître une valeur
TERMinconnue et partir en vrilleBien sûr, si l’on ne se connecte pas souvent en SSH à de nouvelles machines, c’est un problème moins important
Ce n’est pas l’émulateur de terminal le plus rapide, mais visuellement, c’est de très loin le meilleur
Il était plus simple d’ajuster la palette 16 couleurs de chaque application de terminal que d’aligner précisément le code terminal côté application
Je définis les couleurs de rxvt-unicode dans
~/.Xdefaults, puis, dans le thème Emacs.el, je choisis des noms de couleurs différents selon qu’il s’agit d’un affichage graphique ou non, avant de les appliquer à plusieurs facesEn bonus, la sortie colorée de
lsdevient aussi plus agréable à lire. La palette 16 couleurs par défaut est souvent trop saturée et offre un mauvais contraste(if (display-graphic-p)qui est essentielEmacs prend en charge une vraie sortie graphique et, sous X11/Cocoa/Win32, Esc se comporte vraiment comme Esc ; les raccourcis Ctrl+Shift ou Cmd, l’utilisation simultanée de plusieurs polices, l’affichage d’images, le changement de forme du curseur, etc. sont possibles
C’est comme une machine à remonter le temps qui nous emmènerait 20 ans plus tard, en 1989
Une ligne rouge était soit rouge intense, soit éteinte, et avec l’ajout de la ligne d’intensité, cela donnait du rouge à 100 %
DIRCOLORS,lsprend lui aussi réellement en charge les couleurs 24 bitsLes couleurs par défaut sont trop sombres par rapport à un fond sombre, donc j’ai augmenté la luminance de toutes les couleurs
L’auteur aurait probablement eu beaucoup moins de mal s’il avait connu
export COLORTERM=truecolorCela apparaît aussi dans la note de bas de page de la documentation Emacs liée sur la détection du truecolor, ainsi que dans la capture d’écran de Konsole, mais il est possible que la variable ait disparu à travers plusieurs couches de multiplexeurs de terminal
En définissant cette valeur, l’application comprend immédiatement que l’on veut du truecolor, ce qui permet de contourner la partie difficile, sans même avoir besoin de la base de données terminfo
RGBCela dit, tous les programmes ne respectent pas COLORTERM ; j’ai donc déjà eu, dans
.bashrc, une configuration qui faisait un unset deCOLORTERMpourlinux | screen*et exportaitCOLORTERM=truecolordans les autres casAujourd’hui, Screen prend en charge les couleurs 24 bits, donc c’était probablement une configuration de l’époque d’Ubuntu 18
trampousshfsD’un autre côté, c’est aussi parce que les mainteneurs de ncurses sont assez conservateurs, tandis que les nouveaux développeurs de terminaux veulent avancer vite
Avec les versions plus anciennes d’Emacs, elle reste nécessaire
La plupart du temps, il n’est pas nécessaire de le définir, mais si
COLORTERM=truecolorest défini dans une session screen, l’affichage devient soudain très étrange, puis redevient normal quand on supprime la variable d’environnementIl n’est pas indispensable d’utiliser un terminal pour interagir avec Emacs
On peut utiliser des frontends graphiques pour macOS, Windows, X.org et Wayland
Avec la barre d’outils désactivée, Emacs graphique ressemble tellement à Emacs tournant dans un terminal que quelqu’un qui ne connaît pas Emacs peut facilement prendre la fenêtre Emacs graphique sur l’ordinateur d’un collègue pour une fenêtre de terminal
Dans une enquête auprès des utilisateurs d’Emacs, 80 % ont répondu utiliser un frontend graphique
xterm-mouse-modesuffit déjà à obtenir 80 % des avantagesAvec
mouse,xterm-mouse-mode,mouse-wheel-mode, des réglages de défilement, etc., cela devient tout à fait utilisable, etauto-save-defaultreste, par la volonté divine, ànilTous les programmes de terminal sont exécutés dans des buffers shell-mode d’Emacs graphique, et je n’utilise term-mode que pour les rares programmes qui ont besoin d’un contrôle plein écran
Ce n’est pas le plus riche en fonctionnalités ni le plus rapide, mais on peut s’y déplacer comme dans n’importe quel autre buffer et le manipuler de façon fluide avec le contenu en cours d’édition
Si je ne peux pas lancer Emacs graphique sur une machine distante, j’édite les fichiers distants avec tramp, ou je lance un serveur Emacs headless puis je m’y connecte avec un emacsclient graphique
Je n’avais jamais envisagé que les gens puissent penser que je fais tourner Emacs dans le terminal
Emacs graphique est nettement meilleur, mais le fait que, même dans le terminal, 90 % fonctionnent et s’affichent encore de la même manière reste excellent
À l’usage, c’est aussi léger qu’un terminal, pas du tout comme VNC
On bénéficie des polices, de l’utilisation simultanée de plusieurs polices, des menus, de la souris, des couleurs et de plusieurs frames/fenêtres
En faisant tourner la partie graphique en local et en accédant aux systèmes distants avec tramp, on peut en pratique éditer même les fichiers de configuration d’un routeur Linux distant qui n’a quasiment que busybox, avec toutes sortes de fonctions de confort
J’utilise X11 par intermittence depuis les années 90, mais pour les polices j’en suis encore à chercher jusqu’à tomber par hasard sur une commande qui marche, puis à ne plus y toucher
Les performances d’affichage de la plupart des programmes de terminal restent nettement plus rapides que celles des configurations X11 qu’on se retrouve à utiliser en environnement d’entreprise
Aujourd’hui, il suffit d’installer un Emacs récent, d’ouvrir un terminal prenant en charge xterm 24 bits, puis de lancer
emacs -nwSi, après application d’un thème, le rendu est correct, c’est terminé ; sinon, ajoutez
export COLORTERM=truecolordans.bashrc,.zshrc,.fishrc, etc., puis rechargez le shell ou exécutez simplement cette ligne et relancezemacs -nwL’article donne l’impression qu’il faut fouiller dans terminfo, mais en général ce n’est pas nécessaire. Il y a dix ans peut-être, mais plus aujourd’hui
J’ai rapidement revérifié avec iTerm sur macOS et Alacritty, Kitty et Gnome Terminal sur Linux, et la prise en charge de xterm 24 bits est aujourd’hui courante
J’ai découvert aujourd’hui que les séquences d’échappement ANSI standard fonctionnent aussi dans l’invite de commandes de Windows 10
Les couleurs 24 bits fonctionnent également très bien
En exécutant
echo ^[[48;2;255;0;0mHello^[[0m, Hello s’affiche avec un fond rougeRGB(255,0,0), et^[[0mréinitialise la couleur^[doit être saisi avecCTRL-[; il ne faut pas taper^et[séparément\x1bou l’alias\eavec une commande qui accepte les codes d’échappementPar exemple, on peut écrire
echo -e '\e[48;2;255;0;0mHello\e[0m'Cela dit, dans les scripts,
echo -en’est pas standard et mêmeechosimple varie dans certains cas limites ; il vaut donc mieux toujours utiliserprintf '\e[48;2;255;0;0mHello\e[0m\n'DEVICE=C:\DOS\ANSI.SYSau fichierC:\CONFIG.SYSComparé à vim/neovim, le meilleur aspect d’Emacs est qu’il dispose d’une prise en charge GUI de première classe, et pas seulement d’un émulateur de terminal à l’intérieur d’une fenêtre
Je sais qu’il existe gVim et de nombreux frontends neovim assez moyens, mais le mode d’exécution par défaut d’Emacs est une vraie GUI, et c’est ce que j’apprécie
Le terminal est très bien aussi, mais il traîne trop de scories historiques et de limitations, et beaucoup de choses n’ont plus vraiment de sens à notre époque
Si le problème est d’exécuter Emacs sur un serveur distant, il y a TRAMP et emacsclient
C’est frustrant quand une application GUI empêche de copier le texte qu’elle affiche et oblige à le retaper à la main
https://github.com/neovim/neovim/wiki/Related-projects#gui
J’aime beaucoup l’édition modale et vim, mais j’ai eu du mal à supporter les solutions bancales qu’imposent les éditeurs en terminal
Quand on dispose d’une plateforme graphique riche, pourquoi ne pas l’utiliser ?
Par exemple, j’utilise vim presque uniquement pour éditer des fichiers, et je reviens au shell pour les outils externes comme
git, les linters, les formatters, les débogueurs ou la manipulation de l’arborescence des fichiersMon application principale est donc déjà l’émulateur de terminal, et dans ce workflow, l’absence de GUI dédiée importe très peu
Moi, j’aimerais plutôt que mon Emacs ressemble à ça : https://imgur.com/a/h0jA1ro
Je ne suis pas sérieux, c’est une blague. Je n’utilise Cool Retro Term que pour les présentations
À ce que je vois, les couleurs 24 bits fonctionnent par défaut dans mon Emacs : https://imgur.com/a/BM5OTxp
Cela dit, la coloration syntaxique est un peu agaçante
Cool Retro Term est excellent, et j’aimerais aussi l’utiliser dans une présentation
Personnellement, je trouve que les autres terminaux rétro ne sont pas aussi beaux
C’est vraiment honteux d’avoir enfermé des standards derrière un prix aussi élevé
Les gens doivent faire autant de détours pour éviter de les acheter, et cela peut même mener à ce genre de résultat
Un standard devrait être accessible. À l’époque où ils n’existaient qu’en livres, faire payer les coûts d’impression pouvait se comprendre, mais difficile de croire qu’un PDF médiocre coûtait 200 dollars
J’ai écrit le patch de couleurs 24 bits pour xterm, mais ce n’est qu’aujourd’hui que j’ai appris comment faire fonctionner ncurses avec
xterm-directJ’utilisais déjà ma propre bibliothèque de terminal écrite en Lisp, mais il reste utile d’avoir une voie de secours avec ncurses
Merci à M. Dickey pour sa réponse sur Stack Overflow, et à Chad pour avoir soulevé le sujet