<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://www.nikrou.net/feed/rss2/xslt" ?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Le Journal de Nikrou - XUL</title>
    <link>https://www.nikrou.net/</link>
    <atom:link href="https://www.nikrou.net/feed/category/Xul/rss2" rel="self" type="application/rss+xml" />
    <description>Ce journal n'est pas un blog!</description>
    <language>fr</language>
    <pubDate>Sun, 30 Mar 2025 07:06:26 +0200</pubDate>
    <copyright></copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>Dotclear</generator>
          <item>
        <title>Empaqueter son extension!</title>
        <link>https://www.nikrou.net/post/2005/10/26/68-empaqueter-son-extension</link>
        <guid isPermaLink="false">urn:md5:a7f63c7b5af3653a16cb6820ef11b116</guid>
        <pubDate>Wed, 26 Oct 2005 21:35:00 +0000</pubDate>
        <dc:creator>Nicolas</dc:creator>
                  <category>XUL</category>
                          <category>firefox</category>
                  <category>xul</category>
                <description>&lt;p&gt;Ecrire une extension n'est pas très compliqué même si cela peut s'avérer complexe. Mais une fois celle-là écrite il peut-être intéressant de la partager. Pour cela autant avoir pris dès le départ des bonnes habitudes, pour que cette fabuleuse extension s'intègre parfaitement dans firefox (ou mozilla ou thunderbird). Une première étape nécessaire est la répartition des différents fichiers constituants.&lt;/p&gt; &lt;p&gt;En règle générale, les différents fichiers d'une extension sont répartis dans trois répertoires: &lt;em&gt;content&lt;/em&gt;, &lt;em&gt;locale&lt;/em&gt; et &lt;em&gt;skin&lt;/em&gt;. Le répertoire &lt;em&gt;content&lt;/em&gt; contient les fichiers &lt;acronym title=&quot;&quot;&gt;XUL&lt;/acronym&gt;, les fichiers Javascript et les fichiers &lt;acronym title=&quot;eXtensible Bindings Language&quot; lang=&quot;en&quot;&gt;XBL&lt;/acronym&gt;. Le répertoire &lt;em&gt;locale&lt;/em&gt; contient tous les éléments liés à l'internationalisation (un répertoire par langue). Et enfin le répertoire &lt;em&gt;skin&lt;/em&gt; contient les feuilles de style &lt;acronym title=&quot;&quot; lang=&quot;en&quot;&gt;CSS&lt;/acronym&gt;.&lt;/p&gt;
