Je voulais ouvrir un fichier (fichier .pdb: format de structure de protéine, tant pis) par un double-clic.
Le "ouvrir avec" est dirigé manuellement pour exécuter "pymol" (un programme qui ouvre le format .pdb) avec Ubuntu Tweak.
Cependant, j'ai trouvé que le répertoire de travail est $ HOME.
Comme les autres fichiers sur le répertoire où j'ai ouvert le fichier est crucial, je veux y accéder.
Je suppose que le "pymol" est exécuté sur $ HOME tandis que le chemin absolu du "fichier pdb" (fichier double-cliqué) est passé en argument.
Je suppose que c'est un problème assez général et pose une question:
Comment puis-je laisser le système remplacer le "répertoire de travail" par le "répertoire dans lequel j'ai cliqué sur le fichier" et exécuter un programme?
Bien que ce soit des années plus tard, voici ce qui a fonctionné pour moi:
Exec=bash -c 'cd "%k" && ~/path/to/your/file'
% k vous donne le chemin du répertoire du lanceur que vous venez de lancer.
Aucune des solutions ci-dessus n'a fonctionné sur ma debian. De plus, %d
est obsolète. Voir Spécification d'entrée sur le burea .
J'utilise donc le script bash suivant pour exécuter pymol. Vous devez d’abord créer le fichier de script bash suivant et l’enregistrer dans /usr/local/bin/run_pymol.sh
. J'ai enregistré le fichier dans /usr/local
car il semble que le xdg-open
ne comprend pas ce qu'est le répertoire HOME ou ainsi de suite.
#!/usr/bin/env bash
# change working directory
cd `dirname $1`
# run pymol
/usr/bin/env pymol $@
Deuxièmement, donnez le droit d’exécution à ce fichier. Ouvrez un terminal et tapez les commandes suivantes pour donner une permission et pour confirmer.
% chmod +x /usr/local/bin/run_pymol.sh
% run_pymol.sh
Enfin, modifiez votre fichier pymol.desktop
comme suit: votre pymol démarrera ensuite dans le répertoire où se trouve le premier fichier donné.
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Name=PyMOL Molecular Graphics System
GenericName=Molecular Modeller
Comment=Model molecular structures and produce high-quality images of them
Type=Application
Exec=/usr/local/bin/run_pymol.sh %U
TryExec=pymol
Icon=pymol
MimeType=chemical/x-pdb
Categories=Education;Science;Chemistry;
J'espère que ça vous aidera les gars :-)
Je ne comprends pas pourquoi la solution là-haut est si bien votée qu'elle fait la différence. Il change le répertoire de travail pour ceux où se trouve le fichier .desktop, alors que la question était sur le point de changer le répertoire de travail pour ceux avec le (s) fichier (s) ouvert (s).
Ma solution:
Exec=/bin/bash -c 'cd $(dirname $0) && micro $0'
Gardez à l’esprit que la définition de variables env pour les fichiers .desktop est différente,
Exec=env CPATH=../include /bin/bash -c 'cd $(dirname $0) && micro $0'
Vous pouvez aller à /usr/share/applications
et trouver le file.desktop
correct appelé à chaque fois que vous ouvrez un type de fichier spécifique. Ensuite, éditez-le et dans la ligne exec
, ajoutez cd PATH &&
au début de la ligne.