#!/usr/bin/env bash echo -ne '\033]0;SandsTrilogyKiller\007' echo "$(date)" term=$(jq -r '.["term"]' config.json) hotkey=$(jq -r '.["key"]' config.json) exe=$(jq -r '.["'$1'"]["exec"]' config.json) mutexName=$(jq -r '.["'$1'"]["mutexName"]' config.json) echo "Terminal: $term" echo "Activation key: $hotkey" echo "EXE path: $exe" echo "Mutex name: $mutexName" mutexPid='' exePid='' getMutexPid () { mutexPid="$(pgrep -af "$mutexName\")$" | awk '{print $1}')" } getExePid () { exePid="$(pgrep -af "POP.EXE$" | awk '{print $1}')" } createMutex () { $term -e wine 'powershell' '-NoExit' '& New-Object System.Threading.Mutex($false, "'$mutexName'")' & sleep 3s while [ -z "$mutexPid" ]; do getMutexPid done } getCreateMutex () { getMutexPid if [[ -z $(eval "echo \"\$$1\"") ]]; then echo "Mutex not detected, creating..." createMutex $1 else echo "Mutex detected" return 1 fi } getCreateMutex mutexPid echo $mutexPid getExePid while true; do read -rsn1 keycode if [[ "$hotkey" = "$keycode" ]]; then echo "$(date) activated" if [[ -n exePid ]] ; then echo "Killing $exePid" kill -9 $exePid rm "$(jq -r '.["0"]["exec"]' config.json | xargs dirname)/PrinceSM" exePid='' fi wine $exe &> /dev/null & while [ -z $exePid ]; do getExePid done echo $exePid fi done