2026-03-12T02:56:08 So, in a Linux environment I got really tired of trying to figure out what folders I needed to include for my customization, so here's a little kind of complicated one-liner script I wrote up. It'd probably be pretty easy to do in PowerShell too. find "$PWD" -type d \( -name "scripts" -o -name "meshes" -o -name "textures" -o -name "l10n" \) -printf '%h\n' | sort -u | awk 'BEGIN {FS="/"} {if (!p || index($0, p) != 1) {p=$0; 2026-03-12T02:56:08 print}}' It finds and prints the absolute path of all directories under a folder which contain at least one folder named scripts, meshes, textures, or l10n. Technically it won't work if a mod is literally nothing but an ESP file but I haven't really been installing a lot of those. 2026-03-12T02:57:45 The important part for me because I'm custom editing these into a TOML file is the awk at the end, really. It checks each consecutive line to make sure it doesn't contain the previous line, so it will only print one entry per folder with valid game content in it, and not all the subdirectories. 2026-03-12T05:02:12 Apparently this has some flaws. It's not case insensitive so it misses some mods that have Meshes or Textures instead of meshes or textures, it doesn't catch icon mods, and while I don't have a lot of mods with exclusively an ESP or ESM in them, I do have a number that include more assets but bundle them in separate folders from the ESPs. 2026-03-12T05:12:51 Hm. 2026-03-12T05:12:56 I smell a feature. 2026-03-12T05:20:53 I'm working on a pair of shell scripts for it now. One will identify all the appropriate/valid folders to put in to your TOML and you just have to curate it to remove ones that are inappropriate because obviously you don't always want to run 100% of the mod 2026-03-12T05:21:24 The second one takes that curated output as a text file and then will list all the omwscript, omwaddon, esm, and esp files in there 2026-03-12T05:44:04 Yeah, we can make vfstool do that. 2026-03-12T05:44:07 I like that idea. 2026-03-12T05:44:15 Have needed mod auto detection for a while. 2026-03-12T05:45:19 Honestly, it's really easy to make a default "throw all this crap on to the end of the list" After rule for folders and relevant files. So long as you're not installing anything which has a complex load order relationship with other stuff it's fine 🤷 2026-03-12T05:47:28 Really, if I could have one feature for the TOML replacements, I just wish I could do like... [[Customizations.replace]] source1 = "Mod" source2 = "ModFile.esp" source3 = "ModFile.omwscript" dest1 = "/full/path/to/replacement/mod" dest2 = "NewMod.omwscript" 2026-03-12T05:47:59 It just looks really clumsy when fully replacing one mod with a few different files or folders in it is like four consecutive Replace operations. 2026-03-12T05:54:58 Have you tried umos built in generate customizations? I don't remember how far along it's gotten so I couldn't say but figured I'd mention that it does have a feature similar to what your talking about. 2026-03-12T05:55:30 https://modding-openmw.gitlab.io/umo/#umo-list 2026-03-12T05:57:12 Oh, yeah, that too. 2026-03-12T06:03:25 Can we leverage vfs tool to implement something similar to that m02 thing where you can see single files and every path that includes those single files. While I prefer validator anyway this and like maybe having overwrite folders per modlist are only things I can think of from m02 that could really help skeleton key adoption. 2026-03-12T06:03:30 Hah, I'd never even heard of it. Might be worth checking out for sure, though at this point I've messed with my customization file enough I'm fine just workign with it on my own. 2026-03-12T06:04:18 Maybe header files too but things aren't really organized like that anyway. 2026-03-12T06:04:42 I really wish I could search data files in the launcher 😅 2026-03-12T06:06:07 Openmw launcher? While it would be nice we still don't even have groundcover support. Despite multiple other launchers including a simple version most seem happy about. :vehkfeels: 2026-03-12T06:06:45 I don't even know wtf "groundcover" is and at this point I'm not afraid to ask, I'm spitefully and resentfully resisting the urge to ask or learn, because I exclusively see it in the context of people bitching about it like it's the most important thing ever. 2026-03-12T06:07:14 There are objects in the game. You put em in a separate load order. Grass go brr. 2026-03-12T06:07:18 "My groundcover is broken! Dishonor upon you! Dishonor upon your family! Dishonor upon your cow!" 2026-03-12T06:08:10 Groundcover gets broken because nobody understands how to leverage the esm esp system despite the original CS using it so almost every mod is setup in some terrible way. 2026-03-12T06:08:30 Uh.... That might already be a thing. I'm unsure if I fully understand what you're describing, but, hang on a second. 2026-03-12T06:08:41 Well, there hare been some very incorrect assumptions about how the hell ESMs and ESPs interact running around in the community for... *checks notes* thirty years, so 2026-03-12T06:11:49 Everybody ships groundcover backwards. The files should be .esm files and the patches should be .esp and simply remove conflicting groundcover from landscape edits. Your not gonna miss a few references when there's hundreds of thousands. The way they have it setup is you need to edit the esp for your mod and every single other mod and have these crazy giant patches. The alternative is too use mesh generator and make a new 2026-03-12T06:11:50 one based on your specific load order but random mod users will not do this. 2026-03-12T06:12:34 When I made it, I was imagining this concepr, right, so you can use remaining, to do that: sh 1:10:47 s3kshun8@UNDEAD-ASYLUM openmw-20260307-4a3505ec7029251cc8fdaa1c7f8b4d65250bece7-Linux-64Bit/openmw-20260307-4a3505ec7029251cc8fdaa1c7f8b4d65250bece7-Linux-64Bit √ % vfstool remaining -r "/home/s3kshun8/.config/openmw/Mods/engineFeatures/GraphicHerbalismMWSEandOpenMWEdition/00 Core + Vanilla Meshes/" -o replacing.yaml 1:11:26 2026-03-12T06:12:34 s3kshun8@UNDEAD-ASYLUM openmw-20260307-4a3505ec7029251cc8fdaa1c7f8b4d65250bece7-Linux-64Bit/openmw-20260307-4a3505ec7029251cc8fdaa1c7f8b4d65250bece7-Linux-64Bit √ % vfstool remaining "/home/s3kshun8/.config/openmw/Mods/engineFeatures/GraphicHerbalismMWSEandOpenMWEdition/00 Core + Vanilla Meshes/" -o remaining.yaml 2026-03-12T06:12:35 https://cdn.discordapp.com/attachments/1315324617107443712/1481535353809666068/remaining.yaml?ex=69b3aad1&is=69b25951&hm=7bfa1b9c70672857661e780c63d66c0ce4165a7bb0a1b4a07eb480fc4032a672& 2026-03-12T06:12:35 https://cdn.discordapp.com/attachments/1315324617107443712/1481535354690605177/replacing.yaml?ex=69b3aad2&is=69b25952&hm=786efdb4e5efcb4676ebef94339d9019d4abbc8b894310bb0599ec4ed5b11ab1& 2026-03-12T06:13:24 So the idea was like you'd shell out to it and immediately deserialize the output into UI elements 2026-03-12T06:13:38 Will tag @duron27 2026-03-12T06:13:46 I know you were asking for some feedback 2026-03-12T06:13:47 he's seen this like 15 times 2026-03-12T06:13:52 Oh lol 2026-03-12T06:13:58 Well it seemed important anyway 2026-03-12T06:14:01 It is 😄 2026-03-12T06:14:10 arguably collapse is more important function 2026-03-12T06:14:21 I be modding Oblivion with my openmw-launcher setup :todd: 2026-03-12T06:14:31 but remaining is pretty useful I think 2026-03-12T06:14:41 The entire app is mostly designed for us to debug lists with 2026-03-12T06:14:46 and also bridge with launchers 2026-03-12T06:15:44 hm. 2026-03-12T06:15:48 I'll need to look it over when I'm not all crusty eyes 2026-03-12T06:15:51 I should make the json outputs compact. 2026-03-12T06:15:58 brrrrr 2026-03-12T06:16:30 But from what I think I see that's what the launcher does now, json to ui. Idk what that's doing though 2026-03-12T06:16:58 Need to wake up or sleep more, I can never tell which it is 2026-03-12T06:18:21 okii compact json output building nao 2026-03-12T06:18:23 People from m02 are used to having this like vfs file search what they can ignore specific texture file from a path and it will load earlier ones. But sorry for pinging you so late. We can discuss it later 2026-03-12T06:18:40 Have a good night comrade 2026-03-12T06:18:47 I really feel like you both need to try the launcher though, a lot of stuff would be answered for you just by seeing it lol. 2026-03-12T06:19:10 Yes 😅 to be fair I have tried it but not recently. 2026-03-12T06:19:17 Its all good, my fault for checking my phone if I was that tired lol 2026-03-12T06:20:26 Me with my phone is like arguing with your partner and mumbling something right as they are leaving the room. If that makes sense lol 2026-03-12T06:20:48 json ` {"/":{"home":{"s3kshun8":{".config":{"openmw":{"Mods":{"engineFeatures":{"GraphicHerbalismMWSEandOpenMWEdition":{"00 Core + Vanilla Meshes":{"docs":{".":["GH FAQ & Tro ubleshooting.txt","Graphic Herbalism MWSE & OMW readme.txt"]},"meshes":{"f":{".":["Flora_BC_Shelffungus_01.nif","Flora_BC_Shelffungus_02.nif","Flora_BC_Shelffungus_03. 2026-03-12T06:20:48 nif","Flora_BC_Shelffungus_04.nif"]},"i":{".":["Contain_rock_Am_15.NIF","Contain_rock_Am_16.NIF","Contain_rock_Am_17.NIF","Contain_rock_Am_18.NIF","Contain_rock_Am_19. NIF","Contain_rock_Am_20.NIF","Contain_rock_Am_21.NIF","Contain_rock_Apy_08.NIF","Contain_rock_Apy_09.NIF","Contain_rock_Apy_10.NIF","Contain_rock_Apy_11.NIF","Contain 2026-03-12T06:20:49 _rock_Apy_12.NIF","Contain_rock_Apy_13.NIF","Contain_rock_Apy_14.NIF"]},"o":{".":["Contain_rock_diamond_01.nif","Contain_rock_diamond_02.nif","Contain_rock_diamond_03. nif","Contain_rock_diamond_04.nif","Contain_rock_diamond_05.nif","Contain_rock_diamond_06.nif","Contain_rock_diamond_07.nif","Contain_rock_ebony_01.nif","Contain_rock_ 2026-03-12T06:20:49 ebony_02.nif","Contain_rock_ebony_03.nif","Contain_rock_ebony_04.nif","Contain_rock_ebony_05.nif","Contain_rock_ebony_06.nif","Contain_rock_ebony_07.nif","Contain_rock _glass_01.nif","Contain_rock_glass_02.nif","Contain_rock_glass_03.nif","Contain_rock_glass_04.nif","Contain_rock_glass_05.nif","Contain_rock_glass_06.nif","Contain_roc 2026-03-12T06:20:50 k_glass_07.nif","flora_ash_yam_01.nif","flora_ash_yam_02.nif","flora_plant_08.nif"]}},"mwse":{"mods":{"graphicHerbalism":{".":["config.lua","interop.lua","main.lua","m cm.lua"]}}},"textures":{"gherb":{".":["tx_AI_heather_01_p.dds","tx_cavernspore_p.dds","tx_comberry_01_p.tga","tx_corkbulb_01_p.dds","tx_mucksponge_01_p.dds"]}}}}}}}}}} }} 2026-03-12T06:20:51 much fast, yes 2026-03-12T06:20:52 Slightest ding and I'm checking that shit lol 2026-03-12T06:21:50 I can Parse this to ui easy but would definitely need direction and useful updates 2026-03-12T06:22:16 For example what did the user need to see 2026-03-12T07:09:25 So, thing that surprised me even if it ultimately makes perfect sense: When you're doing a series of customizations, you can't refer to the output of previous customziations, however they're processed it doesn't work like that. So if you replace Mod A with Mod B, you can't then say "Insert File after B" because when the customization is run it doesn't know that B exists. 2026-03-12T18:26:05 It's a pain to set up, but when you run the configurator with a long series of customizations and it spits out a perfectly working game it's really satisfying. 2026-03-12T18:26:37 I do need to figure out if I can find a way to make it work for mods that don't have "Download with Vortex" links, but also every instance I'm concerned with seems to be a mod that's at least several years old and isn't likely to change so it's whatever 🤷 2026-03-12T19:23:38 Update: This was me talking out my ass, in fact I completely forgot the Skill Framework mod somehow.