Skip to content

david-torres/dml

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dml

dml is Detour's Mod Loader, a Linux-native XCOM 2 mod-launch workflow tool written in Go. Inspired by the classic XCOM 2 AML (Alternative Mod Launcher).

Today it can:

  • detect XCOM 2 / War of the Chosen install roots
  • detect workshop and local mod roots
  • enumerate and parse mods
  • normalize mod metadata into domain models
  • load, save, and validate profile state
  • resolve required dependencies from the scanned inventory and compute conflict warnings
  • generate launch plans and doctor diagnostics
  • apply config changes with rollback manifests
  • launch the game directly or hand control back to Steam through a launch-options wrapper
  • expose the core through a CLI and a minimal terminal UI

Install

For a local user-scoped install:

make install PREFIX=$HOME/.local

For a direct source install from the public module path:

go install github.com/david-torres/dml/cmd/dml@latest

For a local release archive build:

make dist VERSION=v0.1.0

That produces versioned Linux amd64 and arm64 tarballs plus sha256 checksum files under dist/.

Most Common Workflow

If you are an XCOM 2 player on Linux and just want your mods to load:

  1. Install dml.
go install github.com/david-torres/dml/cmd/dml@latest
  1. Check that dml can see your game install and workshop content.
dml detect
dml scan
  1. Import the mods you already have enabled in XCOM 2 into a launcher-owned profile.

For War of the Chosen with Proton:

dml profiles import-active --name "My WOTC" --game wotc --runtime proton

If you already have a saved dml profile, refresh it from your current live ActiveMods instead:

dml profiles import-active --profile ~/.config/dml/profiles/my-wotc.json
  1. Ask dml for the Steam launch-options wrapper for that profile.
dml steam launch-options --profile ~/.config/dml/profiles/my-wotc.json
  1. Paste the emitted value into Steam:
  • open Steam
  • right-click XCOM 2
  • open Properties
  • paste the value into Launch Options
  1. Sanity-check the profile before you launch.
dml doctor --profile ~/.config/dml/profiles/my-wotc.json
  1. Launch XCOM 2 from Steam as usual.

Steam will call back into dml, dml will apply the selected profile's config and mod state, and then Steam will run the normal XCOM 2 command.

If you want to manage the profile interactively instead of staying in the CLI, run:

dml tui

Build

go build ./...
make build

CLI Reference

dml help
dml version
dml detect
dml scan --json
dml profiles list
dml profiles import-active --name "My WOTC" --game wotc --runtime proton
dml doctor --profile ~/.config/dml/profiles/my-wotc.json
dml steam launch-options --profile ~/.config/dml/profiles/my-wotc.json
dml tui

Full command behavior and examples live in docs/commands.md.

TUI Controls

  • 1 / 2 / 3: switch between the Mods, Diagnostics, and Profiles workspaces
  • tab / shift+tab: move focus within the active workspace
  • j / k or arrow keys: move in the focused list or viewport
  • /: start editing the mod search query
  • f / F: cycle the mod inventory filter forward or backward
  • space: toggle the selected mod in the current profile using dependency-tree semantics
  • e / d: explicitly enable or disable the selected mod in the current profile
  • t / T: switch the inspector subview between details, config, dependencies, conflicts, and warnings
  • c: refresh the selected mod's discovered Config/*.ini files in the inspector
  • [ / ]: move between discovered mod config files in the inspector
  • s: save the selected config file's current disk content as a launcher-owned override
  • o: apply the saved override for the selected config file onto disk
  • u: remove the saved override for the selected config file
  • b: roll back the last mod-config save/apply/remove manifest from the inspector
  • n: create a new launcher-owned profile from the profiles workspace
  • I: import live ActiveMods into a newly named launcher-owned profile
  • i: refresh the selected profile from live ActiveMods
  • x: delete the selected profile, with a second press to confirm
  • enter: submit a profile prompt, or load the selected profile when no prompt is active
  • g: refresh doctor diagnostics for the selected profile
  • p: refresh the selected profile plan preview
  • a: apply config for the selected profile
  • l: launch the selected profile
  • esc: cancel a profile prompt, stop editing search, or clear the current search query from the mod panel
  • r: reload dashboard data
  • q: quit

Test

go test ./...
make test

Open-source Distribution Notes

  • The public module path is github.com/david-torres/dml.
  • The project is licensed under MIT; see LICENSE.
  • dml version prints embedded build metadata so packaged binaries can be identified reliably.
  • Command docs live in docs/commands.md.
  • Release workflow details live in docs/releasing.md.

About

dml - Detour's Mod Loader, a Linux-native XCOM 2 / WoTC mod loader

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages