Для выполнения сценария, когда приложение запускается я могу измениться Exec
директива в /usr/share/applications/App.desktop
Что относительно того, когда закрывается приложение? Есть ли какой-либо рычаг для того события?
можно использовать что-то как
Exec=bash -c 'do-before;do-main-task;do-after'
в файле на рабочем столе. делают - после того, как должен сделать то, что Вы хотите сделать 'после того, как приложение закрывается'. Это может быть сценарий оболочки. Я использую этот метод, и он работает на меня, но это может быть хитро из-за заключения в кавычки.
можно также поместить приложение в сценарий оболочки удара, который сделает все задачи для Вас (назовите свое приложение из сценария), и поставьте имя сценария в Исполнительной строке в файле на рабочем столе.
Exec=do-all-tasks-script
Этот метод, более вероятно, будет работать, если задачи будут содержать сложный синтаксис (и не мог бы работать 'в кавычках').
Это - корректный комментарий Serg, что Вы не должны редактировать системные файлы. Я предполагаю, что это - особый случай, и можно скопировать файл на рабочем столе в рабочий стол и отредактировать эту копию. (Я делаю этот вид файлов на рабочем столе для моих собственных приложений.)
Дополнительный
я сделал следующий пакетный файл 'dbdmda'
#!/bin/bash
echo do-before
transmission-gtk
echo do-after
и выполнил его как это: Когда передача запустилась, я позволяю ей работать в течение приблизительно десяти секунд. Затем я вышел от передачи путем нажатия x кнопки в правом верхнем углу. Это было записано в окно терминала
$ bash dbdmda
do-before
do-after
, Таким образом, очевидно, 'делают - после того, как' командная строка была выполнена. Как Вы называете передачу, и как она останавливается?
В первую очередь, это обычно полагало, что плохая практика редактирует файлы в /usr/share/applications
. Кроме того, это очень неэффективно, потому что это стало частью пакета, и если существует обновление того пакета, угадайте что? Ваши изменения будут перезаписаны. Если абсолютно, 100%, необходимо внести изменения, сделайте пользовательское .desktop
файл и сохраните его в ~/.local/share/applications
Вместо этого я рекомендовал бы использовать сценарий, который использует while
циклы и pgrep -f
для ожидания приложения, которое Вы хотите. Например, в примере ниже, использование сценария firefox
как строка процесса.
#!/bin/bash
process_string="firefox"
while true
do
while ! pgrep -f "$process_string"
do
echo "Waiting for $process_string"
sleep 3
done
while pgrep -f "$process_string"
do
echo "Waiting for $process_string to exit"
sleep 3
done
# place the command you want to occur when
# process exits here
sleep 3
done
сценарий работает в непрерывном цикле, таким образом, Вы могли добавить его как часть Приложений Запуска для запуска после входа в систему