From 7ee008e150bc5bcf76082d726f719ee0fdfda982 Mon Sep 17 00:00:00 2001 From: SulfurNitride Date: Wed, 11 Feb 2026 02:37:39 -0600 Subject: Fluorine Manager: full Linux port of Mod Organizer 2 Complete native Linux port with FUSE-based virtual filesystem, Proton/umu-run integration, and Flatpak packaging. Key features: - FUSE VFS replacing Windows USVFS (in-process + standalone helper for Flatpak) - Proton/GE-Proton/umu-run launcher with env var forwarding - Flatpak support (sandbox-aware VFS, NXM handler, umu-run) - Wine prefix management UI - Case-insensitive path resolution for Linux filesystems - QSettings-safe INI handling (avoids Bethesda INI corruption) - Portable instance support with auto-generated launcher scripts Co-Authored-By: Claude Opus 4.6 --- libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mfolder1/mfile.txt | 1 + .../usvfs/test/fixtures/usvfs_test/basic/source/mod1/mfolder1/mfilew.txt | 1 + .../test/fixtures/usvfs_test/basic/source/mod1/mfolder3/mdeep3/mfile.txt | 1 + libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mod1.txt | 1 + libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mod1w.txt | 1 + libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder2/mfile.txt | 1 + libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfile.txt | 1 + .../fixtures/usvfs_test/basic/source/mod2/mfolder4/mfiledeletemove.txt | 1 + .../fixtures/usvfs_test/basic/source/mod2/mfolder4/mfiledeletemove2p.txt | 1 + .../fixtures/usvfs_test/basic/source/mod2/mfolder4/mfiledeletewrite.txt | 1 + .../usvfs_test/basic/source/mod2/mfolder4/mfiledeletewrite2p.txt | 1 + .../fixtures/usvfs_test/basic/source/mod2/mfolder4/mfilemoveover.txt | 1 + .../fixtures/usvfs_test/basic/source/mod2/mfolder4/mfileoverwrite.txt | 1 + .../test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfilerewrite.txt | 1 + libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mod2.txt | 1 + .../test/fixtures/usvfs_test/basic/source/mod3/mfolder3/mdeep3/mfile.txt | 1 + libs/usvfs/test/fixtures/usvfs_test/basic/source/mod3/mfolder4/mfile.txt | 1 + libs/usvfs/test/fixtures/usvfs_test/basic/source/mod3/mod3.txt | 1 + libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfile.txt | 1 + .../fixtures/usvfs_test/basic/source/mod4/mfolder4/mfiledeletemove.txt | 1 + .../fixtures/usvfs_test/basic/source/mod4/mfolder4/mfiledeletemove2p.txt | 1 + .../fixtures/usvfs_test/basic/source/mod4/mfolder4/mfiledeletewrite.txt | 1 + .../usvfs_test/basic/source/mod4/mfolder4/mfiledeletewrite2p.txt | 1 + .../fixtures/usvfs_test/basic/source/mod4/mfolder4/mfilemoveover.txt | 1 + .../fixtures/usvfs_test/basic/source/mod4/mfolder4/mfileoverwrite.txt | 1 + .../test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfilerewrite.txt | 1 + libs/usvfs/test/fixtures/usvfs_test/basic/source/overwrite/.empty | 0 libs/usvfs/test/fixtures/usvfs_test/basic/source/root1.txt | 1 + libs/usvfs/test/fixtures/usvfs_test/basic/source/root1w.txt | 1 + libs/usvfs/test/fixtures/usvfs_test/basic/source/root2.txt | 1 + libs/usvfs/test/fixtures/usvfs_test/basic/source/root2w.txt | 1 + 31 files changed, 30 insertions(+) create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mfolder1/mfile.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mfolder1/mfilew.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mfolder3/mdeep3/mfile.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mod1.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mod1w.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder2/mfile.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfile.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfiledeletemove.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfiledeletemove2p.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfiledeletewrite.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfiledeletewrite2p.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfilemoveover.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfileoverwrite.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfilerewrite.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mod2.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod3/mfolder3/mdeep3/mfile.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod3/mfolder4/mfile.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod3/mod3.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfile.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfiledeletemove.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfiledeletemove2p.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfiledeletewrite.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfiledeletewrite2p.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfilemoveover.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfileoverwrite.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfilerewrite.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/overwrite/.empty create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/root1.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/root1w.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/root2.txt create mode 100644 libs/usvfs/test/fixtures/usvfs_test/basic/source/root2w.txt (limited to 'libs/usvfs/test/fixtures/usvfs_test/basic/source') diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mfolder1/mfile.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mfolder1/mfile.txt new file mode 100644 index 0000000..227256a --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mfolder1/mfile.txt @@ -0,0 +1 @@ +mfolder1\mfile.txt by mod1 diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mfolder1/mfilew.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mfolder1/mfilew.txt new file mode 100644 index 0000000..420589d --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mfolder1/mfilew.txt @@ -0,0 +1 @@ +mfolder1\mfilew.txt by mod1 diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mfolder3/mdeep3/mfile.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mfolder3/mdeep3/mfile.txt new file mode 100644 index 0000000..6a7a0c2 --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mfolder3/mdeep3/mfile.txt @@ -0,0 +1 @@ +mfolder3\mdeep3\mfile.txt by mod1 (to be hidden by mod3) diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mod1.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mod1.txt new file mode 100644 index 0000000..7d5dc0e --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mod1.txt @@ -0,0 +1 @@ +hello mod1 diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mod1w.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mod1w.txt new file mode 100644 index 0000000..1838cdf --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod1/mod1w.txt @@ -0,0 +1 @@ +hello mod1w diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder2/mfile.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder2/mfile.txt new file mode 100644 index 0000000..8ff096e --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder2/mfile.txt @@ -0,0 +1 @@ +mfolder2\mfile.txt by mod2 diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfile.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfile.txt new file mode 100644 index 0000000..c0f0f2c --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfile.txt @@ -0,0 +1 @@ +mfolder4\mfile.txt by mod2 (to be hidden by mod4) diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfiledeletemove.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfiledeletemove.txt new file mode 100644 index 0000000..e35f1f3 --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfiledeletemove.txt @@ -0,0 +1 @@ +mfolder4/mfiledeletemove.txt by mod2 (to be hidden by mod4) diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfiledeletemove2p.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfiledeletemove2p.txt new file mode 100644 index 0000000..cc572dc --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfiledeletemove2p.txt @@ -0,0 +1 @@ +mfolder4/mfiledeletemove2p.txt by mod2 (to be hidden by mod4) diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfiledeletewrite.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfiledeletewrite.txt new file mode 100644 index 0000000..f699360 --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfiledeletewrite.txt @@ -0,0 +1 @@ +mfolder4/mfiledeletewrite.txt by mod2 (to be hidden by mod4) diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfiledeletewrite2p.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfiledeletewrite2p.txt new file mode 100644 index 0000000..9eae9c5 --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfiledeletewrite2p.txt @@ -0,0 +1 @@ +mfolder4/mfiledeletewrite2p.txt by mod2 (to be hidden by mod4) diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfilemoveover.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfilemoveover.txt new file mode 100644 index 0000000..88a6d08 --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfilemoveover.txt @@ -0,0 +1 @@ +mfolder4/mfilemoveover.txt by mod2 (to be hidden by mod4) diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfileoverwrite.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfileoverwrite.txt new file mode 100644 index 0000000..61b92a6 --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfileoverwrite.txt @@ -0,0 +1 @@ +mfolder4\mfileoverwrite.txt by mod2 (to be hidden by mod4) diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfilerewrite.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfilerewrite.txt new file mode 100644 index 0000000..727a48f --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mfolder4/mfilerewrite.txt @@ -0,0 +1 @@ +mfolder4\mfilerewrite.txt by mod2 (to be hidden by mod4) diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mod2.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mod2.txt new file mode 100644 index 0000000..49bbbf1 --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod2/mod2.txt @@ -0,0 +1 @@ +hello mod2 diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod3/mfolder3/mdeep3/mfile.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod3/mfolder3/mdeep3/mfile.txt new file mode 100644 index 0000000..fac8213 --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod3/mfolder3/mdeep3/mfile.txt @@ -0,0 +1 @@ +mfolder3\mdeep3\mfile.txt by mod3 diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod3/mfolder4/mfile.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod3/mfolder4/mfile.txt new file mode 100644 index 0000000..5e6ca00 --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod3/mfolder4/mfile.txt @@ -0,0 +1 @@ +mfolder4\mfile.txt by mod3 (to be hidden by mod4) diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod3/mod3.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod3/mod3.txt new file mode 100644 index 0000000..47fbacd --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod3/mod3.txt @@ -0,0 +1 @@ +hello mod3 diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfile.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfile.txt new file mode 100644 index 0000000..c67ecfe --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfile.txt @@ -0,0 +1 @@ +mfolder4\mfile.txt by mod4 diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfiledeletemove.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfiledeletemove.txt new file mode 100644 index 0000000..657f07d --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfiledeletemove.txt @@ -0,0 +1 @@ +mfolder4/mfiledeletemove.txt by mod4 diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfiledeletemove2p.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfiledeletemove2p.txt new file mode 100644 index 0000000..cfd08dd --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfiledeletemove2p.txt @@ -0,0 +1 @@ +mfolder4/mfiledeletemove2p.txt by mod4 diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfiledeletewrite.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfiledeletewrite.txt new file mode 100644 index 0000000..a17d129 --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfiledeletewrite.txt @@ -0,0 +1 @@ +mfolder4/mfiledeletewrite.txt by mod4 diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfiledeletewrite2p.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfiledeletewrite2p.txt new file mode 100644 index 0000000..b198d1c --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfiledeletewrite2p.txt @@ -0,0 +1 @@ +mfolder4/mfiledeletewrite2p.txt by mod4 diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfilemoveover.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfilemoveover.txt new file mode 100644 index 0000000..b395908 --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfilemoveover.txt @@ -0,0 +1 @@ +mfolder4/mfilemoveover.txt by mod4 diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfileoverwrite.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfileoverwrite.txt new file mode 100644 index 0000000..405c0c1 --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfileoverwrite.txt @@ -0,0 +1 @@ +mfolder4\mfileoverwrite.txt by mod4 diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfilerewrite.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfilerewrite.txt new file mode 100644 index 0000000..def973c --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/mod4/mfolder4/mfilerewrite.txt @@ -0,0 +1 @@ +mfolder4\mfilerewrite.txt by mod4 diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/overwrite/.empty b/libs/usvfs/test/fixtures/usvfs_test/basic/source/overwrite/.empty new file mode 100644 index 0000000..e69de29 diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/root1.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/root1.txt new file mode 100644 index 0000000..5aa129b --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/root1.txt @@ -0,0 +1 @@ +root1 source file diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/root1w.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/root1w.txt new file mode 100644 index 0000000..0c04aa5 --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/root1w.txt @@ -0,0 +1 @@ +root1w source file diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/root2.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/root2.txt new file mode 100644 index 0000000..4ac40bb --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/root2.txt @@ -0,0 +1 @@ +root2 source file diff --git a/libs/usvfs/test/fixtures/usvfs_test/basic/source/root2w.txt b/libs/usvfs/test/fixtures/usvfs_test/basic/source/root2w.txt new file mode 100644 index 0000000..83ddb42 --- /dev/null +++ b/libs/usvfs/test/fixtures/usvfs_test/basic/source/root2w.txt @@ -0,0 +1 @@ +root2w source file -- cgit v1.3.1