User:Lucasdessy
osu! on Arch Linux
This guide assumes you already have installed PipeWire into your system. Make sure to install pipewire-pulse This guide helps you to get the best experience playing osu! on Arch Linux.
Installing dependencies
Enable multilib and install wine (this is required to get wine dependencies) and winetricks, then install ttf-ms-win10AUR. Also make sure to have lib32-alsa-plugins lib32-libpulse lib32-openal lib32-gnutls and lib32-libxcomposite installed, since those packages might not be direct wine dependencies. You can also install all remaining dependencies, which is recommended, by following this guide.
Installing custom wine
Download the gonX build, as it is the best at the time of this article being written. After downloading the file, execute sudo pacman -U wine-osu-6.14-1-x86_64.pkg.tar.zst
.
This guide will assume that your custom wine is located at /opt/wine-osu
.
Installing osu!
Prepare wineprefix
Create WINEPREFIX for your osu! installation and run winetricks to install required dependencies for osu! to work correctly.
$ WINEARCH=win32 WINEPREFIX=~/.wineosu winetricks dotnet40 cjkfonts gdiplus
Preparing assets
Create a folder for your osu! install inside your newly created wine prefix.
$ mkdir ~/.wineosu/osu/
Download osu! executable.
$ wget --output-document ~/.wineosu/osu/osu\!.exe https://m1.ppy.sh/r/osu\!install.exe
Testing osu!
Start osu! and test if it works correctly.
$ PATH="/opt/wine-osu/bin:$PATH" WINEARCH=win32 WINEPREFIX=~/.wineosu wine ~/.wineosu/osu/osu\!.exe
Creating scripts for starting and killing the game
Create startup script for osu!
~/.wineosu/osu/start.sh
#!/usr/bin/env bash PATH="/opt/wine-osu/bin:$PATH" WINEPREFIX="$HOME/.wineosu" wine "$HOME/.wineosu/osu/osu!.exe"
Create a kill script for osu! (Just in case wine hangs up or something)
~/.wineosu/osu/kill.sh
#!/usr/bin/env bash export PATH="/opt/wine-osu/bin:$PATH" export WINEPREFIX="$HOME/.wineosu" #export WINEARCH=win32 # You actually don't need this flag, only need when creating the bottle for the first time. wineserver -k
Create .desktop entries
Fetch 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
Create deskrop entry in ~/.local/share/applications/
~
or $HOME
in Exec and Icon params, at least for KDE. osu.desktop
[Desktop Entry] Categories=Game; Comment=A freeware rhythm game where player uses mouse and keyboard input to click on circles to the rhythm in main gameplay mo> Exec=bash -c /home/lucas/.wineosu/osu/start.sh Icon=/home/lucas/.wineosu/osu/icon.png Name=osu! Type=Application StartupNotify=true Terminal=false
osu-kill.desktop
[Desktop Entry] Categories=Game; Exec=bash -c /home/lucas/.wineosu/osu/kill.sh Icon=/home/lucas/.wineosu/osu/icon.png Name=Kill osu! Type=Application StartupNotify=true Terminal=false
Wine extension entries
Wine might have added entries for .osk
.osr
.osz2
and .osz
file extensions.
They will work fine if you add the PATH before its Exec param. Example:
wine-extension-osk.desktop
[Desktop Entry] Type=Application Name=osu! MimeType=application/x-wine-extension-osk; Exec=env PATH="/opt/wine-osu/bin:$PATH" WINEPREFIX="/home/lucas/.wineosu" wine start /ProgIDOpen osu! %f NoDisplay=true StartupNotify=true Icon=ED50_osu!.0
Setting up PipeWire
It's surprisingly simple to set PipeWire up. First copy its config files to your home directory
$ cp /usr/share/pipewire/* ~/.config/pipewire/
Editing PipeWire configuration
You'll need to edit two files, according to your sound card. ~/.config/pipewire/pipewire.conf
and ~/.config/pipewire/pipewire-pulse.conf
32
and the sample rate is 48000
. Inside ~/.config/pipewire/pipewire.conf
, edit context.properties
, and change the default.clock.min-quantum
to 32
and also change default.clock.rate
to 48000
.
pipewire.conf
context.properties = { ... ## Properties for the DSP configuration. default.clock.rate = 48000 ... default.clock.min-quantum = 32 ... }
Inside ~/.config/pipewire/pipewire-pulse.conf
, edit context.modules
, and change pulse.min.req
, pulse.min.frag
and pulse.min.quantum
to 32/480000
pipewire.conf
context.modules = [ ... { name = libpipewire-module-protocol-pulse args = { ... pulse.min.req = 32/48000 #pulse.default.req = 960/48000 # 20 milliseconds pulse.min.frag = 32/48000 #pulse.default.frag = 96000/48000 # 2 seconds #pulse.default.tlength = 96000/48000 # 2 seconds pulse.min.quantum = 32/48000 #pulse.default.format = F32 #pulse.default.position = [ FL FR ] # These overrides are only applied when running in a vm. vm.overrides = { pulse.min.quantum = 1024/48000 # 22ms } } } ... ]
Testing changes
After editing the PipeWire config files, restart PipeWire services.
$ systemctl --user restart pipewire.service pipewire.socket pipewire-media-session.service pipewire-pulse.service pipewire-pulse.socket
You can check if osu is getting the lowest quant by running pw-top
.
If sound is cracking refer to tips from the session above.
Extras
Wacom tablet
If you use KDE and have a wacom tablet, I strongly suggest you to install kcm-wacomtablet, as it provides a graphical interface to change your tablet area, also giving the possibility to disable the cursor smoothing.
Disable compositing
I also strongly suggest you to disable compositing while osu is running. To do that on KDE (5.22.5 as the time of this writting), while osu! is running, press Alt+F3 to open up window settings. Then go to More Actions -> Configure Special Application Settings... -> Add Property button -> add Block Compositing -> set it to Force and choose Yes. Then apply it. KWin should automatically disable compositing when you open the game again.