Journal Kristall: un client pour http/gopher/gemini

Posté par  . Licence CC By‑SA.
Étiquettes :
13
9
déc.
2020

Je viens de trouver ce client, qui supporte les protocoles http, gopher, gemini, finger, et dans le cas de http, sa version TLS (je précise, parce que je ne sais pas s'il supporte les variantes TLS de gopher), pas de FTP, dommage.
Cet outil est codé en C++ & Qt5, devrais donc pouvoir fonctionner sur la plupart des OS, si ce n'est tous, sans trop de prise de tête.

Comme je le trouve intéressant, je fais ce petit journal à chaud (je suis littéralement en train de l'explorer en même temps que j'écris) dessus.

Parmi les avantages:

  • un client gopher graphique, ça change! Bon, on reste sur de la chasse fixe, mais bon, c'est la saison… coin< gemeni et http(s) eux ont bien une fonte classique;
  • il est facile, mais alors, VRAIMENT facile de modifier l'apparence du document rendu. Pour avoir un "thème" sombre lisible, ça m'a pris moins de 5 minutes, comme il se devrait. Par contre, je pense qu'il faut modifier l'apparence des widgets avec un outil pour «thèmer» Qt, faudra que je trouve ça.
  • rapide. Léger. Normal: c'est pas un client web, même s'il est capable de faire un rendu simplifié de HTLM. D'ailleurs, la page d'accueil de linuxfr s'affiche en 271ms (c'est indiqué en bas, dans la barre de statut) contre plusieurs secondes avec firefox (c'est indiqué nulle part, c'est normal, c'est un client web);
  • le logiciel préviens lors de la redirection vers d'autres protocoles;

Pour les bémols:

  • la gestion des certificats TLS auto-signés est… inutilisable pour l'instant, je dirais, le système est embryonaire, mais au moins il y a la volonté de le supporter.
  • le type de raccourcis clavier est… standard, donc pas pratique (faut tabuler tout le temps).
  • je suis tombé sur un crash, un échec d'assertion, je vous mets le message ici, parce qu'il m'a fait sourire: kristall: ../src/browsertab.cpp :1043 : bool BrowserTab::startRequest(const QUrl&, ProtocolHandler::RequestOptions): l'assertion « (this->current_handler != nullptr) and "If this error happens, someone forgot to add a new protocol handler class in the constructor. Shame on the programmer!" » a échoué.

Dans l'ensemble, je le trouve plutôt sympa comparé aux autres clients gopher que j'ai pu tester, plus rapide que les navigateurs web, et, cerise sur le gâteau, il supporte plus de protocoles, le tout, malgré sa jeunesse: 1er commit le 30 mai 2020.
Je n'ai pas (encore?) pris le temps d'inspecter le code source et, à ce sujet, autre remarque: le Makefile ne marchait pas pour moi. Mais comme il est très simple, ça a été facile de compiler quand même:

mkdir build
cd build
qmake ../src/*.pro
make
  • # Client graphique Gemini

    Posté par  . Évalué à 1. Dernière modification le 09/12/20 à 16:03.

    git clone --recurse-submodules https://github.com/skyjake/lagrange
    mkdir lagrange/build && cd lagrange/build
    cmake ../ -DCMAKE_BUILD_TYPE=Release
    

    Bons choix de couleurs et de police sérif ou semi-sérif je sais plus, rendant la chose moins archaïque.

    Ceci dit, Gemini… autant revenir aux newsgroups. J'ai des sites HTTPS enrichis qui se chargent plus vite que la majorité des hôtes gemini.

    • [^] # Re: Client graphique Gemini

      Posté par  . Évalué à 3. Dernière modification le 09/12/20 à 17:21.

      Bons choix de couleurs et de police sérif ou semi-sérif je sais plus, rendant la chose moins archaïque.

      Merci, vais tester ça, même si j'admets que le fait que kristall supporte plusieurs plus de protocoles est une sacrée plus-value, notamment du fait que je ne suis pas super convaincu par gemini.
      Je viens de compiler la chose, et il faut bien reconnaître que pour un soft basé sur la SDL, c'est impressionnant!

      Gemini… autant revenir aux newsgroups. J'ai des sites HTTPS enrichis qui se chargent plus vite que la majorité des hôtes gemini.

      Je suis intéressé. Tu peux nous indiquer des URIs d'exemple?

      • [^] # Re: Client graphique Gemini

        Posté par  . Évalué à 1.

        gemini://gus.guru (pour Gemini Universal Search)

        Il y a une liste d'hôtes autogénérée et un moteur de recherche basique.

        gemini://gus.guru/known-hosts
        gemini://gus.guru/search?

  • # Lagrange

    Posté par  (site Web personnel) . Évalué à 2.

    J'en profite pour ajouter Lagrange, un chouette client graphique pour Gemini (et qui rend les pages Gemini assez jolies).

    https://gmi.skyjake.fi/lagrange/

    Par contre, il ne semble supporter qu'un seul protocole. J'avoue qu'avoir un client http/gemini me plairait assez bien.

    • [^] # Re: Lagrange

      Posté par  . Évalué à 3.

      Vieille_moule en parle juste au dessus, et il supporte gopher et gemini :) juste pas http, donc.

    • [^] # Re: Lagrange

      Posté par  (site Web personnel) . Évalué à 2.

      Lagrange gère bien les autres protocoles… en envoyant l'URL au navigateur Web (ce qui est certainement le choix le plus raisonnable).

    • [^] # Re: Lagrange

      Posté par  (site Web personnel) . Évalué à 2.

      Tiens, je suis curieux, comment fonctionne les clients Gemini pour afficher les pages ?

      Est-ce qu’il transforme le text/gemini en Markdown (en « standardisant » les liens) pour finalement le convertir en HTML (c’est la première idée qui m’est passé par la tête quand je me suis demandé comment je ferai) ?

      Ou alors, est-ce qu’ils parsent le text/gemini eux même ? Dans ce cas, est-ce qu’il existe des « moteur de rendu » commun à plusieurs navigateur ?

      J’ai vu que la plupart affichaient les pages de manière assez brut (en gardant notamment les éléments de formatage), ou changeait juste la taille de la police pour les titres, donc je suppose que pour ceux là, c’est du parsing « fait maison ». Mais pour Lagrange, comment c’est fait ?

      • [^] # Re: Lagrange

        Posté par  (site Web personnel) . Évalué à 3.

        L'un des buts importants de Gemini est la simplicité, notamment pour permettre le développement de clients légers. Donc, non, pas de passage par HTML, qui irait directement contre ce but. Le format étant très simple, il n'y a pas non plus besoin de partager le moteur de rendu (sur le Web, il n'y a quasiment plus que deux moteurs de rendu, depuis que Microsoft a renoncé au sien, ce qui aggrave la concentration).

        Pour Lagrange, l'analyseur et moteur de rendu est dans src/gmdocument.c. 1147 lignes de C dont beaucoup triviales.

        • [^] # Re: Lagrange

          Posté par  (site Web personnel) . Évalué à 2.

          En fait, un client Gemini peut être tout à fait acceptable sans le moindre rendu, juste en affichant du texte brut. Lagrange a un moteur "complexe" parce que le client souhaite rendre le tout joli.

          Mais un client Gemini n'en a pas besoin. C'est effectivement tout l'intérêt du protocole.

Suivre le flux des commentaires

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