I know a lot of people have been facing issues setting up osu! on Linux. Most of the guides online are either outdated or just all over the place, so I hope to maintain a good guide here that is relatively easy to follow.
I'd like to start by saying I have only tested this on Debian-based distributions, however it should work fine on others.
If you have any problems during or after installation, please don't hesitate to contact me on Discord (tsunyoku#0066) and I will try my best to help.
To start with the osu! installation, we want to install Lutris. Lutris is the program that will manage all the wine bullshit for us.
To install on Ubuntu or other Debian-based software:
sudo add-apt-repository ppa:lutris-team/lutris
sudo apt update
sudo apt install lutris
To install on Arch-based distributions:
sudo pacman -S lutris
For other distributions, see here.
Once Lutris is installed, we need to install osu! through Lutris. Lutris will be available as a regular application so find it and open it.
Once it is open, you will see a sidebar with a heading called Sources
. Press on the Lutris
option and then type osu!
in the Search games
search bar.
You will find osu! here. Click on it and press Install
.
It'll come up with a dialog asking to select what version to install, scroll until you see a version called Windows
and then continue.
Lutris will begin installing dependencies and osu! itself. This can take anywhere between 2 and 15 minutes from my experience so just wait it out.
Once it has installed, try to play it to verify that it opens. Audio and other things may be glitchy, but we will fix that below. If it doesn't open at all or there is an error, scroll to the Known Issues
section and see if that solves your problem. If not, feel free to contact for help!
Once you have installed osu! and it can run, close it and we will begin a series of fixes/optimisations to make your experience better.
First, we want to use ThePooN's winepulse patches for audio. Run these commands in a Terminal window:
cd ~/.local/share/lutris/runners/wine/lutris-osu-2-x86_64/lib/wine && rm -rf winepulse.drv.so && wget https://blog.thepoon.fr/assets/articles/2018-06-16-osuLinuxAudioLatency/32bit/winepulse.drv.so
cd ~/.local/share/lutris/runners/wine/lutris-osu-2-x86_64/lib64/wine && rm -rf winepulse.drv.so && wget https://blog.thepoon.fr/assets/articles/2018-06-16-osuLinuxAudioLatency/64bit/winepulse.drv.so
Once we have applied the patches, we need to edit pulse's config to help with latency:
sudo mkdir -p /etc/pulse/daemon.conf.d/
echo "high-priority = yes
nice-level = -15
realtime-scheduling = yes
realtime-priority = 50
resample-method = speex-float-0
default-fragments = 2 # Minimum is 2
default-fragment-size-msec = 2 # You can set this to 1, but that will break OBS audio capture." | sudo tee -a /etc/pulse/daemon.conf.d/10-better-latency.conf
Now, we want to increase our user's priority (you will probably need to run this with sudo su
):
REMEMBER TO REPLACE USERNAME WITH YOUR USERNAME
echo "USERNAME - nice -20
USERNAME - rtprio 99" >> /etc/security/limits.conf
Next we need to do some more config editing.
Open pulse's default config like so:
sudo nano -c /etc/pulse/default.pa
Once you are in the config, look for this line: load-module module-udev-detect
(it was around line 52 for me)
Once you have found this line, add tsched=0
on the end of this line so it looks like so: load-module module-udev-detect tsched=0
. Then save and exit.
Next, we need to add a environment variable to our osu! install before restarting to finish our installation. Open up Lutris again and you should find osu! in your Games library. Right click it and press configure.
Go to the System options
tab and scroll until you find a Environment variables
table.
In the Key
box, type STAGING_AUDIO_DURATION
(case sensitive) and set the Value
to 5000.
Then press save and you should be good to go! Note that you must restart your system first. After you reboot and open osu!, make sure to set Audio compatibility mode
on, otherwise your audio will be very fucked.
This is due to some Lutris dependency stuff. We can fix it though! Open up a Terminal window and run these commands:
apt remove gamemode
wget http://ftp.us.debian.org/debian/pool/main/g/gamemode/gamemode_1.6.1-1_amd64.deb
wget http://ftp.us.debian.org/debian/pool/main/g/gamemode/gamemode-daemon_1.6.1-1_amd64.deb
wget http://ftp.us.debian.org/debian/pool/main/g/gamemode/libgamemode0_1.6.1-1_amd64.deb
wget http://ftp.us.debian.org/debian/pool/main/g/gamemode/libgamemodeauto0_1.6.1-1_amd64.deb
wget http://ftp.us.debian.org/debian/pool/main/g/gamemode/libgamemode0_1.6.1-1_i386.deb
wget http://ftp.us.debian.org/debian/pool/main/g/gamemode/libgamemodeauto0_1.6.1-1_i386.deb
apt install -f ./gamemode_1.6.1-1_amd64.deb ./gamemode-daemon_1.6.1-1_amd64.deb ./libgamemode0_1.6.1-1_amd64.deb ./libgamemodeauto0_1.6.1-1_amd64.deb ./libgamemode0_1.6.1-1_i386.deb ./libgamemodeauto0_1.6.1-1_i386.deb
Once it's done, reboot your system and try again.
First, you will need to download an IPC bridge for Discord which you can find here. You will need to run the exe in the same wine prefix as your osu!, and the best way is probably to make it run in a pre-startup script in Lutris.
If after this, it still doesn't work then chances are that you have installed Discord using snap so the ipc locations are different. In this case, we can just symlink like so:
ln -s /run/user/<id>/snap.discord/discord-ipc-0 /run/user/<id>/discord-ipc-0
Note: I believe the id should be 1000 for everyone, but I maybe wrong hence why I've left it for you to work out. Just cd into /run/user and you'll find it.
Chances are, you installed OpenTabletDriver and use them as your drivers. Some distributions some with drivers for tablets also, and they are clashing.
To fix this problem we just need to disable the ones in your kernel like so: sudo rmmod wacom
if you are using a Wacom tablet. If you aren't using a Wacom tablet, then I would do some research to find out what it's called as I have no clue.
You will need to run this at every startup, so feel free to make a startup script for it.
Other common problems can usually be found here so I recommend you also look around here. If you're still having problems with your tablet or it isn't disabling, I recommend you join the OpenTabletDriver Discord server as the support there is generally very good.
Right click osu! in your Lutris library and press Configure
. Go to the Runner options
tab and disable Enable DXVK/VKD3D
option. Press save and run osu! again and it should work correctly.
Install lib32-libxcomposite
.
Note: this is also sometimes a problem with pulse so ensure lib32-libpulse
is also installed if the above lib doesn't fix it for you.
I've yet to find an efficient way to do this with Lutris yet. You can find your osu! install in /home/<your username>/Games/osu/drive_c/osu
(unless you manually changed it.)
Update: If you are using Arch there is a package to handle maps/skins for you. You can find it here. I will do more research into making this work for other distros and update this later.
Download any maps you want from the website and place the .osz files in your Songs folder, F5 in game will take care of them for you.
Skins are a nightmare. Download the skin you want and open the .osk file in your Archive Manager.
Update: If you are using Arch there is a package to handle maps/skins for you. You can find it here. I will do more research into making this work for other distros and update this later.
Navigate to your osu! install folder (you can find it in the part above) and go to your Skins
folder.
Create a new folder for the Skin naming it whatever you want and then drag the contents of the .osk from your Archive Manager into it. Then, ingame press the keybind CTRL + SHIFT + S to reload your current skin and the skin list, where you will find your new skin.
Lutris is actually handy in the sense it can create them for you. Right click osu! in your Lutris library and there is a button to create a shortcut.
If you are like me and use Ubuntu 20.04 or later, there is a very irritating process with allowing shortcuts to run. Right click the shortcut you find on your desktop and press properties. Go to the permissions tab and ensure that it is allowed to run and then it should work.
I've not tested StreamCompanion, but I can say gosumemory works really well.
Head over to the github repo and go to the releases tab. Download the linux version and extract the zip somewhere.
Before we can use gosumemory we need to setup the config, so run sudo ./gosumemory
to generate one.
Open the config.ini
file and we will do some configuring. First, set wine
to True since osu! is running using wine.
Since we are running on Wine, we will need to set our Songs path manually.
By default this is /home/<your username>/Games/osu/drive_c/osu/Songs
but you can set it accordingly if you edited it yourself.
Once you've edited these 2 entries, you are good to go and you can run it by using sudo ./gosumemory
.
With this version, the ingame overlay won't be available to you as it is running natively.
If you want the ingame overlay, you can download the Windows version and run it in Lutris' wine prefix for osu! however I never got it working so I won't provide instructions for that here yet.
If you're having troubles at any point with gosumemory, then I suggest you join their discord.
Another way: not install , but easier.
Go to https://github.com/ppy/osu/releases?page=1
Download
osu.AppImage
,chmod +x osu.AppImage
, then run it.