Adding an emulator (Cemu, etc.) to Steam as a non-Steam game previously
needed Steam's own Big Picture file-browser flow through Moonlight. This
writes the shortcut directly into Steam's binary shortcuts.vdf instead,
matching this repo's existing no-manual-wizard pattern (ge-proton,
install-ea-app). Motivated by wanting to test whether Steam Input's
per-device controller tracking (distinct device paths, not SDL GUIDs)
can hand Cemu 4 explicitly-assigned controllers where ES-DE/Cemu's own
SDL-based handling can't tell identical controllers apart.
- New generic binary VDF (KeyValues) parser/serializer: round-trips any
existing shortcuts.vdf entries byte-for-byte and only inserts/replaces
the one entry matching the given Exe path, so it's safe against a file
that already has real, hand-configured shortcuts. Verified in isolated
/tmp harnesses: fresh file, idempotent re-add, a second distinct entry,
and preserving a synthetic pre-existing GUI-set entry (icon,
LaunchOptions, tags) untouched.
- Steam's own CATALOG entry had no mount for emulators/ at all (unlike
esde/retroarch) — added emulators:/home/retro/Applications so an
AppImage is actually reachable from inside the Steam container. Like
the ES-DE settings mount, this only takes effect on a freshly created
WolfSteam container (Wolf reuses existing ones) — noted in the README.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLX1yYKJExGSXmgUhxKQG6