It’s the year 2025, and a combination of changes to Wine made it unusable with running VSTs. Fear not, as this guide will help you with running Windows VST plugins today!
So what’s the problem?
First of all, if you wanted to run VSTs on Linux, then you’ve probably heard of yabridge. It’s a thing that runs Windows VST(2/3)/CLAP plugins as if they were native Linux plugins using Wine. It’s impressive how good this actually works, but at one point Wine decided to be merciless and merged a change in 9.22 that broke GUI interations in yabridge.
The project is currently making an attempt at a workaround for this issue - new GUI embedding strategy that works with Wine 10+. It didn’t work for me, unfortunately, but you should try it first, before continuing with this guide - on Arch btw you can swap to yabridge(ctl)-wine10-git AUR packages. You might have to move around the plugin window before mouse would correctly work in it.
If it does work, congratulations and bye! If not, well you’ll have to read through everything below.
Prerequisites
- Wine 9.21 (can be downloaded here - use either amd64 or wow64, whatever works better) sitting in a folder somewhere
- yabridge (sudo pacman -Syu yabridge yabridgectl for Arch Linux)
- Folder for a new Wine prefix
- Anything that uses audio plugins - for me that’s REAPER
1. Set environment variables
This step is just here is both for simplicity and function, so don’t skip it. You’ll need the following:
## fish set -x WINEINSTALL [folder where you extracted Wine 9.21] # Will be used by yabridge # Use wine64 instead of wine if you aren't using the WoW64 build. set -x WINELOADER $WINEINSTALL/bin/wine # This prefix will be only used by Wine 9.21 and it is where # all the VSTs will be installed. set -x WINEPREFIX [path to your new prefix folder] ## sh export WINEINSTALL=[folder where you extracted Wine 9.21] # Will be used by yabridge # Use wine64 instead of wine if you aren't using the WoW64 build. export WINELOADER=$WINEINSTALL/bin/wine # This prefix will be only used by Wine 9.21 and it is where # all the VSTs will be installed. export WINEPREFIX=[path to your new prefix folder]
2. Install all the VSTs
cd to your downloads and run all the installers through the Wine you downloaded:
# replace wine with wine64 if needed $WINEINSTALL/bin/wine ./Setup.exe
Don’t forget - this will be installed in the default prefix (which is not what we want) if you didn’t set WINEPREFIX env var.
3. Setup yabridge
First of all, you need to set correct search paths through yabridgectl. List out default paths setup by it and remove them:
~ > yabridgectl list /home/stopper/.wine/drive_c/Program Files/Steinberg/VstPlugins /home/stopper/.wine/drive_c/Program Files/Common Files/VST3 /home/stopper/.wine/drive_c/Program Files/Common Files/CLAP ~ > yabridgectl rm "/home/stopper/.wine/drive_c/Program Files/Steinberg/VstPlugins" ~ > yabridgectl rm "/home/stopper/.wine/drive_c/Program Files/Common Files/VST3" ~ > yabridgectl rm "/home/stopper/.wine/drive_c/Program Files/Common Files/CLAP"
These are the places where yabridge would search for plugin DLLs. Now add them back, but now in the correct prefix:
~ > yabridgectl add "$WINEPREFIX/drive_c/Program Files/Steinberg/VstPlugins" ~ > yabridgectl add "$WINEPREFIX/drive_c/Program Files/Common Files/VST3" ~ > yabridgectl add "$WINEPREFIX/drive_c/Program Files/Common Files/CLAP"
Run sync and check that it detected your VSTs:
~ > yabridgectl sync Setting up VST2, VST3, and CLAP plugins using: - /usr/lib/libyabridge-chainloader-vst2.so - /usr/lib/libyabridge-chainloader-vst3.so - /usr/lib/libyabridge-chainloader-clap.so Finished setting up 19 plugins (0 new), skipped 0 non-plugin .dll files # ^ shouldn't be 0 ~ > yabridgectl status # ... /home/stopper/Prefixes/yabridge/drive_c/Program Files/Common Files/VST3/ COMPANYNAME/PLUGIN.vst3 :: VST3, bundle, 64-bit, synced # 18 more...
4. Run your DAW!
If you setup everything correctly, then you will be able to run your DAW (or any other thing that uses audio plugins) from this terminal window and it should work.
~ > reaper # should pickup your new VSTs like any other Linux plugin
If this is the case, then it’s time to make a script to run the app of your choice. Example for REAPER (just replace reaper with your DAW):
### fish - ./reaper.fish #!/bin/fish set -x WINEINSTALL [folder where you extracted Wine 9.21] set -x WINELOADER $WINEINSTALL/bin/wine set -x WINEPREFIX [path to your new prefix folder] reaper ### bash - ./reaper.sh #!/bin/bash export WINEINSTALL=[folder where you extracted Wine 9.21] export WINELOADER=$WINEINSTALL/bin/wine export WINEPREFIX=[path to your new prefix folder] reaper
~ > chmod +x ./reaper.fish ~ > chmod +x ./reaper.sh
Now just run your DAW using this script, or optionally make a shortcut or something.
Bonus: how to low latency on pipewire-jack
- Boot the kernel with preempt=full
- Install rtkit and add yourself to rtkit group
- Setup RLIMITs and RTkit
- Run your apps with PIPEWIRE_LATENCY=128/48000 (you can play around with 128; 48000 is your sample rate)