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

관련 정보