Je veux définir la variable 'Path' dans un fichier .desktop par rapport à l'emplacement où se trouve le fichier de bureau, ce que je n'arrive pas à faire.
Lorsque je ne le déclare pas ou ne le mets pas en blanc, il est configuré par défaut dans mon dossier personnel, où que je me trouve; et il n'accepte pas les valeurs relatives à mon emplacement actuel dans le système de fichiers.
Vous ne pouvez pas définir le CWD dans un fichier .desktop. Si vous souhaitez qu'une application ait un CWD spécifique, vous devez écrire un simple script de wrapper pour l'application, qui ressemble à ceci:
#!/bin/sh
(cd /where/you/want/it/to/be && exec your_program)
Vous pouvez remplacer your_program
par $@
et exécuter le script avec votre programme comme argument, comme run-in-dir.sh your_program
. De cette façon, vous pouvez utiliser le même script pour envelopper tout programme que vous souhaitez démarrer dans ce répertoire.
Vous pouvez résoudre ce problème en utilisant un mini-script bash en ligne sur votre administrateur. Cela ajoutera le chemin du fichier .desktop à PATH avant d'exécuter votre commande.
Exec=bash -c "export PATH=$PATH:`dirname %k`; your_command"
% k sera remplacé par le chemin du fichier du bureau lui-même. La commande dirname
supprime la partie du nom de fichier, ne laissant que le répertoire. Une fois que PATH est défini comme ceci, your_command
peut être appelé sans chemin complet.
J'ai utilisé ceci:
Exec=bash -c 'cd $(dirname %k) && ./SCRIPT_NAME'
Le% k est le nom complet du fichier .desktop, y compris son chemin. Il est ensuite utilisé par dirname pour obtenir un emplacement et changer de répertoire vers cet emplacement. Enfin, maintenant qu'il est au bon endroit, il trouve le script et l'exécute.
Pour les noms de répertoire avec des espaces dans le nom, cela a finalement fonctionné pour moi:
Exec=/bin/bash -c 'cd "$(dirname "$0")"; wine game.exe -windowed' %k
Cela a fonctionné pour moi Ubuntu 14.04:
Exec=bash -c "cd %k && ./app.run"
Latest spec indique que % k pointe vers l'emplacement du fichier de bureau:
% k - L'emplacement du fichier du bureau sous la forme d'un URI (obtenu par exemple à partir du système vfolder) ou d'un nom de fichier local ou vide si aucun emplacement n'est connu.