Cómo utilizar yad para finalizar la aplicación

Cómo utilizar yad para finalizar la aplicación

Quiero usar la notificación de la bandeja del sistema de yad para finalizar una aplicación (vlc por ejemplo), usé el siguiente código:

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

vlc & pid=${!}

El código da el siguiente error:

kill: failed to parse argument: '$pid'

cualquier ayuda es apreciada

Respuesta1

Corrervlc primeropara obtener su PID correctamente en la variable $pidasí:

vlc & pid=${!}

Luego use comillas dobles "alrededor del parámetro (nocomillas simples') para permitir la expansión de parámetros de $pidesta manera:

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

Respuesta2

El objetivo del código es iniciar ffmpeg para cambiar el tamaño y codificar un vídeo y poder cerrarlo usando yad. Encontré la solución almacenando el PID del proceso en un archivo temporal. Pasé mucho tiempo intentando usar comillas simples dentro del 'comando' bash -c. Finalmente lo resolví reemplazando las comillas simples con '"'"'

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

información relacionada