You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
✨ Added
resoio launch runs multiple instances: launch no longer refuses when a
Resonite is already running — start as many as you like by giving each its own --data-path (so they don't share a database). --name <label> is a
convenience that auto-allocates an isolated data tree under ~/.resonite-io/instances/<label>/ — a separate WINEPREFIX, -DataPath / -CachePath / -LogsPath, and a private Camera IPC queue token (so concurrent
instances neither share Resonite data nor cross-talk on the renderer frame
queue). Explicit --prefix / --data-path still win over the label defaults; --name imposes no guard. Target a specific instance with --socket ~/.resonite-io/resonite-{pid}.sock.
resoio terminate-all: stop every running Resonite instance in one call
(SIGTERM → SIGKILL per process), printing one engine/renderer pair per
instance (--format human|json). The multi-instance counterpart to the
single-instance terminate (whose pid-only output is unchanged).
Typed Resonite launch options (resoio.LaunchOptions): pass Resonite's
own command-line launch arguments to launch(options=...) as a typed,
immutable value object — data_path (-DataPath), cache_path (-CachePath), logs_path (-LogsPath), screen, verbose, device, cloud_profile, load_assembly, and the rest of the documented flags — instead of
hand-assembling raw extra_args strings. skip_intro_tutorial defaults to True (the previous always-on behaviour); extra_args remains the escape
hatch for anything not modelled (including -Renderer / -AttachRenderer,
which are intentionally not exposed because they break renderer-PID detection).
The CLI gains resoio launch --data-path / --cache-path / --logs-path;
other options still go after --.
resoio launch --prefix / --proton-path: choose the Wine prefix
(WINEPREFIX) and the Proton build (PROTONPATH) per launch. --proton-path
takes a compatibility-tools name like GE-Proton (the default) or a path.
resoio display set resolution presets and WIDTHxHEIGHT[@FPS] shorthand: set now takes an optional positional spec, so resoio display set fhd (1920×1080), resoio display set qhd@144, or resoio display set 1280x720@60 work instead of
spelling out -W/-H/-F. Presets (case-insensitive): hd 1280×720, fhd 1920×1080, qhd 2560×1440, uhd 3840×2160; the @FPS suffix is optional. The classic -W/--width / -H/--height / -F/--max-fps flags still work and override the spec
field-by-field (e.g. fhd -W 1024 keeps fhd's height but sets width 1024; fhd@30 -F 144 keeps fhd's resolution but caps fps at 144).
🐛 Fixed
Camera froze right after the engine and renderer came up (no --name, and
on direct Gale / Steam launches): the engine self-generated a Camera IPC
queue token at runtime that the renderer (a separately-spawned Wine child)
never inherited, so the two bound different queues and the client hung waiting
for frames. The engine no longer self-generates a token. Instead the token is
always placed in the environment before exec: resoio launch injects a
unique one per instance (named or not), and a direct Gale / Steam launch sets
nothing, so the engine and renderer both fall back to the same fixed default
queue name. Either way both ends agree on one queue. (--name was already
unaffected because it injected the token before exec.)
resoio terminate-all reported a single instance as two: it paired an
engine with its renderer only when the renderer appeared in the engine's host
process subtree, but Wine often reparents the renderer out of it, so one
instance came back as two pid=0 rows. Pairing now keys off the Camera IPC
queue token the engine and renderer share (falling back to the process tree),
so a single instance is reported as one engine/renderer pair.
resoio launch hung on a host install under $HOME: the renderer never
started (and the engine waited forever) when launching from a Steam install
beneath $HOME. umu/Proton's game-drive feature maps $HOME onto a Wine drive
letter, so the launch directory (the process's cwd) landed on a non-Z: drive
and the renderer's absolute Unix paths (the renderer executable, the /dev/shm
IPC) misresolved. launch now sets PROTON_SET_GAME_DRIVE=0 (and defaults GAMEID / PROTONPATH=GE-Proton) so the prefix exposes only c: / z: — the
same layout Steam's prefix uses — and a $HOME-resident install launches. The
dev container was unaffected (its install lives outside $HOME).
resoio launch rejected a relative mod profile: a relative --profile / MOD_PATH reached BepInEx as a relative --bepinex-target, which BepisLoader
rejects ("is not an absolute path"). The profile is now resolved to an absolute
path before launch.