run flstudio on linux
  • Shell 64.8%
  • QML 29%
  • Python 6.2%
Find a file
Alex f49d15e408 Fix .exe association bug, missing step()/ok()/warn() helpers, and switch GUI to Spanish/blue-gray
setup-exe-association.sh called step/ok/warn without defining them (every other
lib script defines its own copy; this one assumed flstudio-lib.sh provided
them, but it only has fl_* utility functions) — every run of the "Add VST
Association" button failed instantly with "step: command not found".

Also fixes the actual association: real .exe files resolve via shared-mime-info
to application/vnd.microsoft.portable-executable, not any of the three mime
types the script registered (x-ms-dos-executable is only an alias of
x-msdownload, and neither is primary) — so double-clicking an .exe silently
did nothing even after the button "succeeded". Verified against a real
installer with xdg-mime query filetype.

GUI now defaults to Spanish (AppState.lang) to match the already-Spanish
.exe handler prompts, and the theme is recolored from the orange seed to a
blue/grey Material 3 dark scheme.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-15 14:33:39 +02:00
docs/superpowers/specs Add design spec for MD3 GUI redesign (phase 1) 2026-07-07 13:15:25 +02:00
gui Fix .exe association bug, missing step()/ok()/warn() helpers, and switch GUI to Spanish/blue-gray 2026-07-15 14:33:39 +02:00
lib Fix .exe association bug, missing step()/ok()/warn() helpers, and switch GUI to Spanish/blue-gray 2026-07-15 14:33:39 +02:00
tests Redesign launcher GUI as Material Design 3 app, fix installer bugs, add app icon 2026-07-10 21:39:36 +02:00
wine-custom wine-custom: extend portal patch to cover Vista-style IFileDialog2 API 2026-07-10 21:17:31 +02:00
.gitignore Fix .exe association bug, missing step()/ok()/warn() helpers, and switch GUI to Spanish/blue-gray 2026-07-15 14:33:39 +02:00
build-appimage.sh Add build-appimage.sh to eliminate AppDir staleness drift 2026-07-10 22:11:53 +02:00
ideas.todo wine-custom: bake WineASIO into the patched Wine build 2026-07-09 02:47:50 +02:00
install-plugin.sh Redesign launcher GUI as Material Design 3 app, fix installer bugs, add app icon 2026-07-10 21:39:36 +02:00
install.sh Redesign launcher GUI as Material Design 3 app, fix installer bugs, add app icon 2026-07-10 21:39:36 +02:00
main.spec Redesign launcher GUI as Material Design 3 app, fix installer bugs, add app icon 2026-07-10 21:39:36 +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 Redesign launcher GUI as Material Design 3 app, fix installer bugs, add app icon 2026-07-10 21:39:36 +02:00
SUMMARY.md Fix .exe association bug, missing step()/ok()/warn() helpers, and switch GUI to Spanish/blue-gray 2026-07-15 14:33:39 +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".