2 points par GN⁺ 2024-01-31 | 1 commentaires | Partager sur WhatsApp

Je voulais juste rendre Emacs plus joli — utiliser la couleur 24 bits dans le terminal

  • La communauté Emacs est active et, via LSP, offre des fonctionnalités modernes d’autocomplétion et de vérification de types en ligne.
  • Dans un environnement graphique, Emacs prend automatiquement en charge les couleurs 24 bits, mais pas dans le terminal.

Codes d’échappement ANSI

  • Les premiers terminaux matériels proposaient des codes de contrôle incompatibles entre eux, et ANSI les a standardisés.
  • SGR (Select Graphics Rendition) permet de définir divers attributs d’affichage des caractères.

Couleurs sur 3, 4 et 8 bits

  • Lors de l’introduction de la couleur, il existait 8 couleurs de base, puis des couleurs claires ont été ajoutées pour atteindre un total de 16 couleurs.
  • En 1999, Todd Larason a ajouté à xterm un patch apportant la prise en charge de 256 couleurs.

D’où vient la prise en charge de la couleur 24 bits ?

  • La manière d’envoyer des couleurs 8 bits et 24 bits à des terminaux compatibles est bien documentée.
  • Avec le processus de normalisation ANSI des années 1970 puis ISO 8613-6 (ITU T.416) dans les années 1990, 38 et 48 ont été définis comme modes étendus de couleur de premier plan et d’arrière-plan.

Terminfo

  • Terminfo fournit une base de données des capacités des terminaux, et la variable d’environnement TERM indique aux programmes quelle entrée terminfo utiliser.
  • xterm-256color et xterm-direct prennent respectivement en charge 256 couleurs et les couleurs RGB.

Réglage de TERM : le problème des points-virgules

  • Comme plusieurs terminaux ne prennent en charge que la syntaxe avec points-virgules, il faut vérifier que TERM est correctement configuré.

Configuration d’Emacs

  • Emacs documente la manière de détecter la prise en charge du truecolor.
  • RGB est la fonctionnalité de couleur par défaut d’Emacs, qui recherche d’abord les chaînes setf24 et setb24.

Terminaux imbriqués

  • Un workflow courant consiste à utiliser plusieurs terminaux imbriqués.
  • Toutes les couches doivent comprendre les couleurs 24 bits et les convertir correctement.

Émulateur de terminal graphique

  • La plupart des terminaux définissent TERM sur une valeur par défaut raisonnable ou permettent de le surcharger.

ssh

  • ssh transmet la valeur de TERM à l’hôte distant.

tmux

  • Dans tmux, il faut définir un TERM comme tmux-direct.

Avis de GN⁺

  • Le point le plus important de cet article est la demande des utilisateurs d’utiliser des couleurs de haute qualité même dans un environnement terminal, ainsi que les avancées techniques qui le rendent possible.
  • La prise en charge des couleurs 24 bits est une fonctionnalité importante qui permet aux développeurs d’offrir une meilleure expérience utilisateur, en améliorant nettement le confort visuel, notamment dans des outils comme les éditeurs de code.
  • Cet article intéressera et aidera les utilisateurs de terminaux et d’Emacs, et fournit des informations utiles à ceux qui recherchent une excellente expérience visuelle même dans un environnement de travail basé sur le terminal.

1 commentaires

 
GN⁺ 2024-01-31
Avis Hacker News
  • Exprime sa surprise face à la complexité des applications de terminal et remercie les développeurs d’applications de terminal comme iTerm et Kitty.

    • Partage un lien rassemblant des fonctions de configuration des couleurs d’onglets pour iTerm et zsh.
    • Souligne la complexité des interfaces textuelles en comparant terminfo aux anciennes méthodes de connexion à HTTP ou SMTP via telnet.
  • Pense personnellement qu’ajuster la palette 16 couleurs pour chaque application de terminal est plus simple que d’aligner précisément le code terminal côté application.

    • Fournit des exemples de code pour définir les couleurs dans le fichier .Xdefaults et dans un fichier de thème personnalisé .el.
    • Mentionne que cela améliore aussi les couleurs de la sortie de ls, entre autres.
  • Suppose que l’auteur aurait eu une meilleure expérience s’il avait connu export COLORTERM=truecolor.

    • Indique que la détection de la prise en charge du truecolor est mentionnée dans une note de bas de page de la documentation Emacs et apparaît aussi dans une capture d’écran de Konsole, mais qu’on peut facilement passer à côté au milieu des multiples couches d’un multiplexeur de terminal.
    • Explique que ce réglage permet d’éviter une configuration complexe et de passer directement à l’étape où l’application comprend qu’elle doit utiliser le true color.
  • Souligne qu’il n’est pas nécessaire d’utiliser un terminal pour utiliser Emacs, et qu’on peut employer un frontal « graphique » pour MacOS, Windows, X.org ou Wayland.

    • Mentionne que l’Emacs graphique ressemble à une exécution dans un terminal, mais dispose en réalité de nombreuses fonctionnalités, y compris un visualiseur d’images.
    • Indique que, dans une enquête auprès des utilisateurs d’Emacs, 80 % ont répondu utiliser le frontal graphique.
  • Fait remarquer que l’informatique a peut-être perdu sa direction, avec des systèmes de production qui utilisent encore des émulateurs de terminal, des éditeurs et des versions de systèmes d’exploitation des années 1970.

    • Critique le fait que, bien que les ordinateurs soient devenus des millions de fois plus puissants, nous continuions à travailler globalement de la même manière qu’il y a un demi-siècle.
  • Blague en disant qu’il veut utiliser Cool Retro Term pour rendre Emacs plus stylé.

    • Précise qu’en réalité il n’utilise Cool Retro Term que pour les présentations.
    • Dit avoir découvert que son Emacs prenait en charge la couleur 24 bits immédiatement, tout en trouvant la coloration syntaxique légèrement agaçante.
  • Découvre que les séquences d’échappement ANSI standard fonctionnent dans l’invite de commandes de Windows 10, et que la couleur 24 bits fonctionne aussi très bien.

    • Fournit un exemple de code qui affiche « Hello » sur fond rouge.
  • Mentionne que le meilleur point d’Emacs par rapport à vim/neovim est que la prise en charge GUI y est traitée comme un citoyen de première classe.

    • Note qu’il existe gVim et de nombreux frontaux neovim inachevés, mais préfère le fait qu’Emacs s’exécute nativement via une véritable interface graphique.
    • Souligne que le terminal comporte encore beaucoup de vestiges historiques et de limitations inutiles aujourd’hui.
    • Ajoute que, s’il y a un problème à exécuter Emacs sur un serveur distant, on peut utiliser TRAMP et emacsclient (et se demande si cela fonctionne via TCP).
  • Dit qu’il n’utilisera probablement pas cette fonctionnalité parce qu’il emploie une configuration Emacs avec un usage minimal des couleurs, tout en disant avoir beaucoup apprécié la lecture.

    • Mentionne s’être habitué au vert vif de tmux et aux teintes brun rouge rouillé des couleurs d’Emacs.
  • Critique le fait que les standards soient vendus à des prix si élevés que les gens sont forcés d’aller aussi loin sans les acheter.

    • Affirme que les standards devraient être accessibles publiquement, et que s’il était peut-être logique autrefois de facturer les coûts d’impression, un PDF à 200 $ est aujourd’hui incroyable.