this post was submitted on 25 Jun 2025
71 points (97.3% liked)

Linux

55874 readers
790 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 6 years ago
MODERATORS
 

I've finally started having some free time lately and have been working through my Steam library, most of which is Windows games I'm playing with Proton.

I wanted to install some mods, and wanted a mod manager for this. Nexus Mods has Vortex, which is not available for Linux. In any case, running Windows games on Linux through Proton on Steam is fairly specific; the game files will be at certain locations on a Linux filesystem, not at the same locations as they would be on a Windows filesystem. So I think I would need software that has specifically been designed for this use-case (Windows games from Steam running on Proton).

Are there any such mod managers out there? What do other people do when playing games on Linux? I can't be the only person who wants to play video games with mods.

you are viewing a single comment's thread
view the rest of the comments
[–] Lucki@feddit.org 17 points 5 days ago (1 children)

I've built my own folder based mod-manager: https://github.com/Lucki/mod-manager

It's using OverlayFs to lay mods on top of the game files which allows for easy switch-arounds of mod sets while keeping each mod separated in their own folder. It's based upon config files and allows to freely collect mods in sets, even nested.

It's probably full of unnoticed bugs because I'm the only one using it, but it works 🤷 I do have a bunch of convenience stuff queued up locally though. They need a bit of polishing but soon it's ready for another push.

[–] exu@feditown.com 2 points 5 days ago (1 children)

That sound interesting. Any examples of games where you're using this?

[–] Lucki@feddit.org 3 points 5 days ago* (last edited 5 days ago)

I tested in these games - ls -1 "$XDG_CONFIG_HOME/mod-manager":

  • Bloodstained: Ritual of the Night.toml
  • Cyberpunk 2077.toml
  • FlatOut 2.toml
  • Gotham Knights.toml
  • Grand Theft Auto: San Andreas.toml
  • Ready Or Not.toml
  • Stellar Blade.toml
  • The Witcher 3.toml

cat "$XDG_CONFIG_HOME/mod-manager/Gotham Knights.toml"

active = "my"

[my]
mods = [
    "nocape",
    "upscaler",
]

[upscaler]
# https://github.com/cdozdil/OptiScaler
# v0.7.7-pre9
mods = ["OptiScaler"]
[upscaler.environment]
WINEDLLOVERRIDES = "version=n,b"

[nocape]
mods = [
    # https://www.nexusmods.com/gothamknights/mods/330
    "BatGirl Cape Off",
]

tree "/mnt/games/mod-manager/Gotham Knights/"

/mnt/games/mod-manager/Gotham Knights/
├── BatGirl Cape Off
│   └── Mercury
│       └── Content
│           └── Paks
│               └── ~mods
│                   ├── BatGirl_Cape_OFF_Demon_26_P.pak
│                   ├── BatGirl_Cape_OFF_Demon_26_P.ucas
│                   ├── BatGirl_Cape_OFF_Demon_26_P.utoc
│                   ├── BatGirl_Cape_OFF_Eternal_13_P.pak
│                   ├── BatGirl_Cape_OFF_Eternal_13_P.ucas
│                   ├── BatGirl_Cape_OFF_Eternal_13_P.utoc
│                   ├── BatGirl_Cape_OFF_KnightOps_41_P.pak
│                   ├── BatGirl_Cape_OFF_KnightOps_41_P.ucas
│                   ├── BatGirl_Cape_OFF_KnightOps_41_P.utoc
│                   ├── BatGirl_Cape_OFF_Metal_36_P.pak
│                   ├── BatGirl_Cape_OFF_Metal_36_P.ucas
│                   ├── BatGirl_Cape_OFF_Metal_36_P.utoc
│                   ├── BatGirl_Cape_OFF_NeonNoir_22_P.pak
│                   ├── BatGirl_Cape_OFF_NeonNoir_22_P.ucas
│                   ├── BatGirl_Cape_OFF_NeonNoir_22_P.utoc
│                   ├── BatGirl_Cape_OFF_NewGuard_5_P.pak
│                   ├── BatGirl_Cape_OFF_NewGuard_5_P.ucas
│                   ├── BatGirl_Cape_OFF_NewGuard_5_P.utoc
│                   ├── BatGirl_Cape_OFF_Privateer_31_P.pak
│                   ├── BatGirl_Cape_OFF_Privateer_31_P.ucas
│                   ├── BatGirl_Cape_OFF_Privateer_31_P.utoc
│                   ├── BatGirl_Cape_OFF_Shinobi_46_P.pak
│                   ├── BatGirl_Cape_OFF_Shinobi_46_P.ucas
│                   ├── BatGirl_Cape_OFF_Shinobi_46_P.utoc
│                   ├── BatGirl_Cape_OFF_Titan_9_P.pak
│                   ├── BatGirl_Cape_OFF_Titan_9_P.ucas
│                   ├── BatGirl_Cape_OFF_Titan_9_P.utoc
│                   ├── BatGirl_Cape_OFF_YearOne_18_P.pak
│                   ├── BatGirl_Cape_OFF_YearOne_18_P.ucas
│                   └── BatGirl_Cape_OFF_YearOne_18_P.utoc
└── OptiScaler
    └── Mercury
        └── Binaries
            └── Win64
                ├── amd_fidelityfx_dx12.dll
                ├── amd_fidelityfx_vk.dll
                ├── D3D12_Optiscaler
                │   └── D3D12Core.dll
                ├── libxess.dll
                ├── libxess_dx11.dll
                ├── nvngx.dll
                ├── OptiScaler.ini
                └── version.dll

No idea why that tree is broken in monospace - it works in the preview, sorry!