Eu não sei como fazer um link funcionar assim, mas há uma maneira relativamente fácil de fazê-lo.
O problema parece ser que o programa invocado para processar seus dados não está sendo executado com seu diretório de trabalho configurado para o local do seu arquivo de dados.
Em vez de vincular o arquivo em si, escreva um script de inicialização e passe o local do arquivo para ele como um parâmetro. Em seguida, vincule o script à sua entrada na área de trabalho.
Pelo menos no KDE, é mais fácil fazer isso adicionando uma entrada ao seu Disparador de Aplicativos com todos os parâmetros configurados da maneira desejada e arrastando a entrada do menu para a área de trabalho. Ele tem um monte de variáveis de espaço reservado que permitem modificar o comando e até mesmo permite especificar o diretório de trabalho a ser usado.
Isso pode ser simples ou extravagante. Comece com simples:
#!/bin/bash
## Usage: launcheroo working-directory data-file
## defending this script is left as an exercise for the reader
## ... or you can ask in the comments ;)
cd "$1"
myprog "$2" ## or your more fancy exec that will figure out
## what program to run by itself
invocado como:
launcheroo path-to-data-files data-file
Isso lida com o uso mais básico e ilustra a abordagem, mas não lida com erros como parâmetros incorretos ou ausentes
Para ficar um pouco mais extravagante, você pode extrair o caminho do caminho do arquivo de dados especificado usando dirname
ou edição do parâmetro bash em vez de passá-lo como um parâmetro separado.
Um jeito rápido e sujo de fazer isso - especialmente para testar como ele funciona - seria apenas editar o ícone da área de trabalho para executar
cd where-the-files-are ; exec ...
Como este é o Linux, provavelmente existem muitas outras maneiras de fazer isso também.
Se você adicionar o arquivo como um ícone na área de trabalho, poderá editar diretamente seu arquivo .desktop e fazê-lo fazer todo tipo de coisas interessantes. Eu não fiz muito com isso.
Acabamos de ver isso answer que é essencialmente o mesmo que o meu com um giro ligeiramente diferente.