Skip to content

Instantly share code, notes, and snippets.

@EXtremeExploit
Last active July 9, 2024 13:35
Show Gist options
  • Save EXtremeExploit/af3cae2178ce1af3ab5c783ec0087642 to your computer and use it in GitHub Desktop.
Save EXtremeExploit/af3cae2178ce1af3ab5c783ec0087642 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 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

if [[ $1 == "regedit" ]]; then
	regedit
fi
  • XDG spec doesn't support enviroment variables, so you have to replace the (your username here) with your actual linux user
  • 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
  • ./script "regedit" Opens up registry editor 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

Open folders using native file manager instead of wine's explorer (OPTIONAL, only recommended if you are prone to opening folders from ingame, either by Opening song folders or just clicking replay exports)

  • Create a file in ~/.local/bin called run_as_linux
  • Inside that file put:
#!/bin/bash
xdg-open "`/opt/wine-osu/bin/winepath -u "${1::-1}"`"
  • Next up you have to change some registry keys in the prefix, run your the script with the "regedit" argument
  • Go to HKEY_CLASSES_ROOT/folder/shell/open/
  • Delete all the subfolders of open
  • Create the command folder inside open. like this: image
  • If you are ok with adding .local/bin to your PATH env var
    • Add ~/.local/bin to your PATH env var.
  • If you aren't (or dont know how)
    • In the next step where you edit the (Default) key, replace run_as_linux with /home/(your username here)/.local/bin/run_as_linux
    • ^ Replace (your username here) with your actual linux user
  • Edit the (Default) key to /bin/sh run_as_linux "%1".
  • All will have to end up looking like this:
  • image
  • Or this if you didn't edit your PATH env var:
  • image
  • If you edited your PATH env var you will need to log out and log back in for it to take effect in your DE/WM (or restart in some cases)

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
@EXtremeExploit
Copy link
Author

The current VLGothic download URL is broken, this got fixed by a commit 3 days ago (Winetricks/winetricks@d83f42d) and i have no idea when a next release is going to happen

@smooll-d
Copy link

smooll-d commented Jul 2, 2024

I don't know if this is the right place to ask but I installed osu! through the AUR (I don't know if this is relevant) and the icons are missing:

missing icons

I installed all the fonts needed and they're still gone. Can anybody tell me which font I have to install to make them show up?

@EXtremeExploit
Copy link
Author

I dont maintain the AUR PKGBUILD, sorry

@smooll-d
Copy link

smooll-d commented Jul 9, 2024

Ok, so I fixed it. I reinstalled osu! with this script. The icons are back. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment