joliclic blog

Aller au contenu | Aller au menu | Aller à la recherche

jeudi, mars 25 2010

XULRunner on Maemo : part II

  • en version
  • version fr

english version

I continue to play with XULRunner on my N900, after Mozcards, here 2 mini-applications:
JoliStopwatch and JoliTimer.

To remind you, because I have Firefox Mobile (aka Fennec) on my device, I can run XULRunner applications. And it's really easy to create new ones. Moreover, potentially they will run on all platforms where Firefox will be available :) .
I will propose installers for Desktop later (removing mobile specificities), but for now you can install on Maemo 5.
Note that a user reported to me that he have installed Mozcards on its N810 (Maemo 4) simply with no problem.

JoliStopwatch

A simple stopwatch. It's really a minimal application, I think you can use it as a 'Hello World'.
The only (small) subtility is that the needles in SVG are encapsulated in a small XBL.
The theme uses the default system, and it works well.

JoliTimer

An timer (hourglass), with presets manager. A simple application, but a little more consistent. It uses a sqlite database for the presets, with a component in JavaScript to manage them, and a template to display them, and use the Audio elemnt for alarm.
You can set the desired time by dragging the finger on the figures of the watch.
And the list of presets also have kinetics scrolling (reusing InputHandler.js of Fennec, as explained in the Mozcards post).

Its theme does not follow the theme system, but is original (I hope not too 'glossy';))

The only real problem I encountered, is that local OGG files with the .ogg extension seem to have a audio/x-vorbis+ogg mime type on Maemo 5. And this mime type is not supported by the Audio element. I have tried to implement a Stream Converter, but the Audio element doesn't seems to use it. So for the moment, only OGG files with the .oga extension can be used as custom sound for the alarm (wav is available too).

Try

To install, simply download the .deb files on your device, and open them from the file manager. That's all.

The sources are available of course, with my little build system, and with the instructions to build your own. Graphic files sources (SVG created with Inkscape) are also in these sources ;).

Enjoy, and feel free to report me any comments or bugs.

version française

Je continue à jouer avec XULRunner sur mon N900, après Mozcards, voilà 2 appliquettes:
JoliStopwatch et JoliTimer.

Pour rappel, comme j'ai Firefox Mobile (Fennec) sur mon téléphone, je peux y faire tourner des applications XULRunner. Et c'est vraiment facile d'en créer de nouvelles. De plus, potentiellement elles tourneront sur toutes les plateformes où Firefox sera disponible :) .
Par la suite je compte proposer des installeurs pour les versions bureaux (en supprimant les spécificités aux mobiles), mais pour l'instant vous pouvez les installer sur Maemo 5.
Notez qu'un utilisateur m'a rapporté avoir installer Mozcards sur son n810 (Maemo 4) le plus simplement du monde et sans problème.

JoliStopwatch

Un simple chronomètre. C'est vraiment une application minimale, elle peut servir de 'Hello World' je pense.
La seule (petite) subtilité est que les aiguilles en SVG sont encapsulées dans un petit XBL.
Le thème utilise celui par défaut du système, et çà marche bien.

JoliTimer

Un sablier, avec gestion de signets (presets). Une simple application, mais un peu plus conséquente. Elle utilise une base sqlite pour les signets, avec un composant en JavaScript pour la gérer, un template pour l'afficher, et utilise l'élément Audio pour l'alarme.
On peut régler le temps désiré en déplaçant les chiffres de la montre au doigt.
Et la liste des signets a également un scroll au doigt (en réutilisant InputHandler.js de Fennec, comme expliqué dans le billet sur Mozcards).

Le thème par contre ne suit pas le thème du système, mais est original (j'espère pas trop 'sucré' ;) ).

Le seul réel problème que j'ai rencontré, est qu'il semble que les fichiers OGG locaux avec une extension .ogg aient un type mime audio/x-vorbis+ogg. Et ce type mime n'est pas pris en charge par l'élément Audio. J'ai essayé d'implémenter un Stream Converter, mais il ne semble pas pris en compte par l'élément Audio. Donc pour l'instant, seul les fichiers OGG avec l'extension .oga peuvent être utilisés comme son d'alarme personnalisé (wav est également disponible).

Essayer les

Pour les installer, il suffit de télécharger les fichiers .deb sur votre téléphone, et de les ouvrir depuis le gestionnaire de fichier. C'est tout.

Les sources sont bien sûr disponibles, avec mes petits build systemes, et avec les instructions pour construire. Les fichiers graphiques sources (des svg créés avec Inkscape) sont également présents dans ces sources ;) .

