Skip to content
Limo edited this page Sep 20, 2024 · 7 revisions

Limo tutorial

This is a short introduction to Limo which demonstrates some of the core features by going over an example setup for the game Skyrim.

Adding a new application

On first launch you will be created with a dialog for adding a new target application to Limo.

Here you can enter some information about the application you wish to mod:

  • Name (mandatory): An arbitrary name used to identify the application.
  • Version: While this is optional, the value you enter here will be used by the FOMOD dialog to automatically select some options during installation. You can always changes these selections during the mod installation if you wish.
  • Icon path: This icon will be shown next to the apps name in Limo.
  • Staging directory (mandatory): When installing a mod with Limo it is first stored in the so called staging directory. This must NOT be part of the app you wish to mod. When you later deploy your installed mods, Limo creates hard links for every mod file in the target app directory in order to preserve disk space. While you can optionally chose to deploy mods by copy, it is highly recommended you do not do so. Since hard links can only be created for files on the same partition, you should chose a staging directory on the partition that contains your target app.
  • Command: This is used to launch your application from within Limo.

If the app you wish to mod is a game currently installed through Steam, you can click Import from Steam to select your game and have some of these fields filled in for you. As Skyrim is such a game, this function will be used here. After importing a game from Steam, a new checkbox Import deployers appears. This option will create some default deployers for the game: One targeting the installation directory and one targeting the games prefix.

Update: From version 1.0.7 onward, Import from Steam will now automatically set up all necessary deployers for Skyrim automatically. This means you do not have to follow the steps in the Setting up deployers section. Reading it may still help you understand how Limo works.

Once you are done with the dialog, the new app is created and the main window will show. Here you will find 4 tabs:

App

This tab gives an overview of the application, including how many mods are currently installed and which deployers you have created. You may also add a number of tools, which are simply named commands, in the Tools widget. For this tutorial, a tool named protontricks with the command protontricks 489830 --gui has been added as an example. All tools can be launched from within Limo with the button next to their name. Their output will be written to Limo's log (accessible through the Log button in the bottom right corner).

Note: Due to sandboxing restrictions, the flatpak version of Limo only supports running a single command per tool. So the command

cd /tmp && ls -al

will not work in the flatpak version. If you want to run a command in a specific directory in the flatpak version, you can replace a cd command with --directory=PATH like so:

--directory=/tmp ls -al

Alternatively, create a script file containing all commands and then enter the path to that script in the tool's command field.

Mods

All the mods you have installed for this app will be listed here. This view can be used to edit, remove or filter your installed mods.

Deployers

In order to use an installed mod in your application, it first has to be hard linked or copied from the staging directory to the apps installation directory. This is done by a number of deployers, each of which manages its own load order of mods and has a seperate directory to which mods will be deployed. You can add, remove and edit them as well as their load order in this tab.

Backups

Some mods may have side effects, such as additional files created after launch or modified save file, which cannot be undone by simply removing all deployed mods. For this case Limo offers a simple backup system. In this tab you can add backup targets (a directory or a file) and for each of them however many named backups as you need. When you create a new backup for an existing target, Limo copies that directory or file and places it with a different name in the same parent directory. Once that is done, you can select which version of the backup target is active (i.e has the name of the original file or directory) through a drop down menu in the Backup column.

Setting up deployers

Now that the new application has been created, it is time to tell Limo where the installed mods should be deployed to. As described above, this is done by so called deployers which are available in 3 different types:

  • Simple Deployer: Hard links or copies all mods in its load order to its target directory. Automatically creates backups of original files when they would be overwritten and restores the backups if the overwriting mod is removed.
  • Case Matching Deployer: Performs the same functions as the Simple Deployer with an additional step before the deployment: Adapts the case of file and directory names to match the case of those in the target directory and of other mods. This solves the issue that mods created on Windows, which uses a case invariant file system, do not work on Linux if the mod author used the incorrect case for files or directories.
  • Loot Deployer: Some Bethesda games use plugins (usually with the file endings .esp / .esl / .esm) which have to be added to specific files in the game's prefix directory. The Loot Deployer does this automatically and additionally allows you to sort plugins through LOOT's masterlists and custom userlists. It also informs you about a plugins type and can check for conflicting records with other plugins.

