- Shell 100%
Add two future items tied to the custom FL-tailored Wine build: - comdlg32 -> xdg-desktop-portal so FL's open/save uses the native KDE/Dolphin picker (needs a patched Wine; infra already present: portal + portal-kde). - FL drop-down menu handling under Wine/Wayland (virtual desktop / UseTakeFocus / Xephyr fallbacks). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| docs/superpowers/specs | ||
| gui | ||
| lib | ||
| tests | ||
| .gitignore | ||
| ideas.todo | ||
| install-plugin.sh | ||
| install.sh | ||
| README.md | ||
| setup-lowlatency.sh | ||
FL Studio on Linux — ~/.flstudio (no Bottles)
Installs FL Studio into a single plain WINEPREFIX at ~/.flstudio and wires it
into the desktop. No Bottles, no Flatpak — just Wine and your system. Distilled and
modernised from Torbuntu/fl-studio-linux-setup
(the Wine recipe) and begin-theadventure/fl-studio-integrator-linux
(the .flp desktop integration).
What you get
- Everything Wine-related under
~/.flstudio(one prefix, easy to back up or delete). flstudioterminal command —flstudioopens FL,flstudio song.flpopens a project.- Menu launcher with the real FL Studio icon (extracted from the exe).
- Double-click any
.flpin your file manager → opens in FL Studio.
Install
./install.sh /path/to/flstudio_installer.exe
The script is idempotent — safe to re-run. It will:
- Ensure deps are present (
wine winetricks curl icoutils desktop-file-utils shared-mime-info); installs missing ones viapacman(asks forsudo). - Create a 64-bit
WINEPREFIXat~/.flstudio. winetricks:win11,corefonts+cjkfonts(MS Gothic — fixes FL's UI text),dxvk+vkd3d(Direct3D → Vulkan, fixes GUI rendering).- Launch your FL Studio installer under Wine. In the wizard: install to the default path and UNCHECK the 32-bit plugin component.
- Deploy the launcher,
.desktopentry, MIME type (application/x-flstudio-project, matched by*.flpglob and theFLhdfile header), and icon; refresh caches. - Set up a shared folder at
~/Documents/FL Studio(see below).
If FL is already installed in the prefix, run ./install.sh with no argument to just
(re)deploy the desktop integration.
The installer here is built with NSIS, so
wine installer.exe /Sruns it silently — no clicking required. If yours opens a GUI instead, just click through the wizard (default path, uncheck the 32-bit plugin).
Shared folder (Linux ⇄ FL Studio)
~/Documents/FL Studio is shared both ways:
- Wine already maps the prefix's
Documentsto your real~/Documents, so anything you drop in~/Documents/FL Studiois visible inside FL and vice-versa. - It's also mapped to a dedicated Wine drive letter (first free of
H:…), so it shows up as its own drive in FL's file browser (appears after restarting FL). - Pre-created subfolders:
Projects/,Samples/.
Change the location with FLSTUDIO_SHARE=/path ./install.sh ….
Installing plugins (VST/VST3)
You have the plugin's Windows installer (.exe/.msi) and want it in FL Studio.
Point-and-click (easiest): open "Install FL Studio Plugin" from your app menu
(or right-click an installer → Open With → it). A small window lets you pick the
installer(s), choose Silent (recommended) or Wizard, shows progress, and reports
which .vst3/.dll were added.
Terminal:
./install-plugin.sh "MyPlugin Installer.exe" ["Another.exe" ...]
./install-plugin.sh --gui "Picky Installer.exe" # force the installer's wizard
It auto-detects the installer type (Inno → /VERYSILENT, NSIS → /S, MSI →
msiexec /qb), ensures the standard VST folders exist, and installs into the prefix:
~/.flstudio/drive_c/Program Files/Common Files/VST3 ← VST3 (the important one)
~/.flstudio/drive_c/Program Files/Common Files/VST2 ← VST2
~/.flstudio/drive_c/Program Files/VstPlugins ← legacy VST2
Then in FL Studio: Options ▸ Manage plugins ▸ Find installed plugins.
Some "installers" only install an app, not a plugin — e.g. Spitfire Audio installs its manager app, and you download the actual libraries from inside it after signing in. The tool will tell you when no new plugin file appeared.
Tuning
Edit ~/.flstudio/flstudio.env (sourced by the launcher):
#WINE="$HOME/wine-custom/bin/wine" # use a different Wine build
#export PIPEWIRE_QUANTUM=2048/48000 # tune PipeWire latency (frames/samplerate)
Low latency (mic/recording)
For low input/output latency, use WineASIO routed through PipeWire (JACK):
./setup-lowlatency.sh
It installs pipewire-jack (repo) + wineasio (AUR), registers WineASIO into the
prefix, and prints the FL settings to pick: Options ▸ Audio settings ▸ Device →
WineASIO, buffer 128/256 samples @ 48 kHz, enable your mic input. WineASIO gives
unified low-latency in/out — ideal for recording.
(FL also ships its own "FL Studio ASIO" via WASAPI→PipeWire if you'd rather not install anything; WineASIO is the finer option for recording.)
Choosing the runtime (wine ⇄ proton)
FL's install, plugins and settings live in ~/.flstudio-shared and are symlinked
into each prefix, so switching runtimes keeps all your config. Set in
~/.flstudio/flstudio.env:
#RUNTIME=proton # GE-Proton's bundled wine (run directly) on ~/.flstudio-proton
#PROTONPATH=GE-Proton10-34
Default is wine (system Wine on ~/.flstudio). The Proton runtime calls
GE-Proton's bundled wine directly (not umu-run): umu/pressure-vessel forces
every window to class steam_app_0, which makes per-window rules (floating, special
workspaces) impossible. Running the wine binary directly keeps the class as
steam_proton, so window rules work.
Layout
~/.flstudio/ WINEPREFIX (drive_c, FL Studio, plugins)
~/.flstudio/flstudio.env user overrides
~/.flstudio/lib/flstudio-lib.sh shared helpers (also used by the launcher)
~/.local/bin/flstudio launcher / terminal command
~/.local/share/applications/flstudio.desktop menu entry + MIME handler
~/.local/share/mime/packages/flstudio.xml .flp type definition
~/.local/share/icons/hicolor/256x256/apps/flstudio.png icon
Tests
bash tests/test_lib.sh # pure helpers (arg conversion, exe detection)
bash tests/test_deploy.sh # integration deploy in a sandbox (no real Wine)
Uninstall
rm -rf ~/.flstudio
rm -f ~/.local/bin/flstudio \
~/.local/share/applications/flstudio.desktop \
~/.local/share/mime/packages/flstudio.xml \
~/.local/share/icons/hicolor/256x256/apps/flstudio.png
update-mime-database ~/.local/share/mime
update-desktop-database ~/.local/share/applications
Notes
- FL Studio is not officially supported on Linux; most things work well under recent Wine. Audio goes through Wine's PipeWire/Pulse backend.
- Uses your system Wine by default (newer than Torbuntu's recommended kron4ek 11.0). Override per the Tuning section if you prefer a dedicated build.
- The script disables Wine's
winemenubuilderso the installer's Start Menu shortcuts don't create duplicate launchers (e.g. a stray "FL Studio 2025"). Only our singleflstudio.desktopremains. The installer also adds an optional "FL Cloud Plugins" launcher; remove it if unwanted:rm "~/.local/share/applications/wine/Programs/FL Cloud Plugins.desktop".