Skip to content

Install Guide Lutris

gamedirection edited this page Aug 22, 2026 · 1 revision

Install Guide: Lutris

Lutris is currently the best method for Nvidia GPU users to run Affinity apps on Linux.

This page covers two alternative install methods:

  • Legacy Method: a manual Wine runner install using the ElementalWarrior or Wine-TKG forks. More setup steps, but well-tested.
  • New Method: an experimental stock-runner install using Wine 10.19 (Staged Portable), with more automation.

Both methods work. Pick whichever fits your situation. If the New Method's automated script gives you trouble, fall back to the Legacy Method.

Before You Start

  1. Get a .exe installer for the Affinity app you want to install. Download it from an official source:

    The New Method's install script can also download Affinity by Canva (V3) for you automatically, so a pre-downloaded .exe is optional in that case.

  2. Install winetricks. It installs Windows components inside a Wine prefix.

    • Debian/Ubuntu: sudo apt install winetricks
    • Fedora: sudo dnf install winetricks
    • Arch: sudo pacman -Sy winetricks
  3. Install Lutris. Use the Flatpak version, or visit the Lutris download page and follow the instructions there. An unofficial AppImage is also available. Run it with a tool such as GearLever.

  4. Launch Lutris at least once after installing it. This generates the folder structure both methods rely on.

    Lutris welcome screen

Lutris' Wine-related folders live in a hidden directory inside your home folder. If your file browser hides these, press Ctrl + H to show hidden folders.

  • Flatpak install: /home/$USER/.var/app/net.lutris.Lutris/data/lutris/runners/
  • AppImage or other install: /home/$USER/.local/share/lutris/runners/

Legacy Method

The Legacy Method installs a Wine fork manually as a Lutris runner, then runs an install script against it.

1. Download and extract a Wine fork

Choose one:

  • ElementalWarrior-x86_64 (Recommended): download ElementalWarriorWine-x86_64.tar.gz, then right-click and extract it. You get a folder named ElementalWarriorWine-x86_64.
  • Wine-TKG-affinity: download wine-tkg-affinity-archbuilt.tar.zst, extract the usr/ folder from the archive, then rename that folder to wine-tkg-affinity-x86_64.

2. Copy the Wine fork into Lutris' runner folder

  1. Create a folder named wine inside Lutris' runners directory (see Before You Start) if it doesn't already exist.
  2. Copy the extracted Wine fork folder into it. This is your Wine runner.

3. Run the install script

  1. Download the .yaml install script that matches your Wine fork. Click the download button on the top right of the linked file's page:

  2. Open Lutris. Click the + icon in the top left corner.

    Add Game menu

  3. Select "Install from a local install script".

  4. Click the button, then select the .yaml file you downloaded.

    Installer preset selection

  5. Click Install, then click Install again.

  6. Choose or create an install path, such as /home/$USER/AffinityOnLinux.

    Install script's directory and shortcut options

  7. Click the button and select the .exe file for the Affinity app you downloaded.

    Setup file prompt

    Reviewing the selected setup file before installing

  8. Click Install. Lutris may show a message that Wine could not find a wine-mono package. Click Install to continue. A terminal-like log runs for several minutes. You may also see other install-time prompts, including an uninstaller warning dialog that references a GUID. Click through it to continue.

    Uninstaller GUID warning

  9. When the log finishes, an Affinity window opens with an Install button. Let it install, then click Close.

    Lutris reporting the install completed

  10. Click Launch. Lutris shows an error: "This game has no executable set. The install process didn't finish properly." Click OK. The next section fixes this.

4. Configure the game entry

Lutris created a blank entry named Affinity Suite in the Games section. Right-click it and select Configure.

  1. Under the Game info tab, change Name to the app you installed: Affinity Photo, Affinity Designer, or Affinity Publisher.

  2. Next to Identifier, click Change and type a lowercase, dash-separated identifier, then click Apply:

    • affinity-canva
    • affinity-photo
    • affinity-designer
    • affinity-publisher
  3. Optional: download icons, cover art, and banners from this repository's Icons and Covers folders, then set them under Game info.

  4. Switch to the Game options tab.

  5. In the Executable field, paste the path that matches your app:

    Affinity by Canva:

    drive_c/Program Files/Affinity/Affinity/Affinity.exe

    Affinity Photo V2:

    drive_c/Program Files/Affinity/Photo 2/Photo.exe

    Affinity Designer V2:

    drive_c/Program Files/Affinity/Designer 2/Designer.exe

    Affinity Publisher V2:

    drive_c/Program Files/Affinity/Publisher 2/Publisher.exe

    Affinity Photo V1:

    drive_c/Program Files/Affinity/Photo/Photo.exe

    Affinity Designer V1:

    drive_c/Program Files/Affinity/Designer/Designer.exe

    Affinity Publisher V1:

    drive_c/Program Files/Affinity/Publisher/Publisher.exe
  6. Click Save.

  7. Click Play to launch the app.

    Affinity welcome screen via Lutris

