#!/bin/sh sock="$XDG_RUNTIME_DIR/predictor.sock" lw="$XDG_RUNTIME_DIR/pred.lastword" complete="$XDG_RUNTIME_DIR/pred.complete.bool" words=~/.local/share/sxmo/words.txt twow=~/.local/share/sxmo/count_2w.txt keymap=~/.local/share/sxmo/keyboard.map.tsv rm -f "$sock" "$lw" "$complete" mkfifo "$sock" saveWord(){ while read -r word; do printf "$word" > "$lw" echo "$word" end="$(printf "$word."|wc -c)" rm -f "$complete" grep -m 5 "^$word." "$words" | cut -b$end-99 |tr '\n' '\t' |sed 's/\t$/\n/g' > "$sock" done } typeSomehow(){ while read -r word; do if test -e "$complete"; then test -n "${word:1}" && wtype -- "${word:1}" else wtype -- "$word" fi done } cat 0<> "$sock"|suggpicker 2>/dev/null|saveWord | typeSomehow & while read -r swipe; do if test -n "${swipe:1}"; then touch "$complete" # TODO: change words echo "$swipe" | swipeGuess "$words" 5 >> "$sock" else if test "$swipe" = ""; then if test -e "$lw"; then rm -f "$complete" word="$(cat "$lw")" grep -i -m 5 "^$word " "$twow" |awk '(1){printf $2; i++}(i<5){printf "\t"}END{print ""}' >> "$sock" rm -f "$lw" fi elif test "$swipe" = "$(echo -e "\x08")"; then rm -f "$lw" else printf "$swipe" >> "$lw" fi fi done killall suggpicker