URL: https://linuxfr.org/users/linkdd/journaux/cream-browser Title: Cream-Browser Authors: David Delassus Date: 2011年04月09日T23:27:53+02:00 License: CC By-SA Tags: lua, vim, creambrowser, web, gtk, gtk3 et webkit Score: 17 Vous en avez peut-être entendu parler (ou pas). Bref cela ne fait pas de mal de faire une nouvelle présentation n'est-ce pas ? Un peu d'histoire ? Oula que non c'est barbant je me contenterai simplement d'énoncer tout cela dans les grandes lignes (pas de dates, je m'en souviens plus exactement). # Un petit historique du projet # * Il y a 1-2 ans : Cream-Browser est un navigateur Internet **vim-like** développé avec GTK+ et WebKit, la configuration se fait via un fichier de syntaxe INI. * Il y a 1 ans (et un peu plus) : Grande pause dans le projet. * Peu après : Cream-Browser reprend, beaucoup de modification dans le code. Notamment une architecture un peu plus modulaire pour pouvoir intégrer différents protocoles autres que ceux gérés par WebKit (je pense à FTP et Gopher, cela n'a jamais abouti). La configuration se fait via la libconfuse (une syntaxe plus souple mais pas trop compliquée pour autant). * Quelques mois plus tard : Nouvelle pause dans le projet. * Il y a quelques mois : Reprise du projet à 0. L'ancienne version toujours disponible dans la branche master (les travaux en cours étant dans la branche unstable). Les nouveautés sont : * Configuration en Lua : langage simple, rapide et beaucoup plus souple. Cream-Browser interagit directement avec Lua qui en altère le fonctionnement et vice-versa. La plupart des fonctionnalités ajoutés Cream-Browser se retrouve généralement directement dans Lua * Intégration de GModule : J'expliquerai cela dans la suite de ce journal * Compatibilité GTK+-3.0 et on tente la portabilité sous Windows (ayeaye je sens le troll :D) grâce à une utilisation massive de la GLib (qui permet de faire à peu près tout). Pour résumer. Cream-Browser c'est un navigateur Internet (OUI Internet, car je prévois d'intégrer gopher, FTP, SFTP, HTTP, HTTPS, etc. bref cela ne se limitera pas, enfin j'espère, au simple Web). # Actuellement # Actuellement, Cream-Browser se présente un peu plus comme un framework que dans ses débuts. ## GModule ## Avant, lorsque j'intégrais un nouveau protocole, j'y ajoutais donc un widget GTK dans le code qui s'occupait de charger l'URL demandé et d'afficher le contenu (liste des dossiers pour un FTP, la page web pour WebKit, etc.). Bref vous ne voulez pas de Gopher ? dommage on le charge quand même :( Maintenant, avec l'intégration de GModule, cela se passe différemment. GModule permet en fait de charger au runtime une bibliothèque (dynamique ou statique, la glib étant portable il peut très bien s'agir d'une dll de Windows, ou de .so/.a sous les UNIX-like). Chaque modules (bibliothèques donc) fournira à Cream-Browser un widget GTK capable de charger l'URL et de l'afficher. Ainsi imaginez donc avoir un module WebKit que vous chargez au lancement de Cream-Browser, vous l'associez au protocole HTTP/HTTPS et vous voila apte à charger toutes URL `http://` et `https://`. Vous ne souhaitez pas intégrer gopher, il vous suffira de ne pas charger le module. Le chargement des modules (et l'association au protocole géré par ce dernier) se fera donc via la configuration en Lua (ne vous inquiétez pas, rien de bien compliqué car la bibliothèque Lua se chargera de cela à votre place bien qu'il ne vous sera pas impossible de le faire vous même). Ainsi, celui qui désire utiliser Gecko au lieu de WebKit pourra, à condition qu'il existe un module pour. Vous avez sûrement vu sur des sites tels que `ubuntu-fr.org` une URL du type `apt://paquet`. Si un module existe pour ce protocole, il sera donc possible de l'utiliser. **Attention:** Cream-Browser sera toujours développé dans l'optique d'être un navigateur Internet. Développer des modules pour des utilisations autres (terminaux, édition de texte, etc.) le rendra anti-productif. Cream-Browser ne se veut pas un emacs-like (non nous ne sommes pas vendredi donc je m’arrêterai la sur ce point). ## Lua ## Comme dit plus haut, la configuration se fera désormais en Lua. Cela permettra une meilleure souplesse du navigateur grâce aux atouts de Lua. En effet, dans une précédente version je désirais gérer les **_UserAgent dynamiques_** (associer un UserAgent pour un nom de domaine). Pour se faire j'ai du coder cela en C. C'est désormais faisable directement en Lua ! Je vise toujours la configuration **simple** ET **souple**. Lua n'étant pas compliqué, il suffira de lire le fichier de configuration pour le comprendre aisément, différents exemples de configurations seront postés sur le site. Une API C est donc fournie à Lua, API qui sera utilisée par une bibliothèque Lua (`require("cream")`). Cream-Browser interagira donc directement avec Lua, et le fonctionnement du script dépendra du fonctionnement de Cream-Browser (et vice-versa). L'évolution (implémentation de nouvelle fonctionnalité, correction de bug...) de l'un entraînera forcément l'évolution de l'autre. # Infos supplémentaires # * Un canal IRC est ouvert depuis les débuts du projet : **#cream-browser** @ **irc.freenode.net** * Le site Internet est disponible à l'adresse suivante : http://cream-browser.net (amené à subir pas mal de changement dans les temps qui viennent). * Lien sur github : http://github.com/linkdd/cream-browser

AltStyle によって変換されたページ (->オリジナル) /