For the Skyrim example, this tutorial will create 3 Deployers:

  • Data (Case Matching Deployer): This targets Skyrim's Data directory. Almost all of the mods for Skyrim, with the above mentioned exceptions, will be managed by this Deployer.
  • Bin (Case Matching Deployer): This targets Skyrim's installation directory (where SkyrimSE.exe is stored) and takes care of mods like SKSE and ENB.
  • Plugins (Loot Deployer): Since Skyrim uses Bethesda's plugin system, a Loot Deployer is required to manage them.

The following steps are needed to create these Deployers:

Data

If you imported Skyrim from Steam, a deployer by the name of Install already exists and can be edited. For this open the Deployers tab, select Install from the drop down menu and then click on Edit in the tool button next to the drop down menu.

If it does not exist yet, because the game was not imported from Steam, create a new deployer by clicking on the + button instead.
In either case, a new dialog will open.Simply change the name to Data (or any name you like) and change the Target directory to point to Skyrim's Data directory. If you imported the deployer you simply have to append Data to the current path, otherwise you will have to enter the entire path. Ensure that the type is set to Case Matching Deployer. Once you are done, click Ok.

Tip: Copy the target directory path to make the next steps easier.

Bin

This will be a new deployer, so click the + button next to the deployer selection box. Make sure you pick the directory containing SkyrimSE.exe as Target directory and chose the Case Matching Deployer to avoid issues with case mismatches in mod files.

Plugins

If you imported Skyrim from Steam, edit the existing Prefix deployer, else create a new one. Once you select Loot Deployer as a type, a new input field Source directory will appear. This path is used by the Loot Deployer to check for installed plugins, so in the case of Skyrim this has to point to the game's DATA directory. The target directory is where the respective game's plugins.txt and loadorder.txt files are stored. In Skyrim's case this is

<PATH_TO_STEAM>/steamapps/compatdata/489830/pfx/drive_c/users/steamuser/AppData/Local/Skyrim Special Edition/

(Optional) Setting up a NexusMods API key

To get an API key, you first have to create an account on the NexusMods website and then generate a new key through your account settings. Afterwards, open the Limo settings by clicking the button in the top right corner of the main window. The Set API key button in the NexusMods tab opens a dialog where the key can be entered. In order to protect your key Limo will encrypt it, for which you can optionally enter a password in the dialog. If you leave the password fields empty, the key will be encrypted with a default password, which has the advantage that you do not have to enter a password to access the API, but is less secure if someone gets access to your device.

Installing mods

Once you are done setting up deployers you can start installing some mods. Limo offers 2 methods of installing a new mod:

  1. Drag and drop archives or directories into the Mods or Deployers tab. This extract archives if needed and then imports the mod.
  2. Use Limo to download mods from the NexusMods website by clicking on the Mod Manager Download button on a mods page. This requires a valid NexusMods API key.

As an example, this guide will go over the installation process for SKSE, a requirement for many other Skyrim mods. Once you have downloaded the archive containing SKSE, simply drag and drop it into the Mods tab to open a dialog for installing new mods.