Amuser vous bien, et n'hésitez à me rapporter toutes remarques ou bugs.

lundi, mars 15 2010

XULRunner on Maemo : Mozcards

  • en version
  • version fr

english version

I have won an N900, and I have installed Firefox Mobile on it of course.
So I have XULRunner. And that's really cool ;) .

Here's an example, let me introduce Mozcards.

It's an adaptation for Maemo and a XULRunner port of the extension Cards, for Firefox, by Stephen Clavering. A collection of really good patiences (card games).

I found no real license informations in the original sources, so I asked to Stephen and all the contributors (Derek Seabury and Neil Rashbrook) if they're OK for tri-license their code into MPL/GPL/LGPL. And they're accepted :) . Thank you very, very much!

So I can propose to you this version adapted for Maemo. There's a new card theme, inspired of Tango, wich expect to be more readable on the little screen. And some UI improvements for the touchscreen, inspired of Fennec.
The application starts a little slowly (especially the first time), but after the responsiveness is good.

klondike screenshot games choice screenshot


Some technical informations

Let me share some points of this experience, playing with XULRunner on Maemo.

XULRunner is easy

First of all, the XULRunner port was trivial, and the code of Cards rocks ;), it was playable as is.

Guidelines

To create my extension Yummy, I had already looked at the Fennec sources, it's a really good sources of inspiration, and code snippet to reuse. The guidelines and informations for Fennec and little touchscreen devices, available on the mozilla wiki, are precious too.

Theme

For the UI and general theme, I have reused parts of the CSS of Fennec. There're 2 main files to look at, platform.css, for general theming on Maemo, and browser.css for Fennec specific theme.

Popup

Popup windows are not relevant on small devices, instead I used a main stack with some "panels" boxes, wich are hidden/showed upon request, like in Fennec. As all the cards games were already in a stack, it was easy to insert.

Menulist

XUL elements like <menulist> give not the best user experience on small devices, so I reused code of Fennec here too.
The menulist are associated with CSS to a new binding, wich extend the original chrome one. It implement a nice mechanism, the content of the menulist is displayed in some boxes wich looks like a richlistbox, on the fly, and adapted to the small screen. You have just to copy the code of the js objects SelectHelper and MenulistWrapper, and create the appropriate panel <vbox id="select-container"> in your XUL.

Kinetic scrolling

Kinetic scrolling is really easy to implement with some code of Fennec, again.
There's a js file named InputHandler, wich implement an object with the same name. It can handle all elements with a nsISCrollBoxObject available (i.e. scrollbox elements). Fennec initialize it with the box which display the main browser view. But I just initialize it with one of the scrollbox of my window:

var gIH = new InputHandler(document.getElementById("myscrollbox"));            

And that's all!
All scrollboxes of the document have now kinetic scrolling. In particular, the box used to display the menulist contents.
The only modification I made is to deactivate the zoom handling.

Special case: iframe

I display the "about" page in a <xul:iframe>, I wanted kinetics on it, but a iframe box doesn't implement nsIScrollBoxObject, and so InputHandler isn't relevant on it. So I have made a hack. I created a XBL, a stack with the real iframe, and a xul:box over it. And I mimic the nsIScrollBoxObject. The methods in fact pilot the scroll of the contentWindow of the iframe.
I wanted to show the scrollbars for visual information, so I have restyle them. There were 2 choices, minimize them for simple visual information, or render them bigger to be manipulable. I have choosed the latter.

Create an executable

Last point, the executable to launch the application.

The application is launched like this:
pathToXULRunner/xulrunner pathToMozcards/application.ini

