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.
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/
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
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 ;
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.
[1] je n’aime pas trop cet anglissisme mais je n’ai pas trouvé d’équivalent en français
15 décembre : GNU/Linux Install Afternoon @ Caldarium
17 décembre : Install Party, bibliothèque Le Phare
18 décembre : Atelier Linux, atelier du web en 2024
Sur hackeragenda.be :
8 décembre : [ONLINE] Community Participation Call [belgian_java_user_group]
6 décembre : Open Garage [opengarage]
4 décembre : OpenStreetMap meetup in Brussels [openstreetmap_belgium]