/steam-rom-manager

An app for managing ROMs in Steam

Primary LanguageTypeScriptGNU General Public License v3.0GPL-3.0

Steam ROM Manager

Build Status GitHub commit activity GitHub all releases Discord

For users

Steam ROM Manager is a super flexible tool for adding non-Steam games to steam in bulk and managing their artwork assets. Added games could be ROMs for emulators, games from other stores such as Epic or GOG, or even not games at all. Have you always wanted your notes from junior year as a category in steam? If so that's pretty weird! But now it's possible.

For an overview of how SRM works see here. There is plenty of documentation available in the app's built in FAQ, and if you need further help there are expert users to be found on the SGDB discord under the Steam ROM Manager category and the SRM subreddit.

Check out the releases page for compiled downloads.

Support

If you enjoy Steam ROM Manager and want it to continue to be useful consider supporting SteamGridDB's Patreon. SteamGridDB hosts all of the artwork Steam ROM Manager uses to make your Steam library the envy of the town, so we should probably help them keep their lights on.

If you're feeling exceptionally generous then feel free to also buy me a coffee!

Buy Me A Coffee

For developers

To compile this app, you'll need the latest Node.js and npm (if for any reason this doesn't work try downgrading to node 14.18.1 LTS using nvm or volta). Every script will need to be run from the project directory.

Before running any scripts, dependencies must be installed using:

npm ci

Scripts

All script must be run using npm run command. For example, npm run watch:renderer.

Script Function
postinstall Recompiles native apps to match Electron's NodeJS version if needed
start Launches compiled app
watch:main Compiles Electron app and watches for changes
watch:renderer Compiles a renderer for an Electron app and watches for changes
build:main Compiles Electron app in production mode
build:renderer Compiles a renderer for an Electron app in production mode
build:dist Runs build:main and build:renderer
build:win Compiles an executable installer for Windows
build:linux Compiles a deb package and AppImage for linux
build:docker build:win and build:linux joined together
build:mac Compiles a dmg package for MacOS

Debugging an app

Run watch:main (usually once since you rarely change anything in Electron app) and watch:renderer. Each command creates separate webpack instance which will watch referenced files for changes and will recompile app.

App can be run using start script. After every recompile by watch:renderer, app can be refreshed using Ctrl + R, however watch:main requires need a restart.

Ctrl + Shift + I can be used to launch Chrome inspector once the app is running. This works even in the release version.

Building and app

For Windows

Scripts must be run in this order:

npm run build:dist
npm run build:win

For linux

Scripts must be run in this order:

npm run build:dist
npm run build:linux

For MacOS

Scripts must be run in this order:

npm run build:dist
npm run build:mac