Distribuer votre appli XULRunner - 2.1 - Linux commun
Par joliclic le samedi, mai 21 2011, 15:48 - mozilla - Lien permanent
This post exists also in english
Ce billet fait partie d'une série sur comment déployer une application XULRunner. Voir le préambule pour le contexte.
2 - Linux
2.1 Linux commun
- 2.1.1 Généralités
- 2.1.2 Créer un lanceur
- 2.1.3 Des icônes pour nos fenêtres
- 2.1.4 Intégration au bureau
- 2.1.5 Distribuer un tar.gz
2.1.1 Généralités
Nous ciblons la plateforme Linux dans cette partie. Et c'est le cas le plus simple.
Pour toutes les distributions que j'ai essayées, XULRunner est disponible depuis le gestionnaire de paquets, et Firefox est basé sur lui. Donc XULRunner peut facilement être une dépendance de notre application.
2.1.2 Créer un lanceur
Il est facile de créer un lanceur, créons simplement un script shell
nommé myapp.sh
, dans le dossier principal
de notre application (celui qui contient application.ini
),
avec le contenu suivant :
#!/bin/sh
CUR_DIR=$(dirname $(readlink -f "$0"))
if [ -x /usr/bin/xulrunner ]; then
/usr/bin/xulrunner "$CUR_DIR/application.ini" $@
elif [ -x /usr/bin/firefox ]; then
/usr/bin/firefox -app "$CUR_DIR/application.ini" $@
else
echo "Error: unable to find XULRunner or Firefox!"
fi
et rendons le exécutable :
chmod +x myapp.sh
Le script trouve dans quel dossier il se trouve, puis lance le fichier
application.ini
via xulrunner s'il le trouve, sinon via
firefox avec l'argument -app
. Le script passe aussi les
éventuels arguments supplémentaires (comme -jsconsole
par
exemple).
Plus tard dans ce tutoriel, quand nous créerons les paquets deb et rpm,
nous ajouterons un lien symbolique vers ce fichier dans /usr/bin
.
Note: l'argument -f de readlink utilisé dans ce script est disponible uniquement dans la version GNU, donc dans toutes les distributions Linux, mais pas forcément sur d'autres systèmes de type Unix, comme Mac OSX par exemple.
2.1.3 Des icônes pour nos fenêtres
Pour l'instant, notre application est lancée, mais l'icône affichée dans
la barre de tâches est celle générique de XULRunner, ou celle de Firefox.
Il est facile d'afficher notre propre icône. Créons simplement un dossier
nommé 'icons
' à l'intérieur du dossier chrome principal de notre
appli, puis créons dans celui-ci un autre nommé 'default
'.
Copions 3 fichiers png, nommés default16.png, default32.png, et default48.png.
Et c'est tout, maintenant c'est notre icône qui est affichée.
|- samples_chapter_2/
|- myapp/
|- chrome
|- icons/
|- default/
|- default16.png
|- default32.png
|- default48.png
2.1.4 Intégration au bureau
Pour une intégration complète au bureau, nous devons maintenant créer
quelques fichiers supplémentaires, un fichier .desktop
, et
quelques icône associées. Ainsi notre appli apparaitra dans le menu
Applications du gestionnaire de fenêtres.
En exemple, voici le contenu d'un fichier myapp.desktop
:
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=MyApp
Comment=a Hello World XULRunner app
Comment[fr]=un Bonjour Monde pour XULRunner.
Exec=/usr/bin/myapp
Terminal=false
Type=Application
Categories=Utility;
Icon=myapp
Voir cette documentation pour les détails, et celle ci pour choisir les Catégories.
L'entrée Exec
est décrite
en
détail ici, nous utilisons un lien symbolique vers notre lanceur,
depuis /usr/bin/
(le standard pour les exécutables sur Linux).
Son emplacement réel sera dans /usr/lib/myapp/
.
L'entrée Icon
contient le nom de notre
icône, que nous créerons par la suite.
L'entrée Comment
est optionnelle, et peut
être localisée (comme quelques autres entrées, voyez la spécification),
ici nous définissons sune valeur par défaut, et une française (fr).
Si l'appli gère certains types mime, i.e. peut ouvrir certains types
de fichiers, vous devez ajouter une ligne avec
l'entrée MimeType
, par exemple :
MimeType=text/html;text/xml;application/xhtml+xml;
Ce fichier myapp.desktop est sensé être placé à l'étape finale dans le
dossier /usr/share/applications/
folder.
(Voir http://www.freedesktop.org/wiki/Specifications/menu-spec
et http://www.freedesktop.org/wiki/Specifications/basedir-spec
pour plus de détail)
Maintenant nous avons besoin de quelques icônes. Nous utiliserons des png et svg (xpm est également possible, mais semble déprécié, nous n'utiliserons pas ce format). Nous pouvons avoir différentes tailles, personnellement je me restreint à 4 png (16x16, 22x22, 32x32, 48x48), comme suggéré par les Tango Guidelines, plus un svg de 48x48.
Ces images doivent être nommées myapp.png, et myapp.svg .
Et elles doivent finalement être placées dans les dossiers suivants :
- /usr/share/icons/hicolor/16x16/apps/myapp.png
- /usr/share/icons/hicolor/22x22/apps/myapp.png
- /usr/share/icons/hicolor/32x32/apps/myapp.png
- /usr/share/icons/hicolor/48x48/apps/myapp.png
- /usr/share/icons/hicolor/scalable/apps/myapp.svg
2.1.5 Distribuer un tar.gz
Notre application est utilisable telle quelle avec son lanceur, vous
pouvez donc la distribuer avec un simple tar.gz
. Pour le
créer :
tar -zcvf myapp.tar.gz myapp
Un utilisateur peut le télécharger, le décompresser n'importe où, et lancer l'appli via myapp.sh.
Mais pour être plus convivial, un paquet utilisable avec le gestionnaire de paquet de sa distribution, avec l'intégration au bureau complète, est préférable. C'est ce que nous verrons dans les prochaines sections.
Vous pouvez télécharger tous les exemples de ce chapitre 2 (Linux) dans l'archive samples_chapter_2.tar.gz .
L'application myapp, de developer.mozilla.org, est dans le Domaine Public.
L'icône utilisée est issue du Tango Desktop Project, et est dans le Domaine Public.
Toutes les autres données ajoutées, et les fichiers en exemple, sont dans le Domain Public également.
Commentaires
Great poѕt. I was checking continuously thiѕ blog and I'm inspired!
Veгy ᥙseful information specіfically tһe final part :
) I care for such information a lot. I ԝas seeking thiѕ
paгticular information for a very lengthʏ time.
Thank you and good luck.
Howdy! Someone in my Facebook group shared this website with us so I came to give it a look.
I'm definitely enjoying the information. I'm book-marking and will be tweeting
this to my followers! Excellent blog and terrific design.
We are a gaggle of volunteers and opening a brand
new scheme in our community. Your site provided us with useful
information to work on. You've done an impressive job and our whole neighborhood will likely be
thankful to you.