2 points par GN⁺ 2025-06-17 | 1 commentaires | Partager sur WhatsApp
  • Chawan est un nouveau navigateur web TUI fonctionnant dans un terminal en mode texte
  • Cette version 0.2.0 inclut toutes les fonctionnalités essentielles de l’étape MVP et ne présente aucun bug critique connu
  • Seules les bibliothèques libssh2, libbrotli et OpenSSL/LibreSSL sont indispensables, plusieurs dépendances des anciennes versions ayant été supprimées
  • Une version binaire statique et un paquet .deb sont également proposés pour Linux amd64, ce qui facilite la distribution et l’installation
  • La prochaine version visera une amélioration des performances du module de mise en page ainsi qu’une meilleure expérience UI

Présentation de Chawan 0.2.0

Chawan est un navigateur web léger basé sur une interface utilisateur en terminal (TUI), conçu comme un projet open source pour permettre de naviguer simplement sur le Web dans un environnement texte. Cette version 0.2.0 est la première version stabilisée à réunir toutes les fonctionnalités majeures de l’étape MVP (produit minimum viable), sans aucun bug critique signalé à ce jour.

Distribution et installation

  • Une archive tarball de l’arborescence source est fournie, et il suffit de suivre les indications du README si vous souhaitez compiler vous-même
  • Une distribution en binaire statique pour Linux amd64 est fournie, permettant une installation simple après extraction de l’archive avec la commande make install
    • La suppression peut être effectuée avec make uninstall
  • La même distribution est également proposée au format paquet .deb, pour une installation directe sur les systèmes basés sur Debian

Informations pour les gestionnaires de paquets

  • Les dépendances d’exécution indispensables de Chawan sont les suivantes :
    • libssh2
    • libbrotli (y compris libbrotlicommon et libbrotlidec)
    • OpenSSL (3.0 ou supérieur) ou LibreSSL (tests validés sur OpenBSD 7.7)
  • Les bibliothèques zlib, libseccomp, termcap/ncurses, libcurl et autres utilisées dans les anciennes versions de développement ne sont plus nécessaires et ont donc été retirées des dépendances
  • En cas de problème lors du packaging, il est recommandé de contacter d’abord le développeur avant d’appliquer un patch, car le problème pourra probablement être résolu directement en amont

Feuille de route

  • Cette version 0.2.0 a demandé plus de temps que prévu, mais il s’agit de la version choisie pour une diffusion officielle maintenant que toutes les fonctionnalités MVP sont en place
  • La branche v0.2 ne recevra désormais que des correctifs de bugs, tandis que l’ajout de nouvelles fonctionnalités se poursuivra sur la branche master
  • La prochaine version se concentrera principalement sur l’amélioration des performances et de la précision du module de mise en page, ainsi que sur une meilleure convivialité de l’UI

Importance et avantages du projet

  • Chawan est un navigateur web optimisé pour les environnements terminal, permettant d’accéder à des contenus web sur des serveurs et dans des environnements aux ressources limitées
  • Contrairement aux navigateurs web textuels existants, il se distingue par la prise en charge de protocoles modernes de chiffrement et de compression, ainsi que par la réduction minimale des dépendances
  • Son fonctionnement open source facilite les extensions supplémentaires et la personnalisation

