To date there has not been any game in the GTA franchise released with a native Linux port. Similarly most modding tools distributed in executable form are Windows-compatible binaries. Documented here are various ways to run and mod GTA games under Linux, in particular using Wine and its forks. Known solutions are:
- Run the game inside a virtual machine (eg. Virtualbox). This isn't recommended - the latency and resource overhead is likely to negatively impact the performance of the game.
- Recreate the original executable as a Linux executable (eg. openrw). This obviously doesn't provide a solution for modding tools that are Windows executables. Additionally mods that work by manipulating the original executable won't work either.
- Run the Windows executable using a compatibility layer (eg. Wine or Steam's fork of Wine Proton). Theoretically performance can be less, equal or better than performance in Windows, though crashes are possible if a required feature hasn't been implemented. This is currently the most reliable way of modding GTA under Linux.
Using Wine or a Wine fork such as Proton
Using Wine with Steam can be awkward since the game is launched via Steam, so you need to run the Steam client for Windows in Wine too. Alternatively, use the Steam client for Linux and enable Steam Play in order to automatically use Proton (Valve's fork of Wine) for your games. You can enable it via
Settings -> Steam Play inside the Steam client.
The vast majority of GTA mods across the franchise are implemented through substitution - they either replace original content, or replace original original configuration in order to introduce new content. This includes vehicle, weapon and character mods. As long as you can run the vanilla, un-modded game under Linux, these mods will work under Linux too.
Since the fundamental obstacle to working under Linux are Windows executables, conflicts may arise when using mods that also target the executable. For example; Wine, unlike Windows, will not automatically use Alexander Blade's dinput8.dll from Script Hook V when executing
GTAV.exe from the same directory - a DLL override needs to be configured.
Below is a table of mods that are either broken or require additional configuration to work.
|Name||Game||DLL overrides||Windows libraries and components|
|Script Hook V||
|Script Hook V .NET|
Most tools are distributed as Windows executables. Some luck may be found running these through Wine, eg.:
$ wine imgtool.exe
If you try testing a tool, consider adding a report to Wine's AppDB to save time for others.
If you're developing a tool, consider making it Linux compatible, but most of all consider releasing the source code under a licence that allows the community to release it for Linux and develop/maintain it. Hundreds of modding tools have been developed for GTA over the last 20 years, but many have been lost to incompatibility, unreliability and a lack of portability.
Note that some of the descriptions below may become outdated - please click the links to verify if functionality has improved (even better - update this page!).
|Game||Wine||Proton (Steam Play)|
|Excellent AppDB||Broken ProtonDB|
|Mixed AppDB||Excellent ProtonDB|
|Good AppDB||Excellent ProtonDB|
|Good AppDB||Excellent ProtonDB|
|Excellent AppDB||Excellent ProtonDB|
|Good AppDB||Good ProtonDB|
|EFLC||Excellent AppDB||Good ProtonDB|
|Broken AppDB||Excellent ProtonDB|
A wine prefix is a directory in which a Windows environment exists (essentially a "C: drive" and registry). You can specify where Wine should find such an environment using the shell variable
WINEPREFIX. A default environment will usually exist in
~/.wine and will default to that if
WINEPREFIX isn't set. These prefixes don't take up much space, so some prefer to use a different prefix for every application they use (benefits include just deleting the environment without affecting anything else if it becomes unwieldy or mysteriously broken). Proton incidentally does exactly this - each Wine prefix lives in
If you have a DLL in your game directory that you want used before the default, you need add it as an override.
winecfg on the Wine prefix:
$ WINEPREFIX=/path/to/steam/SteamApps/compatdata/<game ID>/pfx winecfg
It may ask you to install Gecko a couple of times - just click
Cancel. Under the
Libraries tab, add the exact name of your DLL (without the file extension), and click
Add. It should appear in the list - and should be marked
native, builtin. This means it'll prefer your DLL over the one built into Wine.
Windows libraries and components
Sometimes a tool or mod you're trying to use requires a library. For example, The .NET plugin for Script Hook V relies on the .NET Framework v4.7.2 and the Visual C++ Redistributable for Visual Studio 2017 x64.
winetricks (you may have to install it from your package manager) on the Wine prefix:
$ WINEPREFIX=/path/to/steam/SteamApps/compatdata/<game ID>/pfx winetricks
Select the default wineprefix - this means it'll use the
WINEPREFIX variable or the default if that's missing, but it's not very clear. Choose
Install a Windows DLL or component, then select the various items you're after. For example the .NET plugin for Script Hook V will need