Optional: Desktop and menu shortcuts

Wine creates application menu shortcuts on its own, but these don't launch the app the way Lutris expects. Use Lutris' shortcuts instead.

  1. Remove the Wine-created shortcuts, if present, from:
    • /home/$USER/.local/share/applications
    • /home/$USER/.config/menus/applications-merged
  2. In Lutris, right-click the installed Affinity app and select Create desktop shortcut.
  3. Right-click it again and select Create application menu shortcut.

Optional: Install additional Affinity apps in the same prefix

  1. Select an existing Affinity app entry in Lutris.
  2. Open the ^ Wine menu at the bottom of the window, then click Run EXE inside Wine prefix.
  3. Run the installer for the other Affinity app.
  4. Right-click the first Affinity app entry and select Duplicate.
  5. Right-click the duplicated entry and select Configure.
  6. Update Name and Identifier under Game info.
  7. Set the correct .exe under Game options.

Optional: Fix scaling on HiDPI screens

  1. In Lutris, select an installed Affinity app.
  2. Open the ^ Wine menu and select Wine configuration.
  3. Go to the Graphics tab.
  4. Under Screen resolution, raise the dpi value until the sample text looks large enough.

This setting applies to every Affinity app you installed with Lutris, since they share one Wine prefix.

Optional: Dark theme for Wine

See Tips and Tweaks: Dark Theme for Wine for the general steps. For the WINEPREFIX value, right-click an Affinity app in Lutris, select Configure, and copy the path from the Wine prefix field under Game options.


New Method

The New Method uses an experimental stock Wine 10.19 runner. It also uses a Lutris install script that automates prefix setup, dependency install, and file placement. It is still in development. Try it, and report feedback if something breaks.

1. Install the runner

  1. Visit the Wine 10.19 (Staged Portable Runner) release page.
  2. Under Assets, download GameDirectionWine-x86_64.tar.xz, then right-click and extract it. You get a folder named GameDirectionWine-x86_64.
  3. Create a folder named wine inside Lutris' runners directory (see Before You Start) if it doesn't already exist.
  4. Copy the extracted folder into it.

You should now have this path:

  • Flatpak install: /home/$USER/.var/app/net.lutris.Lutris/data/lutris/runners/wine/GameDirectionWine-x86_64/bin/wine
  • Other install: /home/$USER/.local/share/lutris/runners/wine/GameDirectionWine-x86_64/bin/wine
  1. Confirm the runner works by running the matching command in a terminal:

    Flatpak install:

    /home/$USER/.var/app/net.lutris.Lutris/data/lutris/runners/wine/GameDirectionWine-x86_64/bin/wine --version

    Other install:

    /home/$USER/.local/share/lutris/runners/wine/GameDirectionWine-x86_64/bin/wine --version

    A version number in the output confirms the runner is ready.

2. Run the install script

  1. Download Affinity-gd.yaml using the download button on the file's page.

  2. Open Lutris, click the + icon.

    Add Game menu

  3. Select "Install from a local install script", then select Affinity-gd.yaml.

    Installer preset selection

  4. Click Install, then confirm the install path (for example, /home/$USER/Games/affinity-suite).

  5. When prompted, either set the script to "download" the latest Affinity by Canva installer, or browse to your own Affinity .exe.

    Setup file prompt

  6. Let the script finish. It extracts metadata, installs dependencies, and runs the Affinity installer automatically. You may see an uninstaller warning dialog referencing a GUID during this step. Click through it.

    Uninstaller GUID warning

The script sets the game's executable automatically to:

$GAMEDIR/drive_c/Program Files/Affinity/Affinity/Affinity.exe
  1. Click Play to launch the app.

    Affinity editing session via Lutris

Alternative: the official Lutris listing

If you'd rather test through Lutris' public game listing instead of the local script:

  1. Visit lutris.net/games/affinity-by-canva.
  2. Click Install, then select your local Affinity installer when prompted.

Note: the official listing may lag behind this guide's runner, since it depends on the official Lutris runner list.

Art assets

Download icons, cover art, and banners for Affinity apps from this repository's Icons and Covers folders. In Lutris, right-click your Affinity entry, select Configure, then upload each asset under the Game info tab.