Fennec 1.0 on Maemo install 2 packages, Fennec itself, and XULRunner. But there's no link to the XULRunner executable in /usr/bin/.

Fennec 1.1ax on Maemo install 1 package, XULRunner reside in a folder inside the fennec folder. There's no xulrunner executable. But we can use xulrunner-bin instead.

Here the content of my executable 'mozcards', a bash script:

#!/bin/sh

INI=/opt/joliclic/mozcards/application.ini

XULRUNNER=$(find /opt/mozilla/xulrunner*/xulrunner -type f | head -1)

if [ -x "$XULRUNNER" ]; then
$XULRUNNER $INI
else
XULRUNNERBIN=$(find /opt/mozilla/fennec*/xulrunner/xulrunner-bin -type f | head -1)
if [ -x "$XULRUNNERBIN" ]; then
$XULRUNNERBIN $INI
else
echo "unable to find XULRunner!"
fi
fi

The script just try to find the xulrunner executable available, and use the first found.
Any improvement or suggestion are welcome of course.

Try it

Wanna try ?
You can get a deb here, just open it with the file manager on the N900 to install it:

Mozcards page

The sources are available too.

Feel free to report any remarks or bug. Have fun ;) !

version française

Donc j'ai gagné un N900, et j'ai bien sûr installé Firefox Mobile dessus.
Et donc j'ai XULRunner. Et c'est vraiment cool ;) .

En exemple, je vous propose Mozcards.

C'est une adaptation pour Maemo et un port XULRunner de l'extension Cards, pour Firefox, par Stephen Clavering. Une collection de bonnes patiences (jeux de cartes).

Comme je ne trouvais pas d'informations claires sur la licence des sources originales, j'ai demandé à Stephen et aux contributeurs (Derek Seabury and Neil Rashbrook) s'ils acceptaient de tri-licencer leur code en MPL/GPL/LGPL. Et ils ont accepté :) . Merci du fond du coeur!

Je peux donc vous proposer cette version adapté à Maemo. Il y a un nouveau thème, inspiré de Tango, que j'espère plus lisible sur un petit écran. Et quelque améliorations pour les écrans tactiles, inspiré de Fennec.
Le démarrage de l'appli est un peu lente (surtout le 1er), ensuite c'est fluide.

klondike screenshot games choice screenshot

Quelques informations techniques

Voici quelques retours d'expérience pour jouer avec XULRunner sur Maemo.

XULRunner c'est facile

Tout d'abord, porter l'extension sur XULRunner fut trivial, et le code de Cards est vraiement bon, c'était directement jouable.

Généralités

Pour créer mon extension Yummy, j'avais déjà regardé les sources de Fennec, c'est une très bonne source d'inspiration, et de bouts de code à "repiquer". Les lignes directrices (guidelines) et informations pour Fennec et les appareils à écrans tactiles (touchscreen), disponibles sur le wiki mozilla, sont également précieuses.

Thème

Pour l'interface utilisateur et le thème général, j'ai réutilisé des portions des CSS de Fennec. Il y a 2 fichiers principaux à regarder particulièrement, platform.css, pour le thème général à Maemo, et browser.css pour le thème spécifique à Fennec.

Popup

Les fenetre popup ne sont adapté aux petits appareils, à la place j'ai utilisé un élément stack principal avec des boites qui sont cachées/affichées à la demande, comme dans Fennec. Comme les différents jeux de cartes étaient déjà dans un stack, c'était facile de rajouter d'autres éléments.

Menulist

Les éléments XUL comme des <menulist> ne sont pas forcément très pratiques sur les petits appareils, j'ai donc réutilisé du code de Fennec ici aussi.
Les menulist sont associés par CSS à un nouveau bindind (xbl), qui étend celui originel. Il implémente un chouette mécanisme, le contenu des menulist est affiché à la volée dans des boites avec une allure de richlistbox, adapté aux petits écrans. Vous avez juste à copier le code des objets js SelectHelper and MenulistWrapper, et de créer le panneau approprié <vbox id="select-container"> dans votre XUL.

Scroll aux doigts

