Modding Morrowind on Linux (With OpenMW)
from SylviaBun
Brief Explanation of OpenMW and its modding capacity
One of my favorite video games of all time is Morrowind, and that is in no short part due to the modding community and their wonderful creations. Whether it is for bug fix mods, quality of life mods, or content expansions, there is plenty of reason to find yourself on sites like NexusMods when you are a fan of this game. For myself, my go to setup at this point in time is a modlist designed for the OpenMW engine called I Heart Vanilla, a package that focuses on vanilla gameplay, bugfixes, and QOL enhancements.
For those unaware, OpenMW is a total engine replacement for the original game. The original engine is marred by technical issues that this open source engine aims to utlimately resolve, as well as preventing the game from being lost to time should the original engine fail on future operating systems. With OpenMW, anyone can take the code and port it to whatever platform they wish, and update the libraries behind it which in theory will allow Morrowind to “live forever,” which in the world we live in where media is lost to time constantly is quite a blessing. The engine is also designed to be capable of expanding the original game in a way that the official engine never could. It has early support for LUA mods as of the 04.9 release, although incompatible with the prior “Morrowind Script Extender” classifications of mods, it proves to be as malleable if not moreso than the prior scripting solution.
With that explanation of what OpenMW is out of the way, let us get to the topic of today: installing mods for the OpenMW engine on Linux. Thankfully, with the recent 0.49 release of OpenMW this is easier and more comprehensive than ever before. Through websites like Modding OpenMW (MOMW), we have the ability to quickly download and install curated mod lists designed explicitly for OpenMW. The process was difficult prior to the official release of OpenMW 0.49, as LUA scripting was only available in developer builds and these mods heavily relied on those builds. If you were on a distrobution that does not ship git packages, you were forced to set up a build environment and compile the game for yourself, as well as all of the tools provided by the MOMW website. This is no longer the case, although if you find yourself stuck on an LTS distro that still does not ship the 0.49 release package of OpenMW, you may be forced to rely upon Flatpak. This guide will not be covering the automatic modding of Flatpak versions of OpenMW, and the MOMW Tools Pack does not officially support Flatpak installations, although I suspect if you were to use a tool like flatseal to enable the package to use the Home folder you would be able to otherwise follow this guide.
Installation
    The first step to modding OpenMW is quite simple. You need to acquire a copy of the game, either through GOG or Steam, or alternatively install from a CD should you have the original physical release available to you. Installation of Morrowind will require either utilizing innoextract to take the GOG package apart, WINE to install the GOG package or official release disc to a chosen bottle, a WINE manager such as Bottles, Heroic Launcher or Lutris, or the Steam client to install a Steam copy of the game or alternatively using Steam's Proton integration to install other versions. You will then want to install your native package of OpenMW, I am on Arch Linux at the time of writing this so the process for me was as simple as using the package in the official repos with sudo pacman -S openmw. For Debian-based distros, the command would look something like sudo apt install openmw, though you should check your distrobutions repos to confirm that there are no alternative packages needed as some distros may divide things up into multiple packages.
Setting Up MOMW Tools Pack
What is the MOMW Tools Pack?
Well, it is a pack of tools that allow you to install the aforementioned premade mod lists from the Modding OpenMW site. These tools are designed to make it easy to download, install and manage your modlists for OpenMW, and the mod list we will be installing today is a pretty fantastic base to start with for adding your own customizations on top of.
The next step for setup is something that can vary quite heavily due to factors such as:
Personal preference
Repository packages
OS/Distro choice
As such, this section is more of a “how I set this up” than a recommendation for your personal setup.
    The first step will be to download the official release of the MOMW Tools Pack and extract it to a directory within your path. In my instance, I chose to put the files extracted in /usr/local/bin after removing the momw-configurator-linux-arm64 binary from the directory. Alternatively, you could create a directory in your home folder such as mkdir ~/bin and then adding it to your PATH as per the standard of your chosen shell. Note that while the Arch User Repository (AUR) does have packages for these tools, several of the tools fail to build properly under the current PKGBUILD and I didn't want to put the time or effort into troubleshooting why they were failing. This is the easier, and likely safer, route of getting these files on your system.
