Come cambiare la directory di lavoro quando si apre un file con doppio clic sul desktop di Ubuntu?


10

Volevo aprire un file (file .pdb: formato della struttura proteica, non importa) con un doppio clic.

"Apri con" è diretto manualmente per eseguire "pymol" (un programma che apre il formato .pdb) con Ubuntu Tweak.

Tuttavia, ho scoperto che la directory di lavoro è $ HOME.

Poiché altri file nella directory che ho aperto sono cruciali, voglio accedervi.

Immagino che il "pymol" sia eseguito su $ HOME mentre il percorso assoluto del "file pdb" (file con doppio clic) viene passato come argomento.

Immagino che questo sia un problema piuttosto generale e fai una domanda:

Come posso consentire al sistema di cambiare la "directory di lavoro" nella "directory in cui ho fatto clic sul file" ed eseguire un programma?

Risposte:


16

Anche se sono passati anni, ecco cosa ha funzionato per me:

Exec=bash -c 'cd "%k" && ~/path/to/your/file'

% k ti dà il percorso della directory del lanciatore che hai appena lanciato.


1
% k non ha funzionato (né% d) ma avevo bisogno della parte bash -c
Marc Van Daele,

1
Sono contento di poter aiutare indirettamente. È necessario che la parte bash -c sia definita ~correttamente. Non hai bisogno di bash -c se usi il percorso diretto / home / marc.
TuxForLife,

1
bash -c ha fatto il lavoro. mi ha aiutato molto grazie :)
Muthu,

2
% K si risolve nel percorso completo, incluso il file desktop, quindi cd "%k"non funzionerà. Ma puoi usare cd "$(dirname %k)".
Ivant,

Sono confuso, perché vai in una directory usando "% k" e poi il comando subito dopo &&sta eseguendo qualcosa in relazione a ~?
vdegenne,

5

Nessuna delle soluzioni di cui sopra ha funzionato sul mio debian. Inoltre %dè deprecato. Vedi le specifiche della voce desktop .

Quindi sto usando il seguente script bash per eseguire pymol. Per prima cosa devi creare il seguente file di script bash e salvarlo in /usr/local/bin/run_pymol.sh. Ho salvato il file /usr/localperché sembra xdg-openche non capisca qual è la directory HOME o così via.

#!/usr/bin/env bash
# change working directory
cd `dirname $1`
# run pymol
/usr/bin/env pymol $@

In secondo luogo, autorizza l'eseguibile a quel file. Apri un terminale e digita i seguenti comandi per dare un'autorizzazione e per confermare.

% chmod +x /usr/local/bin/run_pymol.sh
% run_pymol.sh

Infine, modifica il tuo pymol.desktopfile come segue e quindi il tuo pymol inizierà nella directory in cui si trova il primo file indicato.

#!/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;

Spero che ti aiuti ragazzi :-)


3
Sono stato in grado di mettere Path=/my/pathe ha funzionato bene. Path - If entry is of type Application, the working directory to run the program in.
Ripster

2

Non capisco perché la soluzione lassù sia così votata, che faccia una cosa assolutamente diversa. Cambia la directory di lavoro con quelle in cui si trova il file .desktop, mentre la domanda stava per cambiare la directory di lavoro con quelle con i file aperti.

La mia soluzione:

Exec=/bin/bash -c 'cd $(dirname $0) && micro $0'

Tieni presente che l'impostazione delle variabili env per i file .desktop è diversa, in questo modo

Exec=env CPATH=../include /bin/bash -c 'cd $(dirname $0) && micro $0'

0

Puoi andare a /usr/share/applicationstrovare il nome corretto file.desktopche viene chiamato ogni volta che apri un tipo di file specifico. Quindi modificalo e nella execriga aggiungi cd PATH &&all'inizio della riga.


-1

OK -

Exec=cd PATH &&  <application-name> %F

non ha funzionato per me poiché PATH non è definito per indicare il percorso di% F. Le uniche variabili disponibili in qualsiasi file desktop di applicazioni sono:

  • % fa nomefile singolo.
  • % F più nomi di file.
  • % ua singolo URL.
  • % U più URL.
  • % da singola directory. Utilizzato insieme a% f per individuare un file.
  • % D più directory. Utilizzato insieme a% F per individuare i file.
  • % na singolo nome file senza percorso.
  • % N più nomi di file senza percorsi.
  • URI% ka o nome file locale della posizione del file desktop.
  • % v il nome della voce del dispositivo.

Eccolo:% d è la singola directory che stai cercando, poiché non ha senso passare a più directory. Quindi vai su / usr / share / applicazioni e modifica il file application-name.desktop (nel tuo caso pymol.desktop); devi avere i privilegi di superutente per farlo. Quindi individuare la riga che inizia con "Exec =". Probabilmente legge

Exec=<application-name> %F

(Nel tuo caso Exec = pymol% F). Cambia questa riga in

Exec=cd %d && <application-name> %F

Salvare quel file desktop e la prossima volta che si fa clic su un file .pdb la directory di lavoro dovrebbe essere quella in cui si trova il file .pdb, in modo che pymol possa vedere tutti i file lì.

Ovviamente, potresti anche avviare pymol dalla riga di comando dopo aver prima navigato nella directory in cui si trovano i tuoi file, ma immagino che tu volessi una soluzione GUI, quindi devi fare un po 'di modifica :-)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.