1 commentaires

 
GN⁺ 2025-06-17
Avis Hacker News
  • J’ai toujours un petit plaisir à voir des projets écrits en nim. J’ai l’impression que nim est l’un des langages les plus intéressants, quelque part entre C/C++ et python. Vu la taille de la communauté nim, la productivité de ses utilisateurs semble très élevée, au point de me donner l’impression que mon intuition sur nim est juste même sans bien le connaître. C’est dommage qu’il n’ait pas réussi à se développer plus largement.

  • shiomiru, je me demande quelles sont les meilleures ressources pour apprendre les concepts liés au TTY. Recommandations bienvenues, gratuites ou payantes. Pour le TTY, je connais déjà l’introduction au TTY de linusakesson.net, mais elle a la limite de ne pas couvrir termcap/terminfo/curses. Un autre commentaire mentionne aussi le livre Termcap & Terminfo d’O'Reilly (consultable en ligne ici).

    • chawan utilise son propre module de terminal personnalisé, donc je n’ai pas une très bonne maîtrise du X/Open curses standard. Pour les séquences d’échappement réelles, le document ctlseqs.ms de XTerm est une ressource extrêmement utile. J’ai aussi beaucoup puisé dans le projet notcurses de nick black, et je recommande vivement en particulier ses notes sur les « sprixels ».
  • Je trouve toujours agréable d’avoir une nouvelle approche à essayer ponctuellement pour de la recherche, sans devoir encore utiliser un autre moteur basé sur Chrome. Ce qui a été présenté aujourd’hui me donne hâte de le tester moi-même après les cours. Comme alternative très sympa, surtout dans les environnements sans sixel, je recommande le port terminal de chromium : carbonyl. Son auteur d’origine ne peut plus vraiment le développer activement, donc les fonctionnalités sont très limitées et beaucoup de choses comme les raccourcis clavier ou l’enregistrement de fichiers ne sont pas encore prises en charge. Mais je trouve sa compatibilité Web et son originalité très impressionnantes. J’espère que quelqu’un ayant des compétences en rust reprendra le projet. Quand j’ai regardé il y a quelques mois, il n’y avait pas de fork populaire.

  • J’aime vraiment ce genre de projet. J’aimerais bien voir une liste de sites orientés texte. Mes deux préférés sont plaintextsports.com et lite.cnn.com.

  • Vraiment génial. Je l’ai compilé moi-même depuis les sources avec termux sur une Lenovo M8 4e génération, et il suffit d’installer nim. J’ai été impressionné par la propreté de l’installation, même sans utilisateur root.

  • Très belle réalisation. J’ai hâte de l’utiliser en conditions réelles pour plusieurs tâches et de voir jusqu’où on peut aller. Le site HN est très agréable à consulter.

  • J’ai toujours fait en sorte que mon site reste lisible même dans Links, et maintenant j’ai l’impression d’avoir un nouveau candidat. Avec une prise en charge partielle de CSS, il y a aussi davantage de choses à considérer, comme l’espacement entre les éléments. Dans Links, margin/padding étaient totalement ignorés, ce qui permettait d’aligner proprement un menu et d’autres éléments sur une seule ligne, mais maintenant la situation devient plus délicate.

    • L’objectif de base était que ça « fonctionne simplement » sans configuration particulière, mais en réalité ce n’est pas toujours le cas. Dans ce genre de situation, il faut considérer cela comme un bug. Si du CSS personnalisé est vraiment nécessaire pour une mise en page en grille, chawan prend en charge la requête média standard grid.
  • Projet vraiment très cool, et bravo pour le fait que ce soit fait en nim. Quand je tape cha example.com, je suis un peu perdu car je ne connais pas du tout les commandes de base (hjkl, etc.). Si j’appuie sur des chiffres, ils s’affichent en bas à gauche, mais à part ça rien ne réagit. Je l’ai compilé moi-même sur MacOS Sequoia 15.5 Apple Silicon avec Nim 2.24. Les pages Web se chargent bien, mais les commandes ne fonctionnent pas. Je me demande si j’ai raté quelque chose ou si c’est un bug.

    • Même problème observé dans plusieurs terminaux : Ghostty, iTerm2 et Terminal.app.
  • Je trouve intéressant qu’il n’utilise plus termcap/ncurses. Est-ce que cela signifie qu’il gère directement le terminal ?

    • Explication : Chawan n’utilisait en pratique pas ncurses, mais seulement termcap. Comme ncurses inclut une implémentation de termcap en interne, cela peut prêter à confusion. Au départ, comme j’avais essayé w3m, j’ai commencé avec termcap, mais termcap est désormais une interface presque inutile et ne permet même pas d’exprimer la true color nécessaire sur les terminaux modernes. Son seul avantage est de pouvoir « peut-être » fonctionner sur des terminaux extrêmement anciens des années 80, mais même cela n’a plus beaucoup de valeur. Au lieu de passer à terminfo, j’ai choisi de tout abandonner et d’adopter une approche par requêtes terminal. Une base de données de terminaux est tout de même intégrée, mais uniquement pour identifier certains TERM non compatibles XTerm. Si le terminal répond correctement aux requêtes, cela fonctionne bien quel que soit le TERM.
  • J’ai été impressionné par la facilité de compilation sur macOS avec une seule commande make. Ravi de voir apparaître un remplaçant moderne à elinks.