
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 $pid
así:
vlc & pid=${!}
Luego use comillas dobles "
alrededor del parámetro (nocomillas simples'
) para permitir la expansión de parámetros de $pid
esta 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