Read on Steam Community Guides
In this Linux tutorial, we use Wine to install vanilla Morrowind mods that require MWSE. It works on both the GOG and Steam versions of Morrowind.
These instructions should work on most Linux distributions. They have been tested on:
- Arch Linux with Wine 8.11
- Debian Bookworm (12) and Wine 8.0
This guide was written because I wanted to try Kezyma's Voices of Vvardenfell, a mod that adds AI-generated voices to the game. Link to YouTube demo.
It requires MCP, MGE XE and MWSE. If you want to install more mods, installing Mod Organizer 2 is also recommended.
Use OpenMW if you want to play Morrowind without MWSE mods. It is a free and open-source engine replacement for Morrowind. It is available in most Linux distributions, supports various mods, and is easier to install than vanilla Morrowind with Wine.
- Wine packages
- Install Morrowind
- Wine
- Install MCP
- Install MGE XE
- Install MWSE
- Install mods
- Run the game
- Screenshots
Read the Arch Linux Wine wiki page if you need help configuring wine. Even if you are using a different distribution, the wiki page is still useful.
First, install wine with Mono for .NET applications, along with winetricks. You also need unzip and p7zip. In Arch Linux run:
pacman -S wine wine-mono winetricks p7zip unzip
You can also download the latest wine-mono MSI package from WineHQ and run it.
wine wine-mono-x.y.z-x86.msiTo avoid problems with wine due to missing fonts, you can install the allfonts package using winetricks.
winetricks allfontsBefore installing Morrowind, consider using a new/separate WINEPREFIX. This will keep Morrowind's files separate from other Wine applications. You can set the WINEPREFIX to any folder you want. Here I will use ~/.wine as the WINEPREFIX, which is the default.
Install the game using the GOG installer.
wine setup_tes_morrowind_goty_2.0.0.7.exeGo to the Morrowind folder where the game is installed.
cd ~/.wine/drive_c/GOG\ Games/MorrowindYou can also install the Steam version. Then go to:
cd ~/.steam/steam/steamapps/common/MorrowindYou need to adjust some DLL overrides in Wine to get Morrowind to work properly.
Source u/trymeouteh in this Reddit post.
Simply run winecfg if you used the GOG installer (using the default WINEPREFIX).
To set the WINEPREFIX for the Steam version, run:
WINEPREFIX=~/.steam/steam/steamapps/common/Morrowind winecfgIn the GUI, do the following:
- Open the Libraries tab.
- Add dinput.dll and d3d8.dll.
- Set the added DLLs to native, builtin if they are not already.
- Click OK.
Run the following commands to install the required DLLs for Microsoft DirectX 9.
winetricks d3dcompiler_43
winetricks d3dcompiler_47
winetricks d3dx9_43Morrowind Code Patch (MCP) patches bugs in the Morrowind program, which cannot otherwise be fixed by editing scripts or data files. Cures many crash and save corruption problems.
Download the Standard exe version to the Morrowind folder and extract it.
7z x Morrowind\ Code\ Patch-19510-2-4.7z
wine Morrowind\ Code\ Patch.exeJust use the default values, they can be adjusted later. Click Apply chosen patches.
Morrowind Graphics Extender XE (MGE XE) allows you to
- Set widescreen resolution
- Use improved graphics shaders
- Generate distant land terrain
- and more
Download the manual installer to the Morrowind folder and extract it.
7z x MGE\ XE\ Manual\ Install-41102-0-16-3-1682285033.7z
wine MGEXEgui.exeChanges are saved automatically, close the window.
Morrowind Script Extender (MWSE) makes additional functions available for use in Morrowind scripts, beyond those provided by the game's construction set. These extra functions allow modders to add features and behavior to scripts that would otherwise be impractical or impossible.
MWSE is included with MGE XE in the Morrowind folder, but you must update it to the latest nightly build with LUA support.
wine MWSE-Update.exeIt should output e.g.:
Found install location: C:\GOG Games\Morrowind\
Installed version: 302fd2a64b73dad52e6a3feac4680f03ffdcb7cc
Newest version: 302fd2a64b73dad52e6a3feac4680f03ffdcb7cc
Currently up to date.
Optionally, you can also install MWSE Logger, which lets you see MWSE log messages in-game by pressing the L key.
Kezyma's Voices of Vvardenfell is a project to fully voice Morrowind using ElevenAI and MWSE.
Here we install the mod manually for demonstration purposes. MCP, MGE XE and MWSE are required.
NOTE: I recommend you install with Mod Organizer 2 instead.
Download the latest release and extract it to the Morrowind folder.
unzip Voices\ of\ Vvardenfell\ 0.1.1-52279-0-1-1-1686873416.zipRecursively copy/merge the contents of folder 00 - Core to Data Files.
rsync -av 00\ -\ Core/ Data\ FilesMod Organizer 2 (MO2) is useful if you want lots of mods. It manages them for you and lets you enable/disable them easily, without manually manipulating the Data Files folder.
You can download the latest release of Mod Organizer 2 from the GitHub page.
Extract it anywhere, e.g. ~/Downloads/ModOrganizer2, and run it with wine.
wine Mod.Organizer-2.4.4.exeThe program will automatically find the Morrowind installation. It features an interactive tutorial to help you get started.
SteamTinkerLaunch is a versatile Linux wrapper tool for use with the Steam client which allows for easy graphical configuration of game tools, such as GameScope, MangoHud, modding tools and a bunch more.
In Arch Linux you can install it from steamtinkerlaunch in the AUR.
You can use Mod Organizer 2 with SteamTinkerLaunch:
steamtinkerlaunch mo2 start
steamtinkerlaunch mo2 list-supportedand also install nxm URLs from the Nexus website:
steamtinkerlaunch mo2 url nxm://morrowind/mods/47469/files/1000034292?key=XU6LygxGL5itAXeHAasdCheck out Morrowind Themed Mod Lists - 2019 Edition. You can also find more mods on Nexus Mods.
The following list of mods is recommended for a vanilla-friendly experience (no new quests, items, etc.):
- Kezyma's Voices of Vvardenfell: Project to fully voice Morrowind with AI-generated text-to-speech using ElevenAI and MWSE.
- Shut up: Makes NPCs greet you (and each other) only when you're looking directly at them. Removes the babbling when you walk by groups of NPCs.
- Westly's Faces Refurbished: HD head and hair replacer aiming for a vanilla-like feeling.
- Watch the Skies: A weather overhaul with randomized cloud textures, weather changes in interiors, seasonal weather, latitude/season changes etc.
- Morrowind Enhanced Textures: Upscales every in-game texture with the help of machine learning. 100% vanilla-friendly.
- Morrowind Optimization Patch: Greatly improves performance and fixes tons of mesh errors.
- Project Atlas: The goal of Project Atlas is to identify the most performance-heavy areas of vanilla Morrowind and some popular mods and target high usage/strain meshes in those areas.
- Weather Adjuster: Regional weather colors, skies and lighting. Visual weather editor and region-based presets. Seamless transitions between regions.
- Remiros' Groundcover: Adds groundcover graphics to almost all regions. Read the sticky post on its Nexus page for installation instructions.
If you are using the GOG version you can run the game from the Morrowind folder.
wine Morrowind.exeOtherwise, launch it from Steam, or Mod Organizer 2.
While the game is loading, you should see Loading MGE XE... pop up, unless your computer loads the game too fast. On the main menu, it should say e.g. MCP 2.4 in the bottom left corner.

