Skip to content

Instantly share code, notes, and snippets.

@gazecube
Forked from EXtremeExploit/osuGuide.md
Created March 9, 2023 06:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gazecube/d5a26d58b69d38a2eb82d0295b262268 to your computer and use it in GitHub Desktop.
Save gazecube/d5a26d58b69d38a2eb82d0295b262268 to your computer and use it in GitHub Desktop.
Installation guide to installing osu! on Arch Linux

osu! Arch Linux guide install

Installing wine

  • Install wine from the official repositories, wine 7.12 is stable enough to run osu!
$ sudo pacman -S wine

Installing wine dependecies

$ WINEPREFIX="/home/(your username here)/.wineosu" WINEARCH=win64 winetricks dotnet48 cjkfonts corefonts meiryo vlgothic gdiplus_winxp win2k3
  • This will create the wine prefix, install fonts and .NET to run the game
  • If it asks you to install mono and gecko, don't install them
# pacman -S --needed wine-staging giflib lib32-giflib libpng lib32-libpng libldap lib32-libldap gnutls lib32-gnutls mpg123 lib32-mpg123 openal lib32-openal v4l-utils lib32-v4l-utils libpulse lib32-libpulse libgpg-error lib32-libgpg-error alsa-plugins lib32-alsa-plugins alsa-lib lib32-alsa-lib libjpeg-turbo lib32-libjpeg-turbo sqlite lib32-sqlite libxcomposite lib32-libxcomposite libxinerama lib32-libgcrypt libgcrypt lib32-libxinerama ncurses lib32-ncurses opencl-icd-loader lib32-opencl-icd-loader libxslt lib32-libxslt libva lib32-libva gtk3 lib32-gtk3 gst-plugins-base-libs lib32-gst-plugins-base-libs vulkan-icd-loader lib32-vulkan-icd-loader
  • These are some libraries used by wine, some are to have internet connection and/or make the game even run

Installing osu!

  • Get the osu installer: wget https://m1.ppy.sh/r/osu!install.exe
  • Launching the installer in the WINEPREFIX we WINEPREFIX="/home/(your username here)/.wineosu" WINEARCH=win64 wine64 (path to osu installer)
  • Select C:/ as the install path, "osu! will install to C:/osu! in x..."
  • Now osu! will open, close it, we will make a start script

Startup script

  • create a text/shell file where you want the start script to be
#! /bin/sh
export WINEPREFIX="/home/(your username here)/.wineosu"
export WINEARCH=win64

if [[ -z "$1" ]]; then
	wine64 C:/osu\!/osu\!.exe
fi

if [[ $1 == "config" ]]; then
	winecfg
fi

if [[ $1 == "tricks" ]]; then
	winetricks
fi

if [[ $1 == "kill" ]]; then
	wineserver -k
fi
  • XDG spec doesn't support enviroment variables. Enter your username manually
  • Make the script executable: chmod +x (path to your osu script)

Usage

  • ./script Opens osu!
  • ./script "config" Opens winecfg in the osu WINEPREFIX
  • ./script "tricks" Opens winetricks in the osu WINEPREFIX
  • ./script "kill" kills everything running in the osu WINEPREFIX

File assosiations

Desktop entry

Getting the osu logo

  • wget --output-document ~/.osulogo.png https://github.com/ppy/osu-wiki/raw/master/wiki/Brand_identity_guidelines/img/usage-full-colour.png

Creating the entry

  • Create the .desktop file: touch ~/.local/share/applications/osustable.desktop
  • Paste this into the file:
[Desktop Entry]
Exec=(Path to you osu start script)
Icon=/home/(username here)/.osulogo.png
Name=osu!
  • XDG spec doesn't support enviroment variables. Enter your username and path manually
  • This is your .desktop entry, you can make a symlink to the desktop to have it there if you prefer to do so

PipeWire config (Audio server)

  • If you are using PulseAudio, uninstall and disable it, if you don't know if you are using PA, check with pactl info

Installing pipewire

  • Install pipewire: sudo pacman -S pipewire pipewire-alsa pipewire-pulse pipewire-media-session
  • Enable and start pipewire: systemctl --user enable --now pipewire.service pipewire.socket pipewire-media-session.service pipewire-pulse.service pipewire-pulse.socket

Configuring pipewire

  • Copy default config to user's config: cp -r /usr/share/pipewire/* ~/.config/pipewire/

  • Add this line pulse.min.quantum = 48/48000 # 1m in ~/.config/pipewire/pipewire-pulse.conf

    • It should end up something like this
    • image
  • The lower the value, the lower latency you get, 48 means how big the packet is, if you have problems below 1ms then set it to 1ms

  • You may want to edit other files to have the correct sample rate, this is defined in .config/pipewire/media-session.d/alsa-monitor.conf as audio.rate, make sure you edit output instead of input

No sound when opening the game

  • Edit the line that says session.suspend-timeout-seconds in media-session.d/alsa-monitor.conf, uncomment this line and change the value to 0

Tablet drivers

Installing OpenTabletDriver

  • Install opentabletdriver from the AUR
  • Enable and start OTD: systemctl --user enable --now opentabletdriver.service
  • Add this to /etc/modprobe.d/blacklist.conf to disable kernel modules so it doesn't get in the way of OTD
blacklist wacom
blacklist hid_uclogic

General recommendations

  • It is HIGLY recommended to adjust your universal offset according to your setup, checkout ThePoon's server on how to measure latency and to check what value fits your best
  • If you don't have a LOCALE set, set one, this is to allow non-english characters in beatmaps and skin paths
  • If you STILL have problems after all this, ask for help in the #osu-linux channel in ThePoon's server, they know best
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment