comment se débrouiller avec la ligne de commande dans les menus des GUIs
Dans la première partie de la session du dimanche LCP virtuelle, nous avons vu comment s’y retrouver dans des menus d’un environnement de bureau à partir de la ligne de commande, sans aucune aide un programme quelconque, comment sont organisés les infos qui sont affichées dans les menus et où sont-elles stockées (cf. CLI Session #002 - les menus des environnements de bureau).
Dans cette seconde partie, nous allons aborder l’aspect recherche à partir des fichiers .desktop et personnalisation des menus.
Partant d’une entrée de menu qui affiche le nom "Terminal", comment puis-je retrouver les informations relatives à ce point dans le menu ?
Nous avons vu dans la première partie que les infos des entrées de menu sont stockées dans des fichiers .desktop et que le répertoire standard du système dans lequel se trouvent ces fichiers est le répertoire /usr/share/applications.
Si l’entrée du menu affiche "Terminal" comme nom, nous allons retrouver facilement la définition de cette entrée grâce à la commande grep
qui permet de rechercher du texte dans un fichier. En reprenant la spec, nous savons que le nom se trouve associé à la clé Name=
Il suffit donc de faire une recherche pour savoir où se trouve le texte Name=Terminal
ou Name[fr]=Terminal
(la clé "localisée" en français) dans les fichiers .desktop du répertoire /usr/share/applications.
$ grep -e ^Name=Terminal -e '^Name\[fr\]=Terminal' /usr/share/applications/*.desktop
/usr/share/applications/exo-terminal-emulator.desktop:Name=Terminal Emulator
/usr/share/applications/org.gnome.Terminal.desktop:Name[fr]=Terminal
/usr/share/applications/org.gnome.Terminal.desktop:Name=Terminal
L’entrée du menu est donc décrite dans le fichier /usr/share/applications/org.gnome.Terminal.desktop
Si on veut voir dans ce fichier quelle est la commande lancée par cette entrée de menu, on recherche le texte Exec=
$ grep ^Exec= /usr/share/applications/org.gnome.Terminal.desktop
Exec=gnome-terminal
gnome-terminal
est donc la commande lancée par cette entrée de menu.
Une question s’est posée pour savoir où se trouve la commande gnome-terminal
.
La solution est la commande which
:
$ which gnome-terminal
/usr/bin/gnome-terminal
Une autre possibilité pour retrouver le fichier qui contient le binaire ou les commandes est d’utiliser les commandes find
ou locate
.
Le soucis, c’est que ces commandes ne prennent pas en compte la variable PATH
qui donne la liste des répertoires ainsi que l’ordre dans lequel il faut chercher dans ces répertoires pour retrouver une commande.
Un exemple valant mieux que 10 explications, voyons comment PATH influence notre système.
Sur mon ordi, la viariable PATH contient ceci :
$ echo $PATH
/home/foo/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/sbin
Ou, affiché sur plusieurs lignes pour plus de lisibilité, ceci :
$ echo "${PATH//:/$'\n'}"
/home/foo/bin
/usr/local/bin
/usr/bin
/bin
/usr/local/games
/usr/games
/usr/sbin
Ce qui veut dire que lorsque je tape une commande, mon système ira voir s’il la trouve d’abord dans le répertoire /home/foo/bin
, puis dans /usr/local/bin
, puis dans /usr/bin
, et ainsi de suite.
Donc, si je place une commande voire un script exécutable dans mon répertoire /home/foo/bin
, je vais influencer la sortie de la commande which
:
$ touch /home/foo/bin/gnome-terminal && chmod u+x /home/foo/bin/gnome-terminal
$ which gnome-terminal
/home/foo/bin/gnome-terminal
Un dernier mot pour terminer sur la personnalisation des menus.
Pour connaître les répertoires standards utilisés par la spécification XDG, vous pouvez vous référer à cette page :
https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
Elle décrit, entre autre, où trouver les infos personnalisées.
Les données perso, comme les entrées de menu par exemple, se trouvent dans le répertoire dont le nom figure dans la variable $XDG_DATA_HOME
ou, si cette variable est vide, dans le répertoire $HOME/.local/share
à la place du répertoire standard /usr/share
.
Les fichiers .desktop se trouvant dans le répertoire /usr/share/applications
, vos entrées perso se trouveront dans le répertoire $HOME/.local/share/applications
.
Pour faire un exercice, on crée le répertoire s’il n’existe pas, on y copie un fichier .desktop et on édite ce fichier pour changer le nom affiché :
$ mkdir -p .local/share/applications/
$ cp /usr/share/applications/org.gnome.Terminal.desktop .local/share/applications/
$ nano .local/share/applications/org.gnome.Terminal.desktop
Allez voir dans votre menu pour vérifier que le nouveau nom y figure bien.
Et n’oubliez pas d’effacer le fichier .local/share/applications/org.gnome.Terminal.desktop
pour éviter les surprises !
Voilà, j’espère que ces deux petits tutos sur les entrées de menus vous seront un jour utiles.