Como usar o yad para encerrar o aplicativo

Como usar o yad para encerrar o aplicativo

Quero usar a notificação da bandeja do sistema yad para encerrar um aplicativo (vlc, por exemplo), usei o seguinte código:

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

vlc & pid=${!}

O código dá o seguinte erro:

kill: failed to parse argument: '$pid'

qualquer ajuda é apreciada

Responder1

Corrervlc primeiropara colocar seu PID corretamente na variável $pidassim:

vlc & pid=${!}

Em seguida, use aspas duplas "ao redor do parâmetro (nãoaspas simples') para permitir a expansão de parâmetros da $pidseguinte forma:

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

Responder2

O objetivo do código é iniciar o ffmpeg para redimensionar e codificar um vídeo e poder fechá-lo usando o yad. Encontrei a solução armazenando o PID do processo em um arquivo temporário. Passei muito tempo tentando usar aspas simples dentro de bash -c 'command'. Finalmente resolvi substituindo aspas simples por '"'"'

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

informação relacionada