shtools/zosu/zosu-install
2020-10-26 11:25:36 +01:00

135 lines
2.6 KiB
Bash
Executable file

#!/bin/sh
[ -z "$OSUDIR" ] && OSUDIR='osu'
[ -z "$WINEDIR" ] && WINEDIR='$(pwd)/.wine'
export WINEARCH=win32
export WINEPREFIX=$(echo "echo $WINEDIR" | sh)
pacman_packages()
{
sudo pacman -S --needed --noconfirm lib32-alsa-lib lib32-libpulse lib32-gnutls lib32-libxcomposite
}
echo_red() {
printf "\033[1;31m%s\033[0m\n" "$*"
}
echo_blue() {
printf "\033[1;34m%s\033[0m\n" "$*"
}
echo_yellow() {
printf "\033[1;33m%s\033[0m\n" "$*"
}
echo_white() {
printf "\033[1;37m%s\033[0m\n" "$*"
}
_done() {
printf "\033[1;32mDone\033[0m\n\n"
}
abort()
{
echo_red "ERROR: ABORTING"
exit $1
}
if [ ! -n "$(command -v wine)" ]
then
echo_red "wine not installed"
exit
fi
if [ ! -n "$(command -v winetricks)" ]
then
echo_yellow "winetricks not installed"
read -p "Manually install winetricks? [Y/n]: " yn
case $yn in
[Nn]* )
echo_red "Aborting"
exit
;;
* )
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
chmod +x winetricks
sudo mv -v winetricks /usr/local/bin
_done
;;
esac
fi
if [ -n "$(command -v pacman)" ]
then
pacman_packages
fi
echo_white "Wine environment will be setup. This can take a very long time and may fail"
read -p "Proceed? [Y/n]: " yn
case $yn in
[Nn]*) echo_red "Aborting" ; exit 1 ;;
*) ;;
esac
# The big one
winetricks -q dotnet472 cjkfonts gdiplus > /dev/null || abort $?
_done
# sound buffers
echo_white "Optimizing sound buffer"
cat > dsound.reg << "EOF"
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Wine\DirectSound]
"HelBuflen"="512"
"SndQueueMax"="3"
EOF
wine regedit dsound.reg > /dev/null 2>&1 || abort $?
rm dsound.reg
_done
# ALSA audio
read -p "Experimental audio lag lowering? [Y/n]: " yn
case $yn in
[Nn]* ) ;;
*)
winetricks sound=alsa
echo_yellow "If you encounter audio distortion, run 'zosu sound pulse' to revert"
_done
;;
esac
# install osu
read -p "Insall fresh osu? [Y/n]: " yn
case $yn in
[Nn]*) echo_blue "Provide a link '$OSUDIR' to the desired osu instance" ;;
*)
wget https://m1.ppy.sh/r/osu\!install.exe
echo_white "Starting osu installer. Don't change the install directory"
wine osu\!install.exe > /dev/null 2>&1
sleep 5
ln -sf $WINEPREFIX/drive_c/users/$(whoami)/Local\ Settings/Application\ Data/osu\! $OSUDIR
rm osu\!install.exe
_done
;;
esac
echo_white "Creating zosu.conf"
cat > zosu.conf << "EOF"
OSUPATH=$OSUDIR
export WINEPREFIX=$WINEDIR
EOF
_done
echo_white "Creating osu.sh"
cat > osu.sh << "EOF"
#!/bin/sh
DIR=$(dirname "\$0")
cd "$DIR"
. "$(pwd)/zosu.conf"
export vblank_mode=0
wine "$OSUDIR/osu!.exe" $@
EOF
chmod +x osu.sh
_done