Journal Next browser 1.3.2: réagir aux évènements avec les hooks, paquet Debian tout frais et plus encore

14
25
sept.
2019

Sommaire

Bonjour cher 'nal,

Les choses vont bon train en ce moment chez le projet Next et j'aimerais vous en faire profiter. Cela devrait se tasser dans une dizaine de jours car en effet, nous sommes dans la dernière ligne droite de notre campagne participative !

Le navigateur Next (Github) est un navigateur web entièrement programmable. Tout son cœur est ouvert et modifiable, à chaud, c'est génial pour le configurer, écrire une nouvelle commande ou écrire une extension plus conséquente. C'est génial pour les fonctionnalités que nous avons déjà et pour tout ce que nous prévoyons. Je refais un résumé ci-dessous mais d'abord, les dernières nouvelles: la version 1.3.2 est sortie et elle apporte notamment les "hooks".

Publications précédentes:

Nouveautés de la 1.3.2

Hooks

En français "hook" veut dire un crochet, un ameçon. Un hook est dans notre cas une liste de fonctions qui sont associées à un point précis du programme, tel qu'un évènement réseau, par exemple le point avant de charger l'url. Lorsque cet évènement arrive, tous les hooks associés sont exécutés.

Chez Next il existe plusieurs sortes de hooks:

  • les hooks réseaux
  • les hooks liés à des objets internes (avant/après la création/suppression d'une page (buffer) ou d'une fenêtre,…)
  • les hooks liés aux modes (à chaque page sont associés des modes, par exemple le web-mode classique, ou proxy-mode s'il est activé, ou un éventuel git-mode pour des actions spécifiques)
  • les hooks liés aux commandes utilisateur. On peut donc légèrement modifier le fonctionnement des commandes avec des hooks (au lieu de les ré-écrire), pour scripter sa navigation web exactement comme on le souhaite.

Quelque exemples:

rediriger reddit.com vers old.reddit.com. Il suffit de placer cette fonction dans son fichier init.lisp:

    (defun old-reddit-handler (url)
      "Always redirect to old.reddit.com."
      (let ((uri (quri:uri url)))
        (if (search "www.reddit" (quri:uri-host uri))
            (progn
              (setf (quri:uri-host uri) "old.reddit.com")
              (let ((new-url (quri:render-uri uri)))
                (log:info "Switching to old Reddit: ~a" new-url)
                new-url))
            url)))
    (add-to-default-list #'old-reddit-handler 'buffer 'load-hook)

On a ici à disposition un langage de programmation (génial et intemporel :D ), et nous ne sommes pas limités par une API: accéder au système de fichiers, faire des appels système etc sont possibles.

Autres exemples donnés dans l'article original: toujours utiliser Tor sauf pour une liste de sites; télécharger automatiquement les vidéos Youtube; synchroniser un nouveau marque-page avec un fichier ou un service en ligne,…

Nouvelle commande C-x C-f open-file

J'aime aussi cet exemple. La nouvelle commande open-file (raccourci C-x C-f comme sous emacs) permet d'accéder à ses fichiers et de les parcourir avec la fuzzy completion habituelle.

Historique du minibuffer

Le minibuffer est le "prompt" qui nous demande quoi taper. Maintenant chaque commande a son historique propre.

Gestion du kill-ring

Tout le texte copié-collé est enregistré dans le kill-ring, et on peut y accéder avec la commande paste-from-ring, où on a la fuzzy-completion habituelle.

Nouveautés sur master

Ces changements sont commités mais sont pour la prochaine version.

Notez que vous pouvez télécharger un binaire next pour les obtenir. Peu de changements demandent une mise à jour du binaire associé next-webkit-gtk.

Persistence de session

Pages ouvertes, historique et "ce qu'il faut"© sont persistés sur disque. De plus, sous un format texte.

M-x git-clone

Comme son nom l'indique. Une chose facile à faire, qui ouvre des possibilités.

Voir l'historique en arbre

Depuis le début l'historique de navigation des onglets est sauvé en tant qu'arbre, afin qu'on ne perde rien de notre navigation. On peut voir cet arbre avec buffer-history-tree.

Et bien plus encore

Pour rappel, Next est jeune mais a maintenant ce qu'on attend pour une utilisation quotidienne: bloqueur de pubs, support des proxys, bloqueur Javascript, navigation au clavier (modes Emacs et Vim), fuzzy completion, etc.

Quels sont nos plans pour la suite ? On veut:

  • appliquer du CSS par domaine, pour un dark mode notamment
  • aller au-delà de open-file et rassembler dans le même outil un navigateur de fichiers et un éditeur de texte (ce qui n'est pas une tache incommensurable, le projet Lem existe déjà)
  • des marques pages on stéroïdes (tags, etc)
  • intégration avec les protocoles d'internet distribué tels que IPFS, Zeronet ou Dat
  • intégration avec les moteurs de recherches qu'on peut installer soi-même (Searx, Yacy)
  • sélection multiple dans le minibuffer
  • plus de hooks réseau
  • etc

Notez qu'on étudie actuellement un changement d'architecture pour ne plus reposer sur D-BUS et être disponible pour Windows (ainsi que plus facilement installable sous macOS).

Installation, paquets Debian

La méthode d'installation préférée est avec Guix, mais nous venons de publier un paquet Debian: https://next.atlas.engineer/static/release/next_1.3.1_amd64.deb (retours appréciés, ci-dessous ou ).

Et la campagne

Et donc, notre campagne participative finit le 4 octobre, nous en sommes à 10%, donc on vous invite à un coup de pouce final, pour qu'on garde le même rythme! Sinon, on devra partager notre temps avec des missions clients.

Si vous souhaitez devenir un sponsor officiel, si vous souhaitez avoir de l'aide pour bosser sur un projet cool ou pour tout autre retour, vous pouvez nous écrire à hello@atlas.engineer.

Je vous remercie, bons tests, et à bientôt je pense.

  • # Keybinds de malheur

    Posté par . Évalué à -2 (+4/-6).

    Lisant la doc, j'ai: C-x b: Switch buffer.

    Alors plusieurs questions:

    • Pourquoi faire compliqué et écrire C au lieux d'écrire Ctrl? Trop de lettres? Peur d'être explicite?
    • C'est quoi ce x là, au milieux? Parce que si C c'est Ctrl, x c'est quoi?
    • Oh, et pour celle-là: C-s s, c'est Ctrl-Shift s ou Ctrl-s s?
    • Pourquoi choisir une approche mystérieuse et obscure? Faire fuir le quidam qui découvre?
    • Pourquoi cacher le lexique vers la fin du document quand le lecteur en as besoin dès le départ?

    Cela me met vraiment en colère ces conneries. Vas-y chercher la signification d'une lettre (x) dans le document de plusieurs pages. Alors pour une facilité de lecture, il faudrait peut-être penser mettre le lexique dans un widget qui reste constamment affiché à l'écran.

    • [^] # Re: Keybinds de malheur

      Posté par . Évalué à 2 (+0/-0).

      On compte effectivement permettre d'écrire control et shift. Là on a fait au plus commun pour nous et notre première cible.

      C-x b c'est taper control + la lettre "x" en même temps, suivi de "b" (control peut donc être relaché).

      Pour rappel, tu peux activer les touches à la vim (moins voire pas de raccourcis à la C-x) avec M-x vim-normal-mode. cf M-x help.

    • [^] # Re: Keybinds de malheur

      Posté par . Évalué à 10 (+12/-0).

      Ils ont juste repris la convention d'emacs. Ça fait plus de 20 ans que des gens connaissent et communiquent avec. Détend toi un peu.

      C'est simple au final C, en majuscule c'est la touche control et S, en majuscule, c'est la touche shift. Il y a aussi M pour la touche "meta" (le a souvent un symbole Windows dessus). Un tiret sert à indiquer que les touches doivent être appuyées en même temps. Par exemple C-x S-v f signifie appuyer simultanément sur control et sur la touche x, puis appuyer simultanément sur les touches shift et v et en fin appuyer simplement sur f. Ah j'allais oublier ESC c'est pour echap.

      • [^] # Re: Keybinds de malheur

        Posté par . Évalué à 5 (+5/-0).

        C'est simple au final C, en majuscule c'est la touche control et S, en majuscule, c'est la touche shift.

        Sauf que ce que tu dis est erroné. Selon la documentation, s est pour Shift alors que S est pour la touche Super.

        Ce qui m'ennuie c'est que les lettres ne sont pas des mots, et utiliser cette méthode obscure est vouée a générer des erreurs. Et si s c'est Shift, comment je fais Ctrl-Shift-s moi? C'est vraiment stupide comme système.

        • [^] # Re: Keybinds de malheur

          Posté par . Évalué à 3 (+2/-0). Dernière modification le 26/09/19 à 08:52.

          Ce qui m'ennuie c'est que les lettres ne sont pas des mots, et utiliser cette méthode obscure est vouée a générer des erreurs.

          Ton avis ne tiens pas face aux décennies d'utilisation de cette convention. Je comprends ton avis. Je comprends ton point de vu. Mais essaie de comprendre que ça fait 35 ans que cette convention existe et est largement utilisée. Il faudra plus que ton avis ou ta difficulté à l'aborder pour la remettre en cause.

          Le fait que j'ai fais une erreur cette nuit ne change pas ce fait. Je ne suis pas un grand utilisateur d'emacs.

          C'est un peu comme si tu disais que :

          Était trop difficile pour les néophytes et que les mathématiciens pourraient utiliser des mots à la place de symboles chelous impossible à sortir directement sur un clavier (et je te parle pas de distinguer 0, o, \circ, \bigcirc, \bigodot,… ils se distinguent bien sur un ordi l'un à coté de l'autre, mais à l'écrit ça peut devenir compliqué).

        • [^] # Re: Keybinds de malheur

          Posté par . Évalué à 2 (+0/-0).

          Shift étant une touche d’état, tu auras toujours un - avec, sinon elle ne sert à rien.

          s-s sera le S.

      • [^] # Re: Keybinds de malheur

        Posté par (page perso) . Évalué à 2 (+1/-0). Dernière modification le 26/09/19 à 11:22.

        D'ailleurs en voyant tous ces raccourcis, on ressent que le créateur est féru d'emacs. En tant que féru de vim, j'ai peur pour mes doigts tant je n'ai pas l'habitude. Surtout quand je vois des raccourcis comme :

        C-x C-c s

        Quelqu'un a déjà utilisé next au quotidien pour partager son avis ?

        vanilla, ma distribution radicalement différente : http://projects.malikania.fr/vanilla

        • [^] # Re: Keybinds de malheur

          Posté par . Évalué à 2 (+0/-0).

          leS créateurS, oui! Mais comme je disais: M-x vi-normal-mode et tout va mieux.

          • [^] # On est presque vendredi

            Posté par . Évalué à 4 (+4/-1). Dernière modification le 26/09/19 à 12:13.

            Ca marche pas chez moi. J'ai pourtant bien tapé la lettre "M" (c'est écrit comme ça sur mon clavier), puis le reste.

            • [^] # Re: On est presque vendredi

              Posté par . Évalué à 3 (+1/-0).

              C'est Alt-x, le M est pour la touche Meta, un synonyme, et il ne faut pas taper le - du milieu.

              • [^] # Re: On est presque vendredi

                Posté par . Évalué à 3 (+2/-0). Dernière modification le 27/09/19 à 01:51.

                Mon commentaire était une blague en référence au commentaire de Ludovic - je suis un utilisateur d'emacs (et un admirateur de Next browser !). Mais merci beaucoup pour ta réponse patiente et instructive :)

                • [^] # Re: On est presque vendredi

                  Posté par . Évalué à 3 (+1/-0).

                  Le rire m'est venu après la consternation, du coup dans le doute et pour la blague subtile j'ai surjoué mes explications (tiret du milieu…) :p

        • [^] # Re: Keybinds de malheur

          Posté par . Évalué à 1 (+0/-0).

          Si tu as vraiment peur pour tes doigts, tu C-x tu le tape avec 2 mains (que ce soit pour emacs ou n'importe quel raccourci). Il n'y a pas de problème particulier.

  • # Intégration "native" des magnet et torrent

    Posté par . Évalué à 5 (+4/-0).

    Ce projet m'a l'air bien intéressant et je me dis que ça pourrait être un parfait candidat pour intégré un projet que j'avais commencé, mais vite arrêté à cause des limitations des navigateurs et du manque de temps.

    En fait, je cherchais à convertir les liens torrents ou magnet comme de simple url http avec derrière un petit serveur web qui tourne et torrent-stream (bon je sais cay mal de streamer les torrent mais je trouvais l'idée vraiment sympa).

    De cette manière tu pouvais cliquer sur un lien torrent ou magnet et ça le téléchargeait avec le gestionnaire de téléchargement natif du navigateur. Pareil pour les vidéos, je pouvais les voir dans une balise classique (si le format était compatible). Les torrents contenants plusieurs fichiers étaient affichés avec une interface html générée à la volée.

    Le problème c'est qu'il fallait lancer le serveur web à côté et que Firefox ne permet plus d'intégrer des binaires à ses plugins.

    Voilà un POC vraiment fait à l'arrache du projet : https://github.com/dedesite/firefox-torrent

    Bref, en tout cas Next à l'air vraiment sympa, bravo à toute l'équipe !

    • [^] # Re: Intégration "native" des magnet et torrent

      Posté par . Évalué à 3 (+1/-0).

      Vraiment sympa l'idée, en plus le code est assez court. Et oui, Next ne te limite en rien donc il paraît le bon candidat pour ça! (et merci)

      • [^] # Re: Intégration "native" des magnet et torrent

        Posté par . Évalué à 2 (+1/-0).

        Vraiment sympa l'idée, en plus le code est assez court

        Oui, je me demande pourquoi d'autres l'ont pas eu avant !

        En tout cas c'est torrent-stream qui fait quasi tout le boulot. C'est ce qui est utilisé dans Popcorn Time (Butter) et ça fonctionne étonnamment bien. Par contre, il me semble que c'est pas accepté par tous les trackers.

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.