Once you have the tools added to your path, you should restart your shell so that it can pick up the new binaries. You should now be able to run commands such as s3lightfixes and momw-configurator-linux-amd64 directly from any folder without needing to specify where these binaries are.
Synchronizing A Modlist
    Now that we have our tools configured, it is time to pick a mod list and get it downloaded to our system for the installation stage. This is made extremely easy now that we can execute the files from anywhere. Simply open your terminal emulator of choice and run umo setup to get started.
Upon launching, umo will ask you for a number of things. First of all, your default browser will pop up and ask you to authorize access to your NexusMods API key. If you don't have a NexusMods account, now is the time to create one.
    Once the tool has been given authorization to the API key, you can close the browser window and return to the shell where you will see umo now asking you for a directory to store its mod files. Be aware that these mod files will reside decompressed at the location you choose to store them until you personally remove them, so make sure you have enough space for the mod list you choose. In the case of the I Heart Vanilla mod list, it is a total of 4.8GiB on the disk. That puts this mod list at over 4x the size of the original game, at 1.1GiB. If you want to add more mods to the list, it will only grow from there. With this in mind, and the knowledge I have a 1TB NVMe drive as my boot drive, I chose to create a directory called ~/.mods to have all of my lists managed in.
    Similar to above, umo will ask you to specify a directory for cache. The same considerations should be kept in mind, I left the cache directory to its defaults which are ~/.cache/umomwd. The compressed files downloaded from NexusMods are kept here, compared to potential updated versions, and managed by umo. You should *not delete this cache unless you absolutely need to save space and do not intend on altering any modlists that are installed, or you have fast enough internet to not care about needing to re-download these files again.
    The final thing umo will attempt to do is discover all of the other utilities the MOMW Tools Pack ships with. It should be able to pick them up automatically, but if it fails ensure that you specify not only the directory the utilities are in, but the name of each binary as umo asks for it. For instance, if it asks you for the groundcoverify utility directory, you would type in something like /usr/bin/groundcoverify, taking into account the directory you chose to store the tools in.
    Now that umo is set up, you can use it to install the list you have decided upon from the MOMW homepage. For I Heart Vanilla, this is done by simply typing umo install --sync i-heart-vanilla into your shell and hitting enter. If you are not a Nexus Premium member, a browser window will pop up for each file that needs to be downloaded. Simply click the 'Slow Download' button, and once the page shows the download has started feel free to close the tab. If you miss any of these pages, the install may stall. In this situation, you simply re-run the install command from above to resume installation from where you left off. After all of the downloads complete, umo will extract them to the mods folder you specified earlier inside a sub-directory for each list you sync and install. For my setup, this looks like ~/.mods/i-heart-vanilla
Configuring Your Modlist
Now that the list is installed, we need the MOMW tools to configure our copy of OpenMW to be aware of these directories. This is done with the momw-configurator tool. It will automatically make OpenMW aware of the directories, set the load order in accordance to the modlist specifications, and enable plugins that need to be enabled. You should not modify the enabled plugins of the modlist you install. If there are plugins left disabled, this is for a good reason. Obviously, if you install your own mods on top of the list you are heading outside of supported territory and must know what you are doing.
    The configuration process is as simple as opening your terminal and running the command momw-configurator-linux-amd64 config i-heart-vanilla --run-navmeshtool --run-validator --verbose for the 0.49 release version. If you are on the dev build, currently 0.50, you should run momw-configurator-linux-amd64 config i-heart-vanilla --run-navmeshtool --run-validator --verbose --dev instead.
    At this point the configurator may ask you to enter the location of the openmw-iniimporter utility as well as the openmw-navmeshtool utility. If installed via your package manager, these should be found automatically. If in a directory inside your PATH, they should also be found automatically. If they are not found automatically, you will need to find where you have put them for your build of OpenMW and manually direct the tool to them.
    A step the official guide appears to be missing is running the tool s3lightfixes to generate a .omwaddon file called S3LightFixes.omwaddon. Simply run the s3lightfixes command in your terminal, and it will output this file in your home directory. Once generated, you can simply move it into the modlist directory and once the configurator asks you to specify its directory, you input the modlist directory. For example, I moved it into ~/.mods/i-heart-vanilla so I would specify that directory as the location of the file.
