Heute brauchte jemand eine Lösung für folgendes Problem: Er verwendet die Sprachausgabe espeak, um Inhalte vorlesen zu lassen. Wenn er jedoch in per VoIP angesprochen wird, will er mit einer Tastenkombination den aktuellen espeak Prozess beenden.
Meine Idee war, den Prozess nicht zu beenden sondern mit einem Befehl zu pausieren und mit einem anderen wieder weiterlaufen zu lassen; so wie es auch mit Strg + z und fg gehen würde, nur ohne Zugriff auf die Shell, in der espeak läuft.
Hier der einfache Einzeiler dazu, der folgendes macht:
- Per pgrep wird die Prozess-ID von espeak geholt
- Wenn der espeak Prozess läuft, wird er angehalten
- Wenn der espeak Prozess angehalten ist, wird er weiterlaufen gelassen
Funktioniert bei mir. Bei dem anderen Menschen auf BSD leider nicht. Dort gibt es Probleme mit stotterndem Sound, nachdem der Befehl abgesetzt wurde. Das Problem tritt dort auch auf, wenn Strg + z verwendet wird.
Ich lege das hier trotzdem mal ab, falls es mal irgendwann gebraucht wird.
MYPID=$(pgrep espeak); grep -q -i stopped /proc/${MYPID}/status && kill -s SIGCONT ${MYPID} || kill -s SIGSTOP ${MYPID}
Fehlertolerant sieht anders aus, ich weiß, aber es funktioniert und das reicht mir.
Optional kann man den Einzeiler einer Tastenkombination zuordnen und somit auf Unterbrechungen per VoIP mit einem Tastendruck reagieren.
Kommentare
Bisher gibt es hier keine Kommentare.
Kommentar oder Anmerkung für diesen Blogbeitrag
Öffentlicher Kommentar per E-Mail: Hier klicken
Nicht öffentliche Anmerkung per E-Mail: Hier klicken
Sonstige Kontaktaufnahme: Kontakt