&lt;p&gt;Cela donne quelque chose comme ceci:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;content&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;fichiers XUL&lt;/li&gt;
&lt;li&gt;&lt;em&gt;js&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;fichiers javascript&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;locale&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;fr-FR&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;fichiers de localisation français&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;en-US&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;fichiers de localisation anglais&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;skin&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;fichiers css&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tout cela n'est pas très compliqué. Il ne reste plus qu'à déclarer l'extension auprès de firefox. C'est maintenant que cela devient un petit peu plus complexe. On peut de manière simple ajouter des références dans le répertoire &lt;em&gt;chrome&lt;/em&gt; d'installation de firefox. Personnellement je ne trouve pas ça très propre surtout pour une extension en cours de développement. J'ai choisi de déclarer l'extension dans le répertoire du profil que j'utilise pour le développement.&lt;/p&gt;
&lt;p&gt;En fait, ce qu'il y a de complexe c'est que cette déclaration se fait avec des fichiers &lt;acronym title=&quot;Resource Description Framework&quot; lang=&quot;en&quot;&gt;RDF&lt;/acronym&gt;. Ces fichiers n'ont pas une structure si complexe que cela mais à la moindre erreur de synxtaxe cela ne fonctionne pas du tout et il est alors difficile et fastidieux de trouver l'erreur.&lt;/p&gt;
&lt;p&gt;Voici comme j'ai procédé. Dans le répertoire &lt;em&gt;chrome&lt;/em&gt; de mon profil (&lt;em&gt;~/xul/chrome&lt;/em&gt;) j'ai crée ce fichier &lt;a href=&quot;https://www.nikrou.net/xul/chrome.rdf&quot;&gt;chrome.rdf&lt;/a&gt;. C'est tout pour le répertoire du profil. Après il faut créer un fichier &lt;em&gt;contents.rdf&lt;/em&gt; par répertoire de l'extension déclaré dans le fichier &lt;em&gt;chrome.rdf&lt;/em&gt;, c'est-à-dire un fichier dans &lt;a href=&quot;https://www.nikrou.net/xul/hello/content/contents.rdf&quot;&gt;content&lt;/a&gt;, un fichier dans chaque locale - &lt;a href=&quot;https://www.nikrou.net/xul/hello/locale/contents.rdf&quot;&gt;en français&lt;/a&gt; et &lt;a href=&quot;https://www.nikrou.net/xul/hello/locale/en-US/contents.rdf&quot;&gt;en anglais&lt;/a&gt; - et enfin un fichier dans &lt;a href=&quot;https://www.nikrou.net/xul/hello/skin/contents.rdf&quot;&gt;skin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;J'ai placé mes extensions dans un répertoire &lt;em&gt;~/extensions/&lt;/em&gt;. L'extension est dans un répertoire &lt;em&gt;hello&lt;/em&gt;. Pour l'adapter il suffit de remplacer tous les chemins du type &lt;em&gt;file:///home/nicolas/extensions/hello/*&lt;/em&gt; par &lt;em&gt;file:///chemin/vers/extension/nom_extension/*&lt;/em&gt; où * est content, skin ou locale/fr-FR (locale/en-US) dans le fichier &lt;em&gt;chrome.rdf&lt;/em&gt;. Tous les endroits où il y a hello il faut le remplacer par l'identifiant de l'extension. Il faut faire de même pour les fichiers &lt;em&gt;contents.rdf&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En fermant puis relançant firefox on accède alors au fichier hello.xul à partir de l'url &lt;em&gt;chrome://hello/content/hello.xul&lt;/em&gt;.&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Bonjour le monde avec XUL!</title>
        <link>https://www.nikrou.net/post/2005/10/15/64-bonjour-le-monde-avec-xul</link>
        <guid isPermaLink="false">urn:md5:6575027f29765709416ee760dacd2cbb</guid>
        <pubDate>Sat, 15 Oct 2005 11:26:00 +0000</pubDate>
        <dc:creator>Nicolas</dc:creator>
                  <category>XUL</category>
                          <category>firefox</category>
                  <category>xul</category>
                <description>&lt;p&gt;Après avoir fait le nécessaire pour se créer un environnement de développement, on va pouvoir faire un premier essai. Manquant d'idée, on va faire dans l'orginal: un petit &lt;a href=&quot;http://www2.latech.edu/~acm/HelloWorld.shtml&quot;&gt;Hello World classique&lt;/a&gt; quel que soit le langage. Il manquait &lt;acronym title=&quot;&quot;&gt;XUL&lt;/acronym&gt;, ce sera chose faite!&lt;/p&gt; &lt;p&gt;Ce qu'il faut savoir en premier lieu c'est qu'un fichier &lt;acronym&gt;XUL&lt;/acronym&gt; n'est q'un fichier &lt;acronym&gt;xml&lt;/acronym&gt; avec une &lt;acronym title=&quot;Document Type Definition&quot; lang=&quot;en&quot;&gt;DTD&lt;/acronym&gt; et donc une syntaxe à respecter. Comme c'est un fichier xml, il faut ajouter un prologue. L'élément racine est window (nous verrons plus tard qu'il en existe au moins un autre: overlay) auquel nous ajoutons l'espace de nom qui convient à savoir http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul. On met ensuite notre &quot;hello world&quot; dans un conteneur description. Cela donne ça:&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;iso-8859-1&quot;?&amp;gt;
