Installation d'icônes personnalisées sous Linux

Ce document est le résultat d'une transformation de LaTeX en HTML effectuée à l'aide d'HeVeA. Il existe en version PDF et il est accompagné d'un script: icones.

La procédure décrite ici convient pour des icônes au format PNG. Elle est simplifiable pour des icônes SVG (vectorielles), cela sera fait plus tard...

Avertissement Le texte suivant contient certainement des approximations quant à la gestion des icônes sous Linux. Les méthodes proposées ont été mises à jour progressivement à partir d’une approche toute pratique et personnelle... justement dans le but d’appréhender cette gestion.

1  Préparation des icônes

Tout commence donc par la création d’icônes, carrées, au format PNG et de tailles assez grandes (256x256 par exemple) avec un fond transparent pour une inclusion propre dans les fenêtres du Window Manager.

Il existe de bons logiciels pour créer ces icônes, je vais me servir de celles qui sont à la page

et qui ont été créées avec Xara Xtreme. Je dispose des versions originales (que vous trouverez dans l’archive au niveau supérieur de la page précédente) dans la taille 371x371.

2  Installation sous Gnome

Il est possible d’agir au niveau du système lui-même, auquel cas tous les utilisateurs seront concernés par les modifications, ou au niveau d’un utilisateur particulier. J’ai choisi cette dernière option, elle ne demande pas de disposer des droits de root et me semble plus cohérente dans la mesure où il s’agit de personnaliser l’apparence du bureau.

2.1  Le répertoire .local

Ce répertoire, .local, à la racine de son home est à repérer. Tout va se passer à l’intérieur, en particulier dans share.

Figure 1: Le répertoire .local/share

Le répertoire icons contient les répertoires d’icônes — il peut y avoir plusieurs styles donc plusieurs répertoires — et mime contient les types MIME additionnels ou modifiés.

2.2  Les types MIME

Les types MIME (Multipurpose Internet Mail Extension) ont été définis pour baliser le contenu des mails. Maintenant, ils servent aussi, de façon plus générale, à identifier les formats de données. Dans le cadre du projet freedesktop.org, les types MIME sont utilisés par GNOME pour l’affichage des icônes du bureau et pour l’association d’applications à des fichiers (ouvrir avec).

Les types MIME sont précisés au sein de fichiers XML, intégrés ensuite à des bases de données pour un accès plus rapide aux informations qu’ils délivrent. Au cours d’une action, la reconnaissance du type MIME se fait suivant l’extension du fichier et/ou son contenu. Cela induit quelques subtilités quand les règles de détermination du type MIME s’appliquent. En effet, le type MIME d’un fichier peut varier entre le moment où son icône s’affiche (GNOME a éventuellement résolu le type à partir de son extension) et le moment où vous cliquez sur l’icône (GNOME change éventuellement le type en scrutant le contenu).

Un moyen de savoir si le système affecte un type MIME à un fichier donné est de lire ses propriétés (click droit).

mime-html.png
Figure 2: Fichier de type text/html
mime-inconnu.png
Figure 3: Fichier de type inconnu

2.3  Installation des icônes

Partant du principe qu’il s’agit d’affecter une icône aux fichiers ayant une extension donnée, il y a au moins trois cas de figure.

  1. L’extension est liée à un type MIME reconnu par le système qui ne lui affecte cependant pas d’icône. Dans ce cas, il n’y a qu’à installer les icônes dans le répertoire icons/hicolor/ (style par défaut), de différentes tailles pour qu’elles s’adapent au contexte d’utilisation, et de mettre à jour le cache d’icônes.

    Exemple — Soit à affecter une icône aux documents TEX de type text/x-tex. Il faut donc créer les icônes icons/hicolor/NNNxNNN/mimetypes/text-x-tex.pngNNNxNNN correspond aux différentes tailles que vous trouverez dans le répertoire. Pour finir, il suffit de mettre à jour le cache d’icônes.

    jms@scialet:~$ gtk-update-icon-cache -t ~/.local/share/icons/hicolor

    Le script icones qui accompagne cette documentation permet de le faire simplement.

    jms@scialet:~$ icones -i installe text-x-tex  tex.png

    tex.png est l’image initiale qui sera convertie dans les tailles nécessaires.

  2. L’extension n’est liée à aucun type MIME connu du sytème. Dans ce cas, il faut créer le type MIME et installer les icônes suivant la méthode décrite ci-dessus.

    Exemple — Soit à affecter une icône aux fichiers MetaPost.

    Nous allons créer le fichier mime/packages/mp.xml avec le contenu suivant.

    <?xml version="1.0" encoding="UTF-8"?>
    <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
    
      <mime-type type="text/x-mp">
        <comment>MetaPost document</comment>
        <comment xml:lang="fr">document MetaPost</comment>
        <glob pattern="*.mp"/>
      </mime-type>
    
    </mime-info>

    Il suffit alors de régénérer le cache des types MIME.

    jms@scialet:~$ update-mime-database ~/.local/share/mime

    Remarques — Différents types MIME peuvent être définis au sein du même fichier XML; ils peuvent être hiérarchisés et tous les types du genre text/... sont des sous classes de text/plain. Une visite du site http://www.freedesktop.org s’impose!

  3. Pour un thème ou style donné, on peut vouloir remplacer les icônes associées à un type MIME donné. Pour cela, il suffit de construire dans icons un répertoire ayant la même architecture que hicolor mais portant le nom du thème. En plaçant vos icônes dans ce répertoire, elles seront substituées aux icônes du thème.
    jms@scialet:~$ icones -i installe -s montheme  text-x-tex  tex.png

Voici une fenêtre de mon système obtenue après avoir effectué quelques unes de ces manipulations.

exemple.png
Figure 4: Exemple de contenu personnalisé

3  Autres environnements

Les éléments sur lesquels se fonde la procédure précédente ne sont pas propres à Gnome. J’ai vérifié l’apparition des icônes sous Xfce. Quant à KDE, j’ai lu quelque part qu’il adopterait le modèle freedesktop.org, peut-être est-ce déjà fait dans les dernières versions...

4  Remarques

1 — Au cours de mes tests, j’ai constaté que certains fichiers .tex avaient un type MIME qui changeait au moment de la sélection de leur icône à la souris. Cela venait du fait qu’ils commençaient tout simplement par %, ce qui n’est pas rare...

Or, ce signe %, était, d’après les priorités des règles d’attribution des types MIME, le signe magique indiquant un fichier Matlab (text/x-matlab) !

On peut remédier à cela en modifiant un peu, sous root, le fichier

/usr/share/mime/packages/freedesktop.org.xml

Il suffit de supprimer les lignes

    <magic priority="10">
      <match value="%" type="string" offset="0"/>
    </magic>
    <magic priority="50">
      <match value="function" type="string" offset="0"/>
    </magic>

que vous trouverez dans la définition du type MIME text/x-matlab.

En fait, il n’est pas conseillé de modifier ce fichier, il est normalement prévu de faire des modifications locales dans mime/packages/Override.xml mais il me semble que cela ne fonctionne pas pour les chaînes magiques...

Ensuite, il suffit de rafraîchir la base:

jms@scialet:~$ update-mime-database /usr/share/mime