Как выполнить сценарий, когда приложение завершается

Для выполнения сценария, когда приложение запускается я могу измениться Exec директива в /usr/share/applications/App.desktop

Что относительно того, когда закрывается приложение? Есть ли какой-либо рычаг для того события?

3
задан 23 December 2016 в 08:51

2 ответа

  1. можно использовать что-то как

    Exec=bash -c 'do-before;do-main-task;do-after'
    

    в файле на рабочем столе. делают - после того, как должен сделать то, что Вы хотите сделать 'после того, как приложение закрывается'. Это может быть сценарий оболочки. Я использую этот метод, и он работает на меня, но это может быть хитро из-за заключения в кавычки.

  2. можно также поместить приложение в сценарий оболочки удара, который сделает все задачи для Вас (назовите свое приложение из сценария), и поставьте имя сценария в Исполнительной строке в файле на рабочем столе.

    Exec=do-all-tasks-script
    

    Этот метод, более вероятно, будет работать, если задачи будут содержать сложный синтаксис (и не мог бы работать 'в кавычках').

Это - корректный комментарий Serg, что Вы не должны редактировать системные файлы. Я предполагаю, что это - особый случай, и можно скопировать файл на рабочем столе в рабочий стол и отредактировать эту копию. (Я делаю этот вид файлов на рабочем столе для моих собственных приложений.)

Дополнительный

я сделал следующий пакетный файл 'dbdmda'

#!/bin/bash

echo do-before
transmission-gtk
echo do-after

и выполнил его как это: Когда передача запустилась, я позволяю ей работать в течение приблизительно десяти секунд. Затем я вышел от передачи путем нажатия x кнопки в правом верхнем углу. Это было записано в окно терминала

$ bash dbdmda 
do-before
do-after

, Таким образом, очевидно, 'делают - после того, как' командная строка была выполнена. Как Вы называете передачу, и как она останавливается?

1
ответ дан 1 December 2019 в 15:34

В первую очередь, это обычно полагало, что плохая практика редактирует файлы в /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

сценарий работает в непрерывном цикле, таким образом, Вы могли добавить его как часть Приложений Запуска для запуска после входа в систему

4
ответ дан 1 December 2019 в 15:34

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

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