A guide to installing osu! on Linux

published on 13-VII-2021
last edited on 21-VII-2021

Yes! Yet another guide on installing osu! on Linux; This will be a little subjective as I basically explain the steps I go through myself and not necessarily a universal general guide, but at the end you'll have a well working osu! install.

In my experience, with my hardware, without fsync osu!'s frametime on Wine will be just a little worse than on Windows. fsync will bring it back up on par with Windows.

While you could definitely just install osu-wine with no additional modifications which is extremely simple (like 3 copy-pasted terminal commands) and have a decent experience (especially as a beginner to the game who won't be picky at all) I will advise on some additional set up below.

Custom Wine

default Wine? no. I advise installing a Wine TKG build made by openglfreak.

As of now this is Wine 6.12 staging with fsync, a slightly modified audio patch written by gonx (he has his own build of wine only with that audio patch) and some other stuff I think.

But before that get out of Wine's dependency hell. Just install that long list of packages in the linked article.

Download here (openglfreak's Google Drive)

Keep in mind this build isn't compiled to be generic. If your CPU is an older one it might just not work.

Now you have two options:

It is probably better to have this build installed separately and used exclusively for osu! as it has a couple limitations like only being able to simulate Windows 7.

(I know just linking a gdrive link to a binary isn't the most trustworthy thing. You can try to make a build of Wine TKG yourself if you really want to. An audio latency patch should look like this if I'm not entirely mistaken, look around) Maybe I will look into making my own build later down the line, I will update this page if I ever do.

osu-wine

osu-wine is a script that takes care of some stuff while starting osu! and a prepackaged wineprefix that will make installing osu! extremely easy.

Go git clone my fork (make sure you have git installed):

git clone https://codeberg.org/vib/osu-wine
cd osu-wine

And begin with installing it:

sudo ./install.sh
    # Read through and answer to questions when prompted
osu-wine
    # Same as above

Copy the default config file to your home folder with cp /etc/osu-wine.conf ~/.osu-wine.conf and edit .osu-wine.conf:

Uncomment (remove the "#" symbol at the start of the line) this line:

fsync=true

and if you want to you can enable Discord RPC functionality by uncommenting

rpcBridge=true

Also if you put the custom Wine build in /opt/wine-osu uncomment

PATH="/opt/wine-osu/bin:$PATH"

Audio latency tweaking (~optional)

This is someting I personally haven't been too interested in so I can't go into many details but I can tell a couple of things. First you will need to lower the limits of Pipewire so you can set SAP (Staging Audio Period) and SAD (Staging Audio Duration) without making the audio unintelligible.

Copy the default user config files for Pipewire if you don't have those there already:

mkdir -p ~/.config/pipewire && cp -rv /usr/share/pipewire/* ~/.config/pipewire/

Inside pipewire-pulse.conf edit the following:

context.modules = {
pulse.min.req = 32/48000              # 0.67ms
pulse.min.quantum = 32/48000          # 0.67ms
}

After configuring this restart pipewire and pipewire-pulse

systemctl --user restart pipewire pipewire-pulse

Inside .osu-wine.conf uncomment these:

export STAGING_AUDIO_PERIOD=50000
export STAGING_AUDIO_DURATION=100000

As it says in the config file the SAD should be always double of the SAD. You can try to lower those values up to the point where you don't have audio crackling or sounding weird yet.

Small but important things:

Problems you may encounter:

Don't be surprised when these happen

You may have these problems, you may not. I know I had them, but they are pretty harmless.


For tablet users:

Installing OpenTabletDriver:

  1. For Arch Linux install opentabletdriver from the AUR with your favourite AUR helper, for example paru -S opentabletdriver.

For other distros look up their install guide page.

  1. Disable your past tablet driver if you have one. Wacom tablets have drivers included in the kernel anyway.

    echo "blacklist wacom" | sudo tee -a /etc/modprobe.d/blacklist.conf and disable the driver for the running session sudo rmmod wacom

  2. Enable at startup and start now the opentabletdriver daemon (the service that will always run in the background and the GUI accesses)

    systemctl --user --now enable opentabletdriver

If you want to still keep the old driver around for whatever reason (preferring it for drawing?) you can just sudo rmmod wacom or use xinput to disable it temporarely and systemctl start opentabletdriver. Then when you're done systemctl stop opentabletdriver and sudo modprobe wacom or enable it back with xinput.


This should be it. Now enjoy yourself and click some circles!