Présentation
Emacs, l’éditeur texte extensible, intègre depuis plusieurs versions le module EWW (Emacs Web Wowser). L’auteur du billet décrit son usage quotidien d’EWW pour 85‑90 % des besoins de navigation, en s’appuyant sur les raccourcis B (précédent), U (yank URL), R (mode lecture), & (ouvrir dans le navigateur externe) et D (télécharger les images). La configuration inclut également l’ouverture de .pdf dans Emacs, de .mp4 et des liens YouTube dans mpv, ainsi que le support des protocoles gopher et gemini via elpher. Le moteur de recherche par défaut est une instance personnelle de Searx, garantissant la confidentialité.
Architecture et intégration
EWW repose sur le moteur de rendu Shr, un parseur HTML écrit en Lisp qui transforme le DOM en texte enrichi compatible avec le buffer d’Emacs. Shr gère les balises de base, les images et les GIF, mais ne supporte pas le JavaScript ni les CSS complexes, ce qui explique la limitation à des sites « sans script ». La chaîne d’affichage s’articule ainsi : récupération HTTP → Shr → buffer Emacs. Les extensions mentionnées (mpv, elpher) sont invoquées via call-process ou start-process, ce qui conserve le modèle asynchrone d’Emacs et évite le blocage de l’interface.
(use-package eww
:bind ("C-c b" . eww-back-url)
("C-c u" . eww-copy-url-at-point)
("C-c r" . eww-readable)
("C-c &" . eww-browse-url)
("C-c d" . eww-download))
;; ouvrir les vidéos avec mpv
(setq eww-download-directory "~/Downloads")
(add-to-list 'eww-url-handler-alist '("\.mp4\'" . (lambda (url) (start-process "mpv" nil "mpv" url))))Performances et limites
Le rendu Shr, dépourvu de moteur JavaScript, consomme très peu de ressources CPU et mémoire, ce qui rend la navigation fluide même sur des machines modestes ou dans un terminal Android via Termux. En contrepartie, les sites modernes qui reposent sur des frameworks SPA (React, Angular) ou sur le chargement dynamique d’images ne sont pas affichables ; l’auteur indique un recours à un navigateur « classique » pour 5‑10 % des cas (vidéos, réseaux sociaux, banques en ligne). L’absence de sandbox JavaScript élimine une classe de vulnérabilités XSS, mais ne protège pas contre les attaques au niveau du protocole HTTP ou les fuites de métadonnées liées à la configuration d’Emacs.
Implications pour le flux de travail
En forçant chaque URL à passer d’abord par EWW, l’utilisateur obtient une couche de filtrage implicite : les pages nécessitant du script sont immédiatement redirigées vers le navigateur externe via &. Cette approche favorise la concentration, réduit les distractions liées aux recommandations algorithmiques et encourage la consultation de documentation technique ou de blogs, qui sont généralement statiques. Cependant, la dépendance à une configuration manuelle (bindings, handlers, instance Searx) impose une courbe d’apprentissage et limite la portabilité du workflow à d’autres environnements Emacs non configurés de façon identique.