run flstudio on linux
Find a file
Alex cca34e607d ideas.todo: native xdg-portal file dialogs + FL menu fixes (custom Wine)
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>
2026-06-25 11:27:11 +02:00
docs/superpowers/specs Initial commit: FL Studio Linux installer + integrator (no Bottles) 2026-06-22 00:37:21 +02:00
gui Cross-runtime shared store + runtime-aware scripts (wine|proton) 2026-06-22 01:55:09 +02:00
lib Run FL inside a nested cage compositor (FLSTUDIO_CAGE=1) 2026-06-25 11:16:25 +02:00
tests Cross-runtime shared store + runtime-aware scripts (wine|proton) 2026-06-22 01:55:09 +02:00
.gitignore Ignore .serena/ MCP artifacts 2026-06-25 11:16:44 +02:00
ideas.todo ideas.todo: native xdg-portal file dialogs + FL menu fixes (custom Wine) 2026-06-25 11:27:11 +02:00
install-plugin.sh Cross-runtime shared store + runtime-aware scripts (wine|proton) 2026-06-22 01:55:09 +02:00
install.sh Run FL inside a nested cage compositor (FLSTUDIO_CAGE=1) 2026-06-25 11:16:25 +02:00
README.md Proton runtime: use GE-Proton wine directly (not umu) for clean window class 2026-06-25 11:02:22 +02:00
setup-lowlatency.sh WineASIO: fix registration for Wine 11 (wineasio.dll.so symlink) 2026-06-22 02:19:01 +02:00

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).
  • flstudio terminal command — flstudio opens FL, flstudio song.flp opens a project.
  • Menu launcher with the real FL Studio icon (extracted from the exe).
  • Double-click any .flp in 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:

  1. Ensure deps are present (wine winetricks curl icoutils desktop-file-utils shared-mime-info); installs missing ones via pacman (asks for sudo).
  2. Create a 64-bit WINEPREFIX at ~/.flstudio.
  3. winetricks: win11, corefonts + cjkfonts (MS Gothic — fixes FL's UI text), dxvk + vkd3d (Direct3D → Vulkan, fixes GUI rendering).
  4. Launch your FL Studio installer under Wine. In the wizard: install to the default path and UNCHECK the 32-bit plugin component.
  5. Deploy the launcher, .desktop entry, MIME type (application/x-flstudio-project, matched by *.flp glob and the FLhd file header), and icon; refresh caches.
  6. 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 /S runs 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 Documents to your real ~/Documents, so anything you drop in ~/Documents/FL Studio is 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 winemenubuilder so the installer's Start Menu shortcuts don't create duplicate launchers (e.g. a stray "FL Studio 2025"). Only our single flstudio.desktop remains. The installer also adds an optional "FL Cloud Plugins" launcher; remove it if unwanted: rm "~/.local/share/applications/wine/Programs/FL Cloud Plugins.desktop".