&amp;lt;window xmlns=&quot;http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&quot;&amp;gt;
&amp;lt;description&amp;gt;Hello World!&amp;lt;/description&amp;gt;
&amp;lt;/window&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Vous pouvez le testez &lt;a href=&quot;https://www.nikrou.net/xul/hello/content/hello.xul&quot;&gt;vous même&lt;/a&gt; directement ou en récupérant ce code et en le copiant dans &lt;a href=&quot;http://www.gnu.org/software/emacs/emacs.html&quot; hreflang=&quot;en&quot;&gt;votre éditeur favori&lt;/a&gt; et ensuite taper dans la barre d'adresse file:///chemin/vers/ce/superbe/fichier/hello.xul&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Comment débuter avec XUL ?</title>
        <link>https://www.nikrou.net/post/2005/10/14/63-comment-debuter-avec-xul</link>
        <guid isPermaLink="false">urn:md5:16658969276f5d158009594403f5e073</guid>
        <pubDate>Fri, 14 Oct 2005 10:08:49 +0000</pubDate>
        <dc:creator>Nicolas</dc:creator>
                  <category>XUL</category>
                          <category>firefox</category>
                  <category>xul</category>
                <description>&lt;p&gt;Les débuts avec &lt;acronym title=&quot;XML-based User interface Language&quot; lang=&quot;en&quot;&gt;XUL&lt;/acronym&gt; sont un peu chaotiques et complexes: il faut appréhender de nombreuses technologies (&lt;acronym title=&quot;eXtensible Markup Language&quot; lang=&quot;en&quot;&gt;XML&lt;/acronym&gt;, javascript, &lt;acronym title=&quot;Cascading Style Sheets&quot; lang=&quot;en&quot;&gt;CSS&lt;/acronym&gt;, &lt;acronym title=&quot;Resource Description Framework&quot; lang=&quot;en&quot;&gt;RDF&lt;/acronym&gt;,...) et l'environnement &lt;a href=&quot;http://www.mozilla.org/products/firefox/&quot; hreflang=&quot;en&quot;&gt;firefox&lt;/a&gt; (ou &lt;a href=&quot;http://www.mozilla.org/products/mozilla1.x/&quot; hreflang=&quot;en&quot;&gt;mozilla&lt;/a&gt; ou &lt;a href=&quot;http://www.mozilla.org/products/thunderbird/&quot; hreflang=&quot;en&quot;&gt;thunderbird&lt;/a&gt;).&lt;/p&gt; &lt;p&gt;Il faut avant tout commencer par se créer un environnement de développement. J'ai choisi d'utiliser firefox en particulier pour l'&lt;a href=&quot;http://chrispederick.com/work/webdeveloper/&quot; hreflang=&quot;en&quot;&gt;extension webdevelopper&lt;/a&gt;. Il faut changer quelques préférences de celui-là pour se facilier la vie. Il faut fermer firefox et ajouter ceci dans votre fichier pref.js, situé dans le dossier profil de firefox:&lt;/p&gt;
&lt;pre&gt;
user_pref(&quot;browser.dom.window.dump.enabled&quot;, true);
user_pref(&quot;javascript.options.showInConsole&quot;, true);
user_pref(&quot;javascript.options.strict&quot;, true);
user_pref(&quot;nglayout.debug.disable_xul_fastload&quot;, true);
user_pref(&quot;nglayout.debug.disable_xul_cache&quot;, true);
&lt;/pre&gt;
&lt;p&gt;La première préférence rend possible l'utilisation de la fonction dump() de javascript qui permet d'envoyer des messages (d'erreurs!) sur la console à la condition de lancer firefox depuis cette même console. Que du bonheur! Ca change des alert! Les deux préférences concernant javascript activent respectivement les erreurs de syntaxe et les erreurs d'éxécutions. Les deux dernières désactivent le cache &lt;acronym&gt;XUL&lt;/acronym&gt; et rendent possible des modifications des fichiers sources sans devoir relancer firefox à chaque modification!&lt;/p&gt;
&lt;p&gt;Pour éviter de modifier mon profil général et avoir à relancer firefox à tout bout de champ, je me suis crée un deuxième profil. Il suffit depuis une console de taper la commande suivante: &lt;code&gt;firefox -CreateProfile xul&lt;/code&gt;. Pour lancer firefox avec ce nouveau profil il suffira de faire: &lt;code&gt;firefox -P xul&lt;/code&gt;. J'ai évidemment ajouter les préfénces précédentes dans ce nouveau profil.&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Xul ça roule!</title>
        <link>https://www.nikrou.net/post/2005/09/24/59-xul-ca-roule</link>
        <guid isPermaLink="false">urn:md5:57debcc7ff53eebc92984993f8a74af3</guid>
        <pubDate>Sat, 24 Sep 2005 10:50:03 +0000</pubDate>
        <dc:creator>Nicolas</dc:creator>
                  <category>XUL</category>
                          <category>firefox</category>
                  <category>xul</category>
                <description> &lt;p&gt;Je viens de créer une nouvelle catégorie &lt;acronym title=&quot;XML User interface Language&quot; lang=&quot;en&quot;&gt;Xul&lt;/acronym&gt; et j'y poste ce premier billet. Mais pourquoi donc ? Je viens d'acheter le livre &lt;a href=&quot;http://www.eyrolles.com/Informatique/Livre/9782212116755/livre-xul.php?xd=6104c8bc691f009aaf37454600b1ae8f&quot; hreflang=&quot;fr&quot;&gt;Xul&lt;/a&gt; dans la collection &lt;a href=&quot;http://www.eyrolles.com/Informatique/Collection/1291/les-cahiers-du-programmeur.php&quot;&gt;les cahiers du programmeurs&lt;/a&gt; aux &lt;a href=&quot;http://www.editions-eyrolles.com/&quot;&gt;Editions Eyrolles&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Cette catégorie sera l'ocassion de répertorier au fur et à mesure mes découvertes et apprentissages de ce langage.&lt;/p&gt;</description>
        
              </item>
      </channel>
</rss>
