{{tag>Bionic Xenial personnalisation }}
----
====== Lanceurs (fichiers .desktop) ======
Sur les systèmes GNU-Linux comme Ubuntu, les **lanceurs** sont des fichiers donnant accès, à la manière d'un "raccourci", à un logiciel, à un fichier, ou à un dossier.
Les [[:environnements|environnements graphiques]] ([[:Unity]], [[:MATE]], [[:GNOME Shell]], [[:kde|KDE Plasma]], [[:Xfce]], [[:Budgie]], ...) utilisent notamment des lanceurs pour construire leurs menus et pour permettre le lancement d'applications en cliquant sur leurs icônes.
Les lanceurs sont plus riches que de simples raccourcis : nom, icône, mots-clés (traduits), description de l'application (traduite), actions spécifiques, ... les lanceurs permettent aux menus de proposer des icônes claires, des catégories, une recherche, et une description accessible des applications.
Cette page décrit comment gérer les lanceurs existants, et comment les personnaliser voire en créer.
===== Gestion des lanceurs =====
Il est déjà possible de [[:tutoriel/comment_lancer_application|lancer des applications depuis votre environnement]], les opérations possibles diffèrent en fonction de votre [[:variante]] mais restent globalement similaires :
Vous êtes utilisateur d'Unity ? [[:unity_launcher|Cette page]] vous est dédiée pour plus de détails.
==== Ajout à un dock ou à un tableau de bord ====
Compatible avec les environnements [[:MATE]], [[:GNOME Shell]], [[:Unity]], [[:Cinnamon]], [[:Budgie]], [[:Xfce]], et [[:kde|KDE Plasma]].
La terminologie peut changer d'un environnement à l'autre, mais il s'agit toujours globalement :
* soit de faire un clic-droit sur l'icône de l'application, puis "ajouter au tableau de bord" ou "épingler au dock" ou "ajouter aux favoris" ;
* soit de glisser-déposer l'icône de l'application vers l'endroit ciblé.
Certains environnements comme GNOME ou KDE permettent aussi d'épingler les applications déjà lancées à partir de l'icône présente dans la liste des fenêtres ou dans le dock.
{{ :raccourci-lanceur:raccourci-lanceur_lucid_04.png|Clic droit sur un endroit vide du tableau de bord -> Ajouter au tableau de bord}}
Dans les environnements [[:MATE]], [[:Xfce]] et [[:LXDE]], les lanceurs peuvent être ajoutés au tableau de bord par un clic-droit sur le tableau de bord, puis "Ajouter au tableau de bord", une fenêtre s'ouvre alors, on peut alors choisir d'ajouter un lanceur.
~CB~
Le retrait de l'application ainsi épinglée se fait [[:gnome-session-fallback#lanceurs_sur_le_tableau_de_bord|généralement]] par un clic-droit sur l'icône.
==== Organiser vos applications ====
=== Cas général ===
Des utilitaires comme [[:MenuLibre]] permettent de choisir comment sont rangées les applications (l'agencement en catégories notamment), et de cacher celles qui sont superflues. (En cas de souci avec [[:MenuLibre]], des alternatives comme [[:Arronax]] ou [[:Alacarte]] existent.)
=== Pour GNOME Shell ===
{{ http://image.noelshack.com/fichiers/2017/13/1490567800-capture-du-2017-03-27-00-26-06.png?400|Exemple avec un appfolder "Navigateurs" }}
Pour organiser la vue applications, il existe des **appfolders**, permettant par exemple de réunir ensemble tous les utilitaires, ou tous les jeux, etc. afin d'alléger la quantité d'applications affichées quand on lance la vue applications.
Des utilitaires, des extensions, ou des scripts permettent de gérer les //appfolders//, mais [[:gnome-software|la logithèque GNOME]] est le moyen recommandé pour en créer ou en modifier. (dans l'onglet "installés", il faut se mettre en mode sélection pour que l'option apparaisse)
~CB~
==== Ajouter au bureau ====
Compatible avec les environnements [[:MATE]], [[:Cinnamon]] et [[:kde|KDE Plasma]].
{{ :raccourci-lanceur:raccourci-lanceur_lucid_02.png?400|Clic droit sur le logiciel -> Choisir d'ajouter ce lanceur au tableau de bord ou au bureau}}
Ouvrez le menu //Applications//, puis faites un clic droit sur le nom du logiciel de votre choix. Il apparaît alors un petit menu qui vous propose notamment d'ajouter ce lanceur au bureau.
~CB~
Une autre possibilité consiste à faire un glisser-déposer sur le bureau.
===== Lanceurs personnalisés =====
==== Généralités ====
Pour construire les menus, les environnements prennent en comptent tous les fichiers ''.desktop'' qu'on trouve :
* soit dans ''/usr/share/applications/''
* soit dans ''~/.local/share/applications/''
La plupart des gestionnaires de fichiers présentent les fichiers des lanceurs sous la forme de leur icône, avec leur nom traduit, et lancent l'application quand on clique dessus. C'est pratique quand on veut s'en servir comme de raccourcis sur le bureau, mais c'est assez gênant quand on veut les éditer, voire simplement les renommer.
Lorsque vous renommez un lanceur, ce n'est pas le nom du fichier ''.desktop'' qui est modifié, mais la valeur de sa propriété "Nom" (« Name »).
Pour renommer réellement le fichier ''.desktop'', saisissez dans un [[:terminal]] la [[:commande_shell|commande]] suivante :
mv ancien_nom.desktop nouveau_nom.desktop
Si vous voulez modifier un lanceur présent dans ''/usr/share/applications/'' (c'est le cas pour la plupart des applications), il ne faut JAMAIS modifier directement le lanceur original : les modifications devraient en effet se faire en tant que [[:sudo|super-utilisateur]], ce qui est en soi risqué, et les modifications seraient effacées à la moindre mise à jour !
Il est conseillé de **copier le lanceur original** dans le dossier ''~/.local/share/applications/'', et de **modifier la copie**.
Pour vérifier la syntaxe du fichier ''.desktop'' modifié ou créé, utilisez l'utilitaire ''desktop-file-validate''.
==== Modification d'un lanceur existant ====
Dans ce qui suit, lorsque vous précisez un chemin, quel qu'il soit, au sein d'un lanceur, il est conseillé que ce soit le chemin absolu (c'est-à-dire depuis la racine, et pas depuis votre dossier personnel ''~'').
=== Avec MenuLibre ===
Méthode recommandée.
Voir la page dédiée à [[:MenuLibre]].
(En cas de souci avec [[:MenuLibre]], des alternatives comme [[:Arronax]] ou [[:Alacarte]] existent.)
Sur //LXDE / Lubuntu//, on utilisera //LXDE Shortcut//, en lançant la commande (en tapant Alt+F2 ou depuis un terminal) :
''lxshortcut -o ~/Desktop/my_shorcut.desktop''
=== Avec Nautilus ===
En faisant //clic-droit -> Propriétés// sur un lanceur, on accède à quelques propriétés de base du lanceur :
{{ :raccourci-lanceur:exemple_proprietes_nautilus_lanceur.png?nolink&400|Le lanceur d'Abiword}}
* __Nom :__ le nom du programme tel qu'il apparaîtra là où sera le lanceur, ce champ est à remplir à votre convenance.
* __Description :__ le nom générique de l'application ("Navigateur Web" ou "Jeu de plateforme" par exemple). Ce champ peut être vide.
* __Commande :__ la commande qui sera lancée lors d'un clic sur le lanceur.
* __Commentaire :__ Commentaire à propos du programme, qui sur la plupart des environnements apparaîtra lorsque vous laisserez votre curseur au-dessus du lanceur. Ce champ peut être vide.
* __Icône :__ En cliquant sur l'icône, on peut choisir une nouvelle image qui fera office d'icône. (Si vous les cherchez, vos thèmes d'icônes existants sont dans ''/usr/share/icons'' ou ''~/.local/share/icons/'' ;-) )
Évidemment, vous ne pourrez modifier les valeurs que si vous avez les droits sur le fichier : si vous voulez modifier un lanceur qui se trouve dans ''/usr/share/applications'', il vous faudra le copier dans ''~/.local/share/applications/'' avant tout.
~CB~
=== Avec un éditeur de texte ===
En faisant //clic droit -> Ouvrir avec une autre application// sur le lanceur, vous pourrez choisir de l'éditer avec un éditeur de texte.
Cela vous donne plus de possibilités, mais il faut savoir éditer précisément le fichier en respectant sa syntaxe, sinon il ne fonctionnera plus.
Le contenu devrait ressembler à ceci :
Aucun espace de part et d'autre du symbole "=".
Les phrases précédés d'un # sont des commentaires, pas pris en compte lors de l'exécution du fichier.
[Desktop Entry]
Type=Application
Name=nom du programme
GenericName=nom générique
Comment=commentaire/description du programme
Icon=icône du programme #il peut s'agir d'un chemin, ou alors du nom d'une icône contenue dans votre thème d'icônes
Exec=commande qui permettrait d'ouvrir le programme par le terminal
Terminal=false #ouvrir ou non un terminal lors de l'exécution du programme (false ou true)
StartupNotify=false #notification de démarrage ou non (false ou true)
Categories=catégories du programme #Exemple: Categories=Application;Game;ArcadeGame;
Les champs ''Keywords'' et ''Categories'' contiennent des listes de termes, avec un point-virgule après __chaque__ terme.
Souvent, les champs sont aussi disponibles en versions traduites :
Name=Nom du programme
Name[fr]=Nom français du programme
#etc.
Tous les champs possibles et leurs descriptions sont décrits [[https://standards.freedesktop.org/desktop-entry-spec/latest/ar01s06.html|ici]].
=== Champ "Type" ===
Le champ //Type// : détermine quel est le type auquel la commande sera associée :
* << Application >>
* << Link >>
* << Directory >>
Les types "Link" et "Directory" sont peu utilisés, car "Directory" ne sert à rien du point de vue de l'utilisateur, et il est généralement plus simple de faire un lien vers le fichier ou le dossier en question, plutôt qu'un lanceur. Si vous voulez un fichier ou un dossier parmi vos applications dans votre menu, ou un lien avec une icône spéciale par exemple, ça peut cependant être utile.
== Link ==
Ceci est utilisé pour créer un lien vers un fichier ou un dossier, qui s'ouvrira avec le logiciel par défaut pour ce type de fichier.
Par exemple, si vous souhaitez créer un lanceur qui permet d'ouvrir le fichier **montexte.txt** qui se trouve dans votre dossier personnel avec votre éditeur de texte par défaut, on n'utilise pas le champ "Exec=" dans le fichier, mais le champ "URL=", où on renseignera la valeur suivante
file:///home//montexte.txt
Avec des logiciels graphiques dédiés (utilitaire de création de lanceurs de MATE), il semble également possible de cliquer sur le bouton //Parcourir// pour sélectionner le fichier à ouvrir.
Pour les emplacements "spéciaux", comme les fichiers récents avec [[:Nautilus]] par exemple, il est préférable de faire un lanceur de type "Application" et lui donner une commande telle que Exec=nautilus recent://
== Directory ==
Ceci est utilisé pour organiser les menus, le fichier se termine alors en ''.directory'' et n'est pas lançable.
=== Champ "Exec" (commande à exécuter) ===
== Cas général ==
Le champ //Commande// ("Exec=") contiendra la commande qui lance l'application. Ce sera souvent le nom de l'application dont vous cherchez à créer le lanceur, écrite en minuscules :
Par exemple, pour un lanceur démarrant [[:Firefox]] :
firefox
Alternativement, on peut indiquer le chemin complet. Il faudra saisir dans un [[:terminal]] la [[:commande_shell|commande]] suivante:
which firefox
pour connaître ce chemin complet.
Veillez à respecter la casse ((différence minuscule/majuscule)) lorsque vous remplissez la commande.
Pour trouver la commande (sans arguments) qui a permis de lancer une fenêtre donnée, saisissez dans un [[:terminal]] la [[:commande_shell|commande]] suivante:
xprop WM_CLASS
puis avec le curseur de la souris, cliquez sur la fenêtre qui vous intéresse et le résultat apparaîtra dans le [[:terminal]].\\
Par exemple pour le [[:moniteur système]], vous obtiendrez en réponse:
WM_CLASS(STRING) = "gnome-system-monitor", "Gnome-system-monitor"
== Application installée hors dépôts ====
Si vous souhaitez créer un lanceur pour une application installée autrement que depuis les [[:dépôts]], par exemple mise en place par vos soins dans votre **Dossier Personnel** ou dans le dossier **/opt/**, il vous faudra au choix :
* soit saisir le chemin complet vers votre exécutable. Si vous ne savez pas comment renseigner ce chemin, vous pouvez vous aider du bouton **Parcourir**.
* créer un lien symbolique vers un des répertoires de la variable PATH en saisissant dans un [[:terminal]] la [[:commande_shell|commande]] suivante: sudo ln -s /chemin/de/l'exécutable /usr/bin/nom_du_programme
== Avec un fichier en argument ==
Si vous souhaitez créer un lanceur pour un logiciel et un fichier particulier, après avoir choisi le //Type// << Application >> , rajoutez l'emplacement du fichier après la commande.
Par exemple, pour utiliser [[:totem]] pour lire le fichier **exemple.avi** qui se trouve dans un dossier **film** de l'utilisateur, il s'agira d'indiquer la commande suivante :
totem /home//Vidéos/exemple.avi
== Avec une variable en préfixe ==
Si vous souhaitez créer un lanceur demandant un préfixe, il vous suffira généralement de faire précéder la commande de ce préfixe.
Par exemple, pour créer un lanceur démarrant le jeu [[:Dofus]] installé //via// [[:Wine]], il suffit de renseigner la commande suivante :
env WINEPREFIX="$HOME/.wine" wine "C:\Program Files\Dofus\UpLauncher.exe"
Autre exemple, si je ne veux pas que le thème "Vertex Dark" que j'utilise ne rende illisible les formulaires sur le web, je peux lancer Firefox avec un thème clair, différent du reste du système :
env GTK_THEME="Vertex:light" firefox
== Cas d'un script ==
Si vous souhaitez créer un lanceur qui appelle un [[:tutoriel:script_shell|script]] [[:bash]], il s'agira généralement d'indiquer la commande suivante :
sh -c /chemin/du/script.sh
Par exemple, si vous désirez créer un lanceur pour script **test.sh** se trouvant dans un dossier **Script** de votre Dossier Personnel vous indiquerez
sh -c /home//Scripts/test.sh
Si malgré les bons [[:droits]] attribués à votre script, celui-ci ne semble pas s'exécuter depuis le lanceur, vérifiez d'avoir bien choisi le //Type// "Application".
== Codes spéciaux pour la ligne de commande ==
La ligne de commande peut contenir des codes spéciaux. Ils seront remplacés avec la valeur correspondante en cas de besoin :
* **%f** Un nom de fichier unique, même si plusieurs fichiers sont sélectionnés. Si le fichier n'est pas dans le système de fichier local (ex. disponible en HTTP ou en FTP), il sera téléchargé et %f pointera sur le fichier temporaire (à utiliser pour les applications ne comprenant pas la syntaxe URL).
* **%F** Une liste de fichiers. À utiliser pour des applications qui peuvent ouvrir plusieurs fichiers à la fois.
* **%u** Une URL unique.
* **%U** Une liste d'URLs.
Par exemple, si on fait "clic-droit/ouvrir avec" sur un fichier, et qu'on choisit une application dont le lanceur contient "%f" à la fin de sa ligne "Exec=", %f sera remplacé par le nom du fichier avant que la commande ne se lance.
Pour une explication plus complète voir [[http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#exec-variables|la liste de variable exec]] (en) dans les définitions standards de freedesktop.org
==== Création d'un lanceur ====
=== Avec MenuLibre ===
Méthode recommandée.
Voir la page dédiée à [[:MenuLibre]].
(En cas de souci avec [[:MenuLibre]], des alternatives comme [[:Arronax]] ou [[:Alacarte]] existent.)
=== Sur le bureau ===
Compatible avec les environnements [[:MATE]] et [[:Cinnamon]].
{{ :raccourci-lanceur:raccourci-lanceur_lucid_03.png?200|Clic droit sur un endroit vide du bureau -> Créer un lanceur...}}
Pour faire un raccourci sur le bureau, faites un clic-droit sur le bureau, choisissez //Créer un lanceur...// puis à la section « [[#Modification d'un lanceur existant]] » pour savoir quoi mettre comme valeur dans les champs présentés.
~CB~
Compatible avec l'environnement [[:GNOME]].
Pour créer un lien vers un dossier ou fichier :
maintenir les touches **Ctrl** et **Shift** (Majuscule) enfoncé, glisser le dossier (ou fichier) sur le bureau.
=== Sur un tableau de bord ===
Compatible avec les environnements [[:MATE]], [[Xfce]], [[:gnome-session-fallback]] et [[:Cinnamon]].
Pour faire un raccourci sur un tableau de bord :
* faites un clic-droit dessus (pour //gnome-session-fallback//, voir [[:gnome-session-fallback#lanceurs_sur_le_tableau_de_bord|ici]] le raccourci clavier correspondant),
* choisissez //Ajouter au tableau de bord -> Lanceur d'application personnalisé//
* reportez-vous à la section « [[#Modification d'un lanceur existant]] » pour savoir quoi mettre comme valeur dans les champs présentés.
| {{:raccourci-lanceur:raccourci-lanceur_lucid_04.png|Clic droit sur un endroit vide du tableau de bord -> Ajouter au tableau de bord}} | {{:raccourci-lanceur:raccourci-lanceur_lucid_05.png?250|Choisir Lanceur d'application personnalisé}} |
=== Pour tous les utilisateurs ===
La création d'un lanceur accessible depuis les menus pour **tous les utilisateurs du système** implique de devoir créer le fichier ''.desktop'' dans le dossier ''/usr/share/applications/'', ce qui doit être fait avec les [[:sudo|privilèges d'administrateur]].
Pour des soucis de stabilité et de sécurité, ce sera fait en ligne de commande.
Tout d'abord, créez le fichier ''.desktop'' voulu dans votre dossier personnel par exemple dans ''~/.local/share/applications/''
Puis, copiez-le au bon endroit grâce à la commande :
cp ~/.local/share/applications/.desktop /usr/share/applications/.desktop
=== En ajoutant un script dans le menu contextuel ===
FIXME un équivalent devrait exister pour Xfce
* **Avec MATE (gestionnaire de fichiers Caja)**
Cette méthode crée un script dans le menu contextuel de [[:Caja]] pour créer des lanceurs vers des exécutables :
[[:tutoriel:comment_modifier_un_fichier|Créez le fichier]] //~/.local/share/caja/scripts/Créer un lanceur// : mate-desktop-item-edit `pwd` --create-new
Puis rendez-le [[:tutoriel:script_shell#executer_un_script|exécutable]].
* **Avec Cinnamon (gestionnaire de fichiers Nemo)**
Pour [[:Nemo]], l'emplacement du script serait ''~/.local/share/nemo/scripts/Créer un lanceur'', mais il pourrait être nécessaire de remplacer le contenu du script par [[https://pastebin.com/raw/TpUvTuwY|ceci]].
FIXME Cinnamon possède probablement un équivalent à mate-desktop-item-edit
* **Avec GNOME ou Unity (gestionnaire de fichiers Nautilus)**
Pour [[:Nautilus]], l'emplacement du script serait ''~/.local/share/nautilus/scripts/Créer un lanceur'', mais il pourrait être nécessaire de remplacer le contenu du script par [[https://pastebin.com/raw/TpUvTuwY|ceci]].
{{ :unity:script_lanceur_oneiric_01.png?300 |}}
Une [[:nautilus_utilisation_avancee#extensions_de_nautilus|extension Nautilus]] (non-officielle, à installer avec la méthode présentée par le développeur), est aussi disponible à [[https://github.com/Maestroschan/nautilus-create-launcher|cette adresse]].
=== Création avec un éditeur de texte ===
Ci-dessous sont résumées les grandes étapes.
- Avec un éditeur de texte, **créer le fichier avec l'extension''.desktop''** (ex. : ''une_app.desktop'') :
- accessible pour **tous les utilisateurs** : avec les droits root (sudo) créer le fichier dans **''/usr/share/applications/''** (ex : ''$ vim /usr/share/applications/une_app.desktop'').
- accessible uniquement pour **un utilisateur** : créer le fichier dans **''~/.local/share/applications/''** (ex. : ''$ vim /usr/share/applications/une_app.desktop'').
- **Editer le fichier** en suivant la syntaxe [[raccourci-lanceur#avec_un_editeur_de_texte|décrite dans la partie modification avec un éditeur de texte]]. Exemple minimal
[Desktop Entry]
Type=Application
Name=une app
Exec=/home/un_utilisateur/applications/une_app
- **Vérifier la syntaxe ''desktop-file-validate''** (ex : ''$ desktop-file-validate /usr/share/applications/une_app.desktop''). S'il n'y a aucune erreur, l'utilitaire n'affiche rien.
- Mettre à jour manuellement la base des lanceurs pour ne pas avoir à attendre la mise à jour automatique avec ''update-desktop-database'' (ex : ''$ update-desktop-database ~/.local/share/applications'').
==== Lancement d'un lanceur ====
Si le fichier .desktop a l'attribut executable, on peut cliquer sur lui.
Si gtk3 est installé, le lanceur peut être rapidement testé avec ''gtk-launch'' (ex : ''$ gtk-launch une_app.desktop'').
Pour le lancer en ligne de commande, utiliser l'une des méthodes de cette page : [[https://ubuntuplace.info/questions/290/executer-un-fichier-desktop-dans-le-terminal|Exécution d'un fichier .desktop dans le terminal]]
===== Ajout d'une action =====
Une action est une commande supplémentaire, à laquelle on peut accéder en faisant un clic-droit sur l'icône du lanceur dans certains environnements (Unity, GNOME Shell, Budgie, ...). On parle aussi parfois de "quicklists" pour désigner ce concept.
On peut en ajouter avec [[:MenuLibre]], ou bien en ajoutant, à la fin des fichiers ''.desktop'', des sections sur ce modèle :
[Desktop Action identifiant]
Name=Nom de l'option
Name[fr]=Nom traduit
Exec=commande quelconque
Les identifiants des actions devront être listés dans la section principale du fichier :
Actions=identifiant;
=== Exemple ===
{{ :raccourci-lanceur:quicklist.png|}}
Pour obtenir le résultat ci-contre (illustré avec GNOME Shell), on modifie le lanceur de Firefox de la manière suivante :
[Desktop Entry]
Name=Firefox
# [Ici, le reste du lanceur normal pour firefox]
# Nouvelle ligne pour lister les actions :
Actions=new-window;new-private-window;
# Nouvelles sections :
[Desktop Action new-window]
Name=New Window
Name[fr]=Nouvelle fenêtre
Exec=firefox -new-window
[Desktop Action new-private-window]
Name=New Private Window
Name[fr]=Nouvelle fenêtre privée
Exec=firefox -private-window
Avec certains logiciels comme Nautilus, il faut faire attention à régler DBusActivatable=false
si on veut que les quicklists fonctionnent.
===== Voir aussi =====
* Les lanceurs sont aussi utilisés pour lancer les [[:tutoriel:application_demarrage|applications au démarrage de la session]]
* (en) Spécifications officielles des formats des [[https://specifications.freedesktop.org/desktop-entry-spec/latest/|fichiers .desktop (Desktop Entry)]] et des [[https://specifications.freedesktop.org/menu-spec/latest/|menus (Desktop Menu)]].
* (en) [[https://help.gnome.org/admin//system-admin-guide/2.32/menustructure-desktopentry.html.en|Page d'aide de Gnome sur les fichiers .desktop]] qui décrit les variables d'environnement utilisés pour spécifié les chemins dans lesquels les //.desktop// sont lus.
* [[:personnalisation|Le portail "personnalisation"]]
* [[http://computing.travellingfroggy.info/article4/lxshortcut-creation-raccourcis-lxde|LXShortCut: création de raccourcis (icônes) pour le bureau de LXDE (Lubuntu) !]]
* (en) [[https://wiki.lxde.org/en/LXShortCut| doc de LXShortCut]]
----
//Contributeurs principaux : Nicow, Lefendril, [[:utilisateurs:YannUbuntu]], [[:utilisateurs:fabux]], [[:utilisateurs:l_africain|L'Africain]], [[:utilisateurs/roschan]]
, ...//