如何使用 yad 终止应用程序

如何使用 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'

任何帮助表示感谢

答案1

跑步vlc 第一的将其 PID 正确放入变量中,$pid如下所示:

vlc & pid=${!}

"然后在参数周围使用双引号(不是单引号')允许$pid像这样的参数扩展:

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

答案2

该代码的目的是启动 ffmpeg 来调整视频的大小并对其进行编码,然后能够使用 yad 关闭它。我通过将进程的 PID 存储在临时文件中找到了解决方案。我花了很长时间尝试在 bash -c 'command' 中使用单引号。我最终通过将单引号替换为 '"'"'

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

相关内容