MCPcopy
hub / github.com/legendary-gl/legendary

github.com/legendary-gl/legendary @0.20.34 sqlite

repository ↗ · DeepWiki ↗ · release 0.20.34 ↗
424 symbols 1,471 edges 40 files 51 documented · 12%
README

Legendary

A free and open-source Epic Games Launcher alternative

Logo

Discord Twitter Follow

Legendary is an open-source game launcher that can download and install games from the Epic Games platform on Linux, macOS, and Windows. Its name as a tongue-in-cheek play on tiers of item rarity in many MMORPGs.

Please read the the config file and cli usage sections before creating an issue to avoid invalid reports.

If you run into any issues ask for help on our Discord or create an issue on GitHub so we can fix it!

Finally, if you wish to support the project, please consider buying me a coffee on Ko-Fi. Alternatively, if you've been considering picking up a copy of CrossOver you can use my affiliate link and discount code LEGENDARY15 in their store.

Note: Legendary is currently a CLI (command-line interface) application without a graphical user interface, it has to be run from a terminal (e.g. PowerShell)

Features: - Authenticating with Epic's service - Downloading and installing your games and their DLC - Delta patching/updating of installed games - Launching games with online authentication (for multiplayer/DRM) - Syncing cloud saves (compatible with EGL) - Running games with WINE on Linux/macOS - Importing/Exporting installed games from/to the Epic Games Launcher (unsupported for macOS version of EGL)

Planned: - Simple GUI for managing/launching games - Lots and lots of bug fixes, optimizations, and refactoring...

Requirements

  • Linux, Windows (8.1+), or macOS (12.0+)
  • 32-bit operating systems are not supported
  • python 3.9+ (64-bit)
  • (Windows) pythonnet is not yet compatible with 3.10+, use 3.9 if you plan to install pywebview
  • PyPI packages:
  • requests
  • (optional) pywebview for webview-based login
  • (optional) setuptools and wheel for setup/building

Note: Running Windows applications on Linux or macOS requires Wine.

How to run/install

Package Manager (Linux)

Several distros already have packages available, check out the Available Linux Packages wiki page for details.

Currently this includes Arch, Fedora, openSUSE, and Gentoo but more will be available in the future.

Note that since packages are maintained by third parties it may take a bit for them to be updated to the latest version. If you always want to have the latest features and fixes available then using the PyPI distribution is recommended.

Prebuilt Standalone Binary (Windows, macOS, and Linux)

Download the legendary or legendary.exe binary from the latest release and move it to somewhere in your $PATH/%PATH%. Don't forget to chmod +x it on Linux/macOS.

The Windows .exe and Linux/macOS executable were created with PyInstaller and will run standalone even without python being installed. Note that on Linux glibc >= 2.25 is required, so older distributions such as Ubuntu 16.04 or Debian stretch will not work.

Python Package (any)

Prerequisites

To prevent problems with permissions during installation, please upgrade your pip by running python -m pip install -U pip --user.

Tip: You may need to replace python in the above command with python3 on Linux/macOS, or py -3 on Windows.

Installation from PyPI (recommended)

Legendary is available on PyPI, to install simply run:

pip install legendary-gl

Optionally if logging in via an embedded web view is desired also run

pip install legendary-gl[webview]

On Linux this may also require installing a supported web engine and its python bindings.
Ubunutu example:

sudo apt install python3-gi-cairo
pip install legendary-gl[webview]

Alternatively pip install legendary-gl[webview_gtk] or pip install pywebview[gtk] will work but may require manually installing dependencies needed to build PyGObject.

Note: Using pywebview's Qt engine may not work correctly. Using pywebview is currently unsupported on macOS.

Manually from the repo

  • Install python3.9, setuptools, wheel, and requests
  • Clone the git repository and cd into it
  • Run pip install .

Ubuntu 20.04 example

Ubuntu 20.04's standard repositories include everything needed to install legendary:

sudo apt install python3 python3-requests python3-setuptools-git
git clone https://github.com/derrod/legendary.git
cd legendary
pip install .

If the legendary executable is not available after installation, you may need to configure your PATH correctly. You can do this by running the command:

echo 'export PATH=$PATH:~/.local/bin' >> ~/.profile && source ~/.profile

Directly from the repo (for dev/testing)

  • Install python3.9 and requests (optionally in a venv)
  • cd into the repository
  • Run pip install -e .

This installs legendary in "editable" mode - any changes to the source code will take effect next time the legendary executable runs.

Quickstart

Tip: When using PowerShell with the standalone executable, you may need to replace legendary with .\legendary in the commands below.

To log in:

legendary auth

When using the prebuilt Windows executables of version 0.20.14 or higher this should open a new window with the Epic Login.

Otherwise, authentication is a little finicky since we have to go through the Epic website and manually copy a code. The login page should open in your browser and after logging in you should be presented with a JSON response that contains a code ("authorizationCode"), just copy the code into the terminal and hit enter.

Alternatively you can use the --import flag to import the authentication from the Epic Games Launcher (manually specifying the used WINE prefix may be required on Linux). Note that this will log you out of the Epic Launcher.

Listing your games

legendary list

This will fetch a list of games available on your account, the first time may take a while depending on how many games you have.

Installing a game

legendary install Anemone

Note: the name used here is generally the game's "app name" as seen in the games list rather than its title, but as of 0.20.12 legendary will try to match game names or abbreviations thereof as well. In this case legendary install world of goo or legendary install wog would also work!