Le défilement cinétique (Kinetic scrolling), est très facile à implémenter avec du code de Fennec, de nouveau.
Il y a un fichier js nommé InputHandler, qui implémente un objet du meme nom. Il peut prendre en charge tous les éléments qui ont l'interface nsISCrollBoxObject disponible (i.e. éléments scrollbox). Fennec l'initialise avec la boite qui affiche la vue du navigateur principal. Mais je l'initialise juste avec un des scrollbox de ma fenetre:

var gIH = new InputHandler(document.getElementById("myscrollbox"));            

Et c'est tout!
Tous les scrollbox du document peuvent étre dorénavant défiler au doigt. En particulier, la boite qui affiche les contenu des menulist.
La seule modification que j'ai faite et de désactiver la prise en charge du zoom.

Cas special : iframe

J'affiche la page "À propos" dans un <xul:iframe>, Je voulais le défilement au doigt dessus, mais un iframe n'implémente pas nsIScrollBoxObject, et donc InputHandler n'a aucune action. Donc j'ai bidouillé. J'ai créé un XBL, un stack contenant l'iframe réel et un xul:box par dessus. Et j'y simule nsIScrollBoxObject. Les méthodes pilote en fait le contentWindow de l'iframe.
Je voulais afficher les barres de défilement pour une formation visuelle, donc je les ai restylées. Il ya avait 2 possibilités, les minifier pour une simple info visuelle, ou les grossir pour les rendre manipulables. J'ai choisi la seconde.

Créer un exécutable

Dernier point, l'exécutable pour lancer l'application.

L'application est lancée de cette manière :
pathToXULRunner/xulrunner pathToMozcards/application.ini

Fennec 1.0 sur Maemo installe 2 paquets, Fennec lui-meme, et XULRunner. Mais il n'y a pas de lien vers l'exécutable de XULRunner dans /usr/bin/.

Fennec 1.1ax sur Maemo installe 1 paquet, et XULRunner réside dans un dossier à l'intérieur du dossier de Fennec. Il n'ya pas l'executable xulrunner. Mais on peut utiliser xulrunner-bin à la place.

Voilà le contenu de mon exécutable 'mozcards', un script bash :

#!/bin/sh

INI=/opt/joliclic/mozcards/application.ini

XULRUNNER=$(find /opt/mozilla/xulrunner*/xulrunner -type f | head -1)

if [ -x "$XULRUNNER" ]; then
$XULRUNNER $INI
else
XULRUNNERBIN=$(find /opt/mozilla/fennec*/xulrunner/xulrunner-bin -type f | head -1)
if [ -x "$XULRUNNERBIN" ]; then
$XULRUNNERBIN $INI
else
echo "unable to find XULRunner!"
fi
fi

Le script essaie juste de trouver l'exécutable xulrunner disponible, et utilise le premier trouvé.
Toute amélioration ou suggestion est bienvenue bien sur.

Essayer le

Vous voulez l'essayer ?
Vous pouvez avoir un fichier deb là, vous avez juste à l'ouvrir dans le gestionnaire de fichier dans le N900 pour l'installer.

Mozcards page

Les sources sont dispanibles également.

N'hésitez pas à me rapporter vos remarques ou bug. Amuser vous ;) !

jeudi, juillet 30 2009

Khromaxul 0.3 et au delà

  • version fr
  • en version

version française

Une nouvelle version 0.3 alpha de ma bibliothèque Khromaxul (sélecteurs de couleur avancés en XUL), de l'extension Komodo, et de bonne nouvelles pour la suite.

Quoi de neuf dans cette version 0.3 :

Une nouvelle bibliothèque apparait, kh-schemer.js, permettant de générer facilement des couleurs suivant des thèmes (à la Agave): monochromatiques, complément, teintes, nuances, tons, triades, compléments divisés, analogues, tétrades, dégradés.

nouvelle version de l'extension pour Komodo :

Du coup, l'extension pour Komodo passe en version 0.3 et bénéficie des nouveautés, en gros Agave est disponible directement dans Komodo via l'extension (et même plus ;) ). Je vous laisse regarder la petite vidéo jointe au billet pour découvrir les nouvelles possibilités :) .
Il est aussi possible dorénavant d'insérer des codes couleurs HSL.

