Settings reference
On this page
What every setting in the tab config and game config does.
About the defaults listed here. These are the raw defaults: what a setting is worth when nothing else has set it. They are the right thing to know for understanding a field, but they are frequently not what your extension actually has.
Generation writes its own values on top, so an extension created by the wizard starts with the Generator’s choices rather than these. An emulator extension, for example, arrives with the data source, artwork settings, and download method already set to something other than the values below.
Use this reference to learn what a setting means. To find out what it is currently set to, look at the extension itself, or ask Junk Store Pro for the resolved value. See Settings and environment variables.
Finding settings: the visibility dropdown
Most settings are hidden by default. At the top of a configuration screen there is a dropdown that controls how much you see:
| Level | Shows |
|---|---|
| Basic | Only the everyday settings |
| Advanced | Basic, plus per extension behaviour |
| Expert | Advanced, plus emulator and platform internals |
| All | Everything, including rarely touched fields |
If a setting named here is not on screen, raise the level. Each field below is tagged with the lowest level that reveals it.
Sections themselves are also levelled, so a whole section can be hidden. The WGET, RSYNC, and RetroArch sections are hidden until you reach the level they need.
Editing a field by hand
Every field in a config editor can be edited as free form text, whatever control it normally shows. This is the escape hatch when the dropdown does not offer the value you need, or when a field expects something the control cannot express.
Press Y on the field to open a text editor for it. Type whatever you want and it is saved as the field’s value. This works on toggles, dropdowns, numbers, and paths, not just text fields, so you are never limited to the choices presented.
Two related gestures on a field:
| Input | Effect |
|---|---|
| Y | Open the text editor and type the value directly |
| Start | Reset that field to its default value |
Start resets one field, or all of them
The same button does both, and which you get depends on what is focused:
| Focus | Start does |
|---|---|
| A field | Resets that field |
| The visibility dropdown at the top | Resets every value in the configuration |
Default means the extension’s own default, not empty. Each field is restored to the DefaultValue it was generated with, so an extension whose defaults were set properly in the Generator resets to a working configuration rather than a blank one. That is the case it is designed for.
What it discards is everything set on top of that: the adjustments you made through this screen after the extension was generated. If those matter, so does the confirmation dialog.
Two things soften it. The dialog is asked first, and nothing is written until you save, so a reset you did not mean can be abandoned by backing out and choosing Discard at the Unsaved Changes prompt. Once saved, there is no undo.
The cog on a field changes its type. If a field is presenting the wrong kind of control for what you need, you can switch it between Boolean, Number, String, List, File, and Directory. Range is offered when the field has a usable minimum and maximum, and List when it has values to choose from.
This is genuinely useful and genuinely sharp. Typing a value by hand skips whatever validation the normal control provides, so a malformed value will reach the scripts as you typed it. If something stops working right after you edited a field this way, press Start on it to restore the default.
Two places settings live
Tab config applies to the whole store, meaning every game in that tab. Reached from the cog menu on the store’s tab.
Game config applies to one game and overrides the tab setting where both exist. Reached from the game’s own configuration.
The game config carries a smaller set: RetroArch, Advanced, and ENVIRONMENT. Everything else is tab level only.
General
Settings that control how the store behaves day to day.
| Setting | Type | Default | Level | What it does |
|---|---|---|---|---|
| Install Location | Enum | SSD | Basic | Where new games install: SSD (internal), MicroSD (card), or Other to use your own path |
| Custom Install Path | Directory | /home/deck | All | The path used when Install Location is Other |
| Install Directory | String | Games/<Store> | All | Where inside the install location games go. Always relative: it is joined onto home (SSD), the card mount point (MicroSD), or the Custom Install Path (Other). No leading slash |
| Roms in root | Boolean | true | Basic | Whether ROMs sit directly in the folder rather than each in its own subfolder named after the ROM |
| ROMS Extension | Enum | iso | All | The file extension of your ROMs. Choices: zip, iso, 7z, nes, sfc, z64, gbc |
| Download Extension | Enum | zip | All | The file extension of downloaded files, same choices as above |
| Download method | Enum | script | All | How games are fetched: script (the extension’s own downloader), rsync, or none |
| Enable Run Exe in Game Dir | Boolean | True | All | Lets you browse for and run executables inside the game directory |
Advanced
Per extension behaviour. Several of these change which actions appear in the UI, not just how they work.
| Setting | Type | Default | Level | What it does |
|---|---|---|---|---|
| Show installation options | Boolean | true in the schema | Expert | Show the installation options popup before installing. The shipped extensions do not present it, because running the four scripts delays every install and their defaults are almost always right. Turn it on when you need to choose DLC, languages or dependencies per install |
| Needs Login | Boolean | false | All | Adds login and logout actions for this store |
| Has bat files | Boolean | false | All | Adds an editor for the .bat files stored against a game, used for DOS and old Windows games. See below |
| Has pre installation settings | Boolean | unset | All | The store has settings to present before install |
| platform | Enum | empty | Advanced | Which launcher to use. Choices come from the launchers installed on your system, for example Proton or Linux. Setting this to a Proton or Linux value also adds the Proton related actions |
| platform-version | String | empty | Advanced | A specific version of the chosen platform |
| platform-fork | Enum | empty | Advanced | A variant of the platform: dosbox, dosboxx, staging, or blank |
| Data source | Enum | empty | All | Where artwork and metadata come from. Libretro uses RetroArch thumbnails; the rest are platform identifiers used for artwork lookup. Only Epic, Gog, and Amazon additionally drive Proton compatibility id assignment; every other value is artwork only |
| Base Url | Enum | empty | All | Base URL the extension downloads content from |
| Url encode | Boolean | false | All | URL encode arguments passed to URLs |
| Use proxy cache for images | Boolean | false | All | Fetch images through the local proxy cache instead of directly |
| image-prefix | Enum | empty | All | Prefix for image lookups, used with RetroArch thumbnail paths |
| store-url | String | empty | All | The store’s web address |
| Use Legacy Clients | Boolean | false | Expert | Use the older flatpak clients such as Legendary instead of the built in native clients |
| Enable Cloud Saves | Boolean | unset | All | See the warning below |
About Has bat files
The .bat files are held in the game’s database record, not read from the install directory when the game runs. They get there by being imported, from the file manager’s context menu on a .bat file, in the same way a dosbox.conf is imported. The actions this setting adds then read them back out for editing and save your changes to the record.
Worth knowing because it means editing the file on disk and editing it here are two different things. This is the same round trip described in Importing a DOSBox conf, applied to batch files.
About Enable Cloud Saves
This setting carries an explicit warning in the software itself: enabling it is likely to lose or corrupt save games, and no support is offered if it goes wrong. Leave it off unless you are willing to accept that risk and manage your own backups.
About Data source
The value is used as a platform slug when looking up artwork and metadata. There is a long list, covering PC stores (Steam, Epic, Gog, Amazon, Origin, Uplay, Battlenet, Itch, Humble and many more), game specific launchers (Ffxiv, Minecraft, Pathofexile and similar), modern consoles (Psn, Xboxone, Nswitch, Psp, Psvita, Nds, 3ds), older consoles (Ps2, Psx, N64, Nwii, Ncube, Dc, Saturn, Jaguar, 3do) and retro systems (Snes, Nes, Sms, Segacd, Neo, C64, Zx, Atari, Amiga).
Pick the platform your games actually belong to and artwork lookups will match. Libretro is the special case: it uses the RetroArch thumbnail repository instead.
script is missing from the dropdown, even though it is the field’s own DefaultValue. If you want it, press Y on the field and type it. That escape hatch works on any field, but this is the one case where the value you need is absent from its own list of choices.
Download method and Data source: set them in two places
These two need setting in the Generator definition and in the tab configuration UI, and missing either one fails silently. It is the first thing that stops a hand-built extension working.
The two places do different jobs:
| Where | Why it matters |
|---|---|
| The Generator definition | This is what gets exported. A value not set here does not travel with a shared extension, so someone installing yours gets the default |
| The tab configuration UI | This is what runs. Generation preserves an existing <store>tabconfig.json rather than overwriting it, so a value set only in the definition does not reach a machine that has already generated |
So set both. Setting only the definition leaves your own machine on the old value. Setting only the tab config means it works for you and not for anyone you share with.
The alternative is to delete the generated file and regenerate. With no <store>tabconfig.json to preserve, generation writes a fresh one from the definition. That is the way to make an already-generated extension pick up a definition change.
Known issue: the failure is silent. An import that includes these reports success and changes nothing, and the symptom is several steps removed from the cause:
- The extension stays on whatever download method it had, commonly
rsync. - The rsync listing path then runs against an unset
ROMS_PATH, finds nothing, and writeslisting.txtat 0 bytes on every refresh. getlistingis never called, so the tab populates nothing.- Regenerating does not help, because the generated file is preserved.
That last point is why it survives repeated attempts. See Config layering.
ENVIRONMENT
Environment variables passed to the game, mainly for Proton and umu behaviour.
| Setting | Type | Default | Level | What it does |
|---|---|---|---|---|
| HOST_LC_ALL | Enum | empty | All | Host locale, for example en_US.UTF-8. Use when a game needs a specific language |
| LANG | Enum | empty | All | Language for the game, same choices as above |
| Umu Store Name | Enum | empty | All | Which store umu should present itself as, which can affect game specific fixes. Choices include amazon, battlenet, ea, egs, gog, humble, itchio, steam, ubisoft, zoomplatform |
| Toggle offline mode | Boolean | false | Basic | Run the game in offline mode |
Available languages for the locale settings are English, German, French, Italian, Spanish (Spain), Portuguese (Brazil), Japanese, Chinese Simplified, Korean, Polish, and Russian.
RetroArch
Only relevant for emulated games. This section is hidden until Expert level.
| Setting | Type | Default | Level | What it does |
|---|---|---|---|---|
| Cores location | Directory | RetroArch flatpak cores path | All | The directory holding your RetroArch cores. The default points at the flatpak install |
| RetroArch Core | Enum | empty | Expert | Which core runs this game. The list is a catalogue of known cores, not a list of what you have installed |
A core you do not have yet is downloaded automatically on first launch, so you can select any core in the list. Make sure Cores location points at your real RetroArch cores directory, or the download will land where RetroArch cannot see it. See Emulators and ROM discovery.
At the system level there is also a RetroArch System setting, which selects the system rather than the individual core.
RSYNC
Used when Download method is set to rsync. Hidden until All level.
| Setting | Type | Default | What it does |
|---|---|---|---|
| Use SSH | Boolean | true | Tunnel rsync over SSH |
| SSH User | String | user | Username on the remote machine |
| SSH Host | String | 127.0.0.1 | Address of the remote machine |
| SSH Port | String | 22 | SSH port |
| ROMS Path | Directory | /home/deck/roms | Path on the remote machine holding the games |
WGET
A place to keep a base URL for an extension that downloads over HTTP. Hidden until All level.
| Setting | Type | Default | What it does |
|---|---|---|---|
| Base url | String | http://localhost/ | The base URL to download from |
This section is available to any extension and is in use today. It reaches your scripts as WGET_BASE_URL, like every other setting, and a script downloader can read it and fetch from it however it likes.
What it is not is a built in download method. A fourth method was planned around this section and dropped, because a script already does the job; the setting stayed because a downloader still needs somewhere to keep its base URL. See A note on other methods.
Generator placement settings
These control where your extension appears in the Junk Store Pro interface, and are set on the extension in the Generator rather than per store.
| Setting | Type | Default | Level | What it does |
|---|---|---|---|---|
| Group Name | Enum | Custom Stores | All | The section your extension is listed under: Custom Stores, Emulators, or Other |
| Section name | Enum | Games | All | The button your extension appears under, which is a collection of tabs: Games, Nintendo, Sega, Nec, or Tools |
Tab config versus game config
Where a setting exists in both, the game value wins for that game. The game config contains:
- RetroArch: core selection for this specific game
- Advanced:
platform,platform-version,platform-fork, andEnable Cloud Saves - ENVIRONMENT: the locale, umu store, and offline mode settings
This is how you run one game under a different Proton version, or with a different emulator core, without changing the whole store.
After changing a setting
Settings that affect generated scripts need a regenerate to take effect. See the regenerate step.