{"id":25413678,"url":"https://github.com/xan105/mini-launcher","last_synced_at":"2026-04-02T11:53:21.481Z","repository":{"id":277302853,"uuid":"931988940","full_name":"xan105/Mini-Launcher","owner":"xan105","description":"Application launcher with DLL Injection, Lua Scripting, Splash screen, and other goodies","archived":false,"fork":false,"pushed_at":"2026-02-09T14:56:52.000Z","size":3910,"stargazers_count":15,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-02-09T19:05:48.564Z","etag":null,"topics":["dll-injection","dll-injector","golang","launcher","linux","lua-script","splashscreen","windows"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xan105.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"xan105","custom":"https://www.paypal.me/xan105"}},"created_at":"2025-02-13T07:20:09.000Z","updated_at":"2026-02-09T14:56:56.000Z","dependencies_parsed_at":"2025-02-28T05:21:55.888Z","dependency_job_id":"02f208a4-628a-4685-825a-5454993a8ff7","html_url":"https://github.com/xan105/Mini-Launcher","commit_stats":null,"previous_names":["xan105/mini-launcher"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/xan105/Mini-Launcher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xan105%2FMini-Launcher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xan105%2FMini-Launcher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xan105%2FMini-Launcher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xan105%2FMini-Launcher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xan105","download_url":"https://codeload.github.com/xan105/Mini-Launcher/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xan105%2FMini-Launcher/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29332711,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T06:13:03.264Z","status":"ssl_error","status_checked_at":"2026-02-11T06:12:55.843Z","response_time":97,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dll-injection","dll-injector","golang","launcher","linux","lua-script","splashscreen","windows"],"created_at":"2025-02-16T14:21:25.312Z","updated_at":"2026-04-02T11:53:21.472Z","avatar_url":"https://github.com/xan105.png","language":"Go","funding_links":["https://github.com/sponsors/xan105","https://www.paypal.me/xan105"],"categories":[],"sub_categories":[],"readme":"About\n=====\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/xan105/Mini-Launcher/raw/main/banner.png\" width=\"384\" height=\"256\"/\u003e\n\u003c/p\u003e\n\nMini-Launcher is an application launcher with various gaming-related features. \u003cbr /\u003e\nI built this tool as part of my personal game preservation efforts.\n\nHere is a highlight of its features:\n\n  - DLL Injection / ASI plugin loading\n  - Lua Scripting\n  - Splash screen (optional)\n  - Large Address Aware patching\n  - Setting environment variables and arguments with expanding variables\n  - Setting compatibility flags or Wine/Proton prefix options\n  - Set process priority and affinity (pin to specific cores)\n\n🗑 No bloat: a single binary and a config file.\n\n🐧 This software has an emphasis on being compatible with Linux/Proton.\n  \n💻 This software is for my own personal use but feel free to use it.\n\nCommand Line\n============\n\n### `--config string` (launcher.json)\n\nFile path to the json configuration file to use. Defaults to `launcher.json`.\u003cbr /\u003e\nPath can be absolute or relative (to the current working dir)\n\n### `--dry-run`\n\nProgram will exit before starting the executable.\n\n💡 This flag can come in handy when testing Lua Script.\n\n### `--wait`\n\nProgram will wait for the executable to terminate before exiting.\n\n### `--help`\n\nDisplay a message box with all the command line arguments and a short description.\n\nConfig file\n===========\n\nBy default, the launcher uses `launcher.json` (you can override it with `--config`).\n\nMost configuration options are straightforward and self-explanatory, so you should be up and running quickly.\n\n_Example with Red Alert 3:_\n\n```json\n{\n  \"bin\": \"Data/ra3_1.12.game\",\n  \"args\": \"-config \\\"%CURRENTDIR%\\\\RA3_%LANGUAGE%_1.12.SkuDef\\\"\",\n  \"script\": {\n    \"path\": \"keygen.lua\",\n    \"reg\": true\n  },\n  \"addons\": [\n    { \"path\": \"opencnconline.dll\", \"required\": true }\n  ],\n  \"patch\": {\n    \"laa\": true\n  },\n  \"prefix\": {\n    \"overrides\": {\n      \"xinput1_3\": \"native,builtin\"\n    }\n  }\n}\n```\n\nThe configuration is quite flexible, covering everything from process launch parameters to DLL injection and compatibility settings.\n\nThere are a lot of configuration options available but depending on your use case you may only need a small subset of them.\n\nℹ️ For a detailed explanation of each option, see [CONFIG_FILE.md](/CONFIG_FILE.md).\n\nYou can also check the `./example` directory for some examples.\n\nExpanding Variable\n==================\n\nList of variables that will get expanded:\n\n- `%APPDATA%`\n- `%LOCALAPPDATA%`\n- `%PROGRAMDATA%`\n- `%DESKTOP%`\n- `%DOCUMENTS%`\n- `%MUSIC%`\n- `%PICTURES%`\n- `%VIDEOS%`\n- `%DOWNLOAD%`\n- `%SAVEGAME%`\n- `%HOMEDIR%`, `%USERPROFILE%`\n- `%PUBLIC%` \n- `%SYSTEMDIR%`\n- `%TEMP%`, `%TMP%`\n- `%CURRENTDIR%`: Current working dir of the mini-launcher process\n- `%BINDIR%`: Parent dir of the mini-launcher process\n- `%PROCESS%`: Absolute path of the the mini-launcher process\n- `%USERNAME%`\n- `%HOSTNAME%`\n- `%LANGCODE%`: User's language as ISO 639 language code (ex: `en`, `fr`, `de`)\n- `%LANGUAGE%`: User's language in English (ex: `english`, `french`, `german`)\n- `%SCREENWIDTH%`, `%XRES%`: Current primary display horizontal resolution (DPI Aware)\n- `%SCREENHEIGHT%`, `%YRES%`: Current primary display vertical resolution (DPI Aware)\n- `%SCREENREFRESH%`: Current primary display refresh rate\n\nLua Scripting\n=============\n\nOriginally this feature was for handling CD Key generation in old games. It has since become quite extensive 😅.\n\nℹ️ The Lua API provided to the script is documented in [LUA_API.md](/LUA_API.md)\n\nThere are also a few examples in `./example` directory.\n\nAs explained in [CONFIG_FILE.md](/CONFIG_FILE.md), the main script is specified via the `script` option in the config file:\n\n```json\n{\n  \"script\": {\n    \"path\": \"launcher.lua\",\n    \"fs\": false,\n    \"net\": false,\n    \"reg\": false,\n    \"exec\": false,\n    \"import\": false\n  }\n}\n```\n\nThere are permissions for different ressources: filesystem operation, network request, etc. You must explicitly grant access to these resources.\n\nThe script runs just before the executable. In some cases, you may want to run some code on exit or when the target process runs.\nThis can be achieved by leveraging the `wait` option or `--wait` cmdline with callback(s) on event(s) from the `process` module:\n\n```lua\nlocal process = require(\"process\")\n\nprocess.On(\"will-quit\", function()\n  print(\"Bye bye!\")\n  -- Do something\nend)\n\nprocess.On(\"did-start\", function()\n  print(\"Running!\")\n  -- Do something\nend)\n```\n\nBuild\n=====\n\n- Golang v1.26.x\n- [go-winres](https://github.com/tc-hib/go-winres) installed in `%PATH%` env var for win32 manifest \u0026 cie\n\nRun `build.cmd` on Windows\u003cbr/\u003e\nRun `build.sh` on Linux\u003cbr/\u003e\n\nOutput files are located in `./build/${platform}/${config}`\n\n## Github Actions\n\n- `./.github/workflows/go-build-on-linux.yaml` \n- `./.github/workflows/go-build-on-windows.yaml`\n\nBuild all targets (debug and release) and create a release.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxan105%2Fmini-launcher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxan105%2Fmini-launcher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxan105%2Fmini-launcher/lists"}