XULRunner est un environnement d'exécution d'applications XUL, XUL étant un langage de description d'interfaces graphiques. Une application XULRunner est typiquement codée en JavaScript. Une partie du code d'une application XULRunner peut néanmoins être déportée dans des composants XPCOM (codés en C++ le plus fréquemment). Pour mettre en œuvre un tel composant, on écrit généralement un fichier '.idl', décrivant son API, qui sert à générer les fonctions JavaScript au travers desquelles on accède au composant concerné.

Pour puissants et nombreux que sont les éléments disponibles avec XULRunner, ils ne permettent pas à une application d’accéder à toutes les ressources du système sur lequel elle est utilisée. Les composants XPCOM permettent de pallier à cela. Si l'on met en œuvre un tel composant, en utilisant C++, il peut s’avérer intéressant de coder l'intégralité de l'application en C++, pour éviter d'avoir à jongler entre ce dernier et JavaScript (entre autres avantages).

Il existe une abondante documentation, assortie de tutoriels et d'exemples, portant sur la manipulation des éléments disponibles avec XULRunner en JavaScript. A l'inverse, l'équivalent pour C++ est anémique, pour ne pas dire inexistant. Cela rend le développement d'une application XULRunner entièrement en C++ très compliqué, comme j'ai pu en faire l'expérience. Néanmoins, malgré les difficultés, c'est une approche que j'ai définitivement adoptée.

Pour éviter à ceux qui serait également intéressé par cette approche de se heurter aux mêmes difficultés que celles j'ai rencontrées, j'ai, pour commencer, mis en ligne le résultat de mes recherches sur le sujet sous la forme, à titre d'exemple, d'une d'application. Cette application montre comment il est possible de réagir à des évènements issus de l'interface XUL, de récupérer des information de cette interface (contenu d'un 'textbox' p. ex.), ou de modifier cette interface (remplir une 'textbox', p. ex.) et ce, uniquement en C++.

Cette application, qui fonctionne sous GNU/Linux, MacOS et Windows, est diffusée sous licence GNU GPL. Pour consulter les sources, ou bien les télécharger pour éventuellement les compiler, ça se passe sur cette page (http://zeusw.org/blog/?article14/).