The process of configuring the modlist can take quite some time, and is lengthened by the inclusion of the navmesh generation. If you are on a slower computer that is taking far longer than you would find acceptable to generate the navmesh, you can remove teh —run-navmeshtool flag from the configuration command. Keep in mind that this will have performance implications, especially on load times in-game.
    If something occurs to stop the configuration, it can be resumed in-place by using the momw-configurator-linux-amd64 setup command.
At this point, you are essentially done with the setup! Congratulations! You can hop in and play now, or you can continue tinkering with options made available to you by the OpenMW game engine in its launcher.
Optional Game Configurations
    Before we get into actually changing any of the settings in the launcher, we first should make clear some caveats. If you change any settings in the launcher, ensure you are not simultaneously modifying the settings.cfg file for OpenMW simultaneously. The same applies in the opposite direction,if editing the settings.cfg file you should not have the launcher open. This can cause problems with the MOMW Configurator's changes, and may lead to situations where changes made in the file directly are not reflected or preserved in the launcher.
The official guide for the MOMW Tools recommends that you read the official documentation for OpenMW, as well as the MOMW's own Getting Started: Tweak Settings pages. These are great starting points to get a feeling for what settings are available to you, and what you may want to consider changing. They additionally note that you can re-run the MOMW Configurator to reapply all default values, meaning any changes made are reversable to sane defaults for the modlist. For the remainder of this section, I will be detailing my own personal choices made in each section of the launcher as well as why I personally made those choices.
Data Files
The first category of settings in the OpenMW Launcher is the Data Files page. This is a place where you can change load order, active mods, and even create your own lists of mods. You should not modify the load order or the active mods of the pre-made modlists unless you know what you are doing. With that said, the changes I make here are pretty simple. OpenMW will name each content list by the date it was created by default. I don't like this, and would rather my content list reflect the name of the mod list I am using. So, in the dropdown box at the bottom of the screen I simply select the modlist that was created by the MOMW Configurator and then delete the name, typing in “I-Heart-Vanilla”. These are the only changes I make here, and you should not need to make further changes unless you are specifying custom content to be added to your mod lists. In that case, you may want to go to the “Data Directories” sub-category, make a folder for your own custom additions somewhere on your filesystem, and then point the OpenMW Launcher to that directory.
Display
This category gives you some very basic display options, you should set them as you see fit but for an example of my configuration it is as follows:
Window Border is Enabled
Framerate Limit is enabled and set to 144, as I use a 144Hz monitor. It defaults to 300, but the game engine is still heavily limited in multi-core utilization at the moment so it will swing quite wildly. I advise putting it closer to your desired average framerate to prevent some stuttering (although you will still see some, it is the nature of the game and the current iteration of the OpenMW engine)
Vertical Synchronization is enabled. You can turn this off if you don't mind screen tearing, or otherwise limit your FPS in a way to prevent tearing. I had it enabled in an attempt to reduce some of the occasional stutters, but was fruitless so this may change in the future.
Window Mode is set to Windowed Fullscreen. I stream, I record videos, I like to be able to alt-tab without the window freaking out when I try to go back into the game. Exclusive Fullscreen is the better option if you have your attention solely on the game and don't need/want to interact with other windows, but for me this is my go-to for all games.
Anti-Aliasing is set to 0. You can enable this, it goes up to 16x. I just don't see a point in enabling it unless you are heavily modding the game, as aliasing is fairly minor in the vast majority of this game due to the low detail of the graphics.
Screen is set to Screen 1 and Standard Resolution. Set this as you see fit for your preferences and display.
Although this is the end of the “Display” section, this is not where visual tweaking ends. For that, we will address some in the next section as well as in-game when we finally launch the game.
Settings
This category is where the bulk of the changes to OpenMW can be made, and you should take your time going through this and deciding for yourself what changes you want to make and what you value. This category is split into several sub-categories that we will tackle one at a time. I am going to detail what settings I am using, and why. These are not recommendations, and you should feel free to tweak these to your wants and needs.
Gameplay
These are settings that affect some of the mechanics of the game. These are heavily preference based, and the defaults are a good starting point. I have the following settings enabled:
Steal from Knocked out Actors in Combat – Why wouldn't you be able to steal from someone unconscious?
Always Allow Actors to Follow over Water – Default setting, likely fixes pathfinding issues
Permanent Barter Disposition Changes – In the vanilla game, you can spam trade attempts until you either succeed or get the merchant to 0 disposition and then when you close the dialogue window and talk to them again, their disposition is back to what it initially was. This fixes that, and prevents some cheesing of easy early game money.
Use Navigation Mesh for Pathfinding – Another default option, affects how the AI is aware of the world around them. I would only disable on low spec machines, or for closer to classic gameplay reasons.
Followers Defend Immediately – Fixes your followers just standing around waiting for someone to attack once combat starts. In the vanilla game, if someone initiates combat with you (or vice versa) but nobody has swung their sword the AI companions will act like nothing is happening. This makes the AI feel more aware and sentient.
Merchant Equipping Fix – In the vanilla game any item you sell to a merchant that is better than their current equipment will automatically be equipped by them. This leads to silly but annoying situations where by end game merchants will be wearing all daedric gear and similar. Merchants won't change with this enabled, but to me it is more immersive than the alternative.
Day Night Switch Nodes – Another default option, I just leave it as is.
Classic Reflected Absorb Spells Behavior – Restores the vanilla functionality of reflected absorb spells behavior
Can Loot During Death Animation – Allows you to loot corpses before they have finished falling to the ground. Maybe less immersive, certainly more convenient.
Enchanted Weapons Are Magical – Restores vanilla behavior around enchanted weapons. Some enchanted weapons may not be flagged as magical in OpenMW, which means they would miss targets like ghosts that are only affected by magic weapons. This makes that no longer the case.
Classic Calm Spells Behavior – Restores vanilla functionality around the calm spell, stopping NPCs affected by the spell every frame. Disabling it mimics the old Morrowind Code Patch, and may be more balanced than vanilla.
Swim Upward Correction – Makes it so that in third person your character keeps their head above the water when you are swimming at the surface. In vanilla, it is quite clunky to swim just on the surface of the water in third person.
NPCs Avoid Collisions – Modifies NPC pathfinding behavior to prevent them from colliding with one another. They may still bump into each other once in a while, but it should be significantly less than vanilla.
Graphic Herbalism – Allows you to pick supported plants without opening a menu when activating the plant. This mod is included in the I Heart Vanilla list, so I enable this.
Factor Strength into Hand-to-Hand Combat: Affect Werewolves – Self-explanatory, in vanilla the value of your Strength does not affect damage dealt in Hand-to-Hand combat. This fixes that, and makes it apply to werewolves as well. Might be unbalanced for werewolves.
Background Physics Threads: 1 – OpenMW can use more than one thread for this, but it seems to not really affect anything. I leave it default.
Actor Collision Shape Type: Axis-Aligned Bounding Box – Default collision shape, I see no reason to change it.
Visuals
This section affects the rendering and animations of the game and has several sub-categories of its own. We will break them down by page.
Animations
The following are enabled in my launcher:
Player Movement Ignores Animation – Prevents camera sway during movement while in third person
Use Magic Item Animation – Uses casting animation for magic items, just like spells would. In vanilla magic items did not animate their casts.
Use Additional Animation Sources – Allows mods to load custom animations
Weapon Sheathing – If you install a mod to include sheathes and scabbards, this will allow them to render
Smooth Movement – Filters out the jittery movements the NPCs and player may make.
Turn to Movement Direction – When combined with the above setting, makes movement much smoother than vanilla and more realistic. Recommended to enable if the above setting is on.
Smoth Animation Transitions – Makes animations lead into each other more smoothly, and is configurable with YAML modding.
Shield Sheathing – If you install mods to keep your shield on your character model, this setting enables that to be rendered.
Shaders
The following are enabled in my launcher:
Bump/Reflect Map Local Lighting – Fixes objects with Bump/Reflect maps glowing in the dark. Uses shaders to fix affected objects.
Weather Particle Occlusion – Makes it so particles will no longer fall through roofs and other solid objects
Soft Particles – Changes how particles are rendered to make them softer.
Adjust Coverage for Alpha Test – Default setting, affected by mods
Use Anti-Aliased Alpha Testing – Allows Alpha Tested meshes to use MSAA.
Fog
Under normal circumstances I would modify these settings, for the purposes of this playthrough and guide I left them default which should more closely mimic vanilla Morrowind.
Terrain
These settings will allow you to enable distant land and change the view distance past vanilla Morrowind's limited 0.875 cells limit. I left these vanilla, for that vanilla vibe.
Post Processing
I enabled Post Processing to allow me to change the gamma in-game, as the game appears a bit darker than I would like on my current monitor. Gamma is hidden behind post-processing currently, and you can also use this option to enable other modded post process effects, such as the included bloom. Transparent Postpass and Auto Exposure Speed I left to default.
Shadows
The following are enabled in my launcher:
Enable Player Shadows
Enable Actor Shadows
Enable Object Shadows
Enable Indoor Shadows
Enable Terrain Shadows
Shadow Planes Computation Method: Bounds
Shadow Map Resolution: 1024
Shadow Distance Limit: 8192 Units
Fade Start Multiplier: 0.90
This enables all types of shadowing in my game while keeping them looking close to vanilla detail.
Lighting
I have the Lighting Method set to Shaders, as I have a modern mid-range GPU that is fully capable of running these. On older or weaker devices, Legacy mode or shaders(compat) mode may be necessary.
Audio
I have changed none of these settings, but if you have interest in having 3D audio you can modify the settings here to enable HRTF and tweak it to your preferences.
Interface
I have left these vanilla as well, but if you are new to Morrowind there are some nice QOL things in here. Additionally, if you have a monitor above 1080p, you may be interested in the GUI Scaling Factor and Font Size options. I would recommend the following settings:
Show Owned objects – On (if you are new to the game)
GUI Scaling Factor – 1.25 at 1080p for closer to vanilla feel
Font Size – 16 or if you are struggling with the default font, increase up to somewhere around 18-20
Change Dialogue Topic Color – Should be enabled by default, but keep this on
Can Zoom on Maps – On – Allows you to get a better idea of what you're looking at on the maps in your player menu.
Stretch Menu Background – Disable this to keep the original aspect ratio of the artwork. No idea why this is default.
Enable Controller Menus – On (if you are using a controller)
Show Controller Tooltips By Default – On (if you are using a controller)
Miscellaneous
Here you can change the number of maximum quicksaves (I suggest 5) and the format of screenshots taken by the game (PNG is default) and whether you wish to be notified of screenshots being saved.
Testing
The only option here I suggest changing (unless you are using an experimental modlist) is “Grab Cursor.” This functionality may cause some bugs in certain situations, but prevents your mouse from leaving the game window in multi-monitor setups.
In-Game
Keeping in mind that I am on Arch Linux and my package is therefore newer than most distros, I am on Release 0.50 currently. This is a release candidate build which means that there may be some differences in the options available to me as compared to the builds in your repos.
After we start the game we immediately want to head into the Options menu before even starting a new save. A majority of the settings in this menu are very much personal preference and familiarity, but I will detail by category what I chose for my setup.
Prefs
Menu Transparency – Left it at default. You can make it not transparent or fully transparent, but I llike how vanilla Morrowind does it.
Menu Help Delay – Left at the default (fastest speed) as I do not like delay on my tooltips
Difficulty – 0 is the most balanced starting point. You can read on how dificulty works in Morrowind here but a TLDR is that the slider determines how much damage you do to enemies, how much damage enemies do to you, and other RNG manipulations. If you are absolutely lost and unsure how to play, -100 makes the game almost entirely peaceful to play even with your skills untrained.
Actors Processing Range – Far (7168). This is the maximum currently allowed in-game. This setting determines the distance at which actors will animate and path around. While you can increase the game rendering above this value, it is very rare you will be observing NPCs from further than this. Modifying this in settings.cfg may be possible, but may not have an effect past this value.
Auto-Save when Rest – On. Creates an autosave when you use the rest command or sleep in a bed.
Always Use Best Attack – Off. Although if you want to meta-game, turning this on is better. I personally like having the option of attacking in different ways by changing the movements my character is making. This option disables that mechanic, and always uses the strongest attack type your weapon has.
Subtitles – On. I'm hard of hearing.
Crosshair – On. This isn't Skyrim, the crosshair is pretty damn necessary for picking up some of the games smaller items.
Audio
This is heavily preferrential so I won't dive into my settings, but I suggest increasing the Voice volume and decreasing footsteps volume. Voices I max out, footsteps I keep around 20% or so, and then Music I keep around or below 50% as some of it is quite loud.
Controls
This is again heavily preferrential, my personal changes are that I lower the sensitivity from the default and I swap the “Always Run” button to Shift because I disable my Caps Lock key entirely, and I hate holding Run to move fast. If you have a controller, there is an additional sub-category you can use to bind your controls there.
Video
More video settings! A lot of these are identical to the Launcher, I will only document the changes made that are not in the Launcher. Note that some of these changes are under sub-categories themselves.
Field of View set to 85
Texture Filtering – Trilinear. This is under Detail Level.
Anisotrophy – 16. This is under Detail Level.
Water shader – On. This is under Water.
Refraction – On. This is under Water.
Sunlight Scattering – On. this is under Water.
Wobbly Shores – On. This is under Water.
Texture Quality – High. This is under Water.
Reflection Shader Detail – World. This is under Water.
Rain Ripple Detail – Sparse. This is under Water.
Max Lights – 64. This is under Lights.
Maximum Light Distance – 8192. This is under Lights.
Scripts
Currently I am using none of the changes available here, however I recommend reading through each of these scripts and deciding for yourself what features to enable. If you like playing in third person, I suggest the Camera script especially as it allows you to have a more modern camera system in third person.
Language
Here you can configure primary and secondary languages. I only speak English, so that is what I have set.
Starting a New Game!
Whew, we're finally to the point where we can return to the main menu proper and click new! You'll have a cutscene to sit through, and then some dialogue. A guard will soon approach and ask you to follow him off the boat. At this point, you can sit down and just play. However, you may be questioning something that I mentioned earlier. Gamma. Where do you change that? Well, at the time of writing this Gamma and other Post Process effects are hidden away under a secret menu bound to F2. Once you are in-game, press F2 and the Post Processor HUD will pop up. Here you can see and activate any and all shaders included with OpenMW, or others you may have installed with mods. Activate the adjustments shader, and change the gamma there until the indoor lighting of the ship is comfortable for you. I have mine set to 1.300 at the time of writing. Contrast can also be adjusted here, though I didn't find a need to on my display. Additionally, you can enable bloom if that is your thing with the bloomlinear shader. Beyond this, you are ready to settle in and play Morrowind. If this is your first time, maybe watch some guide videos or read the UESP's Starting Out page for some beginner's tips.
Conclusion
Whew, that was a ot. Over 5,000 words, in fact. This is something I chose to write very spur of the moment, and made sure to walk myself through it step by step as I wrote to verify I wasn't forgetting anything. If I have forgotten something, if there are issues with the formatting, or if there is a detail you would like me to include you can contact me on the Fediverse! My signature to each post will explain how to do this.
While this was a lengthy article and may make the process seem complicated, it is only because I broke things down step by step and included more than necessary detail in hopes that this would be a valuable contribution to the Elder Scrolls community and those with less technical knowledge who find themselves on Linux. There's definitely areas this guide could improve, such as being re-written to be distro specific. I don't have the time, nor the energy to do that, so if you want to adapt this to a distro-specific guide (or Flatpak specific guide!) feel free, and if you see fit to credit me it is appreciated! I'm a huge fan of The Elder Scrolls 3 Morrowind and I've wanted to contribute something to its community for quite some time. Maybe this passionately written article will be the spark that drives me to learning to mod. After all, I did make a simple beast race patch with the OpenMW Content Editor to allow Khajiit and Argonians to wear shoes