Et la suite...

Je suis ravi, je peux pas dire mieux, un contributeur (et pas des moindres ;) ) qui utilisait la bibliothèque m'a poussé à ouvrir un dépôt mercurial pour gérer le projet, sur bitbucket. Vous pouvez déjà y voir ses contributions. Çà me stimule, même si j'ai du mal à trouver du temps disponible en ce moment :) .

Attention, le code sur bitbucket n'est pas censé fonctionner au jour le jour, c'est le trunk de la future version 0.4, et en tant que tel instable et non figé.
De plus, si par hasard vous utilisez du code khromaxul dans un de vos projet, attendez vous à des changements plus ou moins profonds pour la version 0.4 suivante (en même temps le code était clairement estampillé alpha)

page de téléchargements

english version

New version 0.3 of my library Khromaxul (advanced color selectors in XUL), new Komodo extension, and some good news for beyond.

What's new in this O.3 version:

A new js lib, kh-schemer.js, to easily generate color schemes (à la Agave): monochromatics, complement, tints, shades, tones, triads, split complements, analogous, tetrads, gradients.

new version of the Komodo extension:

So, new version 0.3 of the Komodo extension, with benefit of these new features, shortly you have Agave (and more ;) ) directly in Komodo. You can discover theses new possibilities in the video joined to this post :) .
It's now possible to insert HSL color codes too.

And beyond...

I am delighted, I can not say better, a contributor (and not the least;)) that uses the library led me to open a mercurial repository to manage the project, on bitbucket. You can already see its contributions. It stimulates me, even if I have trouble finding time at the moment :).

Beware, the code on bitbucket is not supposed to work on a daily basis, it's the trunk of the future version 0.4, and as such unstable and not fixed.
Moreover, if you use khromaxul code in one of your project, be carefull, there will be some more or less profound changes for the next version 0.4 (but the code was previously clearly stamped alpha) De plus, si par hasard vous utilisez du code

download page

liens directs vers la vidéo / direct links to the video:

khromaxul03.mp4 | khromaxul03.ogv

dimanche, juillet 12 2009

Boox 2.5 release candidate

  • version fr
  • en version

version française

Voilà, une release candidate pour Boox 2.5 pour Firefox 3.5. Si personne ne me remonte de bug critique d'ici quelques jours, ce sera la finale :) .

Pour ceux qui sont sur Mac, quelques fonctionnalités de Boox manquent, ou sont différentes, sur le Menu des marque-pages, car celui-ci n'est pas réellement en XUL sur Mac, malheureusement.
- Les infobulles personnalisées de Boox ne sont pas fonctionnelles.
- Il n'est pas non plus possible de styler le texte de ce menu pour
les mêmes raisons, et donc de mettre en gras les flux avec des entrées non lues. Du coup, j'ai contourné le problème, sur Mac, dans le Menu des marque-pages, les flux avec de nouvelles entrées ont une icone différente ;) .

Encore merci à ceux qui testent ;) , n'hésitez à signaler d'éventuels problèmes, ou tout autre remarque.

page d'installation de boox 2.5 release candidate

english version

Here's a release candidate of Boox 2.5 for Firefox 3.5. This will be the finale version if nobody reports me critical bug the next few days :) .

For the Mac users, some Boox features are missing, or different, in the Bookmarks Menu, because it's not really in XUL on Mac, unfortunatly.
- no rich tooltips added by Boox.
- it's not possible to style the text of this Menu, for the same reason, so feeds with new entries can't be bolded. But I bypassed the problem, on Mac, in the Bookmarks Menu, feeds with unread entries have a different icon.

Thanks again to those who tests ;) , don't hesitate to report any problems, or remarks.

installation page for boox 2.5 release candidate

mardi, juin 23 2009

Boox 2.5 beta 1 for Firefox 3.5

  • version fr
  • en version

version française

