Como alterar o diretório de trabalho ao abrir um arquivo clicando duas vezes no desktop do Ubuntu?

5

Queria abrir um arquivo (arquivo .pdb: formato de estrutura de proteína, não importa) clicando duas vezes.

O "open with" é direcionado manualmente para executar o "pymol" (um programa que abre o formato .pdb) com o Ubuntu Tweak.

No entanto, descobri que o diretório de trabalho é $ HOME.

Como outros arquivos no diretório que eu abri o arquivo é crucial, eu quero acessá-los.

Eu acho que o "pymol" é executado em $ HOME enquanto o caminho absoluto do "arquivo pdb" (arquivo clicado duas vezes) é passado como um argumento.

Acho que isso é um problema geral e faço uma pergunta:

Como posso deixar o sistema alterar o "diretório de trabalho" para o diretório "onde eu cliquei no arquivo" e executar um programa?

    
por Seungpyo Hong 01.03.2013 / 21:36

5 respostas

11

Embora isso seja anos depois, eis o que funcionou para mim:

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

% k fornece o caminho do diretório do lançador que você acabou de lançar.

    
por TuxForLife 22.12.2015 / 20:33
4

Nenhuma das soluções acima funcionou no meu debian. Também %d está obsoleto. Consulte Especificação de entrada na área de trabalho .

Estou usando o seguinte script para rodar o pymol. Primeiro você precisa criar o seguinte arquivo de script e salvá-lo em /usr/local/bin/run_pymol.sh . Salvei o arquivo em /usr/local porque parece que o xdg-open não entende o que é o diretório HOME ou assim por diante.

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

Em segundo lugar, dê a permissão executável para esse arquivo. Abra um terminal e digite os seguintes comandos para dar uma permissão e confirmar.

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

Por fim, modifique seu arquivo pymol.desktop como o seguinte e, em seguida, seu pymol será iniciado no diretório onde o primeiro arquivo fornecido está localizado.

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

Espero que ajude vocês: -)

    
por Λlisue 22.10.2013 / 09:58
0

Você pode ir para /usr/share/applications e encontrar o file.desktop que é chamado sempre que abrir um tipo de arquivo específico. Em seguida, edite-o e, em exec line, adicione cd PATH && ao início da linha.

    
por Mostafa Shahverdy 01.03.2013 / 21:41
0

Eu não entendo por que a solução lá em cima está tão defasada, faz algo totalmente diferente. Ele muda o diretório de trabalho para aqueles onde o arquivo .desktop está, enquanto a questão estava prestes a mudar o diretório de trabalho para aqueles com arquivo (s) aberto (s).

Minha solução:

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

Tenha em mente que a configuração de variáveis env para arquivos .desktop é diferente, assim

Exec=env CPATH=../include /bin/bash -c 'cd $(dirname $0) && micro $0'
    
por Narical 25.08.2018 / 03:23
-1

OK -

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

não funcionou para mim, pois o PATH não está definido para apontar para o caminho de% F. As únicas variáveis disponíveis em qualquer arquivo de área de trabalho de aplicativos são:

  • % f um único nome de arquivo.
  • % F vários nomes de arquivos.
  • % u um único URL.
  • % U vários URLs.
  • % d um único diretório. Usado em conjunto com% f para localizar um arquivo.
  • % D vários diretórios. Usado em conjunto com% F para localizar arquivos.
  • % n um único nome de arquivo sem um caminho.
  • % N vários nomes de arquivos sem caminhos.
  • % k um URI ou nome de arquivo local do local do arquivo da área de trabalho.
  • % v o nome da entrada do dispositivo.

Aí está:% d é o único diretório que você está procurando, já que não faz sentido mudar para vários diretórios. Então vá para / usr / share / applications e edite o arquivo application-name.desktop (no seu caso pymol.desktop); você tem que ter privilégios de superusuário para fazer isso. Em seguida, localize a linha que começa com "Exec=". Provavelmente lê

Exec=<application-name> %F

(No seu caso Exec = pymol% F). Altere esta linha para

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

Salve esse arquivo da área de trabalho e, da próxima vez que você clicar em um arquivo .pdb, seu diretório de trabalho deverá ser aquele em que o arquivo .pdb está, para que o pymol possa ver todos os seus arquivos.

Naturalmente, você também pode iniciar o pymol a partir da linha de comando depois de navegar pela primeira vez para o diretório onde estão seus arquivos, mas eu acho que você queria uma solução GUI, então você precisa editar um pouco: -)

    
por user147058 05.04.2013 / 19:13