|0.2.0||Jun 8, 2021|
|0.1.1||Jun 7, 2021|
|0.1.0||May 31, 2021|
#6 in Emulators
Play any game ROM with associated emulator in RetroArch on Linux
- Author: Tuncay D.
- License: MIT License
- Documentation: Wiki
- Source: Github
- Download: Github
- Rust Package Registry: Crates
enjoy is a wrapper around "RetroArch" on Linux to help running emulator cores on the commandline. A user configuration file can be setup, including rules and aliases to file extensions and emulator paths. Each time the program runs, it will lookup these settings to determine the correct core for each given extension. It can be even used to launch games directly within your favorite file manager by double clicking the ROM file.
$ enjoy '~/roms/snes/Super Mario World (U) [!].smc'
- run RetroArch games directly from your terminal or file manager
- combine it with other programs output like
dmenuto play a game from a list of ROM files
- fast startup
- easy to configure in a single INI file format
- Install and setup RetroArch first, if not done already: RetroArch
- Download enjoy from Releases and unpack it.
- Optionally, install it in a directory within $PATH. The default "install.sh" script that comes with the downloadable distribution archive does it. Read a more detailed description about the installation process in the Wiki: Installation
enjoy --open-configto open the default configuration file or create one at "~/.config/enjoy/default.ini" if it does not exist. Read more about the configuration at User Configuration File.
- Optionally, register enjoy as the default program to the specific ROM file extensions (in example ".smc").
Read a more detailed description about the file in the Wiki: User Configuration File
The default configuration file at "~/.config/enjoy/default.ini" will be
automatically loaded up each time
enjoy is executed. Example:
[options] retroarch = /usr/bin/retroarch [cores] snes = snes9x gb = sameboy_libretro.so [.smc .sfc] core = snes [/home/user/roms/psx/] core = psx
There are 4 different categories of sections.
[options]- Main Options: These are the same options found in the commandline interface of the program. Use
enjoy -hfor short overview or
enjoy --helpfor a longer description of all possible options.
[cores]- Core Rules: Custom alias to any "libretro" core from "RetroArch". On the left side is the name of the core and on the right side the path or filename of an emulator core. If the filename has no directory part, then it will be searched in the "libretro-directory". The part "_libretro.so" in the filename part is optional.
[.ext1 .ext2]- Extension Rules: When a game ROM is loaded up, it's extension is compared if one of these matches. Each extension rule consists of a single or a group of space separated extensions. Each has to start with a dot in their section names. Their rules can include a
corerule, which will be looked up at section
[cores]. Or it can directly have
libretrorule, which is a path to an emulator.
[/path/to/directory]- Directory Rules: Any section with a slash in the name is a directory rule. In this case the folder in which the loaded up game ROM is compared, instead it's extension. If the game is in one of these folders, then these rules kick in. These are the same
Directory Rules should be used sparingly, because a each time the program runs, all directories are checked.
- A few options from
retroarchmain program are not supported yet. As a workaround arguments can be directly passed over to
retroarchitself, by specifying the
--on commandline or
retroarch_arguments =in configuration file.
- The GUI will still be loaded up each time an emulator is run with
"RetroArch". It is recommended to use 2 times
ESC-key in a row to quickly end the current play session and closing the background GUI.
- The Flatpak or Snap version of "RetroArch" might not work with this program.