From 4c440646f0a3c123228d79c59fcd2b4f30afafb1 Mon Sep 17 00:00:00 2001 From: Storm Dragon Date: Tue, 4 Oct 2022 16:42:32 -0400 Subject: [PATCH] The clipboard translator is much closer to working now. Tests with BK2 went reasonably well. --- speech/clipboard_translator.sh | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) 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