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.
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.
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.
Ce répertoire, .local
, à la racine de son home est à
repérer. Tout va se passer à l’intérieur, en particulier dans 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.
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).
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.
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.png
où NNNxNNN
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.
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!
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.
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...
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