SkillAgentSearch skills...

Guildwarslinuxinstallguide

Guide for installing Guild Wars on Linux

Install / Use

/learn @ChthonVII/Guildwarslinuxinstallguide
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Guild Wars Installation Guide for Linux

Table of Contents

Part 0: About This Guide

This is a guide for installing Guild Wars on Linux. It covers both the "bare bones" basic installation, and the "full bells and whistles" installation with a complete set of add-ons, and everything in between.

Unlike my previous guide on reddit, this guide resides on github. There are a few reasons for this: I'm hoping that github will make it easier to edit this document to keep it up to date, and also for others to contribute. I'm able to include the files for "extras" like uMod right here in the repo. I don't want to give reddit monetizeable content anymore.

Part 1: What About Steam/Lutris/Etc.?

This guide does NOT recommend the use of Steam, Lutris, Heroic Launcher, Bottles, or any other "one click" solution for installing Guild Wars. While their apparent simplicity is appealing at first glance, they greatly increase the difficulty of getting add-ons to work, and increase complexity behind the scenes in an opaque way that makes troubleshooting more difficult.

Steam makes installing almost any add-on into a giant headache. DirectSong, Toolbox, and uMod are particularly miserable. While workarounds are presented in Part 16, it is better to just avoid these headaches in the first place.

Lutris and other "Steam wannabe" launchers incorporate Proton and the Steam runtime. This makes DirectSong much harder to set up. Also, Guild Wars has been known to crash when run under the Steam runtime without Steam itself, when it tries to run SteamAPI_Init() and fails. Due to the opacity here, I cannot confidentally suggest that any particular configuration is truly free of this bug, or will remain free of it through future updates. And, in general, runtimes should be avoided whenever possible because they add complexity and make troubleshooting harder.

An additional problem with Lutris and its ilk is that you must rely on recipes that were often written by someone who didn't really know what they were doing.

While Proton has historically offered better performance than ordinary wine, this is no longer the case. With DXVK installed and NTSYNC activated (see Parts 7 and 8), ordinary wine's performance is now on par with Proton. Perhaps ever superior insofar as mainline Proton doesn't have NTSYNC yet, and NTSYNC is supposed to be slightly faster than FSYNC. (Presently, to get NTSYNC in Proton, you need a custom fork of Proton and likely need to activate a kernel module, which Lutris, et al. cannot do for you.)

Because Lutris et al. obscure from you the details of what they're doing, it can be difficult or impossible to troubleshoot when something goes wrong. Issues that begin with "I did what you said, but only in Lutris, and it doesn't work" are subject to being closed without comment (or with grouchy comment) because they often cannot be diagnosed beyond "Lutris did something stupid."

If you really, really want a low effort solution, skip straight to Part 5. Assuming that you have wine installed correctly (covered in Parts 2-4), that will give you a basic Guild Wars installation in just 6 console commands. (If you can manage a tiny bit more effort, see Parts 7 and 8 for large performance gains.)

Part 2: About Environment Variables and Bash Scripts

Wine depends on environment variables to set important parameters.

The WINEPREFIX environment variable tells wine which prefix to use. You must specify this every time you want to interact with the wine prefix you will be creating for Guild Wars.

The WINEARCH environment variable tells wine what Windows architecture to simulate when first setting up a wine prefix. In the past, you needed a 32-bit wine prefix for Guild Wars if you wanted to set up DirectSong. That is no longer the case. Currently, it is advised to use a 64-bit wine prefix for forward compatibility with the "new wow64 mode" (see Part 3). To set up a 64-bit prefix, either leave WINEARCH unset when first creating the wine prefix, or set it to win64. (On wine >= 10.2, wow64 will also create a 64-bit prefix.)

For wine >= 10.2, the WINEARCH environment variable is also used when running wine to tell wine to activate the "new wow64 mode" (see Part 3). To use the "new wow64 mode," you must specify WINEARCH=wow64 every time you run wine.

