Como posso definir a variável 'Path' em um arquivo .desktop para ser relativo ao local onde o arquivo da área de trabalho está localizado?

10

Eu quero definir a variável 'Path' em um arquivo .desktop relativo ao local onde o arquivo da área de trabalho está localizado e não consigo fazer isso.

Quando não o declaro ou o coloco em branco, o padrão é minha pasta pessoal, não importa de onde eu o execute; e não aceita valores relativos ao meu local atual no sistema de arquivos.

    
por kicsyromy 09.06.2011 / 08:11

4 respostas

3

Você não pode definir o CWD dentro de um arquivo .desktop. Se você quiser que um aplicativo tenha um CWD específico, será necessário escrever um script de wrapper simples para o aplicativo, algo parecido com isto:

#!/bin/sh

(cd /where/you/want/it/to/be && exec your_program)

Você pode substituir your_program lá por $@ e executar o script com your_program como um argumento, como run-in-dir.sh your_program . Dessa forma, você pode usar o mesmo script para quebrar qualquer programa que queira iniciar nesse diretório.

    
por dobey 22.06.2012 / 22:22
11

Você pode avaliar isso usando um mini-script bash in-line no seu Exec. Isso adicionará o caminho do arquivo .desktop ao PATH antes de executar seu comando.

Exec=bash -c "export PATH=$PATH:'dirname %k'; your_command"

% k será substituído pelo caminho do próprio arquivo da área de trabalho. O comando dirname corta a parte do nome do arquivo, deixando apenas o diretório. Depois que o PATH for definido assim, your_command poderá ser chamado sem um caminho completo.

    
por roadmr 13.09.2013 / 16:40
2

Eu usei isso:

Exec=bash -c 'cd $(dirname %k) && ./SCRIPT_NAME'

O% k é o nome completo do arquivo .desktop, incluindo seu caminho. Em seguida, ele é usado pelo dirname para obter um local e alterar o diretório para esse local. Finalmente, agora que está no lugar certo, ele encontra o script e o executa.

    
por Marian 17.09.2015 / 20:10
0

Para nomes de diretório com espaços no nome, isso finalmente funcionou para mim:

Exec=/bin/bash -c 'cd "$(dirname "$0")"; wine game.exe -windowed' %k

Agradecemos o link

    
por ThorSummoner 23.03.2017 / 04:08

Tags