Elle arrive tardivement, mais la voilà, une version 2.5 beta 1 de Boox, mon extension pour Firefox qui enrichit les marque-pages, tout en étant le plus possible intégrée à celui-ci (style gras appliqué au flux qui ont des entrées non lues, infobulles enrichies sur les marque-pages, y compris résumé des entrées de flux, lecteur de flux personnalisable,...).

Au menu, la compatibilité avec Firefox 3.5, évidement et avant tout ;) . Mais en plus, plusieurs bonus, dont certains demandés et attendus par certains utilisateurs :) :

  • Les fonctionnalités de Boox (flux stylés et infobulles enrichies) sont maintenant disponibles dans le Menu des marque-pages, en plus de la barre personnelle et du panneau latéral.
  • Possibilité d'ouvrir toutes les entrées non lues.
  • Possibilité de tronquer les longues URL des marquepages dans les infobulles.
  • Les actions ajoutées par Boox pour les flux dans le menu contextuel sont de nouveau également disponibles directement dans le menu déroulant.
  • La fenêtre des options de Boox peut dorénavant etre fermée par le raccourci clavier CTRL+w (comportement semblable à "annuler"). Çà peut sembler futile, mais personnellement çà m'énervait dernièrement :D.

Elle contient les localisations de 17 langues, mais à part l'anglais et le français, quelques rares parties sont en anglais et pas encore traduites, je livre une version chez Babelzilla dans la foulée pour que les traducteurs puissent mettre à jour les changements.

problèmes connus:
- sur la barre personnelle, pour le *premier* flux déroulé directement sur la barre (et non dans un sous-dossier), les options ajoutés par Boox sont placés avant l'option native "Tout ouvrir dans des onglets". Ceci n'arrive plus par la suite sur les autres flux.
- le bug 491276 devrait etre réouvert.

Comme d'habitude, merci à ceux qui veulent bien tester, et tous retour, remarque, signalement de bugs, sont les bienvenus ;) , je compte sur vous.

page de téléchargement de Boox 2.5 beta 1

english version

I know it's late, but here it is, a version 2.5 beta 1 of Boox, my Firefox extension with enhanced features for the Bookmarks (styled and enhanced live bookmarks, customizable tooltips, feed viewer,...).

Au menu, compatibility with Firefox 3.5, of course and first of all ;) . But there are more bonus, some requested and expected by some users :) :

  • Boox features (styled Live Bookmarks and Rich Tooltips) are now available in the Bookmarks Menu, in addition of Bookmarks Toolbar and Sidebar.
  • Possibility to open all unread items of a feed.
  • Possibility to truncate long Bookmark URL in the tooltips.
  • The actions added by Boox for a feed on its contextual menu are again directly available in its popup.
  • The Boox Options window can now be closed with the keyboard shortcut CTRL+w (same behavior as "cancel").

There are 17 languages available in this beta, but a very few part are not yet translated and are in english, I will put quickly this version at Babelzilla, and translators can update.

Known issues:
- on the Personal Toolbar, the first Livemark opened who is directly on the toolbar (and not inside a sub-folder), the options added by Boox in *this* popup are inserted before the native option "Open All", rather than after.
- bug 491276 should be reopened.

As always, thank you very much for those who test, and all feedback, remarks, bugs report, are welcome ;) , I count on you.

download page of Boox 2.5 beta 1

mercredi, juin 17 2009

Khromaxul 0.2.1

  • version fr
  • en version

version française

Petite mise à jour de mon sélecteur de couleur en XUL.

Essentiellement une petite correction pour etre compatible avec gecko 1.9.1 (soit Firefox 3.5), plus la gestion de l'espace de couleur HSL dans la bibliothèque pour gérer les couleurs.

Le problème m'a été signalé par quelqu'un qui intègre Khromaxul dans un de ces projets, çà me fait bien plaisir :) .

lien vers la nouvelle version 0.2.1

english version

Little update for my color selector in XUL.

Essentially a small correction to be compatible with gecko 1.9.1 (i.e. Firefox 3.5), plus the ability to manipulate HSL color space in the colors library.

The problem has been reported by somebody who uses Khromxul in its project, I'm really happy :) .

link to the new version 0.2.1

- page 4 de 5 -