Distribute your XULRunner app
2 - Linux
2.3 Special case : deb for Maemo
- 2.3.1 Maemo generalities
- 2.3.2 Adapt the launcher
- 2.3.3 A new file system organization - Where place our app
- 2.3.4 Additions to the
.desktop
file - 2.3.5 Changes to the Debian files
- 2.3.6 Create the deb
2.3.1 Maemo generalities
Maemo is a Linux, Debian based, distribution, for Mobile. And Firefox
Mobile, aka Fennec, is available on this platform.
Fennec, like the desktop version of Firefox, is able to
launch a XULRunner application via the -app
argument.
So, a priori, we can launch any XULRunner applications. Of course, we should care of the specificities of mobile devices, small screen (but with high resolution), and touch screen. That's not the purpose of this howto. But as is, our app should work.
Because this platform is Debian based, we will distribute our app with a deb. We have just to adapt some parts of the previous chapter to the specificities of Maemo.
We can find some information in the Maemo Wiki.
2.3.2 Adapt the launcher
The change is that we invoke Fennec rather than Firefox.
The new launcher, myapp.sh
:
#!/bin/sh CUR_DIR=$(dirname $(readlink -f "$0")) if [ -x /usr/bin/fennec ]; then /usr/bin/fennec -app "$CUR_DIR/application.ini" $@ elif [ -x /usr/bin/xulrunner ]; then /usr/bin/xulrunner "$CUR_DIR/application.ini" $@ else echo "Error: unable to find Fennec or XULRunner!" fi
2.3.3 A new file system organization - Where place our app
On Maemo, due to the memory space on mobile devices,
the applications should reside in the folder /opt/
rather than
in /usr/lib/
or /usr/share/
.
So, we will copy our app in /opt/myapp/
.
A sub-directory would possible too,
/opt/myorganization/myapp/
for example.
For the icons, we will use different dimensions than for the desktop,
like Fennec does itself:
a 26x26px png, a 40x40px png, and a 48x48 svg.
Their final locations change a little too, they must be placed in:
- /usr/share/icons/hicolor/26x26/hildon/myapp.png
- /usr/share/icons/hicolor/40x40/hildon/myapp.png
- /usr/share/icons/hicolor/scalable/hildon/myapp.svg
The location of the .desktop
file change too, it must be
placed into /usr/share/applications/hildon/
.
The .desktop
file and the images are not so heavy, we can
put them as is, but it should be possible to place them in our main app
folder and use symbolic links too.
2.3.4 Additions to the .desktop
file
Some information can be found in this page of the Maemo Wiki.
Some additional keys can be used in the desktop file. Not all that I add
are documentated, but they seems to be used by a lot of programs,
perhaps for some older version of Maemo.
Here's some lines added to our desktop file:
X-Icon-Path=/usr/share/icons X-Window-Icon=myapp X-Window-Icon-dimmed=myapp X-Osso-Type=application/x-executable
2.3.5 Changes to the Debian files
To avoid to overwrite the generic deb created in the previous chapter, we will rename this new deb package for Maemo. We will use 'myapp-mobile'. To be consistent with the debhelper process, here the list of all this concerned changes:
-
In the
changelog
file, the linemyapp (1.0-1) unstable; urgency=low
becomesmyapp-mobile (1.0-1) unstable; urgency=low
-
In the
control
file, the value for theSource
andPackage
fields is changed tomyapp-mobile
-
The file
myapp.links
is renamed asmyapp-mobile.links
Other changes to the control
file:
According to
this documentation,
we must choose a Section
in this list:
user/desktop
user/development
user/education
user/games
user/graphics
user/multimedia
user/navigation
user/network
user/office
user/science
user/system
user/utilities
We can add extra data to the control file, used to build the deb.
The first is XB-Maemo-Display-Name: MyApp
.
The second is a base64 icon, used by the application manager of Maemo,
XB-Maemo-Icon-26
.
We will use a bash script to create this base64 value from the 48px png icon.
First we need the uuencode
program, on debian/ubuntu:
apt-get install sharutils
then, we create a Bash script named build_base64.sh
to
convert a 48x48px png into the desired text value:
#!/bin/bash set -e # base64 conversion uuencode -m icon48.png icon48.png > icon48.txt # remove the first line (begin-base64 ...) sed -i '1d' icon48.txt # and the last line (====) sed -i '$d' icon48.txt # add 4 spaces at the beginning of each lines sed -i "s/^/ /" icon48.txt # and add a blank line at the end of the file echo '' >> icon48.txt
You can find this script into the data/icons
folder of the
samples_chapter_2.tar.gz
archive. To launch it (into the
icons folder):
sh build_base64.sh
We can now use the content of icon48.txt as the value of
XB-Maemo-Icon-26
in our control file.
2.3.6 Build the deb
And, that's all, we can create our deb like in the previous chapter.
I don't write here the build_maemodeb.sh
script, it's
almost the same as the one to build the generic debian package. You'll
find it in the joined archive.
cd samples_chapter_2
sh ./build_maemodeb.sh
Note: I suppose in this howto that we don't have compiled code in our app.
If this is not the case, we must use
scratchbox
to compile, and we
must use scratchbox to build the deb too!
And, like in the
previous chapter, don't use the line Architecture: all
in the
control file.
You can download all the samples of this chapter 2 (Linux) in the samples_chapter_2.tar.gz archive.
The myapp application, from developer.mozilla.org is in the Public Domain.
The icon used is from the Tango Desktop Project, and is in the Public Domain.
All added data, and sample files, of this chapter 2, are in the Public Domain too.