Getting this long string of errors when trying to run MWSE-Updater:
thorn@thorn-GamingPC:~/.local/share/Steam/steamapps/common/Morrowind$ wine MWSE-Update.exe
0024:err:eventlog:ReportEventW L"Application: MWSE-Update.exe\n"
0024:err:eventlog:ReportEventW L"Framework Version: v4.0.30319\n"
0024:err:eventlog:ReportEventW L"Description: The process was terminated due to an unhandled exception.\n"
0024:err:eventlog:ReportEventW L"Exception Info: System.IO.FileNotFoundException\n"
0024:err:eventlog:ReportEventW L"Stack:\n"
0024:err:eventlog:ReportEventW L" at MWSE.AutoUpdater.Main(System.String[])\n"
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or ass
embly 'System.IO.Compression, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b
77a5c561934e089' or one of its dependencies. File not found.
at MWSE.AutoUpdater.Main(String[] args)
wine: Unhandled exception 0xe0434352 in thread 24 at address 7B662597 (thread 0024), starting debugger...
Unhandled exception: 0xe0434352 in wow64 32-bit code (0x7b662597).
Register dump:
CS:0023 SS:002b DS:002b ES:002b FS:006b GS:0063
EIP:7b662597 ESP:0051e938 EBP:0051e98c EFLAGS:00000246( - -- I Z- -P- )
EAX:0051e938 EBX:00000000 ECX:00000010 EDX:0051e9e8
ESI:0051e9e8 EDI:00cbbd10
Stack dump:
0x0051e938: e0434352 00000001 00000000 7b662597
0x0051e948: 00000005 80070002 00000000 00000000
0x0051e958: 00000000 79de0000 0051e970 02000059
0x0051e968: 0051e974 79dfbc5e 03bfc828 0051e984
0x0051e978: 79e6a99c 03f579e8 0000014e 0051e994
0x0051e988: 00000005 0051ea1c 79e6ac08 e0434352
Backtrace:
=>0 0x7b662597 RaiseException+0x42(code=, flags=, count=, args=) [/usr/src/wine-9.0
reparepack-4build3/dlls/kernelbaseck-4build3/dlls/kernelbase/debug.c:378] in kernelbase (0x0051e98c)
1 0x79e6ac08 in clr (+0x8ac08) (0x0051ea1c)
2 0x79edab0b in clr (+0xfab0b) (0x0051ea58)
3 0x7a0a8da7 in clr (+0x2c8da7) (0x0051eb04)
4 0x79c8f463 in clrjit (+0x1f463) (0x0051eb44)
5 0x79c73247 in clrjit (+0x3247) (0x0051eb74)
6 0x79c73396 in clrjit (+0x3396) (0x0051ebe4)
7 0x79c734c9 in clrjit (+0x34c9) (0x0051ecc0)
8 0x79c75e4b in clrjit (+0x5e4b) (0x0051ece4)
9 0x79e4f7f1 in clr (+0x6f7f1) (0x0051ed4c)
10 0x79e4f87d in clr (+0x6f87d) (0x0051ed94)
11 0x79e4f8c3 in clr (+0x6f8c3) (0x0051edfc)
12 0x79e4f698 in clr (+0x6f698) (0x0051f1b8)
13 0x79eb37d3 in clr (+0xd37d3) (0x0051f298)
14 0x79eb3980 in clr (+0xd3980) (0x0051f308)
15 0x79e01f55 in clr (+0x21f55) (0x0051f36c)
16 0x00c70512 (0x0051f384)
17 0x79de21db in clr (+0x21db) (0x0051f3b4)
18 0x79e04a2a in clr (+0x24a2a) (0x0051f430)
19 0x79e04bcc in clr (+0x24bcc) (0x0051f570)
20 0x79e04c01 in clr (+0x24c01) (0x0051f58c)
21 0x79e04c21 in clr (+0x24c21) (0x0051f5a4)
22 0x79edda9b in clr (+0xfda9b) (0x0051f708)
23 0x79eccf90 in clr (+0xecf90) (0x0051f970)
24 0x79eccda4 in clr (+0xecda4) (0x0051fe54)
25 0x79ecd199 in clr (+0xed199) (0x0051fea8)
26 0x79ecd09a in clr (+0xed09a) (0x0051fef4)
27 0x79f4af00 in clr (+0x16af00) (0x0051ff2c)
28 0x7ae055ab in mscoreei (+0x55ab) (0x0051ff38)
29 0x7b5f7f16 in mscoree (+0x7f16) (0x0051ff48)
30 0x7b5f4de3 in mscoree (+0x4de3) (0x0051ff68)
31 0x7bd644f3 in ntdll (+0x544f3) (0x0051ff80)
32 0x7bd659f5 in ntdll (+0x559f5) (0x0051ffec)
0x7b662597 RaiseException+0x42 [/usr/src/wine-9.0
/debug.c:378] in kernelbase: mov -0x04(%ebp), %ebx
Unable to access file '/usr/src/wine-9.0
repack-4build3/dlls/kernelbase/debug.c'repack-4build3)Modules:
Module Address Debug info Name (42 modules)
PE 400000- 420000 Deferred mwse-update
PE 40c0000- 45b8000 Deferred mscorlib
PE 4920000- 4c76000 Deferred system
ELF 58f39000-58f3e000 Deferred
PE 79410000-79420000 Deferred nlssorting
PE-Wine 79430000-79471000 Deferred coml2
PE-Wine 79490000-796a1000 Deferred rpcrt4
PE-Wine 796c0000-79802000 Deferred combase
PE-Wine 79820000-79c5d000 Deferred ole32
PE 79c70000-79cd0000 Export clrjit
PE-Wine 79ce0000-79cfb000 Deferred version
PE 79d10000-79dce000 Deferred msvcr100_clr0400
PE 79de0000-7a44f000 Export clr
PE-Wine 7a460000-7a4c3000 Deferred imm32
PE-Wine 7a4e0000-7a521000 Deferred shcore
PE-Wine 7a540000-7a577000 Deferred win32u
PE-Wine 7a590000-7a5ba000 Deferred zlib1
PE-Wine 7a5d0000-7aa97000 Deferred user32
PE-Wine 7aab0000-7acf0000 Deferred gdi32
PE-Wine 7ad00000-7ade6000 Deferred shlwapi
PE 7ae00000-7ae66000 Export mscoreei
PE-Wine 7ae80000-7b18f000 Deferred ucrtbase
PE-Wine 7b1a0000-7b22b000 Deferred sechost
PE-Wine 7b240000-7b4d9000 Deferred msvcrt
PE-Wine 7b4f0000-7b5dc000 Deferred advapi32
PE 7b5f0000-7b63a000 Export mscoree
PE-Wine 7b650000-7bb7b000 Dwarf-4 kernelbase
PE-Wine 7bb90000-7bcf7000 Deferred kernel32
PE-Wine 7bd10000-7bfee000 Dwarf-4 ntdll
ELF ef626000-ef652000 Deferred libexpat.so.1
ELF ef652000-ef6a6000 Deferred libfontconfig.so.1
ELF ef6a6000-ef6c9000 Deferred libbrotlicommon.so.1
ELF ef6c9000-ef6d7000 Deferred libbrotlidec.so.1
ELF ef6d7000-ef714000 Deferred libpng16.so.16
ELF ef714000-ef730000 Deferred libz.so.1
ELF ef730000-ef804000 Deferred libfreetype.so.6
ELF ef804000-ef90e000 Deferred libm.so.6
ELF ef92a000-efaad000 Deferred win32u.so
ELF efaad000-efb62000 Export ntdll.so
ELF efb62000-efd9e000 Deferred libc.so.6
ELF efda6000-efdb8000 Deferred libbz2.so.1.0
ELF efdc2000-efdf7000 Deferred ld-linux.so.2
Threads:
process tid prio name (all IDs are in hex)
00000020 (D) Z:\home\thorn.local\share\Steam\steamapps\common\Morrowind\MWSE-Up
date.exe
00000024 0 <==
000000dc 0
000000e0 2
000000ec 0
00000038 services.exe
0000003c 0
00000040 0 wine_rpcrt4_server
0000004c 0 wine_rpcrt4_io
00000050 0 wine_threadpool_worker
00000064 0 wine_rpcrt4_io
00000084 0 wine_rpcrt4_io
000000b4 0 wine_rpcrt4_io
000000cc 0 wine_threadpool_timerqueue
000000d0 0
00000104 0 wine_rpcrt4_io
00000108 0 wine_threadpool_worker
00000044 svchost.exe
00000048 0
00000054 0
00000058 0 wine_sechost_service
0000005c winedevice.exe
00000060 0
00000068 0
0000006c 0 wine_sechost_service
00000070 0
00000074 0
00000078 0
000000c4 0
000000c8 0
0000007c winedevice.exe
00000080 0
00000088 0
0000008c 0 wine_sechost_service
00000090 0
00000094 0
00000098 0
000000ac 0
000000b0 0
0000009c explorer.exe
000000a0 0
000000f0 0
000000f4 0 wine_rpcrt4_server
000000a4 plugplay.exe
000000a8 0
000000b8 0
000000bc 0 wine_sechost_service
000000c0 0 wine_rpcrt4_server
000000d4 conhost.exe
000000d8 0
000000fc rpcss.exe
00000100 0
0000010c 0
00000110 0 wine_sechost_service
00000114 0 wine_rpcrt4_server
00000118 0 wine_rpcrt4_server
0000011c 0 wine_rpcrt4_io
00000120 0 wine_threadpool_worker
System information:
Wine build: wine-9.0 (Ubuntu 9.0
Platform: x86_64 (guest: i386)
Version: Windows 10
Host system: Linux
Host version: 6.14.0-37-generic