diff --git a/speech/clipboard_translator.sh b/speech/clipboard_translator.sh index 4c04c85..eab5879 100755 --- a/speech/clipboard_translator.sh +++ b/speech/clipboard_translator.sh @@ -1,18 +1,23 @@ #!/usr/bin/env bash +cleanup() { + sort -uo "$dictionaryFile" "$dictionaryFile" +} + +trap cleanup EXIT + # Clear the clipboard so you don't accidently send personal info to the translator. -echo "" | xclip -d "${DISPLAY:-:0}" -selection clipboard +echo "" | xclip -d "${DISPLAY:-:0}" -selection clipboard 2> /dev/null export dictionaryFile="${XDG_CONFIG_HOME:-$HOME/.config}/storm-games/audiogame-manager/translations.txt" if [[ ! -r "$dictionaryFile" ]]; then touch "$dictionaryFile" fi -newText="" -oldText="" -oldTranslatedText="" while : ; do - newText="$(xclip -d "${DISPLAY:-:0}" -selection clipboard -o)" + newText="" + translatedText="" + newText="$(xclip -d "${DISPLAY:-:0}" -selection clipboard -o 2> /dev/null)" sleep 0.01 - if [[ "$oldText" == "$newText" ]] || [[ "$newText" == "" ]]; then + if [[ "${#newText}" -lt 1 ]]; then continue fi export newText @@ -20,15 +25,14 @@ while : ; do $1~originalText { print $2; exitCode = 0; exit} END { exit exitCode }' "$dictionaryFile")" if [[ "${#translatedText}" -ge 1 ]]; then - if [[ "${translatedText}" != "${oldTranslatedText}" ]]; then - spd-say "$translatedText" - fi - oldTranslatedText="$translatedText" + spd-say "$translatedText" + echo "" | xclip -d "${DISPLAY:-:0}" -selection clipboard 2> /dev/null continue fi translatedText="$(trans -b -- "$newText")" - echo "${newText})==:[${translatedText}" >> "$dictionaryFile" - sort -uo "$dictionaryFile" "$dictionaryFile" + if [[ "${newText}" != "${translatedText}" ]]; then + echo "${newText})==:[${translatedText}" >> "$dictionaryFile" + fi spd-say "$translatedText" - oldText="$newText" + echo "" | xclip -d "${DISPLAY:-:0}" -selection clipboard 2> /dev/null done