De acordo com a Especificação de entrada na área de trabalho :
Field codes must not be used inside a quoted argument
Consequentemente, seu %k
é dado literalmente ao comando bash
. Alterar a linha Exec
para o seguinte evita isso:
Exec=bash -c '"$(dirname "$1")"/run.sh' dummy %k
O acima funciona localmente e também funciona se houver um espaço no caminho. dummy
é dado ao script bash
como seu $0
(o que ele acha que é o nome do script) e a expansão de %k
está disponível como $1
. As camadas aninhadas de cotação são necessárias para estar em conformidade com a especificação e ser espaços seguros.
Observe que %k
não necessariamente se expande para um caminho de arquivo local - pode ser um URI vfolder, ou vazio, e um script realmente portátil deve ser responsável por esses casos também. %k
também não é universalmente suportado, então você precisará ter algumas restrições sobre os sistemas que espera usá-lo de qualquer maneira.
No que diz respeito à depuração, você pode usar o redirecionamento de shell comum no KDE:
Exec=bash -c ... > /tmp/desktop.log
Este não é um comportamento padronizado e não funciona no GNOME e provavelmente em outros. Você também pode fornecer um caminho absoluto para um script criado para registrar seus argumentos e ações da maneira que você precisa.