Skip to main content
The launcher includes a repack store (Explore) and a download queue with a built-in torrent client (Downloads). Your theme does not have to do anything for them to work: the quick menu, Ctrl+E and Ctrl+J open the launcher’s windows on top of your theme. It looks much better if the theme at least shows what is downloading and has a button that goes to the store.

A button that opens the store

What is downloading

ejg.downloads.all is the list of downloads and ejg.downloads.onChange fires when it changes (at most once a second, so you can repaint without worry). The kit has the formatters:
downloadLabel(d) gives a short text for any state (“Paused while you play”, “Ready to install”, “Installing…”).

Discovering games

ejg.explore.browse() returns the whole catalog with filters (genres, sort, size and “hide the ones I already have”) and ejg.explore.genres() returns the genres. With the kit it is almost free:
On a game page, tienda.similar(repack) gives similar games for a “More like this” row.

Games with a hypervisor crack (HV)

Repacks with hypervisor: true ask you to turn off Windows’ security for a while in order to play. Mark them next to the name and explain it on the page. The kit has the text and the pieces:
The classes and the rest are in the reference.

Your own store

If you want the store and the queue to look like your theme, declare this in theme.json:
From then on, the launcher no longer opens its windows. It asks your theme to open its view with ejg.ui.onView(({ view, slug }) => …) (explore, downloads or repack, a game page). The hard logic is already done in /_sdk/kit/store.js (the front page, search, file selection, states…). The Steam theme (themes/steam/store.js) is a complete example, and the reference is in the reference.