Carbonyl glisse Chrome dans une fenêtre de terminal parce que… pourquoi pas ?

Nicolas Furno |

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.

Carbonyl en action pour afficher le site de Wikipédia.

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
Ça marche !

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.

avatar hirtrey | 

Aucun intérêt de plus Lynx existe encore

avatar Ensearque | 

@hirtrey

Pour du développement ou en programmation ça peut être vachement efficace.

Personnellement, si ça peut m’éviter de devoir avoir constamment un onglet ouvert sur un serveur jupyter ou de naviguer via le serveur distant je pourrais m’y pencher sérieusement comme solution alternative

avatar lepoulpebaleine | 

@hirtrey

J’allais en parler. Lynx c’est vraiment le top 😎 😂

avatar BeePotato | 

«  En un sens, Carbonyl pourrait être un retour aux sources »

Pas d’accord : à la source du web se trouvait un navigateur à interface graphique.
Les machins textuels n’ont toujours été que des adaptations et n’ont jamais été très répandus.

Ça reste un concapt amusant toutefois. 🙂

avatar Mrleblanc101 | 

@BeePotato

Oui, une interface graphique, mais du HTML sans style... Donc bel et bien une sort e de retour au source

avatar BeePotato | 

@ Mrleblanc101 :
Il n’y avait pas de CSS, mais il y avait tout de même bien la possibilité d’appliquer un peu de style au fil du texte, avec les options de formatage classiques : gras, italique, souligné, couleur, taille, justification.
Et il y avait des images affichées en tant que telles, bien que séparément du texte.

avatar Mrleblanc101 | 

@BeePotato

Et c'est bien possible de faire tout ça dans un terminal 🤦‍♂️

avatar BeePotato | 

@ Mrleblanc101  : « Et c'est bien possible de faire tout ça dans un terminal 🤦‍♂️ »

L’affichage des images ? 🤣
Des polices de caractères différentes et affichées à diverses tailles ? 🤣 🤣 🤣

Et quand bien même ce serait possible, ce n’était pas du tout là la question : la source du web ne se trouvait pas dans une interface textuelle emprisonnée dans un terminal, c’est tout.

🤦‍♂️🤦‍♂️🤦‍♂️🤦‍♂️🤦‍♂️🤦‍♂️🤦‍♂️🤦‍♂️🤦‍♂️🤦‍♂️🤦‍♂️🤦‍♂️
😉

avatar machack | 

Ca fonctionne du coup via ssh ? C’est super pratique quand on se connecte a un serveur distant. Lynx c’est quand meme bien limité

avatar Nicolas Furno | 

@machack

Oui, la capture d’écran de MacG, c’est en SSH sur un de nos serveurs vu que je n’ai pas Docker sur mon Mac.

avatar ech1965 | 

@beepotato
C’est ironique j’imagine ?
La source de l’informatique ( web compris) c’est le texte
Les gui ont été à la base des dérives des tui

avatar marc_os | 

@ ech1965

> la base des dérives des tui

TUI, Voyagez avec le sourire 🤪

avatar BeePotato | 

@ ech1965 : « C’est ironique j’imagine ? »

Aucunement. Je parlais bien des origines du web, conçu d’emblée pour un usage via une interface graphique et pas du tout pour une navigation dans une interface en mode textuel.

« La source de l’informatique ( web compris) c’est le texte »

La source de l’informatique, c’est les math. Le texte n’en est qu’une représentation. 😉

« Les gui ont été à la base des dérives des tui »

Pas sûr de comprendre cette phrase. Je vais la prendre dans le sens « GUI = dérivés des TUI » (désolé si c’est un contre-sens).
Et du coup, pas vraiment, non. Les interfaces graphiques ont été imaginées, puis développées, en parallèle des interfaces textuelles. Bien sûr, ces dernières ont été utilisées à large échelle bien plus tôt, car nettement plus simples à réaliser.

avatar ipaforalcus | 

@BeePotato

Je suis curieux de savoir comment tu fais des maths sans représentations ? ;)

avatar BeePotato | 

@ ipaforalcus : « Je suis curieux de savoir comment tu fais des maths sans représentations ? »

Qui a parlé de faire ça ?
C’est juste que la représentation utilisée n’est pas forcément textuelle. 😉

avatar marc_os | 

> vous n’avez besoin que d’un terminal moderne

Donc ça ne tourne pas dans le Terminal.
C'est juste une interface moisie sans intérêt.
Si au moins ça générait de l'ASCII art dans Terminal.app, alors là ça serait rigolo.

PS: Aux premiers temps d'internet, là où j'étais on communiquait par l'outil en ligne de commande mail sous Unix. 100% "textuel".
Si vous voulez tester, tapez "mail" dans le Terminal.
Ça existe toujours !

avatar Nicolas Furno | 

@marc_os

Raté, ça tourne. C’est un peu moins joli que dans iTerm2, mais ça fonctionne très bien.

avatar marc_os | 

@ Nicolas Furno

> @marc_os
> Raté, ça tourne

J'ai dit que "ça tournait pas" ? 😳

avatar Nicolas Furno | 

@marc_os

Ben oui.

avatar marc_os | 

@ Nicolas Furno

> Ben oui.

Que veut dire alors "vous n’avez besoin que d’un terminal moderne" ?
Je ne comprends pas car votre phrase sous-entend que Terminal.app ne suffit pas.

Le Terminal est-il un "Terminal moderne" ?
Si oui et si ça tourne dans le Terminal, pourquoi avoir donné cette précision ?

avatar Nicolas Furno | 

@marc_os

Ma phrase ne sous-entend absolument pas ça et en effet, le Terminal de macOS est un terminal moderne.

iTerm2 a quelques fonctions supplémentaires qui améliorent encore le rendu, voilà pourquoi.

avatar marc_os | 

@ Nicolas Furno

> Ma phrase ne sous-entend absolument pas ça

Bien sûr que si.
- Il n'est écrit nulle part au monde que le Terminal est un "terminal moderne", quoique "moderne" veuille dire. (Moderne ça ne veut rien dire.)
- donc il y a moderne et moderne.

Bref, au café du commerce le patron a toujours raison.

avatar ipaforalcus | 

@marc_os

Exactement patron, vous savez mieux que lui ce qu'il a voulu dire :p

avatar blogostef | 

C‘est un peu le dual de ceux qui veulent faire tourner d‘anciens OS dans un navigateur moderne.
C‘est un beau petit projet, mais pas certain qu‘il y ait un quelconque intérêt pour la plupart des usages de navigateur. Je serais curieux de savoir la puissance de calcul demandée avec toutes ces étapes de conversion html -> svg -> ascii. Pas si léger que ça en fait!

avatar ever1 | 

Ca peut être très utile pour développer des bots. J’ai eu besoin de chrome + web driver il y a pas longtemps. Si ça permet d’éviter d’installer chrome sur un serveur et d’utiliser ça via webdriver c’est vraiment genial

avatar bunam | 

Dingo ce truc ;)
Si on recherche une expérience Minitel avec des sites actuels on l'a !!
J'ai essayé avec iTerm2

CONNEXION UTILISATEUR