Le créateur de Carbonyl a eu une idée étrange : faire tourner un navigateur web… dans un terminal destiné normalement aux lignes de commande et au texte seul. En réalité, cette idée ne semblera pas étrange aux plus sages parmi nous, qui se rappellent que c’était une méthode courante les premières années du web, mais on est rapidement passé aux navigateurs graphiques à partir des années 1990 et jusqu’aujourd’hui. En un sens, Carbonyl pourrait être un retour aux sources, sauf que cette démonstration technique repose sur une base nettement plus moderne que les navigateurs textuels d’antan.
Sous le capot, son développeur est parti de Chromium, la version open-source de Chrome. Le défi a été de convertir les pages web en caractères que le terminal pourra afficher, sachant que les applications modernes gèrent désormais la couleur. Carbonyl repose sur une brique nommée html2svg qui, comme son nom le suggère, convertit la page web en une image vectorielle au format SVG. Cette image est ensuite convertie en une série de caractères. Tout ce qui n’est pas du texte est rendu avec un petit carré multiplié et arrangé pour former des lignes et autres formes géométriques, mais aussi des images.
La définition est loin d’être aussi bonne que dans un navigateur web standard, mais Carbonyl parvient ainsi à garder l’aspect général de la page web. Reste ensuite à gérer toutes les interactions possibles : les clics sur des liens, la saisie de texte et même le défilement. Ce sont des opérations que les terminaux modernes, comme iTerm2, gèrent très bien, même s’il a fallu ruser pour obtenir de bonnes performances. Si le détail vous intéresse, Fathy Boundjadj a publié un article de blog complet pour détailler le processus de développement.
Et si vous voulez tester, sachez que vous n’avez besoin que d’un terminal moderne et d’une machine équipée de Docker. Une seule ligne de commande va ensuite se charger de télécharger les ressources, de créer un conteneur avec Carbonyl et d’afficher le site web de votre choix dans le navigateur. Vous pourrez toujours ouvrir n’importe quel site par la suite grâce aux liens hypertextes, mais le nom de domaine initial doit être saisi dans cette ligne de commande, par exemple :
docker run -ti fathyb/carbonyl https://www.macg.co
Carbonyl n’est pas pensé pour remplacer un vrai navigateur, mais c’est une démonstration technique assez impressionnante malgré tout. C’est aussi un projet open-source et tout le code en Rust est distribué sur GitHub si vous voulez y jeter un œil et même contribuer à son développement, si vous avez les connaissances techniques.