This dialog contains the following fields:

  • Name: A name used to identify the mod. By default this is set to the file name of the source archive. If you download a mod from NexusMods, Limo will try to extract name and version from the file name pattern automatically.
  • Version: The installed version of the mod, defaults to 1.0. It is good practice to enter the actual version here, if not automatically detected, to allow you to identify different versions of the same mod more easily.
  • Installer: Limo supports 2 different installer types. The best type is automatically detected for every mod, so you normally should not have to change this option.
    • Simple Installer: This installer simply extracts a mod's archive to the staging directory. When selecting this type, you can choose from a number of additional options below.
    • Fomod Installer: Some mods support the FOMOD format, which allows for additional options during the installation, like selecting patches for other mods or chosing alternative functionality. If the mod you are trying to install supports FOMOD, Limo will detect this and automatically select the appropriate installer for you. Once you click on Ok, a new dialog will open that allows you to chose between these options. Note: If you select the FOMOD installer, a option called Fomod target will appear. This lets you select a deployer, the target directory of which will be used to check for mod dependencies during the FOMOD dialog. For Skyrim, select your Data deployer.
  • Add to group/ Replace mod: If you want to add a new version of an already installed mod, or replace the existing one entirely, tick this checkbox and enter the name of the mod you wish to replace (or to which to add another version) into the field to the right. When choosing Replace mod, the old mod's files will be replaced with the newly installed ones while presersving the mod's place in the load orders of all deployers. If instead you chose Add to group, the new mod will be installed as a different version of the old mod and take its place in the load order. This allows to you easily swap between versions by clicking on the mods Version column in the Mods tab of the main window.
  • Options: There are currently 2 additional options available if you chose a Simple Installer:
    • Convert file names: This will convert the names of all files and directories to lower or upper case. Useful if you for some reason do not want to use a Case Matching Deployer. Choosing this while using one is pointless.
    • Root directory only: This will move all files from their subdirectories into a single directory. Useful for apps where you install all of your mods into an overwrite directory, like Star Wars: Knights of the Old Republic.
  • Root level: Some mods are packaged in a way that prevents them from being installed right away. The SKSE mod is one such example. All of its contents are in an additional directory called skse64_2_02_06. Were you to simply install the mod as it is right now, SKSE would not work, as you have to install the contents of that directory into Skyrim's installation directory. To speed up this process, you can have Limo do this for you by selecting how many path components you wish to remove. A root level of 0 removes nothing, a level of 1 removes the first component and so on. The tree view below allows you to preview which parts will be removed (shown in red) and which will be kept (shown in green).
  • Add to deployer: Here you can chose the deployers which will handle the new mod. You can always change this after the installation.
    Note: Loot Deployers will not be shown here since they manage only plugins, not mods.

To install SKSE, enter a name and the version you have downloaded. Since SKSE has to be installed into the directory containing SkyrimSE.exe, select the Bin deployer.

Important: Select a root level 1 to remove the skse64_2_02_06 directory or SKSE will not work.

After you click Ok, the mod is installed and added to the Bin deployer. You will notice that there are now 2 mods installed: One called SKSE and one called SKSE [Data]. This is because you just added a mod to the Bin deployer that contains files in the Data directory, which, in this case, is managed by Data deployer. Limo detected this and automatically split the mod into 2 parts: SKSE [Data] contains all files and directories in the mod's Data directory, while SKSE contains everything else.

Note: For SKSE to work, you have to use it's own executable instead of the one from Skyrim. Here is an easy way to do this:

  1. Right click on the SKSE mod (the one from the Bin deployer) and click on Browse Files
  2. Copy the file skse64_loader.exe and rename the copy to SkyrimSELauncher.exe

At this point you can either repeat this process for all other mods or, alternatively, you can download them directly through Limo by clicking on Mod Manager Download on a mod's NexusMods page when you have set an API key. For this tutorial, a few additional mods have been installed.

(Optional) Adding tags

While the number of mods installed for this tutorial is fairly low, keeping track of which mod does what in large mod lists can be difficult. To make this task a little easier, you can create tags which can then be assigned either manually or automatically to your mods. As an example, this tutorial will show you how to create a tag that will be automatically applied to all mods containing a plugin file (i.e. a file ending in .esp, .esl or .esm). To begin, open the filters panel by clicking on the Filters button in the top right corner while in the Mods tab. Then click on the Edit Auto Tags button.

This will open a dialog for editing auto tags. Add a new tag by clicking on the + icon in the top right corner and enter a name for your tag, in this case Plugin. This will create a new auto tag which now needs conditions for when it should be applied to a mod. You can add a new condition by clicking on the + icon on the left. Each condition is evaluated on all the files and directories of a mod in the following way:

  • Target: Controls if the condition should be applied to file name only or to the entire path including the file name (relative to the mod's root directory).
  • Invert: Used to invert the condition check.
  • Matcher: Controls how the search string should be compared to each file name or path.
    • String: Matches in a case insensitive way with the * character as a wildcard (i.e. a * matches 0 or more arbitrary characters). Examples: *.txt will match any .txt file. */images/*.png matches any .png file with an images directory in its path (assuming you are using the Full Path target).
    • Regex: Uses regular expressions for case sensitive matching. Example: .*\.es[plm] matches anything ending in .esp, .esl or .esm. To match all plugin files regardless of case (e.g. a file ending in .ESP), you can use this regex: .*\.[eE][sS][pPlLmM]
  • String: This is the string used for matching, like *.txt or .*\.es[plm] from the examples above.

You can also chose how multiple conditions will be combined:

  • ANY must match: Tag is assigned if at least one condition evaluates to true.
  • ALL must match: Tag is assigned only if all of the conditions evaluate to true.
  • Advanced: You can enter is simple boolean expression using the operators or, and, not to combine your conditions by their id. Example: If you have 3 conditions, then the expression (0 or 1) and not 2 will be true only if condition 2 is false and either condition 0 or condition 1 is true.

To keep things simple, this tutorial will add 3 conditions, one for each plugin file ending, and combine them with the ANY must match connection.

After closing the dialog by clicking Ok, the new tag will be applied to all mods for which the conditions are met (this may take a few seconds for large mod lists). You can now filter the mods to show only those that contain a plugin by clicking on the tag's checkbox in the filter panel. Note: When you manually change a mod's files, you might have to reapply the auto tags by either clicking on the Reapply Auto Tags button in the filter panel (which will reapply all auto tags for all mods) or by right clicking the mod and selecting Update Auto Tags.

Deploying mods and resolving conflicts

When installing mods you will inevitably run into conflicts, where either more than one mod is trying to overwrite the same file or mods are overwriting new files created by other mods. To view and resolve these conflicts, click on the Deployers tab and then select the Data deployer.

When you click on Deploy every deployer collects the files of all mods assigned to it in the order in which they are shown in this tab (this is the load order). Mods further down the list will overwrite mods higher up, if there are any conflicts. You can enable or disable a mod by clicking on the button in the first column (currently shows Enabled for all mods). So in this example the mod Apocalypse will overwrite SkyUI, should there be any conflicts between the two. If you wish to rearrange the load order, simply use drag and drop to move a mod around or right click on one and select Change Position to move it to a specific position.

Since only some of the installed mods will create conflicts, you only need to care about the position of those mods. In order to easily see those mods, they will be colored either orange or blue, while non conflicting mods will be white (or black when you are using a light theme). The screenshot in this example shows that the mod Community Shaders is orange and thus is creating a conflict. Note: Conflicts are only shown if the files of 2 mods match in a case sensitive way, meaning a mod with the file my_plugin.esp will initially not be shown to conflict with a mod containing the file my_Plugin.esp. This issue is resolved by a Case Matching Deployer during deployment. Once you click on Deploy this deployer type will adapt all mod file names and you will see conflicts between mods even if their file names previously did not match by case.

Since Data is a Case Matching Deployer, click on Deploy now to update all file names, making all conflicts visible.

In order to get a better overview of conflicts, you can right click on any mod and select Sort Mods. This will reorder your mod to show any conflicting mods at the top, grouped by their respective conflicts, and any non conflicting mods at the bottom. Sorting mods is safe and does NOT change which mods are winning conflicts. After sorting, the example load order looks like this:

As shown by the colors, Enhanced Lights and FX conflicts with ELFX Shadows, Community Shaders conflicts with Grass Lighting and Immersive Sounds - Compendium conflicts with Replace Nirnroot Sound with Wind Chimes, while mods like SkyUI currently have no conflicts. You can now resolve all existing conflicts by rearranging your load order using drag and drop and then click Deploy to apply them to Skyrim.

Notes

  • The first two orange mods do NOT conflict with the second group of orange mods, the colors are simply there to help differentiate groups. Mods are only in conflict with other mods of the same color when there is no mod of a different color between them.
  • Clicking Deploy will deploy mods for ALL deployers, not just the selected one. You can change this behavior in the settings.
  • Not every mod in a conflict group has to be in conflict with every other mod in that group at the same time. If, for example, mod A conflicts with mod B and B conflicts with C, then all are part of the same group even if A does not directly conflict with C. If you want to show all direct conflicts for a mod, right click it and select Show Mod Conflicts.

The Plugins deployer

Now that you have deployed your mods you could start the game. In the case of Skyrim, however, there is one more thing to take care of: The Plugins deployer. If you select it in the drop down menu, you will see a list of all plugin files currently in Skyrim's Data directory. You could now reorder them just like you did with the mods in the other deployer, but it is recommended you do not do this manually for Loot Deployers. Instead, you can let Limo automatically resolve conflicts with the Load Order Optimization Tool (LOOT) by right clicking any mod and selecting Sort Mods. Contrary to what happens when you do this in a Simply Deployer or a Case Matching Deployer, this DOES change which plugins win conflicts. LOOT sorts plugins according to an online masterlist where mod athors can register their plugins and decide how conflicts should be resolved. Limo will automatically download and update this masterlist for you and store it in the Loot Deployer's target directory as masterlist.yaml. If this download fails, you can try to change the download URL in the settings or manually download the file.

Should you wish to create custom rules for the sorting process, you can create a file called userlist.yaml in the directory that contains masterlist.yaml. These rules will be loaded after those in masterlist.yaml and have priority. Here is an example of a file that makes sure SkyUI_SE.esp is sorted after ELFX Shadows.esp (note that this is only an example and these plugins are not actually in conflict).

globals: []
plugins:
  - name: SkyUI_SE.esp
    after:
      - ELFX Shadows.esp
groups: []

For more information on how to create your own rules, visit the LOOT website.

Notes

  • Loot Deployers do NOT show conflicts with colors. To view all conflicts for a mod, right click on it and select Show Mod Conflicts.
  • Any changes (like reordering, sorting or enabling/ disabling a mod) in a Loot Deployer will take effect instantly, you do NOT have to click on Deploy. Deploying only checks the source directory and updates the list with all currently existing plugin files.
  • Tip: Games like Skyrim only support a maximum of 255 plugins that are not flagged as Light. To view how many of those plugins you currently have active, open the filters panel, click on the Active Mods checkbox and then click twice on the Light checkbox to filter them out.

Profiles

Profiles allow you to manage different mod setups for the same game without having to reinstall mods. A profile stores mod assignments to deployers and shares the installed mods with all other profiles for the same app. If you want the ability to quickly switch between the modded version and a vanilla version for an app, simply create a new profile and do not chose the Clone option. The new profile will have no mods assigned to any of the deployers. If you click Deploy while this profile is active, all mods will be removed from the application. To reapply all mods, simply switch to your Default profile and click Deploy again.

(Optional) Updating mods

Limo can check your installed mods for available updates on the NexusMods website, if you have set an API key. This only works if Limo knows the mod URL, which is always the case for mods downloaded directly through Limo. If you manually downloaded a mod, you can add its URL by right clicking the mod in the Mods tab and selecting Edit Sources and then placing the URL in the Remote source field. As an example for how a mod URL looks like, here is the one for SkyUI: https://www.nexusmods.com/skyrimspecialedition/mods/12604.

You can now either check all mods for available updates by clicking Check Mod Updates in the App tab or by selecting multiple mods (Shift or Ctrl + click) in the Mods tab, right clicking on them and then selecting Check For Updates. Any mod with available updates will now receive the [Has Updates] tag and will be shown in green, as seen below for Community Shaders.

If you want to check the changelog, description or available files for a mod without opening your browser, right click on it in the Mods tab and select Show Nexus Page.

You can also download files directly from the Files tab, but only if you are using an API key for a premium NexusMods account. This is an inherent restriction of the NexusMods API presumably meant to encourage users to upgrade to a paid account. Otherwise you can click on the Mod Manager Download Link to open the website for a specific file in your browser and then download the file through Limo as normal.

If you want to remove the [Has Updates] tag and the green coloring from a mod without actually updating it, right click on it in the Mods tab and select Suppress Update. This will ignore the current version of the mod during future update checks, but you will get a new notification when the mod receives another update.

If you have made it this far you should be familiar with the basics of Limo. Have fun modding!