Kovid Goyal on Kitty What’s Next for the Terminal

Kovid Goyal, créateur de Kitty et Calibre, présente les dernières innovations de son terminal, en particulier les améliorations liées à la souris et un nouveau protocole de glisser-déposer, tout en réaffirmant sa vision d'améliorer l'écosystème terminal dans son ens...

Voir la source

SYNTHÈSE STRUCTURÉE

Philosophie et motivation derrière Kitty

Kovid Goyal a créé Kitty par nécessité personnelle, cherchant un terminal suffisamment rapide pour son workflow dans Vim. Sa philosophie est double : fournir un terminal extrêmement performant et scriptable, et pousser les frontières de l’écosystème terminal en concevant de nouveaux protocoles ouverts. Comme il l’explique, son objectif est de “rendre l’expérience du terminal et du système d’exploitation plus fluide, car ils semblent être des mondes différents. Ils ne sont pas connectés. J’essaie de les rapprocher”. 🎯

Les protocoles Kitty comme moteur d’innovation

Kitty n’est pas qu’un émulateur de terminal, c’est une plateforme d’innovation. Kovid a conçu plusieurs protocoles pour résoudre des problèmes de fond :

  • Le protocole graphique : Conçu pour remplacer Sixel, il supporte les couleurs 24-bit, la transparence, les animations et permet des transferts optimisés via la mémoire partagée. Sa motivation personnelle était de pouvoir visualiser des différences (diffs) d’images directement dans le terminal.
  • Le protocole clavier : Il résout l’ambiguïté historique de la touche Escape et permet l’utilisation fiable de tous les modificateurs (Ctrl, Alt, Super, etc.), même via SSH. “Cela a finalement apporté un peu de bon sens à l’espace des entrées clavier dans le terminal”.
  • Le protocole de dimensionnement de texte : Il permet aux applications et au terminal de s’accorder sur la largeur des caractères (crucial pour l’internationalisation) et introduit la possibilité d’afficher du texte de différentes tailles (titres, notes de bas de page) tout en restant compatible avec le modèle de grille traditionnel.
  • Le protocole de presse-papiers : Il étend OSC52 pour supporter tous les types de données (images, documents) et introduit un système de permissions granulaire et sécurisé, particulièrement utile avec les agents IA en CLI.

Démonstration des nouvelles fonctionnalités souris

Bien que se décrivant comme “un grand adepte du clavier”, Kovid montre plusieurs améliorations récentes pour l’interaction souris dans Kitty, souvent issues de contributions externes :

  • Redimensionnement et réorganisation des fenêtres : Il est désormais possible de redimensionner les splits avec la souris en faisant glisser leurs bordures, et de réorganiser les onglets ou les fenêtres par glisser-déposer dans la barre d’onglets ou via des barres de titre actives.
  • Défilement pixel par pixel : Grâce à un contributeur, Kitty peut maintenant défiler de manière fluide, moins d’une ligne à la fois, avec un effet d’inertie, offrant une expérience de navigation plus moderne dans l’historique (scrollback).

Le nouveau protocole de glisser-déposer (Drag & Drop)

C’est la nouveauté majeure en cours de développement. Motivé par une demande du développeur de Yazi, ce protocole permet des transferts de fichiers natifs entre le gestionnaire de fichiers du système d’exploitation et des applications terminal, y compris via SSH.

# Exemple : Lancer un démonstrateur du protocole (une 'kitten')
kitten mouse_demo

Lors de la démo, Kovid montre qu’il peut glisser un fichier depuis Dolphin (le gestionnaire de fichiers) et le déposer dans la kitten en cours d’exécution sur une machine distante accessible via SSH. L’application distante reçoit alors le fichier dans son intégralité. “Vous pouvez avoir cette kitten qui tourne via SSH sur deux ordinateurs distants différents et faire du glisser-déposer entre eux”. Ce protocole vise à combler un fossé d’utilisabilité pour des transferts ponctuels.

Intégration avec les éditeurs (Neovim) et l’écosystème

Kovid utilise Neovim depuis des décennies, un choix initial dicté par l’ergonomie pour ses “grandes mains”. Il évoque le long chemin d’adoption des nouveaux protocoles par les applications. Concernant l’affichage d’images dans Neovim, il déclare : “J’ai fait ma part pour ça. J’ai créé un joli protocole, je l’ai documenté minutieusement. Maintenant, c’est à quelqu’un d’autre de faire avancer la balle”. Il mentionne également des intégrations avancées possibles via la configuration de Kitty, comme des mappings conditionnels qui ne s’activent que lorsque la fenêtre focalisée est Neovim.

Critères d’acceptation des nouvelles fonctionnalités

Kovid clarifie sa position sur l’ajout de fonctionnalités : il les aime, mais elles doivent passer un filtre exigeant. “Mon critère d’acceptation est que la fonctionnalité doit être inoffensive. Elle ne doit pas ajouter trop de complexité de performance ou de code, ou de charge de maintenance”. Une PR doit être utile pour une fraction significative des utilisateurs, et son code doit respecter les standards de qualité du projet.

CONCEPTS CLÉS

  • Kitty : Un émulateur de terminal GPU-accéléré, hautement scriptable et axé sur la performance.
  • Kitten : De petits scripts fournis avec Kitty (ou écrits par l’utilisateur) qui utilisent son API de contrôle à distance pour automatiser des tâches.
  • Protocoles Kitty : Des spécifications ouvertes (graphiques, clavier, dimensionnement de texte, presse-papiers, glisser-déposer) conçues pour étendre les capacités de l’écosystème terminal au-delà de Kitty.
  • Chaïa : Une bibliothèque qui permet d’afficher des images dans un terminal en utilisant automatiquement le meilleur protocole supporté (Sixel, iTerm2, Kitty, ou les caractères bloc).
  • Undercurl : Le protocole Kitty pour les décorations de texte (soulignés colorés, ondulés, barrés), initialement créé pour les erreurs de compilation dans Vim.

CONCLUSION

Kovid Goyal démontre que l’innovation dans le terminal est loin d’être terminée. Au-delà des gains de performance, son travail consiste à identifier et résoudre des points de friction profonds entre le terminal, le système d’exploitation et les applications modernes, en concevant des protocoles robustes et ouverts. Le nouveau protocole de glisser-déposer, bien qu’apparemment simple, illustre parfaitement cette quête : rendre l’interaction entre les mondes GUI et TUI aussi transparente et naturelle que possible. Son message est que le terminal peut et doit continuer à évoluer pour rester un environnement de productivité de premier ordre, en s’attaquant méthodiquement aux “douleurs” des utilisateurs avancés.