<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>FireFox</title>
  <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/taxonomy/term/1188"/>
  <link rel="self" type="application/atom+xml" href="http://artisan.karma-lab.net/taxonomy/term/1188/atom/feed"/>
  <id>http://artisan.karma-lab.net/taxonomy/term/1188/atom/feed</id>
  <updated>2008-10-02T19:54:36+02:00</updated>
  <entry>
    <title>Ajouter son propre automate de recheche à Firefox</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1661" />
    <id>http://artisan.karma-lab.net/node/1661</id>
    <published>2008-09-30T13:15:40+02:00</published>
    <updated>2008-09-30T16:30:21+02:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="FireFox" />
    <category term="drupalfr.org" />
    <category term="OK" />
    <category term="Planet Libre" />
    <category term="Tutoriel" />
    <summary type="html"><![CDATA[<p>
   La zone de recherche de FireFox est bien pratique, difficile de remettre cela en cause. Son seul problème est qu'il n'y a étrangement aucun moyen en standard pour ajouter des requêtes un peu exotiques. Voici donc comment faire. 
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>
   La zone de recherche de FireFox est bien pratique, difficile de remettre cela en cause. Son seul problème est qu'il n'y a étrangement aucun moyen en standard pour ajouter des requêtes un peu exotiques. Voici donc comment faire. 
</p>
<!--break-->


	<a name='chapter_1'></a>
  <h2>Analyse de la requête Google</h2>
	
<p>
   Dans le temps, il existait une extension pour faire ce qui suit, <kbd>Open Search Fox</kbd>, mais elle n'a pas été portée avec FireFox 3.0 et tout semble indiquer qu'elle ne le sera pas. Alors même s'il existe une autre extension du même genre ou si quelqu'un se décide à porter celle-là, autant savoir faire sans. Ceci d'autant plus que c'est assez simple.
</p>
<p>
  Histoire de prendre un exemple, disons que je veuille utilisez les <a class='external' target='_blank' href='/node/1226' >fonctions étendues de Google</a> pour rechercher un projet Drupal particulier. Cela corresponds à taper dans Google <a class='external' target='_blank' href='http://www.google.fr/search?q=site%3Adrupal.org+inurl%3Aproject+webdav' >site:drupal.org inurl:project webdav</a>.
</p>
<p>
  Lorsque vous avez lancé cette requête, vous obtenez avec la page de résultat, dans la barre d'adresse, quelque chose commençant par <kbd>http://www.google.fr/search?q=site%3Adrupal.org+inurl%3Aproject+webdav</kbd>. Oubliez le reste, cela n'a pas d'importance. Nous constatons donc que l'URL de la recherche est <kbd>http://www.google.fr/search</kbd>, qu'il y a un paramètre nommé <kbd>q</kbd> et que sa valeur est <kbd>site%3Adrupal.org+inurl%3Aproject+webdav</kbd>. Dans cette valeur, <kbd>webdav</kbd> sera par la suite à remplacer par le nom du projet que l'on va effectivement rechercher. Le début sera toujours le même. 
</p>


	<a name='chapter_2'></a>
  <h2>Ajout de la requête</h2>
	
<p>
  Pour mettre cette requête dans Firfox, il faut commencer par trouver le dossier de votre profile, généralement <kbd>~/.mozilla/firefox/XXXXX.default</kbd>. Là se trouve le répertoire qui nous intéresse, <kbd>searchplugins</kbd>.
 Vous allez y créer un fichier <kbd>drupal-projects.xml</kbd> :

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="sc3"><span class="re1">&lt;SearchPlugin</span> <span class="re0">xmlns</span>=<span class="st0">&quot;http://www.mozilla.org/2006/browser/search/&quot;</span><span class="re2">&gt;</span></span><br />
&nbsp; <span class="sc3"><span class="re1">&lt;ShortName<span class="re2">&gt;</span></span></span>Drupal Projects<span class="sc3"><span class="re1">&lt;/ShortName<span class="re2">&gt;</span></span></span><br />
&nbsp; <span class="sc3"><span class="re1">&lt;InputEncoding<span class="re2">&gt;</span></span></span>UTF-8<span class="sc3"><span class="re1">&lt;/InputEncoding<span class="re2">&gt;</span></span></span><br />
&nbsp; <span class="sc3"><span class="re1">&lt;Image</span> <span class="re0">width</span>=<span class="st0">&quot;16&quot;</span> <span class="re0">height</span>=<span class="st0">&quot;16&quot;</span><span class="re2">&gt;</span></span>http://drupal.org/misc/favicon.ico<span class="sc3"><span class="re1">&lt;/Image<span class="re2">&gt;</span></span></span><br />
&nbsp; <span class="sc3"><span class="re1">&lt;Url</span> <span class="re0">type</span>=<span class="st0">&quot;text/html&quot;</span> <span class="re0">method</span>=<span class="st0">&quot;GET&quot;</span> <span class="re0">template</span>=<span class="st0">&quot;http://www.google.fr/search&quot;</span><span class="re2">&gt;</span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;Param</span> <span class="re0">name</span>=<span class="st0">&quot;q&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;site%3Adrupal.org+inurl%3Aproject+{searchTerms}&quot;</span><span class="re2">/&gt;</span></span><br />
&nbsp; <span class="sc3"><span class="re1">&lt;/Url<span class="re2">&gt;</span></span></span><br />
<span class="sc3"><span class="re1">&lt;/SearchPlugin<span class="re2">&gt;</span></span></span>
  </div>
  <div class='caption'>~/.mozilla/firefox/XXXXX.default/searchplugins/drupal-projects.xml</div>
  </div>
</p>
<p>
  Avant de redémarrer FireFox, quelques explications s'imposent. Déjà <kbd>ShortName</kbd> représente comme on se l'imagine le nom qui apparaîtra dans la liste déroulante de FireFox. <kbd>InputEncoding</kbd> permet de passer à Google une chaînes avec les accents correctement encodés. Et enfin <kbd>Image</kbd> pointe sur l'URL de l'icône qui va illustrer notre requête. 
</p>
<p>
  La partie intéressante arrive avec <kbd>Url</kbd>. Il s'agit d'invoquer la méthode <kbd>GET</kbd> sur une URL donnée par l'attribut <kbd>Template</kbd>. Cela implique qu'il est parfaitement possible d'utiliser la méthode <kbd>POST</kbd> qui peut être nécessaire pour certain sites qui utilisent des formulaires de recherche complexes. 
</p>
<p>
  Ici l'URL de base de la recherche est donc <kbd>http://www.google.fr/search</kbd>. Maintenant, il reste encore à envoyer à Google le paramètre, <kbd>q</kbd>, c'est le rôle de la balise <kbd>Param</kbd>.
</p>
<p>
  Comme nous l'avons vu plus haut, la valeur de <kbd>q</kbd> est composée de <kbd>site%3Adrupal.org+inurl%3Aproject+</kbd>, suivi du nom du projet à chercher. Ce nom est ici <kbd>{searchTerms}</kbd> qui indique à FireFox de placer là les mots que l'utilisateur a tapé avant de lancer la recherche. FireFox s'assure de la bonne conversion de la phrase, en convertissant, entre autre, les espaces par des +. 
</p>
<p>
  Et voilà, c'est tout. Redémarrez FireFox et la nouvelle recherche devrait apparaître prête à être utilisée.
</p>


	<a name='chapter_3'></a>
  <h2>Image embarquée</h2>
	
<p>
  Ici, nous donnons l'URL de l'icône dans la balise <kbd>Image</kbd>, mais il est aussi possible de directement intégrer cette image au fichier XML. Pour cela il faut encoder le fichier d'origine en un fragment de texte encodé base64. Pas évident. Heureusement, il existe de petits outils en ligne comme <a class='external' target='_blank' href='http://www.greywyvern.com/code/php/binary2base64' >ici</a>, à qui l'on donne l'URL et qui nous renvoient un bloc de texte à coller directement dans le contenu de la balise <kbd>Image</kbd>. Dans notre cas, nous utiliserons <kbd>http://drupal.org/misc/favicon.ico</kbd>. 
</p>


	<a name='chapter_4'></a>
  <h2>Conclusion</h2>
	
<p>
   Cette syntaxe n'est pas une exclusivité de FireFox. En réalité ce dernier ne fait qu'exploiter le format 
  <a target='_blank' href='http://fr.wikipedia.org/wiki/OpenSearch'>
  OpenSearch
  </a> qui a été conçu par <a class='external' target='_blank' href='http://fr.wikipedia.org/wiki/A9.com' >A9</a>, une filiale d'Amazon. Ce format permet non seulement d'ajouter des automates de recherche à un navigateur comme nous l'avons fait ici, mais aussi, et surtout, donne à un site la possibilité d'indiquer à un navigateur le moteur de recherche qui lui est le plus adapté. Comme pour les flux Atom ou RSS, cela se fait très simplement en incluant dans chaque page du site une balise <kbd>link</kbd>, comme par exemple :
   
  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="sc3"><span class="re1">&lt;link</span> <span class="re0">rel</span>=<span class="st0">&quot;search&quot;</span> <span class="re0">type</span>=<span class="st0">&quot;application/opensearchdescription+xml&quot;</span> <span class="re0">href</span>=<span class="st0">&quot;http://artisan.karma-lab.net/opensearch.xml&quot;</span> <span class="re0">title</span>=<span class="st0">&quot;Artisan Numérique&quot;</span> <span class="re2">/&gt;</span></span>
  </div>
  
  </div>
</p>
<p>
   Du coup, lorsque le navigateur affiche cette page, il découvre cette balise et peut vous proposer d'ajouter ce nouveau moteur de recherche. Vous pouvez tester cela avec ce site. Allez dans la zone de recherche, déroulez la liste et vous devriez voir apparaître <kbd>Ajouter "Artisan Numérique"</kbd>. 
</p>

    ]]></content>
  </entry>
  <entry>
    <title>Récupérer ses fichiers WAR</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1642" />
    <id>http://artisan.karma-lab.net/node/1642</id>
    <published>2008-09-23T01:26:41+02:00</published>
    <updated>2008-09-23T15:57:51+02:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="FireFox" />
    <category term="OK" />
    <category term="Planet Libre" />
    <category term="Tutoriel" />
    <summary type="html"><![CDATA[<p>
  Rien de bien guerrier dans cette histoire, ni même de rapport avec Java. Ici les fichiers WAR sont ceux qui étaient générés (et qui le sont peut-être encore) par l'extension d'archivage de page de 
  <a target='_blank' href='http://fr.wikipedia.org/wiki/Konqueror'>
  Konqueror
  </a>, des Web ARchives. Et il se trouve que dans ma grande paranoïa du 404, j'ai généré des centaines de ces fichiers, 341 pour être exacte...
</p>
<p>
 Aujourd'hui, je n'utilise plus Konqueror mais ce très cher FireFox qui ne tient sur mon bureau que par cette extension magique qu'est <a class='external' target='_blank' href='https://addons.mozilla.org/fr/firefox/addon/427' >ScrapBook</a> dont je ne pourrais juste plus me passer. Du coup, a fini par se poser le problème du passage de l'un à l'autre des deux mondes. Alors je ne sais pas si cela va intéresser grand monde, mais au cas où, voilà comment faire. 
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>
  Rien de bien guerrier dans cette histoire, ni même de rapport avec Java. Ici les fichiers WAR sont ceux qui étaient générés (et qui le sont peut-être encore) par l'extension d'archivage de page de 
  <a target='_blank' href='http://fr.wikipedia.org/wiki/Konqueror'>
  Konqueror
  </a>, des Web ARchives. Et il se trouve que dans ma grande paranoïa du 404, j'ai généré des centaines de ces fichiers, 341 pour être exacte...
</p>
<p>
 Aujourd'hui, je n'utilise plus Konqueror mais ce très cher FireFox qui ne tient sur mon bureau que par cette extension magique qu'est <a class='external' target='_blank' href='https://addons.mozilla.org/fr/firefox/addon/427' >ScrapBook</a> dont je ne pourrais juste plus me passer. Du coup, a fini par se poser le problème du passage de l'un à l'autre des deux mondes. Alors je ne sais pas si cela va intéresser grand monde, mais au cas où, voilà comment faire. 
</p>
<!--break-->


	<a name='chapter_5'></a>
  <h2>Lire le fichier WAR</h2>
	
<p>
   Techniquement les .war sont des archives 
  <a target='_blank' href='http://fr.wikipedia.org/wiki/TAR'>
  TAR
  </a>, compressées par 
  <a target='_blank' href='http://fr.wikipedia.org/wiki/gzip'>
  gzip
  </a>. En interne, l'utilitaire de Konqueror n'est pas mal fait car il rend standard n'importe quel site en générant systématiquement un <kbd>index.html</kbd> à la racine de l'archive, quel que fût le nom de fichier d'origine. Du coup, une première étape très simple à réaliser est un petit script permettant d'ouvrir ces archives sous FireFox à partir de Nautilus :
   
  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="co0">#! /bin/sh</span><br />
<br />
<span class="co0"># Création du dossier temporaire d'extraction</span><br />
<span class="kw3">cd</span> <span class="re1">$TMPDIR</span><br />
<span class="re2">working_path=</span>$<span class="br0">&#40;</span><a target="blank" href="http://pwet.fr/man/linux/commandes/mktemp"><span class="kw2">mktemp</span></a> -d<span class="br0">&#41;</span><br />
<a target="blank" href="http://pwet.fr/man/linux/commandes/mkdir"><span class="kw2">mkdir</span></a> <span class="re1">$working_path</span> <br />
<span class="kw3">cd</span> <span class="re1">$working_path</span><br />
<br />
<span class="co0"># extraction de l'archive</span><br />
<a target="blank" href="http://pwet.fr/man/linux/commandes/tar"><span class="kw2">tar</span></a> -zxf <span class="st0">&quot;$1&quot;</span><br />
<br />
<span class="co0"># Affichage de la page dans firefox</span><br />
firefox index.html &nbsp; &nbsp;
  </div>
  <div class='caption'>~/.gnome2/nautilus-scripts/Ouvrir l&#039;archive</div>
  </div>
</p>   
<p>
  A noter que cela aurait aussi bien pu être Epiphany ou tout autre navigateur. 
</p>


	<a name='chapter_6'></a>
  <h2>Lire l'URL du fichier WAR</h2>
	
<p>
   Maintenant le problème, déjà présent sous Konqueror, est que j'ai bien le contenu mais pas la possibilité de revenir à URL d'origine. Il s'agit là d'une de ces précieuses fonctions Scrapbookiennes, bien utile lorsque l'on construit une présentation, une formation ou un article et que l'on aime à citer ses sources.  Cela me permettrait aussi de pouvoir ré-archiver certaines pages avec Scrapbook qui n'altère que rarement le rendu dans l'opération. 
</p>
<p>
  C'est un peu en désespoir de cause que j'ai lancé un <kbd>vi</kbd> sur l'index.html dans un des dossiers temporaires créés par le script donné plus haut. Et au début du fichier, voici ce que l'on trouve :
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="sc3"><span class="coMULTI">&lt;!-- saved from:<br />
http://www.monde-diplomatique.fr/2002/03/PARSONS/16228 --&gt;</span></span>
  </div>
  
  </div>
</p>
<p>
  Du coup, rien de plus simple, aidé de l'ami <kbd>awk</kbd>, de créer un petit script qui ouvrira l'URL d'origine du .war :
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="co0">#! /bin/sh</span><br />
<br />
<span class="co0"># extraction de l'URL</span><br />
<span class="re2">url=</span>$<span class="br0">&#40;</span><a target="blank" href="http://pwet.fr/man/linux/commandes/tar"><span class="kw2">tar</span></a> -Ozxf <span class="st0">&quot;$1&quot;</span> index.html <span class="sy0">|</span> <a target="blank" href="http://pwet.fr/man/linux/commandes/head"><span class="kw2">head</span></a> <span class="nu0">-2</span> <span class="sy0">|</span> <a target="blank" href="http://pwet.fr/man/linux/commandes/awk"><span class="kw2">awk</span></a> <span class="st0">'/http/ { print $1 }'</span><span class="br0">&#41;</span><br />
<br />
<span class="co0"># Affichage de la page dans firefox</span><br />
firefox <span class="re1">$url</span>
  </div>
  <div class='caption'>~/.gnome2/nautilus-scripts/Ouvrir l&#039;URL de la source</div>
  </div>
</p>
<p>
  Simple et efficace. Stocké dans le dossier de scripts de Nautilus, l'action est directement disponible par click-droit sur un fichier. Ici <kbd>tar</kbd> est paramétré pour décompresser l'archive (<kbd>zxf</kbd>) mais dans la sortie standard (<kbd>O</kbd>) et seulement le fichier <kbd>index.html</kbd>. <kbd>head</kbd> récupère les deux premières lignes (<kbd>-n 2</kbd>) qui nous intéressent et <kbd>awk</kbd> recherche le motif <kbd>http</kbd> et lorsqu'il le trouve renvoie le première argument de la ligne sélectionnée. 
</p>
<p>
  Après connaissant le truc, rien n'empêche d'aller plus loin en ouvrant une série de fichiers war via la commande <kbd>find</kbd> pour les Scrapbooker en masse. 
</p>


	<a name='chapter_7'></a>
  <h2>Conclusion</h2>
	
<p>
  Voilà, sans doute encore un bon exemple de ce qu'un petit script tout bête peut apporter dans la vie de tous les jours. 
</p>
    ]]></content>
  </entry>
  <entry>
    <title>Chrome, WebKIT et Epiphany</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1620" />
    <id>http://artisan.karma-lab.net/node/1620</id>
    <published>2008-09-07T11:37:32+02:00</published>
    <updated>2008-11-19T23:37:05+01:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="FireFox" />
    <category term="drupalfr.org" />
    <category term="OK" />
    <category term="Planet Libre" />
    <category term="Article" />
    <summary type="html"><![CDATA[<p>
  L'équipe de WebKit travaille actuellement à <a class='external' target='_blank' href='http://blog.chromium.org/2008/09/chrome-3s-webkit.html' >l'intégration des modifications</a> faites par Google sur leur projet. Nus devrions donc bientôt disposer sur les navigateurs utilisant WebKit (epiphany et les autres), d'un peu plus encore de diversité sans avoir à supporter le gros oeil qui vous avec...
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>
  L'équipe de WebKit travaille actuellement à <a class='external' target='_blank' href='http://blog.chromium.org/2008/09/chrome-3s-webkit.html' >l'intégration des modifications</a> faites par Google sur leur projet. Nus devrions donc bientôt disposer sur les navigateurs utilisant WebKit (epiphany et les autres), d'un peu plus encore de diversité sans avoir à supporter le gros oeil qui vous avec...
</p>
<!--break-->
<p>
   Pour information, WebKit est la version améliorée par Apple pour Safari de 
  <a target='_blank' href='http://fr.wikipedia.org/wiki/KHTML'>
  KHTML
  </a>, le moteur de rendu HTML initialement <b>développé par l'équipe KDE pour Konqueror</b>. C'est un détail qui est un peu trop souvent oublié. Il est reconnu pour sa légèreté, son respect des standards, mais surtout pour sa vélocité notamment par rapport à Gecko, le moteur de Mozilla.
</p>
<p>
 Et c'est bien cette légèreté et cette vélocité qui ont intéressées l'équipe de développement de 
  <a target='_blank' href='http://fr.wikipedia.org/wiki/Google Chrome'>
  Google Chrome
  </a> qui y a ajouté une nouvelle pile HTTP, un moteur JavaScript V8, et un "nouveau" (peu connu en fait) moteur graphique Skia. 
</p>
<p>
<image file="tm-v8-sunspider-totals.jpg" width="300px"/>
  <a class='external' target='_blank' href='http://code.google.com/p/v8/' >V8</a> est <a class='external' target='_blank' href='http://code.google.com/apis/v8/intro.html' >un compilateur JavaScript écrit en C++</a> et annoncé par Google comme fournissant les performances les plus élevées du moment. C'est sûrement vrai au moment des faits par rapport à <a class='external' target='_blank' href='http://webkit.org/blog/189/announcing-squirrelfish/' >SquirrelFish</a>, le moteur de WebKIT, ou encore celui de FireFox 3.0. Mais cela semble dors et déjà <a class='external' target='_blank' href='http://weblogs.mozillazine.org/roadmap/archives/2008/09/tracemonkey_update.html' >globalement faux</a> par rapport à <a class='external' target='_blank' href='http://weblogs.mozillazine.org/roadmap/archives/2008/08/tracemonkey_javascript_lightsp.html' >TracesMonkey</a>, le compilateur 
  <a target='_blank' href='http://fr.wikipedia.org/wiki/JIT'>
  JIT
  </a> futur moteur de la v3.1 de FireFox.
</p>
<p>
  Ce code compile sous Linux, Mac OS, Windows et pour les processeur i86, ARM, et c'est tout... Et c'est bien le problème car SquirrelFish prends en charge bien plus de processeurs. Il restera donc encore dans la course pour un certain temps même s'il sera possible de compiler spécifiquement WebKit avec V8 pour les plate-formes i86 et ARM. 
</p>
<p>
  L'autre nouveauté est donc le moteur de rendu graphique <a class='external' target='_blank' href='http://src.chromium.org/viewvc/chrome/trunk/src/skia/' >Skia</a>. Cette librairie a été originellement développée par Skia Inc, puis racheté en 2005 par Google pour être intégré à la plate-forme <a class='external' target='_blank' href='http://code.google.com/android/' >Android</a>. Destinée au rendu des images vectorielles, elle concurrence directement 
  <a target='_blank' href='http://fr.wikipedia.org/wiki/Cairo'>
  Cairo
  </a> en faisant près de 10.000 ligne de code en moins. Entre autres <a class='external' target='_blank' href='http://www.atoker.com/blog/2008/09/06/skia-graphics-library-in-chrome-first-impressions/' >caractéristiques</a>, elle est totalement multi-Thread, elle est très portable et peut donc parfaitement fonctionner sur des unités mobiles et enfin elle peut utiliser des primitives 
  <a target='_blank' href='http://fr.wikipedia.org/wiki/OpenGl'>
  OpenGl
  </a> pour accélérer ses traitements. 
</p>
<p>
   Voilà donc ce qui risque à terme de débouler dans WebKIT, et donc dans Epiphany. C'est peut-être finalement cela la bonne nouvelle de Chrome... 
</p>
    ]]></content>
  </entry>
  <entry>
    <title>Premier tour de piste avec Epiphany/Webkit</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1614" />
    <id>http://artisan.karma-lab.net/node/1614</id>
    <published>2008-08-13T02:50:48+02:00</published>
    <updated>2008-08-13T02:53:06+02:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="FireFox" />
    <category term="OK" />
    <category term="Planet Libre" />
    <category term="Article" />
    <summary type="html"><![CDATA[<p>
   Cela n'a échappé à personne, les prochaines version d'<a class='external' target='_blank' href='http://www.gnome.org/projects/epiphany/' >Epiphany</a>, le navigateur officiel de Gnome, sera prochainement propulsé par <a class='external' target='_blank' href='http://webkit.org/' >WebKit</a>, le même moteur que Konqueror et Safari. Et ce "prochainement" est suffisamment proche pour le moteur soit activé par défaut dans la version de développement du navigateur. Alors j'avais envie d'aller voir où en était l'avancement...
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>
   Cela n'a échappé à personne, les prochaines version d'<a class='external' target='_blank' href='http://www.gnome.org/projects/epiphany/' >Epiphany</a>, le navigateur officiel de Gnome, sera prochainement propulsé par <a class='external' target='_blank' href='http://webkit.org/' >WebKit</a>, le même moteur que Konqueror et Safari. Et ce "prochainement" est suffisamment proche pour le moteur soit activé par défaut dans la version de développement du navigateur. Alors j'avais envie d'aller voir où en était l'avancement...
</p>
<!--break-->

	<a name='chapter_1'></a>
  <h2>Compilation</h2>
	
<p>
   Pour ce qui est de la librairie GTK/WebKit, j'ai bien tenté de la compiler à la main mais il semble que le trunk soit méchamment cassé pour l'instant. Je me suis donc rabattu sur la version en dépôt <kbd>testing</kbd> de mandriva. 
</p>
<p>
    Ensuite, récupération des dernières sources d'Epiphany :

  <div class='code-block code-block-fragment'>
  <div class='container'>
  svn <a target="blank" href="http://pwet.fr/man/linux/commandes/co"><span class="kw2">co</span></a> http:<span class="sy0">//</span>svn.gnome.org<span class="sy0">/</span>svn<span class="sy0">/</span>epiphany<span class="sy0">/</span>trunk<span class="sy0">/</span> epiphany
  </div>
  
  </div>
</p>
<p>
  et enfin un bien classique <kbd>./autogen --prefix=/opt ; make ; sudo make install</kbd>.
</p>
<p>
   L'utilisation du <kbd>/opt</kbd> m'évite de torpiller l'installation existante d'Epiphany.
</p>


	<a name='chapter_2'></a>
  <h2>Petits tests</h2>
	
<p>
  Côté tests, rien de bien violent. Juste un petit chrono à la main pour tester le temps de démarrage à froid et à vide (page de démarrage vide et tout cache système vidé), à chaud et à vide (second démarrage), à froid avec une page à affiche au démarrage (la page de garde d'artistan). 
<table>
<tr><th>Type</th><th>Epiphany/WebKit</th><th>Epiphany/Gecko</th><th>FireFox2</th><th>FireFox3</tH></tr>
<tr><td>à froid</td><td>3</td><td>6.5</td><td>5.6</td><td>6.5</td></tr>
<tr><td>à chaud</td><td>1.1</td><td>2.5</td><td>1.38</td><td>1.65</td></tr>
<tr><td>page</td><td>5.1</td><td>8.87</td><td>7.2</td><td>7.3</td></tr>
<tr><td><a class='external' target='_blank' href='http://celtickane.com/webdesign/jsspeed.php' >dhtml</a></td><td>60</td><td>609</td><td>658</td><td>257</td></tr>
<tr><td><a class='external' target='_blank' href='http://www.howtocreate.co.uk/csstest.html' >javascript</a></td><td>9</td><td>64</td><td>64</td><td>50</td></tr>
</table>
</p>
<p>
  A noter que j'ai désactivé toutes les extensions de FireFox pour ces tests. 
</p>

	<a name='chapter_3'></a>
  <h2>Conclusion</h2>
	
<p>
   Lorsque l'on utilise cette mouture d'Epiphany, la vitesse ressentie est très proche de ce que je connaissais avec Konqueror. Les chiffres le confirment pour tous les domaines testés. Les résultats de rendu de page, JavaScript et DHTML sont juste étonnant de vélocité et confirme que la vitesse de WebKit n'est pas une légende.</p>
<p>
 A noter la proximité logique des résultats Epiphany/Gecko et FireFox2 qui utilisent la même infrastructure et les nets progrès de FireFox3 qui surpassent Epiphany/Geck sur tous les tableaux.  
</p>
<p>
  Maintenant cette version n'est pas encore très sèche. Les pages "clignotent" aux transitions, certains rendus de contrôles sont bizarres et le correcteur orthographique est non fonctionnel (et non activable vu que about:config ne fonctionne pas). Mais dans l'ensemble, c'est très prometteur. 
</p>    ]]></content>
  </entry>
  <entry>
    <title>FireFox sous Qt</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1613" />
    <id>http://artisan.karma-lab.net/node/1613</id>
    <published>2008-08-07T15:18:59+02:00</published>
    <updated>2008-08-09T12:28:43+02:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="FireFox" />
    <category term="OK" />
    <category term="Planet Libre" />
    <category term="Article" />
    <summary type="html"><![CDATA[<p>
   <a class='external' target='_blank' href='http://linuxfr.org/2008/01/29/23621.html' >Rachat de Troltech</a> aidant, les équipes de Mozilla et de Nokia ont conjointement bossé sur le portage de <q>la magnifique plate-forme Mozilla</q> (Hein, Sonny <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif" title="Wink" alt="Wink" class="smiley-content"/> ) sous Qt4.4. 
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>
   <a class='external' target='_blank' href='http://linuxfr.org/2008/01/29/23621.html' >Rachat de Troltech</a> aidant, les équipes de Mozilla et de Nokia ont conjointement bossé sur le portage de <q>la magnifique plate-forme Mozilla</q> (Hein, Sonny <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif" title="Wink" alt="Wink" class="smiley-content"/> ) sous Qt4.4. 
</p>
<!--break-->
<p>
<image id="1"/>
  Et le résultat est d'ores et <a class='external' target='_blank' href='http://browser.garage.maemo.org/news/10/' >déjà fonctionnel</a> pour ceux que cela intéresse et qui devrait, vu le poids des acteurs, finir rapidement dans la branche principale de FireFox. 
</p>
<p>
  Alors peut-être que ceux qui sont sous KDE vont enfin pouvoir bénéficier d'un 
  <a target='_blank' href='http://fr.wikipedia.org/wiki/kpart'>
  kpart
  </a> Gecko pour Konqueror. En tout cas c'est une idée <a class='external' target='_blank' href='http://dot.kde.org/1094924433/' >pas toute jeune</a> qui risque cette fois de finir par voir le jour. 
</p>
<p>
Maintenant je ne suis pas bien sur que Gecko apporte grand chose par rapport à WebKit/KHTML. Ceci dit, les meilleurs performances de Qt par rapport à Gtk peuvent éventuellement compenser les résultats de Gecko par rapport à KHTML-WebKit, permettant ainsi à ceux qui utilisent KDE et FireFox d'avoir quelque chose de peut-être aussi rapide que Konqueror, qui sait...
</p>

<p>
  Quant à moi, il va falloir sérieusement que je pense à écrire un Scrapbook pour Epiphany...
</p>    ]]></content>
  </entry>
  <entry>
    <title>Tenter d&#039;améliorer les performances de FireFox</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1596" />
    <id>http://artisan.karma-lab.net/node/1596</id>
    <published>2008-07-21T14:34:50+02:00</published>
    <updated>2008-07-21T15:45:28+02:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="FireFox" />
    <category term="OK" />
    <category term="Planet Libre" />
    <category term="Article" />
    <summary type="html"><![CDATA[<p>
  Les performances c'est compliqué. La preuve, tout le monde s'égosille depuis quelques temps sur FireFox3PlusRapideDeLaTerre, alors que chez moi, il rame au défilement comme une vieille brouettes dés qu'il y a plus de 10 contrôles (édition d'un Post Drupal) ou une image de fond statique sur une page.  
</p>
<p>
  Pareillement, j'ai longtemps cherché à améliorer la vitesse de FireFox v2 pour retrouver un peu de la vélocité de Konqueror, avec plus où moins de succès. Ce billet n'est donc pas un appeau à Trolls, juste le fruit de mes petites recherches pour botter un peu les fesses du gros panda <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif" title="Wink" alt="Wink" class="smiley-content"/>
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>
  Les performances c'est compliqué. La preuve, tout le monde s'égosille depuis quelques temps sur FireFox3PlusRapideDeLaTerre, alors que chez moi, il rame au défilement comme une vieille brouettes dés qu'il y a plus de 10 contrôles (édition d'un Post Drupal) ou une image de fond statique sur une page.  
</p>
<p>
  Pareillement, j'ai longtemps cherché à améliorer la vitesse de FireFox v2 pour retrouver un peu de la vélocité de Konqueror, avec plus où moins de succès. Ce billet n'est donc pas un appeau à Trolls, juste le fruit de mes petites recherches pour botter un peu les fesses du gros panda <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif" title="Wink" alt="Wink" class="smiley-content"/>
</p>
<!--break-->
<H2>Modifier les paramètres cachés de FireFox</H2>
<p>
	Cela va nous servir par la suite donc autant en parler tout de suite. Les options que nous allons activer sont disponible dans les paramètres internes de firefox, pas dans ses préférences. Pour y accéder il suffit de taper l'URL <kbd>about:config</kbd>. S'affiche alors une liste de noms/valeurs. En double cliquant sur une ligne, nous pouvons modifier cette valeur. En clickant droit, il est possible de la supprimer ou d'en créer une nouvelle. 
</p>
<p>
	Pour les nouvelle valeur crées, il faut choisir son type : chaîne (string), valeur booléenne (boolean) et valeur entière (integer). Ensuite il faut donne son nom, puis sa valeur. 
</p>
<P>
	Voilà, avec cela nous allons pouvoir jouer un peu <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif" title="Wink" alt="Wink" class="smiley-content"/>
</p>

<H2>Performances réseau</H2>
<p>
  Avouons que la vitesse de transfert est peu la base des performances d'un navigateur, avec celle du moteur de rendu. FireFox n'est pas pire qu'un autre navigateur de ce point de vue. Cependant, comme souvent, ses concepteurs ont des "stratégies" qui ne sont pas forcement heureuses.
</p>

<h3>Activation du pipelining</h3>
<p>
  C'est une chose étrange que le pipelining (téléchargement en parallèle des éléments) soit désactivé par défaut sur FireFox. Pour l'activer, il suffit simplement de modifier trois valeurs. Les deux premières active le pipeline en mode normal et avec les proxies. La dernière indique le nombre maximum de requête à traiter en parallèle. 
	
  <div class='code-block code-block-fragment'>
  <div class='container'>
  network.http.pipelining<span class="sy0">=</span><span class="re2">true</span><br />
network.http.proxy.pipelining<span class="sy0">=</span><span class="re2">true</span><br />
network.http.pipelining.maxrequests<span class="sy0">=</span><span class="re2"><span class="nu0">30</span></span>
  </div>
  
  </div>
</p>

<p>
  La dernière valeur peut être modulée selon vos goûts mais un nombre trop important ne servirait à rien. A noter que selon mes tests, ce totoche de FireFox v2 refuse de charger les feuilles CSS et JS en parallèle, ce qui est proche de l'aberrant...
</p>

<h3>Supprimer la résolution IPV6</h3>
<p>
  Une autre modification qui peut améliorer les performances est donc de désactiver la résolution DNS pour l'IPV6 (sauf si vous avez un tel réseau <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif" title="Wink" alt="Wink" class="smiley-content"/>. Le but est d'éviter que FireFox ne s'amuse à résoudre un nom en IPV6 lorsque cela n'a aucune raison d'être :
	
  <div class='code-block code-block-fragment'>
  <div class='container'>
  network.dns.disableIPv6 <span class="sy0">=</span><span class="re2"> true</span>
  </div>
  
  </div>
</p>

<h3>Pour aller plus loin...</h3>
<p>
	Enfin, comme l'indiquait FreeFlyer, un très bon plugin permet de paramétrer une partie de ces valeurs. Il s'agit de <a class='external' target='_blank' href='http://fasterfox.mozdev.org/' >FasterFox</a>. Ce plugin est très dense, il permet de régler le pipelining comme indiqué plus haut, mais permet aussi d'ajouter le téléchargement silencieux des liens d'une page, et pas mal d'autres goodies. A tester donc. 
</p>


<H2>Performances visuelles</H2>

<h3>XUL</h3>
<p>
  Là il s'agit de la lenteur de l'interface même de FireFox, pas du rendu des pages. C'est la latence que l'on constate par exemple pour afficher la page de préférences. 
</p>
<p>
Techniquement, l'interface graphique de FireFox est décrite par des fichiers 
  <a target='_blank' href='http://fr.wikipedia.org/wiki/XML'>
  XML
  </a> (barres d'outils, menus, etc...) formant une sorte de langage de description d'interfaces, le XUL. Ces fichiers XML sont "animés" par des... scripts en javascript. En somme, FireFox est une fenêtre vide et tout ce qu'il y a à l'intérieur de cette fenêtre est du XUL. Pour s'en convaincre, collez <kbd>chrome://browser/content/browser.xul</kbd> dans la zone d'adresse de FireFox et validez.
</p>
<p>
  L'interface graphique de FireFox est donc totalement interprétée et sa vitesse est par conséquence limitée par l'utilisation de javascript qui est clairement plus lent qu'un équivalent compilé en C. Une bonne manière de s'en convaincre est de lancer 
  <a target='_blank' href='http://fr.wikipedia.org/wiki/epiphany'>
  epiphany
  </a> qui pour un temps encore utilise le même moteur de rendu que Firefox : 
  <a target='_blank' href='http://fr.wikipedia.org/wiki/Gecko'>
  Gecko
  </a>. Mais dans le cas d'Epiphany, toute l'interface est codée en C, c'est beaucoup plus réactif, beaucoup moins gourmand en mémoire, mais aussi clairement moins puissant. 
</p>
<p>
   La aussi, pour ce prouver que ce n'est pas un délire subjectif, il suffit d'utiliser <kbd>oprofiler</kbd> pour auditer l'utilisation du processeur lorsque l'on affiche des boites de dialogues, des menus, le résultat est le suivante :
	
  <div class='code-block code-block-fragment'>
  <div class='container'>
  12475 18.4517% libmozjs.so
  </div>
  
  </div> 
<p>
<p>
  Le problème est qu'il n'y a pas grand moyen d'améliorer les choses sur cet aspect. Passons donc à la suite. 
</p>

<h3>X11</h3>
<p>
  Alors je sens que je vais faire débouller des armées de trolls colériques en disant cela, mais X11, c'est pas un scoop, c'est lent. Et c'est logique, car au même titre que le couple XUL/JS apporte une richesse payée par une certain lenteur, X11 et la transparence réseau permettent des montages impossibles ailleurs (genre des écrans déportés sur des machines distribuées), mais induisant des temps d'affichages supérieurs à d'autres environnement. Allez disons le, c'est plus lent que Windows. 
</p>
<p>
  Et pour s'en convaincre une fois de plus, ce n'est pas sorcier. Installez une VM avec Windows et les pilotes optimisés VMWare, installez y la même version de FireFox que sous Linux, et comparez les deux vitesses d'affichage d'une page. C'est le jour et la nuit et pourtant Windows est dans une VM...
</p>
<p>
 Alors peut-être n'est-ce pas lié qu'à X11, mais aussi à ce que la version Windows de FireFox a été un peu plus bossée, mais le résultat est là. Et là aussi, mis à part éviter de ralentir X11 en préférant les pilotes propriétaires (nVidia notamment), il n'y a pas de recettes miracles pour booster tout cela. 
</p>
<p>
  A noter que l'utilisation de <a class='external' target='_blank' href='/node/1209' >xrestop</a> nous montre que FireFox est un mangeur de ressources de tout premier ordre. Ce qui ne doit pas être sans conséquences sur les performances sous X11. 
</p>


<h3>Diminuer le temps d'attente avant rendu visuel d'une page</h3>
<p>
  Finalement, le seul point sur lequel nous pouvons jouer est l'aspect "psychologique" de la vitesse. Si une page met 10 secondes à se charger, le navigateur semblera plus "lent" s'il attends d'avoir toutes les informations pour l'afficher. Nous allons donc indiquer à firefox de lancer le rendu de la page le plus tôt possible. Cela est possible en créant une nouvelle "valeur entière" dans la paramétrage interne de FireFox (voir plus haut) et en fixant à 0ms le temps d'attente avant rendu visuel de la page. 
	
  <div class='code-block code-block-fragment'>
  <div class='container'>
  nglayout.initialpaint.delay<span class="sy0">=</span><span class="re2"><span class="nu0">0</span></span>
  </div>
  
  </div>
</p>


	<a name='chapter_4'></a>
  <h2>Conclusion</h2>
	
<p>
  On ne peut pas dire qu'avec tout cela j'atteigne la vitesse de konqueror mais c'est mieux... On va se consoler avec cela <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif" title="Wink" alt="Wink" class="smiley-content"/>  
</p>    ]]></content>
  </entry>
  <entry>
    <title>FireFox, les extensions indispensables</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1220" />
    <id>http://artisan.karma-lab.net/node/1220</id>
    <published>2008-07-14T08:32:37+02:00</published>
    <updated>2008-07-30T10:47:49+02:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="FireFox" />
    <category term="OK" />
    <category term="Planet Libre" />
    <category term="Article" />
    <summary type="html"><![CDATA[<p>
Les extensions (qui de ne sont pas des plugins comme me le rappelle souvent Sonny <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif" title="Wink" alt="Wink" class="smiley-content"/> ) permettent d'étendre les fonctionnalités de FireFox. Et certaines font cela tellement bien qu'elle deviennent les seules raisons valables de garder ce navigateur.
</p>
<p>
Ce qui suit est donc avant tout <i>ma</i> liste d'extension pour FireFox qui couvre tous mes besoins de navigation. 
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>
Les extensions (qui de ne sont pas des plugins comme me le rappelle souvent Sonny <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif" title="Wink" alt="Wink" class="smiley-content"/> ) permettent d'étendre les fonctionnalités de FireFox. Et certaines font cela tellement bien qu'elle deviennent les seules raisons valables de garder ce navigateur.
</p>
<p>
Ce qui suit est donc avant tout <i>ma</i> liste d'extension pour FireFox qui couvre tous mes besoins de navigation. 
</p>
<!--break-->

	<a name='chapter_1'></a>
  <h2><a class='external' target='_blank' href='http://flashblock.mozdev.org/' >BlockFlash</a></h2>
	
<p>
   Aussi utile que bête comme choux, cet outil va afficher à la place des animations flash une icône qui ne charge le plugin que si vous cliquez dessus. Vu la légendaire stabilité du plugin flash sous Xorg/Linux cette extension devient vite indispensable. Un excellent complément à adBlock.
</p>


	<a name='chapter_2'></a>
  <h2><a class='external' target='_blank' href='http://addons.mozilla.org/firefox/addon/10' >AdBlock</a></h2>
	
<p>
Une des bêtes noires des annonceurs et de certains blogs, un bonheur pour les autres. Cette extension va simplement filtrer tout ce qui est publicité et <a class='external' target='_blank' href='http://artisan.karma-lab.net/comment-ne-plus-etre-trace-par-google-analytics' >spyweb</a>. Si vous n'utilisez pas <a class='external' target='_blank' href='http://artisan.karma-lab.net/se-premunir-des-spywebs-avec-privoxy' >privoxy</a> (au boulot par exemple), il vous permet d'améliorer grandement confort, vitesse de chargement et anonymat. 
</p>
<p>
  En complément d'AdBlock, vous pouvez aussi utiliser <a class='external' target='_blank' href='https://addons.mozilla.org/fr/firefox/addon/1136' >AdBlock Filterset.G Updater</a> qui permet de maintenir les règles à jour. 
</p>


	<a name='chapter_3'></a>
  <h2><a class='external' target='_blank' href='http://chrispederick.com/work/user-agent-switcher/' >UserAgent Switcher</a></h2>
	
<p>
Là aussi du très simple mais très utile lorsque l'on veut se faire passer pour un navigateur que je ne citerais pour ne pas paraître trop énervé. A noter qu'avec le temps, le nombre de site qui osent encore ne pas être être compatible Gecko diminue rendant l'utilisation de cette extension plus rare. 
</p>


	<a name='chapter_4'></a>
  <h2><a class='external' target='_blank' href='http://amb.vis.ne.jp/mozilla/scrapbook/' >ScrapBook</a></h2>
	
<p>
   Lors de la première version de cette page, un <a href="#comment-1288">gentil contributeur anonyme</a> m'a dirigé sur cette extension. Je l'en remercie encore chaudement car autant dire qu'aujourd'hui, Scrapbook, FireFox et FireBug (voir plus loin) sont tout simplement indissociables. 
</p>
<p>
   Cette extension est un véritable centre documentaire permettant de stocker, trier, annoter, modifier des pages archivées une fois pour toute par un simple <kbd>glisser-déposer</kbd>. L'outil est suffisamment ouvert pour prendre en charge tous les formats (pages, fichiers vidéo, etc) que ce soit sur un site, ou en local.
</p>
<p>
  Le tout est stocker localement à un emplacement de votre choix, et comble du luxe, il est possible de définir plusieurs emplacements sur lesquels il est aisé de basculer. Pratique par exemple pour mettre un dépôt scrapbook supplémentaire sur une clef USB. 
</p>
<p>
Le format de stockage, pour ne rien gâter, est totalement transparent. Un fichier XML sert d'index, et chaque page archivée est dans son dossier avec tous les composants (images, scripts, etc..) permettant de le relire, même sans l'extension (tout dossier a son index.html). L'ensemble est quant à lui déposé dans un répertoire que l'on peut bien évidement spécifier à son goût, par exemple sur un partage réseau sauvegardé. Chaque page peut ainsi être commentée, taggée, annotée et l'outil dispose même d'un petit système de recherche.
</p>
<p>
  L'extension est très bien maintenue et régulièrement mise à jour. Comme ont dit, l'essayer c'est l'adopter...
</p>


	<a name='chapter_5'></a>
  <h2><a class='external' target='_blank' href='https://addons.mozilla.org/fr/firefox/addon/3682' >Add to search Bar</a></h2>
	
<p>
  Cette petite extension bien pratique permet par un click-droit sur une zone de recherche, de transformer la dite zone en une nouvelle entrée dans la barre de recherche, en haut à gauche. 
</p>

	<a name='chapter_6'></a>
  <h2><a class='external' target='_blank' href='https://addons.mozilla.org/fr/firefox/addon/1843' >FireBug</a></h2>
	
<p>
  Là c'est <a href="comment-">Moose</a> m'a fait découvrir cette extension dont je ne peux, une fois de plus, plus me passer. Elle permet :
<ul>
<li>Exploration dynamique des éléments d'une page avec affichage contextuel du code de l'élément, du style css, de son layout, de sa position dans le DOM... </li>
<lI>La modification temps réel du DOM.</li>
<li>Exploration des fichiers css attachés, des scripts, et du DOM</li>
<li>Analyse des temps de chargement des éléments constitutifs d'une page sous la forme d'un graph clair et lisible</li>
<li>Debuggage des scripts !! avec points d'arrêt, pas à pas et points de suivi</li>
</ul>
</p>
<p>
Et tout cela dans un panneau en bas de page ou dans une fenêtre séparée avec une interface simple et claire. A se demander comment je faisais avant...
</p>
<div class='inline-box note'>
  A noter cependant que tout cela ne se fait pas sans impact sur les performances globales de rendu. Pensez donc à désactiver son utilisation en temps normal. 
</div>
<p>
  Dernier point, comme Scrapbook, FireBug peut lui-même être étendu par des extensions. C'est le cas de <a class='external' target='_blank' href='http://developer.yahoo.com/yslow/' >yslow</a> que m'a indiqué <kbd>anti-pixel</kbd>. Cette extension d'extension donc, permet d'ajouter une batterie d'outils d'étude de performance de chargement avec en prime des conseils de conception. 
</p>

<p>
  A l'origine, j'utilisais <a class='external' target='_blank' href='http://chrispederick.com/work/web-developer/' >WebDevelopper</a> pour ce type de tâche. Ce dernier reste cependant utile pour le dévérouillage de fonctionnalités de FireFox (cache, coockies, etc...) et le redimensionnement du navigateur par profile de résolution.
</p>


	<a name='chapter_7'></a>
  <h2><a class='external' target='_blank' href='http://addons.mozilla.org/firefox/addon/1249' >Restart Firefox</a></h2>
	
<p>
	Simple et bête, cette extension permet juste de relancer FireFox. Utile pour le test d'extension maison, mais aussi et surtout pour redonner vie à un firefox qui broute après une journée. 
</p>    ]]></content>
  </entry>
  <entry>
    <title>Thunderbird tips</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1529" />
    <id>http://artisan.karma-lab.net/node/1529</id>
    <published>2008-04-24T15:32:46+02:00</published>
    <updated>2008-07-30T15:46:02+02:00</updated>
    <author>
      <name>advaya</name>
    </author>
    <category term="FireFox" />
    <category term="OK" />
    <category term="Planet Libre" />
    <category term="Tutoriel" />
    <summary type="html"><![CDATA[<p>Suite à la migration vers gnome (voir <a href='http://artisan.karma-lab.net/node/1323' class='external'>ici</a>), trouver des remplaçants pour toutes les applications KDE que j'avais l'habitude d'utiliser n'a pas posé de gros problèmes, sauf pour le lecteur de courrier électronique <keyboard>kmail</keyboard>. Et après avoir essayé divers lecteurs, aucun ne me convenant vraiment, j'ai donc décidé de jeter à nouveau un oeil sur un outil que j'avais laissé de coté il y a longtemps, <a href='http://www.mozilla-europe.org/fr/products/thunderbird/' class="external">thunderbird</a>. </p>
    ]]></summary>
    <content type="html"><![CDATA[<p>Suite à la migration vers gnome (voir <a href='http://artisan.karma-lab.net/node/1323' class='external'>ici</a>), trouver des remplaçants pour toutes les applications KDE que j'avais l'habitude d'utiliser n'a pas posé de gros problèmes, sauf pour le lecteur de courrier électronique <keyboard>kmail</keyboard>. Et après avoir essayé divers lecteurs, aucun ne me convenant vraiment, j'ai donc décidé de jeter à nouveau un oeil sur un outil que j'avais laissé de coté il y a longtemps, <a href='http://www.mozilla-europe.org/fr/products/thunderbird/' class="external">thunderbird</a>. </p>
<!--break-->
<p>Bien entendu, le lecteur attitré à gnome, <kbd>evolution</kbd>, fonctionne sans problèmes mais deux choses me gênent dans ce lecteur. D'une part son apparence visuelle (question de goût - c'est sûrement paramétrable mais d'emblée je ne suis pas emballé) ; d'autre part un petit souci de SMTP : j'utilise deux STMP différents selon que je suis à la maison ou au boulot, et ce, avec plusieurs comptes email différents. Or à la base, <kbd>evolution</kbd> associe à chaque compte un SMTP fixé. </kbd></p>

<p>Bon ok, pour contourner le problème des STMP multiples, il est possible de créer deux fois le même compte en associant chacun à un SMTP différent mais ce qui me plaisait sous <kbd>kmail</kbd>, c'était la possibilité de choisir à l'envoi le SMTP que je souhaitais utiliser.</p>


	<a name='chapter_8'></a>
  <h2>Importer les messages de kmail</h2>
	

<p>La FAQ de thunderbird explique qu'il suffit de créer une boite temporaire au format <kbd>mbox</kbd> dans kmail et d'y mettre l'ensemble des messages que l'on veut importer, appelons ce dossier <kbd>temporary</kbd>. On copie ensuite ce dossier
dans l'arborescence de thunderbird, normalement dans <kbd>~/.thunderbird/xxxxxx.default/Mail/Local Folders/</kbd> et, ô magie, la boite apparaît dans l'arborescence de thunderbird.</p>


<p>Alors il faut être un peu plus précis (à moins que je n'ai loupé la manip) : en fait, dans  <kbd>~/.kde/share/apps/kmail/mail/</kbd>, il faut aller en réalité dans <kbd>.temporary.directory</kbd>, qui n'est donc pas un dossier visible lors d'un simple <kbd>ls</kbd>. Et c'est le fichier <kbd>temporary</kbd> que contient ce dossier caché qu'il faut déplacer vers l'arborescence de thunderbird.</p>

<p>Autre problème : si <kbd>temporary</kbd> contient lui-même des sous-dossiers, ils ne seront pas vus par thunderbird pour la même raison : il faudra recopier le contenu des sous-dossiers cachés. Encore une fois, j'ai peut-être foiré la manip d'export ... mais après ces quelques péripéties toutes mes boites sont importées sans problèmes.</p>


	<a name='chapter_9'></a>
  <h2>Les SMTP multiples sous Thunderbird</h2>
	

<p>Sous thunderbird, on peut déclarer autant de SMTP indépendants que l'on souhaite, en sachant qu'il y en a un d'utilisé par défaut pour l'envoi du courrier. Ensuite, chaque compte peut utiliser le SMTP qu'il souhaite, soit celui par défaut, soit un autre bien précis : il suffit, dans la gestion du compte, de cocher le SMTP voulu. Vous allez me dire que cela ne résout pas vraiment mon problème puisque cette méthode m'oblige à reconfigurer mon SMTP par défaut à chaque fois que j'arrive au boulot, ou que je rentre à la maison. Pas pratique.</p>

<p><image id="1" width="100"/>C'est aussi ce que je me suis dit, et après quelques recherches je suis tombé sur un petit plugin sympa : <a href='https://addons.mozilla.org/fr/thunderbird/addon/106' class='external'>Buttons!</a>. L'intérêt premier de ce plugin est de permettre l'ajout de tout un tas de boutons dans les barres d'outil de thunderbird. Je n'ai pas tout exploré, mais le bouton qui m'a de suite intéressé, c'est celui qui permet un raccourci aux différents SMTP configurés. Pour ma part, je n'ai installé ce bouton que sur la fenêtre de rédaction des messages (voir photo).</p>

<p>Un click sur le bouton "SMTP" permet d'accéder aux paramètres des SMTP, mais plus simplement si on clique sur la flêche associée au bouton (juste à droite de celui-ci), on peut alors directement choisir le SMTP à utiliser pour l'envoi du message. C'est exactement ce que je souhaitais <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/smile.gif" title="Smiling" alt="Smiling" class="smiley-content"/></p>


	<a name='chapter_10'></a>
  <h2>Iconification de Thunderbird</h2>
	

<p>C'est bien pratique de voir dans le systray si des nouveaux messages sont arrivés ; or thunderbird, par défaut, ne possède pas ce système de mise en icone dans la boite des miniatures, comme tout bon lecteur de mail gnome ou kde. Qu'à cela ne tienne, deux options s'offrent à nous.</p>

<p>La première consiste à utiliser un petit paquet s'appelant <kbd>alltray</kbd> qui est sûrement disponible chez votre fournisseur habituel de paquetages. Le principe de alltray est de pouvoir iconifier tout ce que vous souhaitez pour rendre la fenêtre visible ou invisible en cliquant sur la miniature. C'est évidemment surtout utile pour des applications non gnome ou non kde (firefox, par exemple).</p>

<p>Petit inconvénient tout de même : alltray ne permet pas le changement de statut de la miniature, par exemple l'arrivée de nouveaux messages n'en change pas l'aspect, ce qui est un peu gênant. Mais pour d'autres applications, c'est un outil intéressant il me semble.</p>

<p><image id="2" width="100"/>Deuxième solution : on se tourne à nouveau vers un plugin ; et celui qui correspond à mon besoin s'appelle <a href='http://moztraybiff.mozdev.org/releases.html' class='external'>moztraybiff</a>. Ce plugin iconifie thunderbird dans le systray et l'arrivée de nouveaux messages modifie la miniature (cf. photo). Seul petit inconvénient : fermer la fenêtre thunderbird ne le laisse pas dans la boite à miniature, mais ferme réellement l'appli. Il faut donc ne cliquer QUE sur la miniature pour basculer entre le mode visible/caché. Au fond, c'est plus naturel, mais ça demande un petit temps d'adaptation.</p>


	<a name='chapter_11'></a>
  <h2>Personnalisation de l'interface</h2>
	

<p>Dernier point : on peut tout çà fait modifier l'apparence de thunderbird via une feuille CSS. Il faut pour cela (s'ils n'existent pas) créer un dossier <kbd>chrome</kbd> dans <kbd>~/.thunderbird/xxxxxx.default</kbd> et y mettre dedans la feuille de style sous le nom de <kbd>userChrome.css</kbd> (attention aux majuscules/minuscules pour le dossier et le fichier).</p>

<p>Je ne vais pas rentrer en détail dans toutes les possibilités de personnalisation qui sont nombreuses, voici deux liens qui font le point sur les différentes classes pouvant être stylisées : <a href='http://www.mozilla.org/unix/customizing.html#usercss' class='external'>mozzilla.org</a> et <a href='http://www.linnhe2.free-online.co.uk/thunderbird/chrome.html' class='external'>linnhe web site</a>.</p>


	<a name='chapter_12'></a>
  <h2>Conclusion</h2>
	

<p>Au final, thunderbird convient parfaitement à mes besoins d'utilisation grâce à l'utilisation de plugins, ce qui est de façon générale l'un des gros points forts des appli mozilla.
</p>

<p>Pas besoin donc de me torturer avec <kbd>evolution</kbd> que je ne porte pas dans mon coeur, et je peux définitivement laisser de coté tout résidu de KDE, ce qui permet d'avoir un ensemble plus homogène.</p>    ]]></content>
  </entry>
  <entry>
    <title>Rendre utilisable FireFox sous KDE</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1177" />
    <id>http://artisan.karma-lab.net/node/1177</id>
    <published>2007-09-26T00:10:00+02:00</published>
    <updated>2008-10-02T19:54:36+02:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="FireFox" />
    <category term="Aucun" />
    <category term="OK" />
    <category term="Tutoriel" />
    <summary type="html"><![CDATA[<p>
  Oui, FireFox est <i>déjà</i> utilisable sous KDE mais dieu que c'est mal intégré. Alors pour ne pas noyer le bébé avec l'eau du bain, j'ai tenté de customiser un peu le monstre pour qu'il soit plus intégré au reste de KDE et plus en phase avec les performances de konqueror. 
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>
  Oui, FireFox est <i>déjà</i> utilisable sous KDE mais dieu que c'est mal intégré. Alors pour ne pas noyer le bébé avec l'eau du bain, j'ai tenté de customiser un peu le monstre pour qu'il soit plus intégré au reste de KDE et plus en phase avec les performances de konqueror. 
</p>
<!--break-->
<H2>Améliorer le Look de FireFox</H2>
<h3>Synchroniser GTK avec KDE</H3>
<p>
	Le look par défaut de FireFox est franchement horrible sous Linux/KDE. Et à mon humble avis, l'utilisation de thèmes aggrave encore les choses pour ceux qui aiment que l'ensemble des applications se ressemble. 
</p>
<p>
  Comme dit plus haut, par défaut, FireFox utilise le look de GTK. Il existe certains styles comme ClearLook qui ont été portés à la fois sur GTK et sur Qt. Mais la "vraie" solution réside plutôt d'ans l'utilisation de <kbd>gtk-qt</kbd>. <kbd>Qt-Gtk</kbd> est en réalité un thème pour GTK qui a la particularité de copier celui qui est en court d'utilisation sous Qt. En utilisant ce style, les applications GTK (FireFox, mais aussi Gimp, Evolution, etc...) deviennent alors d'un coup de baguette magique compatible avec le look général de KDE. 
</p>
<p>
	Pour l'installer sous Mandriva
	
  <div class='code-block code-block-fragment'>
  <div class='container'>
  urpmi gtk-qt-engine
  </div>
  
  </div>
</p>
<p>
  Ceci fait, il fait paramétrer GTK pour utiliser notre nouveau style. Et là il y a quelques mystères... J'ai remarqué que pour un look quasi parfait de toutes les applications, j'ai besoin de trois choses.
</p>
<p>
  Tout d'abord, d'aller dans le panneau de configuration de KDE, dans la section <kbd>Apparence/Style et Police GTK</kbd>, de choisir <kbd>Use my KDE style in GTK applications</kbd>, <kbd>Use my KDE fonts in GTK applications</kbd>, de clicker sur <kbd>Install scrollbar fix...</kbd>, puis sur <kbd>Appliquer</kbd>. 
</p>
<p>
  Ensuite, je vais régler, en plus, le style GTK par l'application <kbd>gtk-chtheme</kbd>. Elle aussi se trouve dans votre distribution sans aucun doute. Une fois lancée, vous cherchez le style <kbd>Qt</kbd> et vous le sélectionnez. 
</p>
<p>
  Dernier point, installer le <kbd>gnome-settings-deamon</kbd>. Cet utilitaire semble important pour que le style passe bien sur certaines applications comme... firefox, mais aussi Eclipse. Le plus simple est d'installer le package <kbd>gnome-control-center</kbd>. Ceci fait, il faut simplement créer un lien symbolique dans votre dossier AutoStart :
	
  <div class='code-block code-block-fragment'>
  <div class='container'>
  <a target="blank" href="http://pwet.fr/man/linux/commandes/ln"><span class="kw2">ln</span></a> -s <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>gnome-settings-daemon ~<span class="sy0">/</span>.kde<span class="sy0">/</span>Autostart
  </div>
  
  </div>
</p>
<p>
	Ceci fait, pour le lancer la première fois et pour re-re-re-configurer le style GTK, lancez <kbd>gnome-control-center</kbd>, clickez sur <kbd>Thème</kbd> puis <kbd>Personnaliser...</kbd>, sélectionnez dans la liste de l'onglet <kbd>Contrôles</kbd> le style <kbd>Qt</kbd>, puis clickez sur <kbd>Fermer/Fermer</kbd>
</p>
<p>
	Voilà, ça devrait être bon, vérifiez à l'aide de la commande <kbd>ps -edaf</kbd> que le démon est bien lancé, quittez firefox et relancez le, normalement il devrait avoir le style Qt, même pour les onglets...
</p>


<H3>Modifier l'interface utilisateur</H3>
<p>
  L'interface de FireFox est très ouvertes car écrite en XUL (nous verrons cela plus en détail avec les extensions), un format de description hérité du XML qui emprunte beaucoup de ses comportements au couple DOM/Javascript. Cette particularité rend possible la modification de l'interface même de firefox à travers l'utilisation de simples feuilles de style. Et c'est très simple comme vous allez le voir.
</p>
<p>
  Prenons un exemple. Sous KDE, j'utilise une fonte très particulière pour les menus, la <kbd>Square721 BT</kbd>, en 12pt. Et malheureusement, Firefox n'en a cure. Malgrès l'utilisation de GTK/QT, il décide d'afficher le tout a sa sauce.
</p>
<p>
  La solution se trouve dans votre dossier <kbd>./mozilla/firefox/XXXXX.defaults/chrome</kbd>. Vous trouverez là, deux fichiers <kbd>userChrome.css</kbd>. S'il n'existe pas il faut le créer. Ce fichier est ni plus ni moins qu'une feuille de style classique à la différence près qu'il ne modifie pas l'apparence d'une page web, mais de l'interface de FireFox. La syntaxe est strictement la même, seul les tags changent, car XUL est plus riche que HTML et contient par exemple des balises <kbd>bookmarks-tree</kbd>, <kbd>tabs</kbd> ou <kbd>menubar</kbd>. Nous alons donc ajouter un bloc de CSS pour modifier la fonte et la taille de celle-ci pour l'ensemble (ou presque) de firefox. 

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="re0">#main-window</span>, <span class="re0">#toolbar-menubar</span>, menubar &gt; menu, <span class="re0">#bookmarks-menu</span>, tabs, <span class="re0">#bookmarksPanel</span>, bookmarks-tree, menubar &gt; menu &gt; menu<br />
<span class="br0">&#123;</span><br />
&nbsp; <span class="kw1">font-family</span><span class="sy0">:</span><span class="st0">&quot;Square721 BT&quot;</span> !important <span class="sy0">;</span><br />
&nbsp; <span class="kw1">font-size</span><span class="re2">:<span class="re3">12px</span></span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
  </div>
  
  </div>
</p>
<p>
Le mot clef <kbd>!important</kbd> est très... important <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/smile.gif" title="Smiling" alt="Smiling" class="smiley-content"/> En effet, il va indiquer à firefox que ce n'est pas la peine d'utiliser une autre police, c'est celle là que l'on veut. Bien évidement, il faut redémarrer firefox pour voir le résultat (vous pouvez remplacer "ma" fonte par n'importe quelle autre police de votre goût). 
</p>
<p>
Alors oui ce système est très puissant mais aussi assez obscure. Je n'ai en effet pas réussi à mettre la main sur une documentation complète et/ou à jour sur les balises et les IDs utilisables. Le bon moyen pour trouver votre voie, est d'utiliser le men <kbd>DOM Inspector</kbd> et de saisir l'URL <kbd>chrome://browser/content/browser.xul</kbd> dans l'inspecteur. Là il vous faut naviguer pour trouver votre bonheur et le reporter dans la feuille de style.
</p>
<div class='inline-box note'>
Petit gag amusant, tapez la même URL (<kbd>chrome://browser/content/browser.xul</kbd>) non pas dans le DOM inspector, mais dans firefox directement <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif" title="Wink" alt="Wink" class="smiley-content"/>
</div>
<H3>Modifié le rendu des pages</H3>
<p>
Maintenant que l'interface nous convient mieux, il est temps de s'attaquer aux pages elle-mêmes. En effet il y a plusieurs choses qui ne vont pas. Les bordures des zones d'édition et des boutons sont épaisses et laides, les boutons cubiques, les radios et les combos semblent venir d'un autre âge. 
</p>
Alors nous pourions appliquer le même principe que pour l'interface en modifiant cette fois le fichier <kbd>userContent.css</kbd> qui se trouve au même endroit que <kbd>userChrome.css</kbd>. Par exemple si je veux que toutes les zones d'édition aient une bordure grise, il me suffit d'ajouter :

  <div class='code-block code-block-fragment'>
  <div class='container'>
  textArea<br />
<span class="br0">&#123;</span><br />
&nbsp; <span class="kw1">border</span><span class="sy0">:</span> <span class="re3">1px</span> <span class="kw2">solid</span> <span class="kw2">gray</span> !important<span class="sy0">;</span><br />
<span class="br0">&#125;</span>
  </div>
  
  </div>
</p>
<p>
Après redémarrage, toutes les zones de textes sont ainsi modifiées, quel que soit le site visité. Cette solution permet avec un peu d'effort de régler tous les problèmes. Mais l'avantage est que quelqu'un a déjà fait cela pour nous en fournissant un kit complet transformat tous les contrôles firefox avec un look kde. Cela s'apelle <a class='external' target='_blank' href='http://www.kde-apps.org/content/show.php/show.php?content=64392&amp;vote=good&amp;tan=88705725&amp;PHPSESSID=def9661e2a761bc1a37bb007784b20bd' >FireFox Form Widgets</a>. Une fois que vous avez téléchargé cette archive, il suffit de la décompresser, d'aller dans le dossier KDEWidgets, et de copier tout son contenu (5 images et une feuille css) dans le dossier <kbd>/usr/lib/firefox/res/</kbd>. Après redémarrage de firefox, tout les formulaires sont maintenant visuellement compatibles avac KDE. 
</p>


	<a name='chapter_13'></a>
  <h2>Améliorer l'intégration avec KDE</h2>
	
<p>
  L'intégration à KDE est à prendre au sens large du terme. Il s'agit autant de remplacer les dialogues GTK par ceux de KDE (ex. Impression) que de pouvoir appeler certaines applications KDE en lieu et place des fonctions internes de FireFox (ex. Téléchargement). 
</p>

<H3>Utiliser KPrint pour l'impression</H3>
<p>
   GTK et l'impression c'est un roman. Linus Torvald lui-même avait pété le plomb sur ce sujet tant l'équipe Gnome avait simplifié à outrance les dialogues au point de les rendre absolument inutilisable dans certains cas (avec deux imprimantes par exemple). KDE, en revanche, a un magnifique moteur d'impression nommé kprint. Nous allons donc tenter de l'utiliser. Pour cela il faut aller dans la boîte de dialogue d'impression de firefox (Fichier/Imprimer). Cliquer sur "propriétés". Dans la zone "commande", videz ce qui existe et saisissez juste <kbd>kprinter --stdin<kbd>. Validez et tentez une impression, vous devriez enfin déboucher sur la fenêtre d'impression de kde. simple et efficace (idée originale trouvé <a class='external' target='_blank' href='http://www.granneman.com/webdev/browsers/mozillafirefoxnetscape/linuxspecific/kdeprintinginmozilla/' >ici</a>)
</p>

<H3>Ajouter les flux RSS dans akregator</H3>
<p>
  Pour réaliser cela, il faut utiliser <a class='external' target='_blank' href='/node/1215' >ce script</a>. Vous pouvez sauver ce script en <kbd>/usr/bin/xdg-addrss</kbd> et le rendre exécutable (<kbd>chmod +x /usr/bin/xdg-addrss</kbd>).Ensuite, dans les préférences de FireFox 3, allez dans l'onglet <kbd>Applications</kbd>, cherchez <kbd>Flux WEB</kbd>/<kbd>Autres..</kbd> et sélectionnez votre nouveau script. 
</p>

<p>
	Comme souvent, l'effet est immédiat, il suffit d'aller sur un site disposant de flux, de cliquer sur l'icône orange dans la barre d'url et de sélectionner votre flux pour qu'il apparaisse sous akregator. Une bonne chose de faite, passons à la suite <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif" title="Wink" alt="Wink" class="smiley-content"/>
</p>


<h3>Appeler des programmes externes à partir de FireFox</h3>
<p>
  Pour rendre FireFox encore un peu plus intégré à KDE, j'avais besoin de deux choses. Tout d'abord un menu contextuel sur un lien dans une page permettant de transférer l'URL vers Agregator. L'idée est d'exploiter pour se simplifier la vie, les fils discussion au format RSS, de plus en plus nombreux. Ce menu devra exécuter le script présenté plus haut pour ajouter la conversation à akregator.
</p>
<p>
  La deuxième chose qui me manque est l'archivage des pages web. L'idée est d'avoir un menu dans la barre principale appelant un script qui va télécharger la page avec ses images, ses styles, etc... et bien sur compresser l'ensemble en un fichier .war. Ses fichiers .war sont directement lisibles par konqueror et me servent à garder trace de tous les articles qui vont un jour ou l'autre disparaître de la toile. Je peux garder konqueror pour les relire, mais je dois pouvoir les créer avec FireFox. 
</p>
<p>
  Alors aussi étrange cela puisse paraître, ajouter un menu pour Firefox, c'est la croix et la bannière. En réalité il n'existe aucun mécanisme standard permettant de faire cela simple (comme un simple fichier .desktop sous konqueror). Pour y arriver, la seule possibilité est de faire une extension... Sacré programme pour un bête menu <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/arf.gif" title="Arf" alt="Arf" class="smiley-content"/>
</p>
<h3>Création d'un plugin basique</h3>
<p>
  Heureusement, après avoir passé quelque temps à tenter de créer un plugin, j'ai découvert un <a class='external' target='_blank' href='http://ted.mielczarek.org/code/mozilla/extensionwiz/' >magnifique assistant qui fabrique cela tout seul</a>. Il suffit de la paramétrer pour lui demander de nous générer un fichier xpi contenant un squelette fonctionnel.
</p>
<p>
  Dans notre cas nous allons donner les valeurs suivantes :
	<ul>
		<li><b>Your Name: </b>Votre nom <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif" title="Wink" alt="Wink" class="smiley-content"/></li>
		<li><b>Extension Name: </b>le nom du plugin, par exemple, handleit</li>
		<li><b>Short Name: </b>handleit</li>
		<li><b>Extension: </b>handleit A.T. _bad_karmalab.net</li>
		<li>Cocher <kbd>Create options dialog and preferences</kbd></li>
		<li>Cocher <kbd>Create context menu item</kbd></li>
		<li>Cocher <kbd>Create custom about box</kbd></li>
	</ul>
</p>
<p>
	Vous pouvez en mettre plus si cela vous tente mais c'est tout ce qui est nécessaire. Il ne reste plus qu'à cliquer sur <kbd>Create Extension</kbd> pour télécharger le fichier squelette <kbd>handleit.zip</kbd>
</p>
<p>
	Ce fichier contient tout ce qu'il faut pour fabriquer un XPI mais pour l'instant, nous allons l'utiliser tel quel sous FireFox. Première étape, localiser votre dossier de profile. Il se trouve normalement dans le dossier <kbd>~/.mozilla/firefox</kbd> et porte un nom ésotérique avec l'extension <kbd>.default</kbd>. J'imagine que c'est pour des raisons de sécurité. S'il vous en avez plusieurs, trouvez le bon en vous aidant du contenu du fichier <kbd>bookmark.html</kbd> qui se trouve à l'intérieur.</p>
<p>
	Dans ce dossier, que nous appellerons à partir de maintenant <kbd>nrz806.default</kbd>, se trouve un dossier <kbd>extensions</kbd>. Et dans ce sous-dossier sont stockés tous les plugins que vous avez installés. Pour utiliser notre plugin en cours de fabrication, nous allons donc procéder de la manière suivante :
	
  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class=\"kw3\">cd</span><br />
<a target=\"blank\" href=\"http://pwet.fr/man/linux/commandes/mkdir\"><span class=\"kw2\">mkdir</span></a> workspace<br />
<span class=\"kw3\">cd</span> workspace<br />
<a target=\"blank\" href=\"http://pwet.fr/man/linux/commandes/unzip\"><span class=\"kw2\">unzip</span></a> ~<span class=\"sy0\">/</span>Desktop<span class=\"sy0\">/</span>handleit.<a target=\"blank\" href=\"http://pwet.fr/man/linux/commandes/zip\"><span class=\"kw2\">zip</span></a><br />
<span class=\"kw3\">cd</span> handleit<br />
<span class=\"kw3\">echo</span> <span class=\"re1\">$PWD</span><span class=\"sy0\">/</span> <span class=\"sy0\">&gt;</span> ~<span class=\"sy0\">/</span>.mozilla<span class=\"sy0\">/</span>firefox<span class=\"sy0\">/</span>nrz806.default<span class=\"sy0\">/</span>extensions<span class=\"sy0\">/</span>handleit\<span class=\"sy0\">@</span>karmalab.net
  </div>
  
  </div>
</p>
<p>
	Ceci va créer un \"faux plugin\" dans le dossier des extensions qui pointe sur le plugin que l'on est en train de développer. Pour continuer, je vous conseille d'installer l'extension <external href=\"https://addons.mozilla.org/en-US/firefox/addon/1249\">Restart FireFox</a>. En effet, redémarrer firefox est le seul moyen de tester les modifications dans le plugin, youpi <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/smile.gif" title="Smiling" alt="Smiling" class="smiley-content"/>
</p>
<p>
	De toute façon, l'installation de cette extension va logiquement impliquer... de redémarrer FireFox. Lorsque ce dernier sera revenu à lui, vous aurez un nouveau menu <kbd>Restart FireFox</kbd> dans <kbD>Fichier</kbd>, un menu <kbd>En rouge</kbd> dans <kbd>Outils</kbD> et un nouveau menu dans votre click-droit. Les deux derniers ont été ajoutés par votre plugin. 
</p>

<p>
	Pour modifier les libélés, allez simplement changer leur valeur dans <kbd>~/workspace/handleit/locale/en-US/handleit.dtd</kbd>. Mettez <kbd>Archiver la page courante</kbd> comme valeur à <kbd>handleit.label</kbd>, et <kbd>Ajouter la conversation à Akregator</kbd> dans <kbd>handleitContext.label</kbd>. Ceci fa22it, redémarrez FireFox pour admirez votre premier résultat. 
</p>

<p>
	Les plugins sont en javascript, pour modifier le comportement de nos deux menus (qui pour l'instant disent "hello world"), il faut modifier le fichier <kbd>/home/yoran/workspace/handleit/content/overlay.js</kbd>. Il nous faut tout d'abord y ajouter une fonction qui exécute une commande externe à FireFox (et oui, c'est possible...). Pour cela, ajoutez après la fonction <kbd>onLoad:fuchions(){...},</kbd> le code suivante :
	
  <div class='code-block code-block-fragment'>
  <div class='container'>
  execute<span class="sy0">:</span><span class="kw2">function</span><span class="br0">&#40;</span>command<span class="sy0">,</span>args<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; <span class="kw2">var</span> targetFile <span class="sy0">=</span> Components.<span class="me1">classes</span><span class="br0">&#91;</span><span class="st0">'@mozilla.org/file/local;1'</span><span class="br0">&#93;</span>.<span class="me1">createInstance</span><span class="br0">&#40;</span>Components.<span class="me1">interfaces</span>.<span class="me1">nsILocalFile</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; targetFile.<span class="me1">initWithPath</span><span class="br0">&#40;</span>command<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw2">var</span> process <span class="sy0">=</span> Components.<span class="me1">classes</span><span class="br0">&#91;</span><span class="st0">'@mozilla.org/process/util;1'</span><span class="br0">&#93;</span>.<span class="me1">getService</span><span class="br0">&#40;</span>Components.<span class="me1">interfaces</span>.<span class="me1">nsIProcess</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; process.<span class="me1">init</span><span class="br0">&#40;</span>targetFile<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; process.<span class="me1">run</span><span class="br0">&#40;</span><span class="kw2">false</span><span class="sy0">,</span> args<span class="sy0">,</span> args.<span class="me1">length</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><span class="sy0">,</span>
  </div>
  
  </div>
</p>
<p>
	La virgule finale est importante !! Ceci fait, nous allons vider le corps de la fonction <kbd>onMenuItemCommand</kbd> pour la faire coller à nos besoins. En l'occurence il s'agit d'exécuter deux commandes différentes en fonction du type d'appel (par le menu principal ou par le menu contextuel), cela nous donne :
	
  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="kw1">if</span> <span class="br0">&#40;</span>gContextMenu<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; <span class="kw2">var</span> args <span class="sy0">=</span> <span class="br0">&#91;</span>gContextMenu.<span class="me1">getLinkURL</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span><span class="st0">'conversation'</span><span class="br0">&#93;</span><span class="sy0">;</span><br />
&nbsp; handleit.<span class="me1">execute</span><span class="br0">&#40;</span><span class="st0">'/usr/bin/xdg-addrss'</span><span class="sy0">,</span>args<span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<span class="kw1">else</span><br />
<span class="br0">&#123;</span><br />
&nbsp; <span class="kw2">var</span> pos<span class="sy0">=</span>document.<span class="me1">title</span>.<span class="me1">indexOf</span><span class="br0">&#40;</span><span class="st0">&quot;-&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw2">var</span> title<span class="sy0">=</span>document.<span class="me1">title</span>.<span class="me1">substring</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="sy0">,</span>pos<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw2">var</span> args <span class="sy0">=</span> <span class="br0">&#91;</span>window.<span class="me1">content</span>.<span class="me1">document</span>.<span class="me1">location</span>.<span class="me1">href</span><span class="sy0">,</span> title<span class="sy0">,</span>document.<span class="me1">characterSet</span><span class="br0">&#93;</span><span class="sy0">;</span><br />
&nbsp; handleit.<span class="me1">execute</span><span class="br0">&#40;</span><span class="st0">'/usr/bin/xdg-war-archive'</span><span class="sy0">,</span>args<span class="br0">&#41;</span><span class="sy0">;</span>&nbsp; &nbsp; &nbsp; <br />
<span class="br0">&#125;</span>
  </div>
  
  </div>
</p>
<p>
	Notez que comparé à l'utilisation précédente, nous passons un paramètre en plus à <kbd>xfg-addrss</kbD> pour spécifier de mettre ce que l'on ajoute dans le dossier <kbD>conversations</kbd> d'Akregator. 
</p>
<p>
	Il ne nous reste maintenant plus qu'à créer le script <kbd>/usr/bin/xdg-war-archive</kbd> disponible <a class='external' target='_blank' href='/node/1216' >ici</a>
</p>
<p>
	Ce script va donc poser sur le bureau de l'utilisateur qui le lance un fichier portant comme nom, le tire de la page. Il consistera en une archive tar.gz complète au format .war lisible donc par konqueror. N'oubliez pas de faire un <kbd>chmod +x /usr/bin/xdg-war-archive</kbd>. 
</p>
<p>
	Il ne reste maintenant plus qu'à redémarer FireFox pour tester tout cela. Si cela coince, il doit y avoir une faute de frappe, vous pouvez mettre des boites de dialogue dans le code pour tester pas à pas :
	
  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="kw2">var</span> promptService <span class="sy0">=</span> Components.<span class="me1">classes</span><span class="br0">&#91;</span><span class="st0">&quot;@mozilla.org/embedcomp/prompt-service;1&quot;</span><span class="br0">&#93;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span class="me1">getService</span><span class="br0">&#40;</span>Components.<span class="me1">interfaces</span>.<span class="me1">nsIPromptService</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
promptService.<span class="kw3">alert</span><span class="br0">&#40;</span>window<span class="sy0">,</span> <span class="st0">&quot;Debugger&quot;</span><span class="sy0">,</span><span class="st0">&quot;Message d'alerte&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;
  </div>
  
  </div>
</p>

<p>
	Maintenant si vous voulez supprimer le faux plugin et installer "pour de vrai" votre création (ou pourquoi pas, la redistribuer, il y a de quoi être fier <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif" title="Wink" alt="Wink" class="smiley-content"/>, la marche à suivre est la suivante :

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="kw3">cd</span> ~<span class="sy0">/</span>workspace<span class="sy0">/</span>handlit<br />
<a target="blank" href="http://pwet.fr/man/linux/commandes/chmod"><span class="kw2">chmod</span></a> +x build.<a target="blank" href="http://pwet.fr/man/linux/commandes/sh"><span class="kw2">sh</span></a><br />
.<span class="sy0">/</span>build.<a target="blank" href="http://pwet.fr/man/linux/commandes/sh"><span class="kw2">sh</span></a>
  </div>
  
  </div>
</p>
<p>
	Vous pouvez maintenant supprimer le faux plugin de votre profile, et installer le fichier XPI fraîchement généré. 
</p>    ]]></content>
  </entry>
</feed>