List installed games and check for updates

legendary list-installed --check-updates

Launch (run) a game with online authentication

legendary launch "world of goo"

Tip: most games will run fine offline (--offline), and thus won't require launching through legendary for online authentication. You can run legendary launch <App Name> --offline --dry-run to get a command line that will launch the game with all parameters that would be used by the Epic Launcher. These can then be entered into any other game launcher (e.g. Lutris/Steam) if the game requires them.

Importing a previously installed game

legendary import Anemone /mnt/games/Epic/WorldOfGoo

Note: Importing will require a full verification so Legendary can correctly update the game later.
Note 2: In order to use an alias here you may have to put it into quotes if if contains more than one word, e.g. legendary import-game "world of goo" /mnt/games/Epic/WorldOfGoo.

Sync savegames with the Epic Cloud

legendary sync-saves

Note: When this command is run the first time after a supported game has been installed it will ask you to confirm or provide the path to where the savegame is located.

Automatically sync all games with the Epic Games Launcher

legendary -y egl-sync

Usage

```` usage: legendary [-h] [-H] [-v] [-y] [-V] [-J] [-A ] ...

Legendary v0.X.X - "Codename"

optional arguments: -h, --help show this help message and exit -H, --full-help Show full help (including individual command help) -v, --debug Set loglevel to debug -y, --yes Default to yes for all prompts -V, --version Print version and exit -J, --pretty-json Pretty-print JSON -A , --api-timeout API HTTP request timeout (default: 10 seconds)

Commands: activate Activate games on third party launchers alias Manage aliases auth Authenticate with the Epic Games Store clean-saves Clean cloud saves cleanup Remove old temporary, metadata, and manifest files crossover Setup CrossOver for launching games (macOS only) download-saves Download all cloud saves egl-sync Setup or run Epic Games Launcher sync eos-overlay Manage EOS Overlay install import Import an already installed game info Prints info about specified app name or manifest install (download, update, repair) Install/download/update/repair a game launch Launch a game list List available (installable) games list-files List files in manifest list-installed List installed games list-saves List available cloud saves move Move specified app name to a new location status Show legendary status information sync-saves Sync cloud saves uninstall Uninstall (delete) a game verify Verify a game's local files

Individual command help:

Command: activate usage: legendary activate [-h] (-U | -O)

optional arguments: -h, --help show this help message and exit -U, --uplay Activate Uplay/Ubisoft Connect titles on your Ubisoft account (Uplay install not required) -O, --origin Activate Origin/EA App managed titles on your EA account (requires Origin to be installed)

Command: alias usage: legendary alias [-h] [] []

positional arguments: Action: Add, rename, remove, or list alias(es) App name when using "add" or "list" action, existing alias when using "rename" or "remove" action New alias when using "add" action

optional arguments: -h, --help show this help message and exit

Command: auth usage: legendary auth [-h] [--import] [--code ] [--sid ] [--delete] [--disable-webview]

optional arguments: -h, --help show this help message and exit --import Import Epic Games Launcher authentication data (logs out of EGL) --code Use specified authorization code instead of interactive authentication --token Use specified exchange token instead of interactive authentication --sid Use specified session id instead of interactive authentication --delete Remove existing authentication (log out) --disable-webview Do not use embedded browser for login

Command: clean-saves usage: legendary clean-saves [-h] [--delete-incomplete] []

positional arguments: Name of the app (optional)

optional arguments: -h, --help show this help message and exit --delete-incomplete Delete incomplete save files

Command: cleanup usage: legendary cleanup [-h] [--keep-manifests]

optional arguments: -h, --help show this help message and exit --keep-manifests Do not delete old manifests

Command: crossover usage: legendary crossover [-h] [--reset] [--download] [--ignore-version] [--crossover-app

positional arguments: App name to configure, will configure defaults if ommited

optional arguments: -h, --help show this help message and exit --reset Reset default/app-specific crossover configuration --download Automatically download and set up a preconfigured bottle (experimental) --ignore-version Disable version check for available bottles when using --download --crossover-app

Command: download-saves usage: legendary download-saves [-h] []

positional arguments: Name of the app (optional)

optional arguments: -h, --help show this help message and exit

Command: egl-sync u

Core symbols most depended-on inside this repo

info
called by 251
legendary/cli.py
write
called by 45
legendary/models/manifest.py
read
called by 40
legendary/models/manifest.py
items
called by 28
legendary/models/manifest.py
add_parser
called by 23
legendary/utils/custom_parser.py
get_boolean_choice
called by 22
legendary/utils/cli.py
write
called by 18
legendary/models/chunk.py
get_game
called by 17
legendary/core.py

Shape

Method 313
Function 60
Class 51

Languages

Python100%

Modules by API surface

legendary/core.py87 symbols
legendary/models/manifest.py60 symbols
legendary/lfs/lgndry.py36 symbols
legendary/cli.py34 symbols
legendary/api/egs.py24 symbols
legendary/models/game.py21 symbols
legendary/utils/egl_crypt.py19 symbols
legendary/models/json_manifest.py16 symbols
legendary/models/downloading.py13 symbols
legendary/lfs/utils.py11 symbols
legendary/utils/webview_login.py9 symbols
legendary/models/chunk.py9 symbols

For agents

$ claude mcp add legendary \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact