Oye, el post también está en español!

This post is partially based on Katoumegumi’s guide on the Arch Wiki.

Backstory

After giving up on Windows crashes, I decided to go back to Linux. In my experience it has been more stable than Microsoft’s OS, only rendering my machine unbootable once (the linux kernel got nuked for some reason when updating).

Installation

Installing Wine

We first need to install wine and winetricks, to do so run:

sudo pacman -S wine
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
chmod +x winetricks
sudo mv ./winetricks /usr/local/bin/winetricks

Preparing wineprefix

We now need to install dependencies like fonts or dotnet to make osu! run correctly

WINEARCH=win32 WINEPREFIX=~/.wineosu winetricks dotnet40 dotnet45 cjkfonts gdiplus

(update 12/19/2023): added dotnet45 to make it work with gosumemory

Installing osu!

Skipping this part, but basically download the installer and run it.
I already have my own 3-year-old installation with all my everything on it, so I’m bind-mounting it.

Create a directory:

mkdir ~/.wineosu/osu

And then I added the following fstab line:

/mnt/HDD/osu! /home/srizan/.wineosu/osu none defaults,bind 0 0

Trying to open it up

Running WINEARCH=win32 WINEPREFIX=~/.wineosu wine ~/.wineosu/osu/osu\!.exe twice leads us in the osu! installer with no network connection found.

This is a bit easy to fix, as Wine itself yields this error if you scroll up a bit:

01b0:err:winediag:process_attach Failed to load libgnutls, secure connections will not be available.

Looking the package up in the Arch Linux repos, a package called lib32-gnutls shows up which looks to be exactly what we want.

After installing it, the SSL connection worked and the game is going to sta- too bad!

You thought that was gonna be IT!

It wants a GL context, which we don’t have apparently, so installing lib32-mesa fixes it. Easy!

Now, the window is… dark? WHEN ARE WE DONE?
Welp, when going to almost the top of the file, we can see this:

0024:err:winediag:create_gl_drawable XComposite is not available, using GLXPixmap hack.

“GLXPixmap hack”? The game is, according to peppy, held with duct tape, so no hacks are really going to work.

Here we go, installing libxcomposite for lib32 should fix it.

It opens up… but with no audio. Browsing through the Arch forums I found this post which pointed me to installing lib32-alsa-plugins lib32-libpulse lib32-openal.

And we’re finally done! I can go to the menu screen, and play some maps. (Make sure you set the offset to at least -25ms. The offset wizard might help you when setting the optimal value, though!)

Setting up the start script

edit a file in ~/.wineosu/osu/start.sh with the following contents:

#!/usr/bin/env bash
 
# props to Katoumegumi for the original script, this is exactly the same one and it works perfectly.
#export PATH="$HOME/.wineosu/osuwine/bin:$PATH" #Use custom WINE version to run osu!
export WINEARCH=win32
export WINEPREFIX="$HOME/.wineosu"
#export WINEFSYNC=1
 
# The following lines disable vsync, which is useful on Wayland to fix input latency.
export vblank_mode=0 #For AMD, Intel and others
export __GL_SYNC_TO_VBLANK=0 #For NVIDIA proprietary and open source >=500
 
#start osu!
wine osu\!.exe

Setting up the freedesktop entry

Download the osu! logo:

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

and finally edit a new file in the path ~/.local/share/applications/osu.desktop

[Desktop Entry]
Type=Application
Comment=A free-to-play rhythm game inspired in Osu! Tataekae! Ouendan!
Icon=/home/<username>/.wineosu/osu/icon.png
Exec=/home/<username>/.wineosu/osu/start.sh
Path=/home/<username>/.wineosu/osu
GenericName=osu!
Name=osu!
StartupNotify=true

That’s it

Way harder than I thought. If you want the command with all dependencies, type in:

sudo pacman -S lib32-gnutls lib32-mesa lib32-alsa-plugins lib32-libpulse lib32-openal