135 lines
2.6 KiB
Bash
Executable file
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
|