
Ich möchte die Benachrichtigung in der Taskleiste von Yad verwenden, um eine Anwendung (z. B. VLC) zu beenden. Ich habe den folgenden Code verwendet:
yad --notification --no-middle --image=emblem-warning --menu='Cancel ! kill $pid' --text="My Tooltip" &
vlc & pid=${!}
Der Code gibt den folgenden Fehler aus:
kill: failed to parse argument: '$pid'
jede Hilfe ist willkommen
Antwort1
Laufenvlc
Ersteum die PID $pid
wie folgt korrekt in die Variable zu bekommen:
vlc & pid=${!}
Verwenden Sie dann doppelte Anführungszeichen "
um den Parameter (nichtEinzelzitate'
), um eine Parametererweiterung wie $pid
folgt zu ermöglichen:
yad --notification --no-middle --image=emblem-warning --menu="Cancel ! kill $pid" --text="My Tooltip" &
Antwort2
Das Ziel des Codes ist es, ffmpeg zu starten, um die Größe eines Videos zu ändern und es zu kodieren und es mit yad schließen zu können. Ich habe die Lösung gefunden, indem ich die PID des Prozesses in einer temporären Datei gespeichert habe. Ich habe lange versucht, einfache Anführungszeichen in bash -c 'command' zu verwenden. Ich habe es schließlich gelöst, indem ich einfache Anführungszeichen durch ersetzt habe '"'"'
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