Файл .desktop не выполняет сценарий, хорошо работает, когда выполнено вручную

У меня есть проблемы с моими .desktop файлами. У меня есть сценарий оболочки, который постоянно наблюдает за файлом, который будет помещен в папку "Downloads". Когда файл помещается в папку, это автоматически выполняет программу C, которую я записал в терминале и предлагаю мне различные варианты для того, где я хотел бы переместить файл.

Все хорошо там. Однако я хочу настольный ярлык на программу. Я пытался использовать редактора ярлыка для определения команды, чтобы работать, и выполнить его в терминале и сохранить терминальным бегущий за выполнением команды. Все, что находится в команде, cd ~/Documents/prog/c/learn/inotify-tools && ./notifyscript.sh

Однако это не будет работать. Кроме того, я пытался писать программу C, которая в основном сказала системе вышеупомянутую команду, думая, что редактор ярлыка портил.

ИНТЕРЕСНО, это хорошо работает, когда я нахожусь в его каталоге и типе ./'Download Manager'

Однако я не хочу продолжать изменяться на каталог на каждой перезагрузке и запускать программу. Вместо этого я хочу .desktop ярлык или, еще лучше, способ запуститься на перезагрузке автоматически. Я не понимаю, почему это не работает. Если я не выполняюсь в терминале, это не работает...

Вот Файл на рабочем столе:

[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

Вот Исходный код C и его Файл на рабочем столе также, так же, как другая опция:

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

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");
}
4
задан 2 September 2014 в 21:14

2 ответа

Я заставил его работать путем перемещения сценария в мою домашнюю папку и редактирования настольного конфигурационного файла к следующему.

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

Это кажется действительно странным, особенно потому что терминал является ложью... Во всяком случае это работает, таким образом, я счастлив! Спасибо все для Вашей справки!

3
ответ дан 17 November 2019 в 14:28

Exec строка, вероятно, не выполняет значение в оболочке. Попробуйте это:

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

Если у Вас должен быть тот каталог как cwd, добавьте это к сценарию оболочки:

cd -P -- "$(dirname -- "$0")"
2
ответ дан 1 December 2019 в 09:36

Другие вопросы по тегам:

Похожие вопросы: