Merge branch 'testing' introduces game specific wine versions. Breaks

Mac compatibility. Please see the wiki for an alternative option.
This commit is contained in:
stormdragon2976 2023-03-02 00:58:18 -05:00
commit 43005a75b6
5 changed files with 263 additions and 43 deletions

View File

@ -45,6 +45,13 @@ EOF
export DIALOGOPTS='--no-lines --visit-items'
# Alerts, for when user needs to read something.
alert() {
play -qnV0 synth 3 pluck D3 pluck A3 pluck D4 pluck F4 pluck A4 delay 0 .1 .2 .3 .4 remix - chorus 0.9 0.9 38 0.75 0.3 0.5 -t
echo
read -rp "Press enter to continue." continue
}
# Check for latest news
check_news() {
trap return INT
@ -284,7 +291,7 @@ download() {
fi
# Skip if the item is in cache.
test -e "${cache}/${dest}" && continue
if ! curl -L4 --output "${cache}/${dest}" "${i}" ; then
if ! curl -L4 -C - --retry 10 --output "${cache}/${dest}" "${i}" ; then
echo "Could not download \"$i\"..."
exit 1
fi
@ -305,7 +312,9 @@ get_bottle() {
"puzzle-divided"*) ;&
"revelation"*) ;&
"swamp"*) ;&
"triple -triad"*) export WINEPREFIX="${HOME}/.local/wine/aprone" ;;
"triple -triad"*)
install_wine "7.7" "32"
export WINEPREFIX="${HOME}/.local/wine/aprone" ;;
"bg-"*) export WINEPREFIX="${HOME}/.local/wine/bg";;
# ESP Pinball games
"esp-pinball-classic"*) export WINEPREFIX="${HOME}/.local/wine/esp-pinball";;
@ -346,6 +355,16 @@ get_bottle() {
"challenge-of-the-horse"*) export WINEPREFIX="${HOME}/.local/wine/tunmi13";;
*) export WINEPREFIX="${HOME}/.local/wine/${game%|*}";;
esac
# Wine version for bottles
if [[ "$game" =~ entombed ]]; then
install_wine "6.18" "32"
fi
if [[ "$game" =~ rs-games ]]; then
install_wine "7.0" "32"
fi
if [[ "$game" =~ shadow-line ]]; then
install_wine "7.7" "32"
fi
}
get_installer() {
@ -418,7 +437,7 @@ echo "Loading documentation, please wait..."
local gameDoc="$(find "$gamePath" -type f -iname 'user_manual.html' -or -iname 'user_manual.htm' | head -1)"
# Game name specific docs, add the name to the for loop.
if [[ -z "$gameDoc" ]]; then
for i in "troopanum.txt" ; do
for i in "troopanum.txt" "superdeekout.txt" ; do
gameDoc="$(find "$gamePath" -type f -iname "$i" -or -iname 'manual.htm' | head -1)"
done
fi
@ -457,6 +476,33 @@ echo "Loading documentation, please wait..."
exit 0
}
install_wine() {
# Requires wine version, e.g. 7.7 and architecture, 32|64
if [[ $# -ne 2 ]]; then
exit 1
fi
# Figure out wineInstallationPath
wineInstallationPath="${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/wine_$2/$1"
export wine="${wineInstallationPath}/bin/wine"
# If the path exists, wine should already be installed.
# Just make sure we didn't wind up with a empty directory for some reason
rmdir "${wineInstallationPath}" 2> /dev/null
if [[ -d "${wineInstallationPath}" ]]; then
return
fi
mkdir -p "${wineInstallationPath}" 2> /dev/null
# This probably does not need to be cached, so download to tmp.
installationFile="$(mktemp)"
local v=$2
v="${v/32/x86}"
v="${v/64/x64}" # Probably wrong, so just a place holder.
# If this goes wrong, bail out
set -e
{ curl -L --output "${installationFile}" "https://www.playonlinux.com/wine/binaries/phoenicis/upstream-linux-x86/PlayOnLinux-wine-${1}-upstream-linux-${v}.tar.gz"
tar xf "${installationFile}" -C "${wineInstallationPath}"; } | dialog --progressbox "Installing $2 bit Wine version $1." -1 -1
set +e
}
winetricks() {
# Report used packages to the winetricks maintainer so he knows they are being used.
if ! [[ -e "${XDG_CACHE_HOME:-$HOME/.cache}/winetricks/track_usage" ]]; then
@ -502,14 +548,19 @@ install_rhvoice() {
download "${RHVoice[${voiceName}]}"
winetricks -q win8
echo "Installing RHVoice ${voiceName^}..."
wine "${cache}/${voiceFile}" &
${wine} "${cache}/${voiceFile}" &
sleep 20
wineserver -k
${wine}server -k
}
install_wine_bottle() {
# 32 bit installations work best and are the default here, if you need to override it, do it in the game specific installation steps.
export WINEARCH="${WINEARCH:-win32}"
# Figure out if we are using a specific version of wine
export wine="${wine:-$(command -v wine)}"
# Set the WINE and WINESERVER environmental variables so winetricks will use the right installation.
export WINE="${wine}"
export WINESERVER="${wine}server"
if [[ -z "$bottle" ]]; then
local bottle="${game,,}"
bottle="${bottle//[[:space:]]/-}"
@ -532,9 +583,11 @@ install_wine_bottle() {
geckoPath="${cache}/wine_gecko-2.40-x86.msi"
fi
# This is in a brace list to pipe through dialog.
{ DISPLAY="" wineboot -u
wine msiexec /i z:"$monoPath" /quiet
wine msiexec /i z:"$geckoPath" /quiet
{ echo -n "Using "
${wine} --version
DISPLAY="" ${wine}boot -u
${wine} msiexec /i z:"$monoPath" /quiet
${wine} msiexec /i z:"$geckoPath" /quiet
if [[ "${*}" =~ (speechsdk|sapi) ]]; then
install_rhvoice
fi
@ -546,11 +599,16 @@ install_wine_bottle() {
chmod +x "${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd"
fi
winetricks -q isolate_home $@ ${winVer:-winxp} ${winetricksSettings}; } | dialog --progressbox "Installing wine bottle, please wait..." -1 -1
# make it easy for game scripts to know which version of wine to use.
echo "WINE=\"${WINE}\"" > "$HOME/.local/wine/${bottle}/agm.conf"
echo "WINESERVER=\"${WINESERVER}\"" >> "$HOME/.local/wine/${bottle}/agm.conf"
}
# Install games
game_installer() {
export LANG="en_US.UTF-8"
# Try to deal with systems in other languages
mapfile -t installedGames < <(sed '/^$/d' "${configFile}" 2> /dev/null | cut -d '|' -f3)
# Create the menu of installed games
declare -a menuList
@ -714,14 +772,17 @@ game_launcher() {
exit 0
fi
get_bottle "$game"
# make sure wine is actually set to something
export wine="${wine:-wine}"
echo -n "launching "
${wine} --version
local winePath="${game#*|}"
winePath="${winePath%\\*.exe}"
local wineExec="${game#*|}"
wineExec="${wineExec%|*}"
wineExec="${wineExec##*\\}"
# kill any previous existing wineservers for this prefix in case they didn't shut down properly.
wineserver -k
# launch the game
${wine}server -k
# launch the game
if command -v qjoypad &> /dev/null ; then
mkdir -p ~/.qjoypad3
@ -752,16 +813,16 @@ game_launcher() {
if [[ "$game" =~ light-battles ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ "$game" =~ mist-world ]]; then
"${0%/*}/speech/speak_window_title.sh" mw.exe &
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ "$game" =~ ^bokurano-daibouken-2\| ]]; then
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken2 &
fi
if [[ "$game" =~ ^bokurano-daibouken\| ]]; then
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken &
fi
if [[ "$game" =~ shadow-line ]]; then
find "${WINEPREFIX}/drive_c/" -type f -name 'nvdaControllerClient.dll' -exec rm -v "{}" \;
"${0%/*}/speech/clipboard_translator.sh" play_sr.exe shadow-line &
fi
if [[ "$game" =~ bokurano-daibouken-3 ]]; then
dictPath="$(winepath "${winePath}")"
if [[ -r "${cache}/bk3-dict.dat" ]] && [[ ! -d "${dictPath}/dict" ]]; then
@ -790,6 +851,13 @@ game_launcher() {
if [[ "$game" =~ sequence-storm ]]; then
"${0%/*}/speech/clipboard_reader.sh" SequenceStorm &
fi
if [[ "$game" =~ shadow-line ]]; then
find "${WINEPREFIX}/drive_c/" -type f -name 'nvdaControllerClient.dll' -exec rm -v "{}" \;
"${0%/*}/speech/clipboard_translator.sh" play_sr.exe shadow-line &
fi
if [[ "$game" =~ sketchbook ]]; then
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
fi
if [[ "$game" =~ audiodisc ]]; then
wine "$winePath\\$wineExec"
exit 0
@ -798,9 +866,9 @@ game_launcher() {
wine "$winePath\\$wineExec"
exit 0
fi
if [[ "$game" =~ rs-games ]] || [[ "$game" =~ screaming-strike-2 ]]; then
if [[ "$game" =~ screaming-strike-2 ]]; then
pushd "$(winepath "$winePath")"
wine "$wineExec"
${wine} "$wineExec"
popd
exit 0
fi
@ -818,10 +886,10 @@ game_launcher() {
fi
if [[ -d "${WINEPREFIX}/drive_c/windows/syswow64" ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
wine64 start /realtime /d "${winePath}" "$wineExec"
else
wine start /d "${winePath}" "$wineExec" /realtime
# switch to wine64 for 64 bit prefix.
[[ "${wine}" == "wine" ]] && export wine="wine64"
fi
${wine:-wine} start /d "${winePath}" "$wineExec" /realtime
fi
exit 0
}
@ -889,6 +957,7 @@ export BOX86_NOBANNER=1
unset noCache
# Manual installation is not default, make sure it's unset
unset manualInstall
unset version
# The list of games available for installation.
@ -1013,6 +1082,7 @@ gameList=(
"Manamon 2"
#"Marina Break"
#"Minecraft"
"Mist World"
"Monkey Business"
"MudSplat French"
"MudSplat English"
@ -1045,19 +1115,21 @@ gameList=(
"Sequence Storm"
#"Shades of Doom 1.2"
"Shades of Doom"
#"Shadow Line"
"Shadow Line"
"Shooter"
"Silver Dollar"
"Slender Lost Vision"
"Sonic the Hedgehog"
"Sonic Zoom"
#"Space Defender"
"Super Deekout"
"Super Dogs Bone Hunt"
"Super Egg Hunt"
"Super Liam"
"Super Mario Bros"
"Survive the Wild"
"Swamp"
"Tactical Battle"
"Technoshock"
"Ten Pin Alley"
"The Blind Swordsman"
@ -1207,6 +1279,7 @@ case "${game}" in
add_launcher "c:\Program Files\AudioQuake\AudioQuake.exe"
echo
echo "After you launch the game, press tab then enter and it should begin speaking."
alert
;;
"Battle of the Hunter")
export bottle="tunmi13"
@ -1911,23 +1984,25 @@ case "${game}" in
add_launcher "c:\Program Files\Endless Runner\runner.exe"
;;
"Entombed")
export version="6.18"
install_wine "$version" "32"
export winVer="win7"
install_wine_bottle speechsdk msvcrt40 gdiplus ie7 wmp11 mf
# Ok, more dotnet.
LC_ALL=C DISPLAY="" winetricks -q dotnet40 xna40
wineserver -k # Sigh.
${wine}server -k # Sigh.
download "http://blind-games.com/newentombed/EntombedSetup.exe" "https://download.microsoft.com/download/E/C/1/EC1B2340-67A0-4B87-85F0-74D987A27160/SSCERuntime-ENU.exe" "https://stormgames.wolfe.casa/downloads/Entombed.exe.config" "https://stormgames.wolfe.casa/downloads/mfplat.dll"
mkdir -p "${WINEPREFIX}/drive_c/temp"
pushd "${WINEPREFIX}/drive_c/temp"
7z x "${cache}/SSCERuntime-ENU.exe"
wine msiexec /i "${WINEPREFIX}/drive_c/temp/SSCERuntime_x86-ENU.msi" /q
${wine} msiexec /i "${WINEPREFIX}/drive_c/temp/SSCERuntime_x86-ENU.msi" /q
rm *
popd
pushd "${WINEPREFIX}/drive_c/Program Files/Microsoft SQL Server Compact Edition/v3.5"
wine regsvr32 sqlceoledb35.dll
wine regsvr32 sqlceca35.dll
${wine} regsvr32 sqlceoledb35.dll
${wine} regsvr32 sqlceca35.dll
popd
wine "${cache}/EntombedSetup.exe" /silent
${wine} "${cache}/EntombedSetup.exe" /silent
pushd "${WINEPREFIX}/drive_c/Program Files/Entombed"
cp ../Microsoft\ SQL\ Server\ Compact\ Edition/v3.5/Private/System.Data.SqlServerCe.Entity.dll ../Microsoft\ SQL\ Server\ Compact\ Edition/v3.5/Private/System.Data.SqlServerCe.dll .
cp ../Microsoft\ SQL\ Server\ Compact\ Edition/v3.5/sql* .
@ -2262,6 +2337,24 @@ EOF
done
# And of course, add the launcher.
;;
"Mist World")
export winVer="win7"
get_installer "Mist World_Setup.exe" "https://drive.google.com/file/d/12YeUqorkkMT46ZSR5pcfWxSY8DHOLxZ-/view?usp=share_link"
install_wine_bottle
download "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd32.dll"
7z x -o"$WINEPREFIX/drive_c/Program Files/Mist World" "$cache/Mist World_Setup.exe"
sed -i 's/1024m/768m/g' "$WINEPREFIX/drive_c/Program Files/Mist World/mw.exe.vmoptions"
cp "$WINEPREFIX/drive_c/Program Files/Mist World/"{mw.exe.vmoptions,update.exe.vmoptions}
find "$WINEPREFIX/drive_c/Program Files/Mist World" -iname "nvdaControllerClient32.dll" -exec cp "$cache/nvda2speechd32.dll" "{}" \;
add_launcher 'c:\Program Files\Mist World\mw.exe'
echo
echo "If you do not have an account, There is a script in game-scripts to help."
echo "Launch the game, press enter on create account, then drop into a console so the game window does not lose focus."
echo "Change to the game-scripts directory and run"
echo "./mist_world_account_creator.sh and follow the prompts."
echo "To login, type your email address, press tab, and type your password. Press enter to confirm."
alert
;;
"Monkey Business")
export winVer="win7"
install_wine_bottle vb6run dx8vb speechsdk quartz
@ -2446,10 +2539,12 @@ EOF
add_launcher "c:\Program Files\RTR Offline\rtr.exe"
;;
"RS Games")
export version="7.0"
install_wine "$version" "32"
export winVer="win7"
install_wine_bottle speechsdk
download "http://rsgames.org/rsdownloads/rsgclient/rsgames-client-setup-2.01.exe" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
wine "${cache}/rsgames-client-setup-2.01.exe" /silent
${wine} "${cache}/rsgames-client-setup-2.01.exe" /silent
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
add_launcher "c:\Program Files\RS Games Client\rsg.exe"
;;
@ -2492,10 +2587,12 @@ EOF
"Sketchbook")
export winVer="win7"
install_wine_bottle speechsdk
download "http://games.ims-productions.com/SBYW/SBYW.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
unzip -d "$WINEPREFIX/drive_c/Program Files/scrolling battles" "${cache}/SBYW.zip"
download "http://sbyw.games/SBYW/SBYW.zip" "http://sbyw.games/SBYW/sounds.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
mv -v "${cache}/sounds.zip" "${cache}/SBYW-sounds.zip"
unzip -d "$WINEPREFIX/drive_c/Program Files/sketchbook" "${cache}/SBYW.zip"
unzip -d "$WINEPREFIX/drive_c/Program Files/sketchbook" "${cache}/SBYW-sounds.zip"
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
add_launcher "c:\Program Files\scrolling battles\SBYW.exe"
add_launcher "c:\Program Files\sketchbook\SBYW.exe"
;;
"Sequence Storm")
get_installer "sequence-storm-win64.zip" "https://special-magic-games-llc.itch.io/sequence-storm"
@ -2521,18 +2618,21 @@ EOF
add_launcher "c:\Program Files\Shades of Doom 2.0\sod.exe"
;;
"Shadow Line")
export winVer="win8" speechsdk
export version="7.7"
install_wine "$version" "32"
export winVer="win8"
install_wine_bottle
download "https://www.mm-galabo.com/sr/Download_files_srfv/shadowrine_fullvoice3.171.exe"
wine "${cache}/shadowrine_fullvoice3.171.exe" /sp-
$wine "${cache}/shadowrine_fullvoice3.171.exe" /sp- &
xdotool sleep 30 key --clearmodifiers --delay=500 Return
xdotool key --clearmodifiers --delay=500 Return
xdotool key --clearmodifiers --delay=500 Return
xdotool key --clearmodifiers --delay=500 Return
xdotool sleep 300 key --clearmodifiers --delay=500 Down
echo "Running installer, this will take approximately 3 minutes..."
xdotool sleep 180 key --clearmodifiers --delay=500 Down
xdotool key --clearmodifiers --delay=500 space
xdotool key --clearmodifiers --delay=500 alt+i
wineserver -w
xdotool key --clearmodifiers --delay=500 alt+f
${wine}server -w
add_launcher "c:\Program Files\GalaxyLaboratory\ShadowRine_FullVoice\play_sr.exe"
;;
"Silver Dollar")
@ -2584,6 +2684,41 @@ EOF
unzip -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/space_defender.zip"
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvdaControllerClient64.dll" "{}" \;
add_launcher "c:\Program Files\space_defender\sdefender.exe"
;;
"Super Deekout")
install_wine_bottle vb6run dx8vb
download "http://www.danielzingaro.com/superdeekout_setup.exe" "http://www.danielzingaro.com/sd_full.exe"
${wine} "${cache}/superdeekout_setup.exe" &
xdotool sleep 15 key --delay 100 y 2> /dev/null
xdotool sleep 3 key --delay 250 alt+n 2> /dev/null
xdotool key --delay 250 alt+a 2> /dev/null
xdotool key --delay 250 space 2> /dev/null
xdotool key --delay 250 alt+n 2> /dev/null
xdotool key --delay 250 alt+n 2> /dev/null
xdotool key --delay 250 alt+n 2> /dev/null
xdotool key --delay 250 alt+i 2> /dev/null
xdotool sleep 15 key --delay 250 alt+f 2> /dev/null
xdotool sleep 3 key --delay 250 n 2> /dev/null
${wine}server -k
7z x -y -o"$WINEPREFIX/drive_c/Program Files/Super Deekout" "${cache}/sd_full.exe"
echo "Super Deekout needs some information before it will run:"
alert
read -erp "Please enter your first name: " fname
read -erp "Please enter your last name: " lname
read -erp "Please enter your email address: " email
${wine} "c:\Program Files\Super Deekout\config.exe" &
xdotool sleep 5 key --delay 100 Return 2> /dev/null
xdotool sleep 3 type --clearmodifiers --delay 100 "${fname}"
xdotool key --clearmodifiers --delay 100 Tab 2> /dev/null
xdotool sleep 1 type --clearmodifiers --delay 100 "${lname}"
xdotool key --clearmodifiers --delay 100 Tab 2> /dev/null
xdotool sleep 1 type --clearmodifiers --delay 100 "${email}"
xdotool key --clearmodifiers --delay 100 Tab 2> /dev/null
xdotool sleep 15 key --delay 100 u 2> /dev/null
xdotool key --clearmodifiers --delay 100 Tab 2> /dev/null
xdotool sleep 1 key --delay 250 Return 2> /dev/null
${wine}server -k
add_launcher "c:\Program Files\Super Deekout\super.exe"
;;
"Super Dogs Bone Hunt")
install_wine_bottle vb6run dx8vb speechsdk
@ -2621,6 +2756,8 @@ EOF
add_launcher "c:\Program Files\Survive the Wild\stw.exe"
;;
"Swamp")
export version="7.7"
install_wine "${version}" "32"
export bottle="aprone"
export winVer="win7"
export winetricksSettings="vd=1024x768"
@ -2633,14 +2770,22 @@ EOF
if curl -L --output "${cache}/SwampPatch.zip" "https://www.kaldobsky.com/audiogames/SwampPatch.zip" ; then
unzip -o -d "$WINEPREFIX/drive_c/Program Files/swamp" "${cache}/SwampPatch.zip"
fi
wine 'c:\Program Files\swamp\checkup.exe' /verysilent
#wine cmd.exe /c 'cd /d c:\Program Files\swamp && Windows32bit.bat'
$wine 'c:\Program Files\swamp\checkup.exe' /verysilent
#$wine cmd.exe /c 'cd /d c:\Program Files\swamp && Windows32bit.bat'
# Delete music if requested.
if [[ $deleteMusic -eq 0 ]]; then
rm -frv "$WINEPREFIX/drive_c/Program Files/swamp/sounds/Music/"
fi
add_launcher "c:\Program Files\swamp\Swamp.exe"
;;
"Tactical Battle")
install_wine_bottle speechsdk
LC_ALL=C DISPLAY="" winetricks -q dotnet462
${wine}server -k
download "https://blindgamers.com/downloads/Tactical%20Battle%20Dev.zip"
unzip -d "$WINEPREFIX/drive_c/Program Files/Tactical Battle" "${cache}/Tactical Battle Dev.zip"
add_launcher "c:\Program Files\Tactical Battle\Tactical Battle.exe"
;;
"Technoshock")
install_wine_bottle
download "http://tiflocomp.ru/download/games/technoshock_140b_en.zip" "http://tiflocomp.ru/download/games/technoshock140b_en_update.zip"
@ -2833,6 +2978,7 @@ export norh=false # Must install a voice, and rhvoice works easily with 64 bit.
echo "To bypass these dialogs, press alt+o, then press enter until speech starts."
echo "To be sure that each new dialog has had time to complete, wait a second between each press of enter."
echo "In each subsequent launch, you will need to hit enter a couple times before it starts speaking."
alert
;;
"Warsim")
get_installer "Warsim Full Game.zip" "https://huw2k8.itch.io/warsim"

View File

@ -0,0 +1,61 @@
#!/bin/bash
export DISPLAY="${DISPLAY:-:0}"
read -rp "Select create account from the menu, press enter to continue." continue
echo
# Read email address
echo "Enter email address:"
read -r email
# Validate email address format
if [[ "$email" =~ ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ ]]; then
# Type email address
xdotool type --delay=75 "$email"
# Press tab
xdotool sleep 0.5 key --delay=75 Tab
# Press enter
xdotool sleep 0.5 key --delay=75 Return
else
echo "Invalid email format. Exiting."
exit 1
fi
# Press tab
#xdotool sleep 0.5 key --delay=75 Tab
# Press enter
#xdotool sleep 0.5 key --delay=75 Return
echo "Please check your email for the verification code."
# Read verification code
echo "Enter verification code:"
read -r code
# Type verification code
xdotool type --delay=1000 $code
# press tab
xdotool sleep 0.5 key --delay=75 Tab
# Press enter
xdotool sleep 0.5 key --delay=75 Return
# Read password
echo "Enter password between 6 and 16 characters, 1 uppercase letter 1 number required:"
read -r password
# Type password
xdotool type --delay=500 "$password"
# Press tab
xdotool sleep 0.5 key --delay=75 Tab
# Type password again
xdotool sleep 0.5 type --delay=500 "$password"
# Press tab
xdotool sleep 0.5 key --delay=75 Tab
# Press enter
xdotool sleep 0.5 key --delay=75 Return
echo "Account created!"
exit 0

View File

@ -3,7 +3,8 @@
# Modified from the script at:
# https://gist.github.com/fdietze/6768a0970d7d732b7fbd7930ccceee2a
set -Eeuo pipefail # https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/#:~:text=set%20%2Du,is%20often%20highly%20desirable%20behavior.
# The next line has been commented because if there's nothing in clipboard the script breaks.
# set -Eeuo pipefail # https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/#:~:text=set%20%2Du,is%20often%20highly%20desirable%20behavior.
shopt -s expand_aliases

View File

@ -77,6 +77,14 @@ if [[ -z "${WINEPREFIX}" ]]; then
exit 0
fi
# Get wine version if available
if [[ -r "${WINEPREFIX}/agm.conf" ]]; then
source "${WINEPREFIX}/agm.conf"
export WINE
export WINESERVER
fi
wine="${WINE:-$(command -v wine)}"
msgbox() {
# Returns: None
# Shows the provided message on the screen with an ok button.
@ -124,7 +132,7 @@ menulist() {
restore_voice() {
if [[ $doRestore -eq 0 ]]; then
wineserver -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
${wine}server -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
$sed -i -E -e 's/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Token(Enum|)s\\\\[^"]+"/"DefaultTokenId"="'"${oldVoice//\\/\\\\}"'"/g' "${WINEPREFIX}/user.reg"
fi
}
@ -142,7 +150,7 @@ set_voice() {
RHVoiceName="${RHVoiceName##*/}"
fullVoice="${voiceListFullName[$counter]}"
fullVoice="${fullVoice/RHVoice/RHVoice\\\\${RHVoiceName}}"
wineserver -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
${wine}server -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
# Remove any existing rate change for voices
$sed -i '/"DefaultTTSRate"=dword:/d' "${WINEPREFIX}/user.reg"
$sed -i -E -e 's/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Token(Enum|)s\\\\[^"]+"/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\'"${fullVoice//\\/\\\\}"'"\n"DefaultTTSRate"=dword:0000000'${2:-7}'/g' "${WINEPREFIX}/user.reg"
@ -161,14 +169,14 @@ test_voice() {
RHVoiceName="${RHVoiceName##*/}"
fullVoice="${voiceListFullName[$counter]}"
fullVoice="${fullVoice/RHVoice/RHVoice\\\\${RHVoiceName}}"
wineserver -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
${wine}server -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
$sed -i -E -e 's/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Token(Enum|)s\\\\[^"]+"/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\'"${fullVoice//\\/\\\\}"'"/g' "${WINEPREFIX}/user.reg"
cat << "EOF" > "${bottle}/drive_c/windows/temp/speak.vbs"
dim speechobject
set speechobject=createobject("sapi.spvoice")
speechobject.speak "This is a test of your chosen voice. It contains multiple sentences and punctuation, and is designed to give a full representation of this voices qualities."
EOF
wine cscript "c:\windows\temp\speak.vbs"
${wine} cscript "c:\windows\temp\speak.vbs"
}
# Handle voice restore, but only if voice changed
@ -181,7 +189,7 @@ dim speechobject
set speechobject=createobject("sapi.spvoice")
speechobject.speak ""
EOF
wine cscript "c:\windows\temp\speak.vbs"
${wine} cscript "c:\windows\temp\speak.vbs"
# Create an array of available voices.
ifs="$IFS"

View File

@ -13,12 +13,12 @@ is_function() {
configure_arch() {
packageList=(
cabextract
curl
dialog
dos2unix
gawk
unzip
w3m
wget
wine
winetricks
wine_gecko
@ -34,6 +34,8 @@ configure_arch() {
alsa-lib
mesa
openal
sox
sqlite3
translate-shell
xz
gst-plugins-bad
@ -41,6 +43,7 @@ configure_arch() {
gst-plugins-ugly
gst-libav
p7zip
xdg-utils
)
if [[ "$(uname -m)" == "x86_64" ]]; then
# Enable multilib
@ -72,6 +75,7 @@ configure_arch() {
configure_debian() {
packageList=(
curl
dialog
gawk
gstreamer1.0-plugins-bad:i386