8789d2bbb stopped publishing PYTHONPATH when launching lutris-wrapper,
on the assumption the wrapper's own sys.path bootstrap covered every
case it needed to. It didn't: anyone running `./bin/lutris` from a
git checkout without installing Lutris would now hit
ModuleNotFoundError: No module named 'lutris'
at the wrapper's `from lutris.util.log import logger` line, before
the wrapper had a chance to do anything.
Two compounding causes:
1. The wrapper's bootstrap code lived inside `if __name__ == "__main__"`,
meaning it ran AFTER the top-level `from lutris...` imports. The
imports had to succeed first, and they were silently relying on the
parent process having injected PYTHONPATH=":".join(sys.path) into
the env before exec.
2. Even when it did run, the bootstrap's source-mode detection was
checking `LAUNCH_PATH/../lutris` — i.e. `share/lutris/lutris/` —
which has never existed. The check fell through to a second
never-existent path. So the bootstrap was, in practice, dead code
regardless of when it ran.
This commit fixes both:
* Move the source-tree detection above the lutris imports and look
three directories up (`share/lutris/bin/` → repo root), where the
`lutris/` package actually lives. Confirm via the package's
`__init__.py` rather than just a directory match.
* Restore `env["PYTHONPATH"] = ":".join(sys.path)` in monitored_command
as defense-in-depth. The wrapper now runs on the same Python as
Lutris (sys.executable, via the existing 8789d2bbb change), so the
inherited PYTHONPATH is ABI-compatible; and lutris-wrapper deletes
PYTHONPATH from os.environ before spawning the game, so the leak
doesn't reach Wine, umu-launcher, or any other runner subprocess.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Adds a nuclear option to kill all Wine processes system-wide,
useful when games or launchers leave orphan processes behind.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The Vita3K runner field definition now resides in the vita3k.json file.
The Python file contains a custom play() method which maps runner old entry_point_option field of "main_file" to the new "title_id" entry point since the Vita3K doesn't use file paths to run.
This commit is to be an example of how to define a runner in JSON and then use Python to extend that runners functionality.
The wrapper script and MonitoredCommand communicated the game's return
code via a hardcoded /tmp/lutris-{uuid} path. This was the only place
Lutris used /tmp directly in normal operation.
Pass the path via LUTRIS_RETURN_CODE_FILE env var instead of having
both sides construct it independently, and place it in settings.TMP_DIR
(~/.cache/lutris/tmp/) alongside other Lutris temp files. The wrapper
falls back to the old /tmp path if the env var is absent, for
compatibility with older Lutris versions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- make options use '--' to adapt upstream change
- removed surf option as no longer supported
- added option to enable software rendering
- added option to enable fullscreen
- adapated "no sound" option to new syntax
- removed standalone binary URL because:
- it is very outdated, causing compatibility issues with recent cartridges
- upstream no longer provides tar.gz linux binary asset, only source code and .deb archives
- flatpak version is updated and allow keeping most of configurations options we used before
For reference, new supported options are:
-h, --help show this help message and exit
--skip skip startup animation
--volume=<int> global volume value [0-15]
--cli console only output
--fullscreen enable fullscreen mode
--vsync enable VSYNC
--soft use software rendering
--fs=<str> path to the file system folder
--scale=<int> main window scale
--cmd=<str> run commands in the console
* bump version to 0.8.8
* bump to latest available version
* Revert "bump to latest available version"
This reverts commit 1cc921cbd5.
* bump version to 0.7.9
The log text can be quite small and present an
accessibility issue. This change will implement
buttons that allow users to zoom in and out
for better readability.
melonDS has been updated to 1.0RC so it would be good to point to the new linux package. I *guessing???* that this is a permalink that always points to the newest package though I could be wrong.
There is a pretty major caveat, that being that melonDS now requires a bunch of Qt6 libraries. I'm currently using the latest stable flatpak release of Lutris which doesn't have those. Not sure how this affects the regular packaged version/s of Lutris. It would be nice if somebody could troubleshoot that for me since I'm not experienced enough to deal with it. Thanks!
Bold for set-at-this-level and italic for set-at-another-level.
The style property thing being used here did not work, so I have replaced it with style classes that do.