У меня есть проблемы с моими .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");
}
Я заставил его работать путем перемещения сценария в мою домашнюю папку и редактирования настольного конфигурационного файла к следующему.
[Desktop Entry]
Name=Download Manager
Comment=
Exec=lxterminal --command="./.notifyscript.sh"
Icon=icon name
Terminal=false
Type=Application
StartupNotify=true
Это кажется действительно странным, особенно потому что терминал является ложью... Во всяком случае это работает, таким образом, я счастлив! Спасибо все для Вашей справки!
Exec
строка, вероятно, не выполняет значение в оболочке. Попробуйте это:
Exec=/home/user/Documents/prog/c/learn/inotify-tools/notifyscript.sh
Если у Вас должен быть тот каталог как cwd, добавьте это к сценарию оболочки:
cd -P -- "$(dirname -- "$0")"