/HeroicBashLauncher

Directly launch any Epic Games Store game from anywhere on Linux

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

GitHub GitHub release (latest by date including pre-releases) GitHub Repo stars GitHub closed issues GitHub top language

HeroicBashLauncher

Ever wanted to launch your Epic Games Store and GOG games installed through Heroic Games Launcher directly from the terminal, Lutris, Steam or any other frontend game launcher? Heroic Bash Launcher lets you do this very easily.

You can now launch your game directly without having to open Heroic at all. There's no need to run heroic to find the game's launch command or write your own launch script with Legendary! Thus saving your time!

Heroic Bash Launcher

Pre-requisites

  • Heroic 2.0.0+
  • Zenity

Building & Testing

Since the program makes use of an executable, you will need Python version 3.8+ and PyInstaller to build the code.

To test the program, open the terminal in the func directory and use the following command to build -

pyinstaller HeroicBashLauncher.py --onefile -p <fullpath>/HeroicBashLauncher/func

This will generate an executable stored in the dist folder. Copy the executable, paste it in HeroicBashLauncher and run it.

Installation

Head over to the Releases page. Then download and extract the .zip file of the latest release.

Usage

Running the Program

Execute the program by simply double-clicking the HeroicBashLancher executable (You might need to enable executable permission). You should be greeted by the Process Finished dialog at the end.

Using the Heroic Games Launcher AppImage? Make sure to read this.

Running Games

You can run your game by executing the game's launch file using the terminal like ./RocketLeague.sh or using your preferred game launcher/manager, just point the executable path to the game's launch file (~/HeroicBashLauncher/GameFiles/RocketLeague.sh). Simple!

Here's a guide on Adding Heroic games to Steam and Lutris.

Don't copy or move the game files and launch scripts anywhere else, it won't work.

Working

Heroic Bash Launcher automatically detects installed games and creates a launch file for each game. It basically reads the .json files stored in ~/.config/heroic/GamesConfig.

The launch file is created using the bash shell script, i.e. .sh files. For example, if I have Rocket League installed, it will create the launch file titled "RocketLeague.sh". All these launch files will be available in the GameFiles folder.

Every game's launch file will contain all the launch parameters according to the game's setting in Heroic Games Launcher, including cloud syncing for supported games.

Here's an example below of "RocketLeague.sh" -

#!/bin/bash 

#Game Name = Rocket League

#App Name (Legendary) = Sugar

#Overrides launch parameters
cd .. && ./HeroicBashLauncher "Rocket League" "Sugar" "/home/redromnon/.config/heroic/GamesConfig/Sugar.json" "epic" 



(WINE_FULLSCREEN_FSR=1 WINE_FULLSCREEN_FSR_STRENGTH=2 WINEESYNC=1 mangohud --dlsym /opt/Heroic/resources/app.asar.unpacked/build/bin/linux/legendary launch Sugar --wine '/home/redromnon/.config/heroic/tools/wine/Wine-7.2-GE-2/bin/wine64' --wine-prefix '/home/redromnon/.wine' || (echo "---CANNOT CONNECT TO NETWORK. RUNNING IN OFFLINE MODE---" ; WINE_FULLSCREEN_FSR=1 WINE_FULLSCREEN_FSR_STRENGTH=2 WINEESYNC=1 mangohud --dlsym /opt/Heroic/resources/app.asar.unpacked/build/bin/linux/legendary launch Sugar --offline --wine '/home/redromnon/.config/heroic/tools/wine/Wine-7.2-GE-2/bin/wine64' --wine-prefix '/home/redromnon/.wine' )) || (zenity --error --title="Error" --text="Failed to launch games. Consider posting the log as an issue" --width=200 --timeout=3)

Features Planned

  • Ask user for a default path for saving game launch files
  • Additional game launch options support (Eg. ARK)
  • Flatpak Support
  • GUI

Issues

If the program doesn't produce the game bash files (launch files), update the launch parameters or displays an error dialog, consider running the program from the terminal like ./HeroicBashLauncher and post the log as an issue.

License

This project is under the GNU GPLv3 license. You can take a look at the LICENSE.md for more information.

You can check out the Wiki for FAQs and Changelog