Susanna Huhtanen
ihmis.suski@gmail.com 2012

# Autotools et icônes

        Dans cette partie du guide, nous allons construire les « autotools » et personnaliser les icônes dont nous avons besoin pour que l'application météo fasse partie intégrante de notre bureau. Pour écrire et lancer tous les exemples de code vous-même, vous avez besoin d'un éditeur pour écrire le code, de Terminal et d'un ordinateur sur lequel GNOME 3 ou supérieur est installé. Dans ce guide, nous illustrerons les éléments suivants :

          Autotools
          Icônes personnalisées pour votre application

# Autotools et fichiers nécessaires

Le fait d'avoir plus d'un seul fichier dans votre dossier rend l'usage d'autotools un peu complexe. Vous avez besoin des fichiers .desktop, de autogen.sh, Makefile.am, configure.ac et d'un nouveau fichier : monapplication.sh.in. Détailler le fichier autotools est un peu compliqué. Vous trouverez plus d'informations dans de nombreuses autres sources, cet article sur wikipédia fournit un bon aperçu sur le sujet.

weatherapp.desktop

weatherapp.sh.in

Makefile.am

configure.ac

autogen.sh

weatherapp.desktop

[Desktop Entry] Version=1.0 Encoding=UTF-8 Name=Weather app Comment=Weather showing application Exec=weatherapp.sh Icon=application-default-icon Terminal=false Type=Application StartupNotify=true Categories=GNOME;GTK;Utility;

La chose à noter dans ce fichier est que la ligne « Exec » rendra fonctionnel ce fichier « desktop » seulement après avoir exécuté tous les autres « makefiles ». Weatherapp.sh est un petit script créé avec le weatherapp.sh.in.

weatherapp.sh.in

#!/bin/sh export GJS_PATH=@bindir@ gjs @bindir@/weatherapp.js

This file is a template to the file Makefile will do to be run from .desktop.

Makefile.am

# The actual runnable program is set to the SCRIPTS primitive. Prefix bin_ tells where to copy this bin_SCRIPTS = weatherapp.js geonames.js weatherapp.sh # List of files to be distributed EXTRA_DIST= \ $(bin_SCRIPTS) \ $(private_icons) \ $(NULL)

CLEANFILES =

# The desktop files desktopdir = $(datadir)/applications desktop_DATA =weatherapp.desktop

# convenience command for doing Makefile variable substitutions in non-Makefile # files (scripts, service files, etc.) do_subst = sed -e 's|@abs_top_srcdir[@]|$(abs_top_srcdir)|g' \ -e 's|@abs_top_builddir[@]|$(abs_top_builddir)|g' \ -e 's|@localedir[@]|$(localedir)|g' \ -e 's|@bindir[@]|$(bindir)|g' \ -e 's|@libexecdir[@]|$(libexecdir)|g' \ -e 's|@pkglibdir[@]|$(pkglibdir)|g' \ -e 's|@pkgdatadir[@]|$(pkgdatadir)|g' \ -e 's|@have_libnotify[@]|$(HAVE_LIBNOTIFY)|g' \ -e 's|@have_libsoup[@]|$(HAVE_LIBSOUP)|g' \ -e 's|@have_cheese[@]|$(HAVE_CHEESE)|g'

weatherapp.sh: weatherapp.sh.in $(AM_V_GEN) $(do_subst) $< > $@ chmod +x $@

CLEANFILES += weatherapp.sh EXTRA_DIST += weatherapp.sh.in

#the application icon appicondir=$(datadir)/icons/hicolor/scalable/apps appicon_DATA=weather-icon.svg

#icons in the application NULL =

private_icons = \ weather-clear.svg \ weather-few-clouds.svg \ weather-fog.svg \ weather-icon.svg \ weather-overcast.svg \ weather-showers.svg \ weather-showers-scattered.svg \ weather-snow.svg \ $(NULL)

install-icons: for icon in $(private_icons); do \ mkdir -p $(DESTDIR)$(pkgdatadir)/icons/; \ $(INSTALL_DATA) $(srcdir)/$$icon $(DESTDIR)$(pkgdatadir)/icons/; \ done

install-data-local: install-icons

Ceci nécessite un peu plus d'explication. Comparé au Makefile.am de Helloworld, celui-ci a été fortement modifié. Parcourons tous les nouveaux blocs :

« bin_scripts » sont les fichiers nécessaires pour exécuter votre application. Dans ce cas, les deux premiers fichiers sont les programmes eux-mêmes et le troisième est le script qui lance l'application.

EXTRA_DIST sont les fichiers qui doivent être distribués.

le bloc « do_subst » est quelque chose qui a besoin d'être là où il est.

Après le commentaire « #icons in the application » se trouvent tous les icônes qui sont utilisées par le programme. Pour qu'elles soient utiles, vous devez installer les icônes aux emplacements corrects, ce qui est réalisé par la partie « install-icons ».

configure.ac

dnl This file is processed by autoconf to create a configure script AC_INIT([Weather App], 1.0) AM_INIT_AUTOMAKE([1.10 no-define foreign]) AC_CONFIG_FILES(Makefile) AC_OUTPUT

autogen.sh

#!/bin/sh # This will run autoconf, automake, etc. for us autoreconf --force --install

# Icônes personnalisées pour votre application

Lorsque vous pensez icônes personnalisées, une bonne règle empirique est : souhaitez-vous que cette icône puisse être utilisée autre part ou est-elle privée ? Dans le premier cas (par ex. des icônes dans le fichier desktop qui sont affichées par le shell) alors vous avez besoin de /usr/share/hicolor sinon (par ex. les icônes météo de votre application) /usr/share/$application/bla/bla

Pour utiliser autotools, vous devez faire quelques modifications à vos fichiers .desktop et Makefile. Dans le fichier desktop, modifiez le nom de l'icône Icon=weather-icon. Dans le fichier Makefile.am, ajoutez ces deux lignes à la fin de votre application #the application icon.

appicondir=$(datadir)/icons/hicolor/scalable/apps

appicon_DATA=weather-icon.svg