#!/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