Technical Notes

  • Runner: GameDirectionWine-x86_64 (based on Wine 10.19 Staged)
  • Prefix: $GAMEDIR (default /home/$USER/Games/affinity-suite/)
  • Architecture: win64 (default)
  • Dependencies installed automatically: vcrun2022, dotnet48, corefonts, tahoma, and renderer set to Vulkan
  • Helper files installed automatically:
    • Windows.winmdsystem32/winmetadata/
    • wintypes.dllProgram Files/Affinity/Affinity/ (the wintypes native DLL override is registered automatically)

Note

If you separately install Photo 2, Designer 2, or Publisher 2 (V2 apps), the script only places wintypes.dll into the V3 Affinity/Affinity/ folder. Copy it manually into each V2 app's own Program Files folder too, the same way described in the manual Wine guide's metadata/shim step, until the script handles this per app. Tracked as Issue #131.

Quick summary

Component New Method
Wine runner Wine 10.19 (Staged Portable)
Installer script Affinity-gd.yaml
Prefix path /home/$USER/Games/affinity-suite/
Executable Affinity.exe
Status 🟨 Experimental / working, under development

Report issues or feedback on the AffinityOnLinux issue tracker.


Troubleshooting

Install fails with "[Errno 104] Connection Reset by Peer"

Confirmed on Lutris on CachyOS and Fedora 43 (Issue #117). This is a Lutris bug caused by a Python 3.14 multiprocessing change, not an Affinity or Wine problem.

If you installed Lutris through your distro's package manager (not Flatpak), edit /usr/bin/lutris and add this line right after the other imports, before anything else runs:

multiprocessing.set_start_method("fork")

Restart Lutris and retry the install. See the upstream Lutris forum thread for background. This fix does not apply to the Flatpak build. If you hit this error on a package-manager install, try the Flathub build instead.

Repeated "xalia.exe .NET Framework Initialization Error" prompt during install

Reported during the .NET/dependency install step (Issue #122). Click through the prompt each time it reappears (it can take 3 to 4 clicks). The installer then continues and finishes. If it loops indefinitely instead of finishing, cancel and retry the install rather than leaving it running.

✅ Screen flashing / flickering while editing

Confirmed cause, verified in live testing on both the New Method's Lutris setup and the equivalent Heroic setup. This guide's winetricks step enables the renderer=vulkan setting. If the runner also auto-installs DXVK, DXVK-NVAPI, or VKD3D into the prefix, it stacks a second Direct3D-on-Vulkan translation layer on top of that setting. The two layers fight over the same swapchain, and the screen flashes or flickers. Affinity does not need DXVK, DXVK-NVAPI, or VKD3D.

Fix: in Lutris, right-click the game, select Configure, go to Runner options, and disable DXVK, DXVK NVAPI, and VKD3D if any are enabled. Relaunch Affinity.

✅ Lutris silently uses the wrong Wine runner

Confirmed in live testing: after setting up a game entry, Lutris can silently launch it with GE-Proton instead of the runner you actually configured (for example ElementalWarriorWine), even though the Legacy Method sets the runner explicitly. This showed up as .NET/dotnet48 and font install steps silently failing to apply, because they were run against the wrong runner's prefix. The install log gives it away. Look for ProtonFixes and umu-run strings where you'd expect plain Wine output:

Install log showing ProtonFixes and umu-run strings, evidence Lutris is using GE-Proton instead of the configured runner

Fix: right-click the game, select Configure, go to the Runner options tab, and confirm the Wine version dropdown actually shows your intended runner (not "GE-Proton (Latest) (default)"). Select the correct one and click Save.

Lutris game context menu with Configure highlighted

If you switch runners after already running through dependency install once, also reinstall the runtime dependencies against the corrected runner. From a terminal: export PATH="<path-to-correct-runner>/bin:$PATH"; winetricks --unattended --force remove_mono vcrun2022 dotnet48 corefonts win11 renderer=vulkan (adjust the WINEPREFIX to match your game's prefix first).

🟨 Duplicate canvas window appears on top of everything

Reported on the recommended runner (Issue #128). A workaround is switching to the wine-ge-8-26-x86_64 runner instead. That runner has its own rough edges: for example, a new document's window can appear black until you minimize and restore it.

Known Issues

❌ Affinity freezes when selecting an object in a large or SVG-heavy document

Tracked as Issue #109, likely the same underlying Wine d2d1 limitation as Issue #76 (Designer V2 freezing when deselecting a nested SVG group with snapping enabled). No fix yet.

If it happens, you don't need to force-kill the app. Use your desktop's taskbar to "Terminate" the frozen window, then click Cancel on the save-changes prompt that appears. Affinity should become responsive again, though you may need to close and reopen the affected file before you can select anything.

Clone this wiki locally