Repository navigation
ModSync 1.1.0-beta1
Pre-releaseInstall on Steam Deck / Linux
Download the bundle for your machine: ModSync-1.1.0b1-x86_64.flatpak for the Steam Deck
and other PCs, or ModSync-1.1.0b1-aarch64.flatpak for ARM machines such as the Steam
Frame. Then in Desktop Mode either open it with Discover, or run:
flatpak install --user ModSync-1.1.0b1-x86_64.flatpak # or ModSync-1.1.0b1-aarch64.flatpak
flatpak run io.github.skjiisa.ModSyncFull instructions, including the from-source route, are in the README.
Changes
A beta of the controller-first interface, for testing an end-to-end install of
the Flatpak on a Steam Deck before 1.1.0. Also brings Play through MO2 from
Steam's Play button as Steam's own launch, the optional ARM64 USVFS fix and
Visual C++ runtime install, and an aarch64 bundle.
Added
-
An ARM64 USVFS fix for the files shipped with MO2 2.5.2. "Apply ARM64 fix"
appears under Mod Organizer, also while Steam waits on ModSync. It
downloads a pinned build with the injection-stub stack-alignment fix,
verifies the archive and each binary, and backs up the originals. The build comes from ModSync's mirror of
ndabas's release, which also carries the source, with the original release
as a fallback. "Restore original USVFS" reverses it.
Unknown builds are left unchanged. The same actions are available through
modsync mo2 usvfs status|apply|restore;doctorreports the fix's status.
Changes are refused while MO2, or any game or tool it started, still has
the files loaded. Tested on a Steam Frame: modded Skyrim through Steam's
Play button and MO2, Apply and Restore from the launch hub, and offline
reapplication from the cache. -
When an instance's USVFS is 0.5.7 or newer and the game's Proton prefix
only has the old Visual C++ runtime (or Wine's stand-in), the app
offers to install Microsoft's current runtime into the prefix. USVFS 0.5.7+
uses the runtime of the programs MO2 starts, so without it nothing started
from MO2 runs. The pinned, checked redistributable is installed silently
through the game's Proton after backing up the DLLs it replaces; it never
happens without a click.modsync doctorshows each instance's USVFS
version and this check. Tested on a Steam Frame, from the Flatpak too. -
An aarch64 Flatpak bundle next to the x86_64 one, for ARM machines such as
the Steam Frame. It bundles the arm64 Syncthing build. Not yet tested on an
ARM device.
Changed
-
Steam's Play button now leads to the same Play Skyrim and Open Mod
Organizer 2 as opening ModSync directly: the selected MO2 profile, SKSE
when it is installed, and the same checks. Before, Continue only carried on
to whatever Steam was about to start, which without MO2-LINT's redirector
was the unmodded game. ModSync hands the MO2 command line back to the
launch hook, which runs it as Steam's own launch, so Steam still tracks the
game and syncs its cloud saves when it exits. Verified on the desktop: a
save written while MO2 ran under Steam was uploaded right after it closed,
with a matching SHA-1. Continue remains for a machine with no MO2 instance
chosen. Existing hooks are updated when ModSync opens. -
A new interface, designed for a controller first. The dashboard and its
dialogs are gone. The window now has five sections (Home, Game, Mod
Organizer, Sync and System), switched with LB and RB, Q and E, or by moving
up onto the tabs. Every action is a large tile that shows the description a
tooltip used to hide. A single outline marks the focused tile, and a hint
bar shows which button does what, with PlayStation symbols for a
PlayStation controller. Questions, text entry, PIN entry and folder picking
open in sheets inside the window instead of separate dialogs, and the hint
bar names what A does on the focused control. Text entry has an on-screen
keyboard with a symbols layer, shifted punctuation, cursor movement,
selection and a Paste key, and the PIN pad works like a combination lock.
Home recommends a repair when the game version or SKSE does not match, or
Steam has an update waiting. Play stays available with the consequence
explained. Home has a readiness checklist (game version, SKSE, Mod
Organizer 2, sync) next to Play, or Continue when Steam's Play button
opened ModSync. The setup wizard reuses the same parts. Its last step keeps
Finish at the top, or "Finish anyway" with the repair focused when the game
version still doesn't match. System and Game use shorter tile
descriptions, and System's settings details and controls open in their own
sheets. B on Home, or "Quit ModSync" under System, asks to quit, so ModSync
can be closed without a mouse. A mouse or touch screen works on its own
too: sections scroll with a finger, the hint bar becomes buttons for Back,
Cancel and Quit, and the PIN sheet has digits to tap. ModSync always uses its dark theme now. -
Controllers work two ways. Outside games, Steam Input's desktop
configuration turns buttons into keys, and ModSync reads them back as the
buttons that sent them: Space is Y on a Steam Deck and B on a Steam
Controller, Xbox or PlayStation pad, Page Up/Down are X/Y on the latter, and
a tap of Ctrl or Alt is LB or RB. It tells which applies from the hardware
in/sys. ModSync also reads controllers directly through SDL2, from the
Flatpak runtime or SteamOS, which covers the virtual pad Steam provides in
Gaming Mode. A press that arrives both ways counts once, and presses are
ignored while another window is in front. The Flatpak gains
--device=inputfor this.MODSYNC_GAMEPAD=0turns direct reading off.
The controls are listed in docs/advanced.md. -
Steam's Play button opens the regular ModSync window instead of a separate
launch hub. While Steam waits, Play turns into Continue, which hands the
launch on to MO2-LINT or the game, and "Cancel launch" returns to Steam.
Open MO2 is hidden then, so ModSync never starts a second Proton in the
game's prefix next to Steam's. The Mod Organizer 2 card shows the selected
profile and its enabled mod count. A warning above Continue says when the
vault is still syncing. Esc no longer cancels the launch. -
Install MO2 uses MO2-LINT 7.0.1 (was 7.0.0-rc7). The download is checked
against the release's SHA-256, and the cached copy is named by version so
a new pin replaces the old binary instead of reusing it. -
On ARM64 machines such as the Steam Frame, the Play button hook finds
Valve's ARM64 Proton builds and hands off to the one Steam would run. -
On machines other than x86_64, Install MO2 says up front that MO2-LINT
only ships an x86_64 build. It no longer tries to run that build. -
When a game is left on "Default" in Steam, the Play button hook now hands
off to the Proton Steam would pick: Valve's recommendation for the game on a
Steam Deck or Steam Frame, then your global choice, then Proton stable. It
used to prefer Proton Experimental. -
On the Steam Frame, where Steam can't be restarted, queued changes (the
Play button switch, the update pin) tell you to reboot instead. The background
service applies them before Steam starts. Tested on a Frame.
Fixed
-
Play refuses an MO2 instance that hasn't been told which game it manages,
and says to finish setting it up in MO2. MO2 would otherwise stop at
"Select the game managed by this instance". -
Steam Cloud stopped syncing Skyrim saves while the Play button switch was
on. Steam maps a game's Windows save folders into its Proton prefix only
for a compatibility tool whose internal name contains "proton", and the
hook was namedmodsync_489830_hub. Steam couldn't resolve the save folder,
so it skipped every save while still reporting the sync as complete. The
hook is nowmodsync_489830_proton. When ModSync opens or the
background service starts, an existing hook is moved to the new name and
Steam is switched over to it, after a Steam restart if Steam is running.
Saves made under the old name are still in the prefix, where Steam finds
them again once the game launches through the new name. -
In the Flatpak,
modsync doctorandmodsync diagnosticspointed at a
launch hook log inside the sandbox that is never written. Steam runs the
hook on the host, so they now read the host's~/.local/state/modsync/launch-hook.log. -
When Steam couldn't be closed and you picked the Play button switch under
Properties, then Compatibility yourself, ModSync kept saying it was waiting
for Steam to close, and would have re-applied the switch the next time
Steam closed, undoing any choice made since. A queued switch that is
already in place is now dropped. Tested on a Steam Frame. -
With MO2-LINT's tool selected and the Play button switch off, the status
now says Play opens Mod Organizer 2 (MO2-LINT), not the game directly. -
The Flatpak didn't recognise SteamOS: inside the sandbox
/etc/os-release
describes the Flatpak runtime. ModSync now reads the host's
/run/host/os-release, so on a Steam Frame it says to reboot instead of
restarting Steam, and Valve's Steam Deck/Frame Proton recommendations apply.
Tested on a Frame. -
modsync service installfailed in the Steam Frame's desktop terminal,
because the nested Plasma session'sXDG_RUNTIME_DIRhas no systemd user
bus. ModSync now falls back to the login session's. The Flatpak failed the
same way, sinceflatpak-spawn --hostrunssystemctlin that nested
session, and now passes the login session's directory to the host. -
On ARM64, ModSync no longer picks one of Valve's x86_64 Protons, which can't
run there. When Skyrim is set to a Proton with no ARM64 build, the launch
hook and Open MO2 use Steam's ARM64 default, as Steam does. -
MO2 2.5 crashed at start-up, writing hundreds of crash dumps, when Skyrim's
Proton prefix had only the 2016 Visual C++ runtime that the game installs.
When the prefix's runtime is missing, Wine's stand-in or older than 14.40,
Open MO2 and Play now first copy a current runtime (14.44) next to
ModOrganizer.exe, unpacked from Microsoft's redistributable. It is
downloaded once and checked against a pinned SHA-256; the prefix is not
changed. Prefixes set up by Install MO2 already have a current runtime, so
nothing is downloaded there. Tested on a Steam Frame. -
On the Steam Frame's desktop, MO2 opened with Open MO2 or Play closed as soon
as one of its dialogs closed. The desktop is nested inside gamescope, and
Proton put MO2 on gamescope's display but the rest of Wine on the desktop's.
ModSync now runs the whole launch on gamescope's display, with gamescope's
Vulkan layer off, and says to use a mouse or the keyboard there: the VR
pointer still makes MO2 close (Wine lacks a touch function Qt calls).
Tested on a Frame.