Bruxelles Linux User Group : BxLUG

Une culture numérique logo copyleft à Bruxelles.

CLI Session #002 - les menus des environnements de bureau

comment se débrouiller avec la ligne de commande dans les menus des GUIs

Dimanche après-midi, lors de la LCP virtuelle du 24 mai, nous nous sommes réunis pour discuter de comment, en ligne de commande, voir, éditer, chercher dans les menus de son environnement de bureau.

Pour cette LCP virtuelle, nous étions 5 ; m’ont rejoint Jean-Marie, Michel, Philippe et Pierre.

I - Introduction

En intro, deux mots sur l’initiative freedesktop.org.

Une rapide recherche sur le terme XDG ou freedesktop permet de facilement retrouver des infos sur ce dont il s’agit.
https://duckduckgo.com/?t=ffnt&q=xdg

Freedesktop.org est un organisme de collaboration entre différents projets de comme GNOME, KDE, Xfce, Enlightenment, GStreamer, Xgl/AIGLX ou encore X.Org, qui travaille à l’interopérabilité des environnements graphiques sous les systèmes utilisant X Window.

En clair, freedesktop essaie de mettre de l’ordre dans la manière dont les environnements de bureau s’organisent.

Ça permet, par exemple, de facilement retrouver les infos concernant ce qui se trouvent dans les menus ou de retrouver les mêmes menus quand passe d’un bureau à l’autre, de Gnome à XFCE ou KDE.

Pratique, non ?

Plus d’infos ici :
https://fr.wikipedia.org/wiki/Freedesktop.org
https://www.freedesktop.org/wiki/
https://specifications.freedesktop.org/

II - La discussion du jour

Ce qui nous intéresse, c’est la manière de s’y retrouver dans des menus d’un environnement de bureau à partir de la ligne de commande, sans aucune aide un programme quelconque.

Cela permet de toujours être capable de manipuler des menus sur toutes les distrib’ sans rien devoir installer, juste avec les commandes de base.

On commence donc par jeter un œil dans la spec pour savoir où se trouvent les infos des menus.

Une recherche dans le site de la spec sur "desktop entries"
https://duckduckgo.com/?q=site%3Ahttps%3A%2F%2Fspecifications.freedesktop.org%2F+desktop+entries&t=ffnt&ia=web

On tombe alors sur la doc qui décrit comment ça se passe :
https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html

Et on lit que les entrées de menu sont décrites dans des fichiers qui ont .desktop comme extensions.

Si on est fainéant·e, on peut directement ouvrir un terminal et regarder dans la liste des fichiers qui composent un paquet où se trouve le fichier .desktop sans se soucier de lire la doc pour trouver quels sont les répertoires standards utilisés pour stocker les fichiers .desktop.

Exemple : pour cet exemple, j’ai choisi gnome-terminal ; ce sera identique quelque soit le paquet choisi pour autant que le paquet fournisse une entrée dans les menus, bien sûr ;

Pendant la discussion, nous avions regarder ce que donnait nano (l’éditeur de Debian) mais nano n’a pas d’entrée dans les menus, donc pas de fichier .desktop dans le paquet nano (https://packages.debian.org/buster/amd64/nano/filelist).

Si je veux voir les fichiers du paquet gnome-terminal, j’utilise la commande :

$ dpkg -L gnome-terminal
[... plein de lignes]

Pour limiter ce qui est affiché aux lignes contenant "desktop" :

$ dpkg -L gnome-terminal | grep desktop
/usr/share/applications/org.gnome.Terminal.desktop

On voit de suite qu’il y a un fichier .desktop dans ce paquet. Et que ce fichier se situe dans le répertoire /usr/share/applications.

On peut regarder si ce répertoire contient aussi autre chose.

$ ls /usr/share/applications
[plein de fichiers]

Si on regarde d’un peu plus près le fichier org.gnome.Terminal.desktop, on s’apperçoit qu’il s’agit d’un fichier texte :

$ file /usr/share/applications/org.gnome.Terminal.desktop
/usr/share/applications/org.gnome.Terminal.desktop: UTF-8 Unicode text

Et comme il s’agit d’un fichier texte, il est permis d’être curieux :
$ less /usr/share/applications/org.gnome.Terminal.desktop

Que trouve-t-on dans les fichiers .desktop ?

Le contenu de ces fichiers est relativement simple à comprendre. Il s’agit d’entrées {clé=valeur}, comme beaucoup de fichiers de configuration.

Quelques exemples de clés de la section [Desktop Entry] :
Extraites par la commande grep :
$ grep -e ^'\[' -e Name= -e Comment= -e ^Exec= /usr/share/applications/org.gnome.Terminal.desktop

[Desktop Entry]
Name=Terminal
Comment=Use the command line
Exec=gnome-terminal

La clé Name=, c’est le nom de l’application dans le menu ;

La clé Comment=, c’est l’info-bulle de l’application du menu ;

La clé Exec= contient la commande qui sera lancée lorsque vous cliquerez sur l’icône du menu ;

Clés "localisées"

Certaines clés peuvent aussi être "localisées" [1]. Cela signifie que ces clés sont reliées à la valeur de la variable "locale" (le français p.ex) , définie dans votre système d’exploitation.

Dans notre exemple, si notre système est en français, les clés seront de ce format :
Cle[fr]=Valeur

Exemple

$ grep -e ^'\[' -e 'Name\[fr\]=' -e 'Comment\[fr\]=' /usr/share/applications/org.gnome.Terminal.desktop
[Desktop Entry]
Name[fr]=Terminal
Comment[fr]=Utiliser la ligne de commande

On voit ici que nous avons le nom et le commentaire en français.

Voilà, fin de la première partie.

Nous verrons par la suite dans une seconde partie comment faire des recherches dans les entrées de menu en cas de problème et comment modifier et personnaliser les entrées de menus.

[1je n’aime pas trop cet anglissisme mais je n’ai pas trouvé d’équivalent en français

Un message, un commentaire ?

Soutien vers nubo.coop

Prochainement :

 23 septembre : Atelier du Web - information sur Gnu/Linux
 30 septembre : Atelier du Web - information sur Gnu/Linux
 7 octobre : Atelier du Web - information sur Gnu/Linux