Releases: derrod/legendary
0.20.24 - "Follow Freeman!" (Hotfix #1)
0.20.24 Hotfix Notes
- Fixed aliases for old command names not actually working (whoops)
Original 0.20.23 Release
This is the biggest release in quite a while, intended to make using Legendary on Macs easier than ever before, and bringing some previously missing overlay features to Windows. Of course, there are improvements and bug fixes for Linux users as well.
CrossOver integration (macOS)
This release adds integration with CrossOver to make running Windows games on your Mac as easy and seamless as possible.
After a brief one-time setup, games can be run immediately after installing with zero additional configuration required.
Thanks to CodeWeaver's work on CrossOver and DXVK-on-Metal many titles will "just work".
If you wish to purchase a copy of CrossOver you can support Legendary development (♥) and save a bit by purchasing it through my affiliate link and using the promo code LEGENDARY15
on https://www.codeweavers.com/store.
Of course it is still possible to configure which bottles to use, which CrossOver version to run, etc. Either via new config and command line parameters or the new crossover
command or --crossover
launch option which will provide an interactive setup allowing you to select a version and bottle to use on a per-game basis or as the default.
In addition to the semi-automatic setup Legendary also offers an experimental fully automatic setup (just requires CrossOver to be installed). The new crossover --download
option makes it possible to download and set-up preconfigured Bottles and get started in no time. Currently this offers a clean default bottle as well as one set-up for Rocket League, but this may be expanded upon in the future.
This feature is experimental and not supported by CodeWeavers, please only report issues on the Legendary Discord or this repo.
As part of this effort a few workarounds for games have already been added to the Wiki, and this will be expanded upon more in the future as people try games and discover compatibility issues and work out how to fix them.
Also see full setup guide on the Wiki: https://github.com/derrod/legendary/wiki/CrossOver-Setup-(macOS)
Currently I have no plans on expanding this to Linux, as the community-driven support for Wine and sorrunding toolset is very good there compared to macOS, but if there's demand for supporting CrossOver on Linux I may look into expanding it to that in the future.
Finally, I'd like to thank the folks over at CodeWeavers for answering a whole bunch of my questions that helped make this possible, and also for providing me with the promo code mentioned above!
EOS Overlay Management (mainly Windows)
With this release it becomes possible to install and manage the Epic In-Game Overlay on your machine to use social features and view achievments without having to install the Epic Games Launcher. It's also possible to disable or enable the overlay at will without having to uninstall it.
Currently the overlay only works on Windows, but installation into Wine prefixes or Bottles is possible in case it starts working with a new overlay and/or Wine version. Or if there's a game that for some reason requires it to be running, even if it's not functional on Linux/Mac.
Default Installation Directory Changes
The default installation directory has been changed to ~/Games
for Windows titles, and ~/Applications
for Mac-native applications. This does not affect existing installations and can be changed with the install_dir
and mac_install_dir
config variables.
Additionally, this release provides the new move
command to make it easier to move currently installed games to a new location (see commands section below for details).
Pre-Launch Commands
Commands can now be run before the game is launched via the pre_launch_command
configuration option. This can be set globally or per-game and allows running any application or script before or as the game is being launched (depending on the pre_launch_wait
setting).
The use cases for this include things like changing power-saving mode when launching a game, automatically starting a recording, etc. I'm sure people will find good uses for it.
CLI Changes
As part of this release several things were cleaned up and changed in the Command Line Interface, this includes re-ordering commands to be in alphabetical order, renaming a few of them to remove unnecessary parts, and also not showing the wall of text that is the full help unless -H
/--full-help
is specified. Also some whitespace was added around important messages that would otherwise be somewhat drowned out by the rest of the output.
One of the changes in this update is a new message shown when finalsing a game install that notifies the user about known workarounds or fixes for the selected title on their current operating system.
This largely draws upon the work of @CommandMC and his EpicLinux Wiki, with some additional entries pulled from the Legendary Wiki itself (mainly for macOS).
This feature is something I do want to build upon in the future to provide more info about game compatibility directly within Legendary.
General
- Added
-A
/--api-timeout
parameter to change the HTTP request timeout for the Epic API (default: 10 seconds) - Added
-H
/--full-help
flag to show full help (all commands) rather than just the list of commands - Deprecated and hid
-c
/--config-file
option, which will be removed in the future as it has caused more issues than it solves
Commands
crossover
[new]- Usage:
legendary crossover [App Name]
- This will run an interactive setup to select the CrossOver version (if more than one) and Bottle to use for an app or as the default (if no app name specified)
--crossover-bottle
and--crossover-app
can be used to skip the respective interactive selection--reset
can be used to remove the current selection from the config--download
(experimental)- With this option a selection of preconfigured bottles that are available for download will be shown instead, including recommendations depending on the specified app name
- If a bottle is selected it will be downloaded and set up automatically, it can be reconfigured using CrossOver later, but is generally intended to work out of the box
- When
--ignore-version
is specified all Bottles will be shown, regardless of the versions they're marked as compatible with
- Usage:
eos-overlay
[new]- Usage:
legendary eos-overlay <subcommand>
- Subcommands:
install
/update
/remove
- download and install or uninstall the overlay (default:~/Games/.overlay
)enable
/disable
- add/remove the registry entries used by the EOS SDK to find the overlay installation to loadinfo
- prints some information about the current registry configuration and overlay install (if any)
--path
can be used to override the installation location or overlay install to "enable"--prefix
/--bottle
to specify wine prefix/bottle to enable overlay in, if set in the config--app <app name>
can be used instead
- Usage:
install
- Will now fall back to "Windows" by default if the specified platform is not available (this can be disabled in the config)
- Will now show a notice on game workarounds after finishing the installation
launch
--crossover
flag to go through interactive setup (likecrossover
command), but immediately launch the game after--crossover-app
and--crossover-bottle
parameters to specify or override the used version and bottle
move
[new]- Usage:
legendary move <app name> <new location>
- For example:
legendary move sugar ~/Games
will move theRocketLeague
game folder from its previous location into~/Games
- For example:
--skip-move
flag to only update the Legendary database, without actually moving the game files- Moving currently only works on the same drive, so this allows to easily and safely update the installed games database after a manual move
- Usage:
verify
- Now shows average read speed during the verification process
- Also shows verification process on a per-file basis for "large" files (>= 512 MiB)
Renamed commands:
import-game
=>import
list-games
=>list
verify-game
=>verify
The old command names will still work as aliases, but those may be removed in the future.
Config Changes
Per-app settings:
[App Name]
; A command to run before launching the gmae
pre_launch_command = /path/to/script.sh
; Whether or not to wait for command to exit before starting the game
pre_launch_wait = false
macOS specific
Legendary settings:
[Legendary]
; Fallback to "Windows" platform if native version unavailable
install_platform_fallback = true
; Disable automatic CrossOver use
disable_auto_crossover = false
; Default directory for native Mac applications (.app packages)
mac_install_dir = /User/legendary/Applications
Per-app settings:
[App Name]
crossover_app = /Applications/CrossOver.app
crossover_bottle = Legendary
Miscellaneous changes and improvements
- Add support for legacy Wine appdata paths in save game path resolver
- Fixed importing games with EGL sync enabled (#391)
- Fixed reading EGL metadata on non-English Windows installs (#383)
- Fix case-insensitive path resolver on Linux
- Fix required disk size calculation during install, again, but once and for all
- F...
0.20.23 - "Follow Freeman!"
This release had an issue, please use 0.20.24 instead: https://github.com/derrod/legendary/releases/tag/0.20.24
(Binaries retained for archive purposes)
0.20.22 - Anticitizen One (hotfix #3)
Another smaller hotfix to address some outstanding issues before my Christmas break:
- Re-enabled selective downloading (SDL) on macOS and added definintion files for macOS to the API
- Fixed
repair
when the installed manifest is unavailable for some reason (#380) - Fixed
cleanup
command which was broken after adding macOS support - Disabled semi-automatic Origin activation on Linux (for now) and show instructions for manual process instead
- Added
external_activation
toinfo
command output to note if a game requires activation via Origin or Uplay
Also check out the previous 0.20.19 release and 0.20.20/21 hotfixes:
0.20.21 - Anticitizen One (hotfix #2)
Small hotfix release to address some issues that have cropped up recently.
import-game
Command- Fixed check for game executable not working
- Will now always abort if no game files are found
- Will now suggest adding the default game installation directory if it's not already present in the user-supplied path
activate
Command- Uplay DLC is now also checked for outstanding activations
Also check out the previous 0.20.19 release and 0.20.20 hotfix:
0.20.20 - Anticitizen One (hotfix)
This is a small hotfix release to resolve some issues with 0.20.19 as well as some small (backwards-compatible) change to the CLI.
list-games
- Now also shows a notice about activation for Ubisoft titles
--include-non-installable
has been renamed to-T
/--third-party
. The old name may be removed in a future release
activate
- Added
-U
shortcut and--ubisoft
alias to--uplay
option - Added
-O
/--origin
option to activate origin games- This is a slower and more manual process compared to Uplay and requires user-interaction for each title
- Added
- SDL (selective downloading) is now disabled when using macOS versions as there are no Mac SDL definition files available at the moment
- Fixed metadata not being updated when 5 or fewer titles were updated
Also check out the full 0.20.19 changelog: https://github.com/derrod/legendary/releases/tag/0.20.19
0.20.19 - Anticitizen One
Two major features, a whole bunch of bugfixes, please don't break it too quickly!
macOS support
Legendary now supports macOS out of the box, both native and Windows titles (through WINE) can be installed and launched.
Cloud saves are also supported, as well as most other features. Syncing installed games with the Mac version of the Epic Games Launcher is unsupported however (no ETA).
When using legendary on macOS it will now prefer native titles by default, to list/download Windows titles use --platform Windows
or change the default_platform
configuration variable.
Note that due to a bug in PyInstaller the provided binary is x86 only. This will change once PyInstaller releases a fixed version.
Uplay / Ubisoft game activation
Rejoice a long-standing problem (issue #69, nice) is finally solved! The new activate
command allows for activating Uplay titles purchased/claimed on the Epic Games Store to be activated on your Ubisoft account. They can then be installed directly via Uplay, no third-party launcher needed.
To activate your titles simply run legendary activate --uplay
, if you do not have a Ubisoft account linked yet simply follow the instructions provided.
CLI Changes
activate
[New]- Currently only supports Uplay via
--uplay
parameter - After acivating your games they will be available for install in Uplay, installation via Legendary is not required
- Currently only supports Uplay via
import-game
- Added
--platform
parameter, defaultsWindows
on Linux/Windows andMac
on macOS
- Added
info
- Will now show macOS version/cloud save information if available
- Added
--platform
parameter, defaultsWindows
on Linux/Windows andMac
on ma
install
--platform
no longer disables installing, defaultsWindows
on Linux/Windows andMac
on macOS- Improved the visibility of pre-install warnings to make it more clear when games have potential issues (e.g. using anti-cheat, or requriing Uplay)
list-files
/list-games
--platform
parameter now defaults toWindows
on Linux/Windows andMac
on macOS
list-installed
- Now displays platform for each installed gamecOS
status
- Includes current OS and version for issue submissions
sync-saves
- Now supports native macOS titles
Miscellaneous fixes and improvements
- Improved speed of metadata updates by using multithreaded requests
- Added
default_platform
config value to override OS-detection based selection (Mac
on macOS,Windows
everywhere else) - The update notification now includes the download URL for the new release for direct
wget
'ing (orcurl
'ing if that's more your thing) - Improved manifest parser to be forwards-compatible but warn users about potential issues
- Fixed a crash if metadata for DLCs is missing for some reason (still investigating how that happens)
- Various backend improvements to allow for mixing installed platforms
- If you have debug logging enabled you may see some warnings about files not being found or being invalid, those can be ignored as they simply trigger the rebuild of the affected files into the new format/naming convention
- Fixed required disk space calculation (again, for like the fifth time)
- Added feature to downloader to make files executable (for macOS)
As a sidenote, the repo now includes a Kaitai Struct definition file for Epic's binary manifest format: doc/ue_manifest.ksy
0.20.18 - Entanglement (EGL Sync Hotfix)
This is a quick hotfix to fix syncing with EGL version 13.0.6 or newer. Currently it will work but show a warning, a future version will fix this properly.
Bug fixes and improvements
- Skip over unknown data in file manifest list
- Allow specifying base-url when no saved base urls present
Original 0.20.17 Changelog
CLI Changes
clean-saves
[new]- Deletes old cloud saves that no longer have their corresponding chunk files present (this can happen if EGL is used as it removes duplicate save data)
--delete-incomplete
to also delete a cloud saves if it's only partially missing
download-saves
/sync-saves
- If a save's data is no longer present, legendary will now suggest to run
clean-saves
and try again
- If a save's data is no longer present, legendary will now suggest to run
info
- Will now show an error if no information is available
- Ensure empty items in JSON output are
null
instead of an empty object
install
- If a game managed by a third party store (e.g. Origin) is selected the installation will now abort
Fixes and Improvements
- Several fixes to save game path resolution
- The
{AppData}
variable will now correctly resolve to%LOCALAPPDATA%
rather than%APPDATA%
- On Linux save paths now attempt to resolve case-insensitively to avoid some issues with game metadata specifying all-lowercase paths
- The
- Prevent app name colliding with itself when generating aliases
- When uninstalling, only attempt to delete game files that should be installed based on selected install tags
- Metadata for apps that are no longer available (e.g. refunded, free weekend, after switching accounts) will be deleted from disk
--csv
/--tsv
line endings are now explicitly set to\n
to prevent issues when piping the output on Windows
0.20.17 - Entanglement
This is yet another release mostly fixing a few issues and providing a new command to clean cloud saves that have become obsolete/corrupt.
CLI Changes
clean-saves
[new]- Deletes old cloud saves that no longer have their corresponding chunk files present (this can happen if EGL is used as it removes duplicate save data)
--delete-incomplete
to also delete a cloud saves if it's only partially missing
download-saves
/sync-saves
- If a save's data is no longer present, legendary will now suggest to run
clean-saves
and try again
- If a save's data is no longer present, legendary will now suggest to run
info
- Will now show an error if no information is available
- Ensure empty items in JSON output are
null
instead of an empty object
install
- If a game managed by a third party store (e.g. Origin) is selected the installation will now abort
Fixes and Improvements
- Several fixes to save game path resolution
- The
{AppData}
variable will now correctly resolve to%LOCALAPPDATA%
rather than%APPDATA%
- On Linux save paths now attempt to resolve case-insensitively to avoid some issues with game metadata specifying all-lowercase paths
- The
- Prevent app name colliding with itself when generating aliases
- When uninstalling, only attempt to delete game files that should be installed based on selected install tags
- Metadata for apps that are no longer available (e.g. refunded, free weekend, after switching accounts) will be deleted from disk
--csv
/--tsv
line endings are now explicitly set to\n
to prevent issues when piping the output on Windows
0.20.16 - Nova Prospekt (hotfix #2)
0.20.16 Hotfix notes
Yet another hotfix to fix further issues with the webview based login and some other minor issues.
Fixes and improvements
- Disabled webview login on Windows unless
WebView2
is available (should be the case on any reasonably up to date Windows 10/11) - Show error when attempting to verify/update a game installation in a directory that no longer exists
- Corrected Origin launch URL construction to match EGL
- Fixed
launch --dry-run
not working for Origin titles - DLC can now be uninstalled separately from the main game
info
Command- Now works correctly for apps without assets (e.g. Origin games)
- Now shows a breakdown of install/download size by install tag
- No longer prints headers for empty sections
0.20.15 Hotfix notes
This is a hotfix to address two potential crashes, one of which had been reported on AUR.
Bug fixes
- Catch exception in the aliasing system when a game name (or part thereof) only contains prepositions
- General catch-all for exceptions raised by the webview module with a note on how to disable it
Original 0.20.14 Changelog
Release Highlights
Starting with this release Legendary offers the option to log into your Epic account via an embedded web view. This greatly simplifies the sign-in process for first-time users or those not all too familiar with the technical language used during the manual login flow.
This feature is already available in the Windows binaries and can be easily installed on most Linux distributions. The prebuilt Linux binaries do not currently support it but may in the future.
Installation notes
- Windows: use the prebuilt .exe or install legendary via
pip install legendary-gl[webview]
- no further dependencies required! - Linux:
- Install legendary 0.20.14+ and pywebview 3.4+ (e.g. using
pip install -U legendary-gl[webview]
) - Install
PyGObject
- On Debian/Ubuntu this can be done via
sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0
- See the PyGObject documentation for instllation instructions for other systems
- On Debian/Ubuntu this can be done via
- Install legendary 0.20.14+ and pywebview 3.4+ (e.g. using
- macOS: unsupported
Notes for third-party package maintainers
Legendary requires pywebview
of version 3.4 or higher. If your distribution provides recent enough packages for pywebview
you can add it and its dependencies for one of its supported web engines to your legendary package. See the pywebview documentation for details.
While pywebview
supports both Qt (QtWebKit
/ QtWebEngine
) and GTK (WebKit2
) as rendering engines, only GTK has been tested extensively and is the recommended option.
Should you want/need to use Qt as the dependency in your package please make sure all login options work correctly. At least in my testing on my build machine (running an older Ubuntu LTS release) Qt did not function correctly in some cases.
CLI changes
alias
commandalias add <app name> <alias>
will now also resolve aliases used in place of the app name
auth
command--disable-webview
flag to force manual authentication flow even if webview is available- Pasting the complete JSON response during manual login will also work if user is unsure what they're supposed to copy
install
command--skip-dlcs
flag to skip asking if the user wants to install DLCs
import-game
command- No longer allows for installing DLC without the base game already being installed (#351)
- Will now ask the user if they want to import DLC like
install
does. --with-dlcs
flag to automatically attempt to import all DLC--skip-dlcs
flag to skip asking if the user wants to import DLCs
Bug fixes and improvements
- Use exponential backoff when downloading a file fails to avoid runaway CPU usage (#347)
- Legendary does no longer attempt to read ".egstore" folder for DLC when importing
- No more re-login after client has already logged in once (unless session is about to expire), e.g. when installing DLC
- Added
pywebview
as optional dependency in setup.py to makelegendary[webview]
option available via PyPI
0.20.15 - Nova Prospekt (hotfix)
0.20.15 Hotfix notes
This is a hotfix to address two potential crashes, one of which had been reported on AUR.
Bug fixes
- Catch exception in the aliasing system when a game name (or part thereof) only contains prepositions
- General catch-all for exceptions raised by the webview module with a note on how to disable it
Original 0.20.14 Changelog
Release Highlights
Starting with this release Legendary offers the option to log into your Epic account via an embedded web view. This greatly simplifies the sign-in process for first-time users or those not all too familiar with the technical language used during the manual login flow.
This feature is already available in the Windows binaries and can be easily installed on most Linux distributions. The prebuilt Linux binaries do not currently support it but may in the future.
Installation notes
- Windows: use the prebuilt .exe or install legendary via
pip install legendary-gl[webview]
- no further dependencies required! - Linux:
- Install legendary 0.20.14+ and pywebview 3.4+ (e.g. using
pip install -U legendary-gl[webview]
) - Install
PyGObject
- On Debian/Ubuntu this can be done via
sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0
- See the PyGObject documentation for instllation instructions for other systems
- On Debian/Ubuntu this can be done via
- Install legendary 0.20.14+ and pywebview 3.4+ (e.g. using
- macOS: unsupported
Notes for third-party package maintainers
Legendary requires pywebview
of version 3.4 or higher. If your distribution provides recent enough packages for pywebview
you can add it and its dependencies for one of its supported web engines to your legendary package. See the pywebview documentation for details.
While pywebview
supports both Qt (QtWebKit
/ QtWebEngine
) and GTK (WebKit2
) as rendering engines, only GTK has been tested extensively and is the recommended option.
Should you want/need to use Qt as the dependency in your package please make sure all login options work correctly. At least in my testing on my build machine (running an older Ubuntu LTS release) Qt did not function correctly in some cases.
CLI changes
alias
commandalias add <app name> <alias>
will now also resolve aliases used in place of the app name
auth
command--disable-webview
flag to force manual authentication flow even if webview is available- Pasting the complete JSON response during manual login will also work if user is unsure what they're supposed to copy
install
command--skip-dlcs
flag to skip asking if the user wants to install DLCs
import-game
command- No longer allows for installing DLC without the base game already being installed (#351)
- Will now ask the user if they want to import DLC like
install
does. --with-dlcs
flag to automatically attempt to import all DLC--skip-dlcs
flag to skip asking if the user wants to import DLCs
Bug fixes and improvements
- Use exponential backoff when downloading a file fails to avoid runaway CPU usage (#347)
- Legendary does no longer attempt to read ".egstore" folder for DLC when importing
- No more re-login after client has already logged in once (unless session is about to expire), e.g. when installing DLC
- Added
pywebview
as optional dependency in setup.py to makelegendary[webview]
option available via PyPI