This guide presents environment variables in a mix-and-match style. For one-off commands, environment variables are presented as part of the command, like so: WINEPREFIX=~/.wine-gw some-command. For a series of commands that will be executed in the same console window, environment variables are presented as export statements that set an environment variable for the lifetime of the console window, like so: export WINEPREFIX=~/.wine-gw. Unless context suggests otherwise, you should generally assume that all the instructions one part of this guide take place in the same console window, using the same exports.

After Guild Wars is fully set up, you may want to make a bash script to set all your environment variables and reduce everything to one click, then modify your Guild Wars desktop file (shortcut) to invoke your script.

Example script: start dhuum.sh, uMod, and Guild Wars, then inject Toolbox (using dll hook for uMod, with fps limit increased to 144):

#!/usr/bin/env bash

export WINEPREFIX=~/.wine-gw
export WINEDEBUG=-all

cd ~/.wine-gw/drive_c/Program\ Files\ \(x86\)/Guild\ Wars

bash dhuum.sh &
wine start /d "C:\Program Files (x86)\uMod" "C:\Program Files (x86)\uMod\uMod.exe" &
sleep 1
wine start /d "C:\Program Files (x86)\Guild Wars" "C:\Program Files (x86)\Guild Wars\Gw.exe" -fps 144 &
sleep 1
wine start /d "C:\Program Files (x86)\GWToolbox" "C:\Program Files (x86)\GWToolbox\GWToolbox.exe" /quiet

Sometimes Guild Wars may not exit cleanly, leaving behind a zombie process. You can use dhuum.sh from the "extras" directory of this repo to scan and kill Gw.exe if it becomes a zombie process, ensuring a clean exit. Download it into your Guild Wars installation directory and add it to your launcher script as shown in the example above.

Aside: Wondering what a "wine prefix" is, but too timid to ask? A wine prefix is essentially a name for a particular emulated Windows computer. It also names the directory where the files for that particular emulated computer reside. When you set the WINEPREFIX environment variable, you're telling wine which wine prefix -- which emulated Windows computer -- to run the command in. If the corresponding directory already exists, wine will use it; otherise, it will create it. In order for two programs -- say Guild Wars and Toolbox -- to be able to interact, they must be run within the same wine prefix. Conversely, programs running in independent wine prefixes -- say two copies of Guild Wars -- are oblivious to each other. Also, segregating programs into different wine prefixes allows for doing dll overrides and compatibility tweaks for the sake of one program without potentially breaking another.

Part 3: Setting Up 32-Bit Support

This section covers general set-up for running 32-bit Windows programs via wine. There are two options: First, you can install all of the necessary 32-bit libraries needed to run 32-bit wine. Second, on versions of wine >= 10.2, you can use the "new wow64 mode" to run 32-bit Windows programs inside 64-bit Linux processes.

Option 1, Install 32-Bit Libraries:

Note: Unless Guild Wars is your very first foray into Linux gaming, you've probably already done this. If you have Steam installed, or can already play other 32-bit Windows games, then this is already done. In which case, you should skip this section.

Add i386 to multiarch:

sudo dpkg --add-architecture i386
sudo apt-get update

Install the 32-bit binaries for your graphics drivers. For AMD (open source drivers) (info):

sudo apt-get install libglx-mesa0:i386 mesa-vulkan-drivers:i386 libgl1-mesa-dri:i386

For nVidia (proprietary drivers) (info):

sudo apt-get install nvidia-driver-libs:i386

Install Wine and its dependencies, both 64- and 32-bit, by following the instructions at WineHQ.

(Note: sudo apt-get install --install-recommends winehq-XXX may cause sane-airscan to be uninstalled and replaced with sane-airscan:i386. If this happens, just carry on with installing wine and then reinstall sane-airscan afterwards (which will remove sane-airscan:i386).

Option 2, New WOW64 Mode:

If you have wine >= 10.2, you may use the "new wow64 mode" to run 32-bit Windows programs inside 64-bit Linux processes. In this case, you do not need any 32-bit Linux system libraries. To use the "new wow64 mode," you must set the environment variable WINEARCH=wow64 each time yo

View on GitHub
GitHub Stars60
CategoryDevelopment
Updated14d ago
Forks10

Languages

Shell

Security Score

80/100

Audited on Mar 18, 2026

No findings