Как использовать yad для завершения приложения

Я хочу использовать уведомление в системном трее yad для завершения приложения (например, vlc), я использовал следующий код:

      yad --notification --no-middle --image=emblem-warning --menu='Cancel ! kill $pid' --text="My Tooltip" &

vlc & pid=${!}

Код выдает следующую ошибку:

      kill: failed to parse argument: '$pid'

любая помощь приветствуется

2 ответа

Бегатьvlc сначала правильно получить свой PID в переменной следующим образом:

      vlc & pid=${!}

Затем используйте двойные кавычки"вокруг параметра ( не одинарные кавычки '), чтобы разрешить расширение параметра$pidвот так:

      yad --notification --no-middle --image=emblem-warning --menu="Cancel ! kill $pid" --text="My Tooltip" &

Цель кода — запустить ffmpeg для изменения размера и кодирования видео, а также закрыть его с помощью yad. Я нашел решение, сохранив PID процесса во временном файле. Я потратил много времени, пытаясь использовать одинарные кавычки внутри команды bash -c. Я, наконец, решил это, заменив одинарные кавычки на'"'"'

      export TMP="$(mktemp)"
yad --notification --no-middle  --command="" --image=emblem-warning --menu='Cancel current job ! bash -c "kill  $(cat $TMP); rm $TMP;"' & pid=$!
export fname="video.mp4"
bash -c 'echo $$>$TMP; exec ffmpeg -n -loglevel warning -i "$fname" -acodec copy -vcodec libx264 -crf 24 -vf "scale='"'"'if(gte(iw,ih),-1,720)'"'"':'"'"'if(gte(iw,ih),720,-1)'"'"'"  "${fname%%.*}_720.${fname##*.}"'
kill $pid
Другие вопросы по тегам