.desktop arquivo não executa um script, funciona bem quando executado manualmente

3

Estou tendo problemas com meus arquivos .desktop. Eu tenho um script de shell que constantemente assiste a um arquivo para ser colocado na pasta "Downloads". Quando um arquivo é colocado na pasta, ele automaticamente executa um programa em C que eu escrevi no terminal e oferece diferentes opções para onde eu gostaria de mover o arquivo.

Tudo está bem lá. No entanto, quero um atalho na área de trabalho para o programa. Eu tentei usar o editor de atalho para especificar o comando a ser executado e para executá-lo no terminal e manter o terminal em execução após a execução do comando. Tudo o que está no comando é cd ~/Documents/prog/c/learn/inotify-tools && ./notifyscript.sh

No entanto, isso não funcionará. Além disso, tentei escrever um programa em C que basicamente dizia ao sistema o comando acima, pensando que o editor de atalhos estava bagunçando.

INTERESSANTE, ele roda bem quando estou em seu diretório e digita ./'Download Manager'

No entanto, não quero continuar mudando para o diretório em todas as reinicializações e executar o programa. Em vez disso, quero um atalho para o .desktop ou, melhor ainda, uma maneira de iniciar a reinicialização automaticamente. Eu não entendo porque não está funcionando. Se eu não executar no terminal, não funciona ...

Aqui está o arquivo da área de trabalho:

[Desktop Entry]
Name=Download Manager
Comment=
Exec=cd ~/Documents/prog/c/learn/inotify-tools && ./notifyscript.sh
Icon=icon name
Terminal=true
Type=Application
StartupNotify=true
X-KeepTerminal=true

Aqui está o código-fonte C e o arquivo da área de trabalho, bem como outra opção:

[Desktop Entry]
Name=Download Manager
Comment=
Exec=./'Download Manager'
Icon=icon name
Terminal=true
Type=Application  
StartupNotify=true
X-KeepTerminal=true

Código-fonte C:

/*
desktoplauncher.c Source Code
Written by me
This program is used to launch
the inotify monitor shell script
which in turn launches the 
download manager program 
whenever a file is placed in the
"Downloads" folder.
*/ 

#include <stdio.h>

int main()
{
system("cd ~/Documents/prog/c/learn/inotify-tools && ./notifyscript.sh");
}
    
por Zeke Legge 02.09.2014 / 18:41

2 respostas

2

Funcionei movendo o script para minha pasta pessoal e editando o arquivo de configuração da área de trabalho para o seguinte.

[Desktop Entry]
Name=Download Manager
Comment=
Exec=lxterminal --command="./.notifyscript.sh"
Icon=icon name
Terminal=false
Type=Application
StartupNotify=true

Isso parece muito estranho, especialmente porque o terminal é falso ... De qualquer forma funciona, então estou feliz! Obrigado a todos pela vossa ajuda!

    
por Zeke Legge 02.09.2014 / 20:47
1

A linha Exec provavelmente não executa o valor em um shell. Tente isto:

Exec=/home/user/Documents/prog/c/learn/inotify-tools/notifyscript.sh

Se você precisa ter esse diretório como o cwd, adicione isso ao shell script:

cd -P -- "$(dirname -- "$0")"
    
por glenn jackman 02.09.2014 / 19:07