Recherche de site Web

Comment ajouter des répertoires de lanceurs personnalisés sous Linux


Sous Linux, nous créons des lanceurs d’applications sous forme de fichiers avec l’extension « .desktop » : ils contiennent des métadonnées sur l’application à laquelle ils sont liés, et des instructions sur la façon dont cette dernière doit être exécutée. Pour qu’un lanceur apparaisse dans le menu d’application d’un environnement de bureau, il doit être placé dans certains répertoires dédiés. Dans ce tutoriel, nous apprenons quels sont les répertoires cibles par défaut pour les lanceurs d’applications selon la spécification Freedesktop.org, et comment ajouter des répertoires personnalisés.

Dans ce tutoriel, vous allez apprendre :

  • Quels sont les répertoires de lanceurs par défaut sous Linux
  • Comment ajouter un nouveau répertoire pour les lanceurs de bureau

La spécification Freedesktop.org

Freedesktop.org s’agit d’un projet visant à établir des conventions standard et des fonctionnalités communes entre les environnements de bureau sous Linux et d’autres systèmes d’exploitation de type Unix. Parmi les normes fournies par Freedesktop.org, il y a la spécification XDG Base Directory, qui définit où certains types de fichiers doivent être recherchés dans le système de fichiers.

Ce qui nous intéresse, dans ce cas, ce sont les répertoires définis par la variable d’environnement XDG_DATA_DIRS, ceux sous lesquels les fichiers de données sont recherchés. Les fichiers de données dont nous parlons, dans ce cas, sont des lanceurs de bureau : des fichiers avec l’extension .desktop, compilés à l’aide d’instructions définies par la spécification d’entrée Desktop ; Ils sont utilisés comme lanceurs d’applications dans les environnements graphiques.

Répertoires de lanceurs par défaut

Conformément à la spécification de répertoire de base XDG, les chemins d’accès aux répertoires de données sont spécifiés via la variable d’environnement XDG_DATA_DIRS. Si cette variable n’est pas définie ou si elle est vide, les répertoires par défaut sont utilisés. Il s’agit, par ordre de priorité : /usr/local/share et /usr/share. De plus, les fichiers de données spécifiques à l’utilisateur sont recherchés dans le répertoire de base défini via la variable XDG_DATA_HOME, la valeur par défaut étant : ~/.local/share.

Si un sous-répertoire appelé « applications » existe sous ces répertoires, il est recherché pour les lanceurs de bureau : /usr/local/share/applications est conventionnellement utilisé pour héberger des lanceurs d’applications compilées à partir des sources, ou d’applications tierces autonomes installées dans le répertoire /opt ; Le répertoire /usr/share/applications, à la place, est utilisé pour héberger les lanceurs d’applications installées avec le gestionnaire de paquets. Enfin, le répertoire ~/.local/share/applications est utilisé pour héberger les lanceurs de bureau pour les applications installées uniquement pour un utilisateur spécifique.

Ajout d’un répertoire de lanceurs personnalisés

Pour ajouter un répertoire personnalisé pour les lanceurs de bureau, tout ce que nous avons à faire est de changer la valeur de la variable XDG_DATA_DIRS. À titre d’exemple, supposons que nous voulions ajouter le répertoire /opt/share/applications à la liste ; Nous pouvons attribuer une valeur à la variable XDG_DATA_DIRS dans l’environnement à l’échelle du système, en créant un fichier dans le répertoire /etc/profile.d. Les fichiers avec l’extension « .sh » dans ce répertoire, proviennent de /etc/profile, via cet extrait, sur la famille de distributions Red Hat :

for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then 
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done

Une logique similaire existe sur les distributions basées sur Debian :

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

À titre d’exemple, nous allons définir la valeur de la variable dans le fichier /etc/profile.d/custom-launcher-dirs.sh :

export XDG_DATA_DIRS="/opt/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"

Dans ce cas, nous avons placé notre répertoire personnalisé avant tous les chemins existants dans le XDG_DATA_DIRS, afin qu’il soit recherché avant les autres. Nous avons utilisé le mot-clé « export » pour rendre la variable disponible pour les processus enfants du shell actuel, et utilisé l’extension $ {parameter :--word}, pour nous assurer que « /usr/local/share :/usr/share » (word) est explicitement utilisé comme valeur par défaut, si XDG_DATA_DIRS (paramètre) est vide ou n’est pas défini. Pour que la modification soit effective, nous enregistrons le fichier, puis nous nous déconnectons et nous nous connectons à nouveau.

Maintenant que nous avons ajouté le répertoire, chaque fichier correctement écrit avec l’extension « .desktop » dans son sous-répertoire « applications », (donc, /opt/share/applications), devrait apparaître dans le menu des applications de notre environnement de bureau.

Conclusions

Dans ce tutoriel, nous avons appris à quoi sert la variable XDG_DATA_DIRS dans le contexte de la spécification Freedesktop : la variable définit les répertoires dans lesquels les fichiers de données sont recherchés. Sur les systèmes où la variable XDG_DATA_DIRS n’est pas définie ou vide, la valeur par défaut est d’utiliser /usr/local/share et /usr/share. Si un sous-répertoire appelé « applications » existe dans l’un de ces répertoires, il est recherché pour les lanceurs d’applications, qui sont définis comme des fichiers avec l’extension « .desktop ». Ici, nous avons appris comment ajouter un répertoire personnalisé pour les lanceurs de bureau.

Articles connexes: