{"id":18340117,"url":"https://github.com/f33rni/micro-minecraft-launcher","last_synced_at":"2025-09-21T23:03:39.645Z","repository":{"id":248569185,"uuid":"828998427","full_name":"F33RNI/micro-minecraft-launcher","owner":"F33RNI","description":"Simple cross-platform cli launcher for Minecraft","archived":false,"fork":false,"pushed_at":"2025-09-09T01:48:48.000Z","size":97,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-21T23:02:24.580Z","etag":null,"topics":["cli","console","laucnher","linux","minecraft","minecraft-launcher","minecraft-launcher-cli","osx","python","windows"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/F33RNI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2024-07-15T14:48:06.000Z","updated_at":"2025-09-09T01:48:52.000Z","dependencies_parsed_at":"2024-12-23T16:26:02.421Z","dependency_job_id":"73e4a34a-3cc8-4b3e-a7eb-4c1320747d40","html_url":"https://github.com/F33RNI/micro-minecraft-launcher","commit_stats":null,"previous_names":["f33rni/micro-minecraft-launcher"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/F33RNI/micro-minecraft-launcher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/F33RNI%2Fmicro-minecraft-launcher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/F33RNI%2Fmicro-minecraft-launcher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/F33RNI%2Fmicro-minecraft-launcher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/F33RNI%2Fmicro-minecraft-launcher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/F33RNI","download_url":"https://codeload.github.com/F33RNI/micro-minecraft-launcher/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/F33RNI%2Fmicro-minecraft-launcher/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276318991,"owners_count":25621652,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-21T02:00:07.055Z","response_time":72,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["cli","console","laucnher","linux","minecraft","minecraft-launcher","minecraft-launcher-cli","osx","python","windows"],"created_at":"2024-11-05T20:21:02.998Z","updated_at":"2025-09-21T23:03:39.601Z","avatar_url":"https://github.com/F33RNI.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🧱 micro-minecraft-launcher\n\n## Simple cross-platform cli launcher for Minecraft\n\n### 📦 Highly configurable and ideal for your modpacks\n\n----------\n\n\u003cdiv style=\"width:100%;text-align:center;\"\u003e\n    \u003cp align=\"center\"\u003e\n        \u003cimg src=\"https://badges.frapsoft.com/os/v1/open-source.png?v=103\" \u003e\n        \u003cimg alt=\"GitHub Actions Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/F33RNI/micro-minecraft-launcher/tests.yml\"\u003e\n        \u003cimg alt=\"GitHub Actions Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/F33RNI/micro-minecraft-launcher/release.yml\"\u003e\n        \u003cimg alt=\"GitHub License\" src=\"https://img.shields.io/github/license/F33RNI/micro-minecraft-launcher\"\u003e\n    \u003c/p\u003e\n\u003c/div\u003e\n\n----------\n\n## 😋 Support Project\n\n\u003e 💜 Please support the project\n\n- BTC: `bc1qaj2ef2jlrt2uafn4kc9cmscuu8yqkjkvxxr5zu`\n- ETH: `0x284E6121362ea1C69528eDEdc309fC8b90fA5578`\n- ZEC: `t1Jb5tH61zcSTy2QyfsxftUEWHikdSYpPoz`\n\n- Or by my music on [🔷 bandcamp](https://f3rni.bandcamp.com/)\n\n- Or [message me](https://t.me/f33rni) if you would like to donate in other way 💰\n\n----------\n\n## ⚠️ Disclaimer\n\n\u003e micro-minecraft-launcher is under development. Serious bugs are possible!\n\u003e\n\u003e ⚠️ Not tested on OSX\n\n----------\n\n## ❓ Getting Started\n\n### 📄 CLI usage\n\n```text\nusage: micro-minecraft-launcher-1.2.dev5-linux-x86_64 [-h] [-c CONFIG] [-d GAME_DIR] [-l] [-u USER] [--auth-uuid AUTH_UUID]\n                                                      [--auth-access-token AUTH_ACCESS_TOKEN] [--user-type USER_TYPE] [-i]\n                                                      [--java-path JAVA_PATH] [-e KEY=VALUE [KEY=VALUE ...]] [-j JVM_ARGS]\n                                                      [-g GAME_ARGS] [--resolver-processes RESOLVER_PROCESSES] [--write-profiles]\n                                                      [--run-before RUN_BEFORE] [--run-before-java RUN_BEFORE_JAVA]\n                                                      [--delete-files DELETE_FILES [DELETE_FILES ...]] [--verbose] [--version]\n                                                      [id]\n\nSimple cross-platform cli launcher for Minecraft\n\npositional arguments:\n  id                    minecraft version to launch. Run with --list-versions to see available versions\n\noptions:\n  -h, --help            show this help message and exit\n  -c CONFIG, --config CONFIG\n                        path to config file (Default: .micro-minecraft-launcher.json)\n  -d GAME_DIR, --game-dir GAME_DIR\n                        path to .minecraft (Default: /home/fern/.minecraft)\n  -l, --list-versions   print online (official), local versions and exit\n  -u USER, --user USER  player's username\n  --auth-uuid AUTH_UUID\n                        player's UUID (Default: offline UUID from username)\n  --auth-access-token AUTH_ACCESS_TOKEN\n                        Mojang Access Token or the final token in the Microsoft authentication scheme\n  --user-type USER_TYPE\n                        \"msa\" for Microsoft Authentication Scheme, \"legacy\" for Legacy Minecraft Authentication and \"mojang\" for\n                        Legacy Mojang Authentication (Default: mojang)\n  -i, --isolate         put \"saves\", \"logs\" and all other profile data inside versions/version_id directory instead of game_dir\n  --java-path JAVA_PATH\n                        custom path to java binary (Default: download locally)\n  -e KEY=VALUE [KEY=VALUE ...], --env-variables KEY=VALUE [KEY=VALUE ...]\n                        env variable(s) for final command as key=value pairs (Ex.: -e version_type=snapshot launcher_name=custom-\n                        launcher) NOTE: If a value contains spaces, you should define it with double quotes: launcher_name=\"Custom\n                        launcher\" NOTE: Values are always treated as strings NOTE: Will merge \"env_variables\" from config file and\n                        overwrite same variables\n  -j JVM_ARGS, --jvm-args JVM_ARGS\n                        extra arguments for Java separated with spaces (Ex.: -j=\"-Xmx6G -XX:G1NewSizePercent=20\") NOTE: You should\n                        define it with double quotes as in example NOTE: If an argument contains spaces, you should define it with\n                        double quotes: -j '-foo \"multiple words\"' NOTE: Will append to the bottom of \"jvm_args\" from config file\n  -g GAME_ARGS, --game-args GAME_ARGS\n                        extra arguments for Minecraft separated with spaces (Ex.: -g=\"--server 192.168.0.1 --port 25565\") NOTE: You\n                        should define it with double quotes as in example NOTE: If an argument contains spaces, you should define it\n                        with double quotes: -g '-foo \"multiple words\"' NOTE: Will append to the bottom of \"game_args\" from config\n                        file\n  --resolver-processes RESOLVER_PROCESSES\n                        number of processes to resolve (download, copy and unpack) files(Default: 4)\n  --write-profiles      write all found local versions into game_dir/launcher_profiles.json (useful for installing Forge/Fabric)\n  --run-before RUN_BEFORE\n                        run specified command in shell before launching game (ex.: --run-before \"{local_java} -jar\n                        forge_installer.jar --installClient .\") NOTE: Consider adding --run-before-java 17 argument to replace all\n                        {local_java} with downloaded java NOTE: Consider adding --write-profiles argument NOTE: Consider adding\n                        --delete-files \"file/to/delete\" argument\n  --run-before-java RUN_BEFORE_JAVA\n                        download specified version of Java and replace all \"{local_java}\" in --run-before with local java path\n  --delete-files DELETE_FILES [DELETE_FILES ...]\n                        delete files before launching minecraft. Uses glob to find files (Ex.: --delete-files \"forge*installer.jar\"\n                        \"hs_err_pid*.log\")\n  --verbose             debug logs\n  --version             show launcher's version number and exit\n\nexamples:\n  micro-minecraft-launcher --list-versions\n  micro-minecraft-launcher 1.21\n  micro-minecraft-launcher --isolate 1.18.2\n  micro-minecraft-launcher --config /path/to/custom/micro-minecraft-launcher.json\n  micro-minecraft-launcher -d /path/to/custom/minecraft -j=\"-Xmx6G\" -g=\"--server 192.168.0.1\" 1.21\n  micro-minecraft-launcher -j=\"-Xmx4G\" -g=\"--width 800 --height 640\" 1.18.2\n  micro-minecraft-launcher --write-profiles\n  micro-minecraft-launcher --write-profiles --run-before-java 17 --run-before \"java -jar forge-1.18.2-40.2.4-installer.jar --installClient .\" --delete-files \"forge*.jar\"\n```\n\n\u003e ⚠️ NOTE: CLI arguments will overwrite config\n\n### 📦 Use in modpacks\n\n\u003e You can use micro-minecraft-launcher in your modpack. For that, create configuration file (see section below)\n\u003e and install custom profile (`versions/version_id/version_id.json`) and it's extra libraries if needed (ex. forge)\n\n- To download executable file, go to the\n  link \u003chttps://github.com/F33RNI/micro-minecraft-launcher/releases/latest\u003e and download the file for your device\n- Alternatively, you can build the app yourself. For this, refer to the `🏗️ Build from Source` section\n\n### ⚙️ Config file\n\n\u003e With configuration file, users can just lauch executable file without any other arguments\n\u003e For that, create file named `.micro-minecraft-launcher.json` in the same directory as launcher and specify whatever\n\u003e you want in it\n\n```text\n{\n  \"game_dir\": \"path/to/custom/game/dir or . to use current dir\",\n  \"id\": \"version id to launch. Ex.: 1.18.2-forge-40.2.4\",\n  \"isolate_profile\": true to save logs, opions, saves, resourcepacks, etc. inside versions/version_id,\n  \"user\": \"player's username (if not specified, user will be asked)\",\n  \"auth_uuid\": \"player's UUID\",\n  \"auth_access_token\": \"Mojang Access Token or the final token in the Microsoft authentication scheme\",\n  \"user_type\":  \"msa\" for Microsoft Authentication Scheme,\n                \"legacy\" for Legacy Minecraft Authentication and\n                \"mojang\" for Legacy Mojang Authentication (Default: mojang),\n  \"java_path\": \"path/to/custom/java/executable\",\n  \"env_variables\": {\n    \"launcher_name\": \"custom-launcher\"\n  }\n  \"jvm_args\": [\n    \"-Xss1M\",\n    \"-Xmx4G\",\n    \"-XX:+UnlockExperimentalVMOptions\",\n    \"-XX:+UseG1GC\",\n    \"-XX:G1NewSizePercent=20\",\n    \"-XX:G1ReservePercent=20\",\n    \"-XX:MaxGCPauseMillis=50\",\n    \"-XX:G1HeapRegionSize=32M\",\n    \"-Dfml.ignoreInvalidMinecraftCertificates=true\",\n    \"-Dfml.ignorePatchDiscrepancies=true\",\n    \"-Djava.net.preferIPv4Stack=true\",\n    \"-Dminecraft.applet.TargetDirectory=.\"\n  ],\n  \"game_args\": [\n    \"--server\",\n    \"server ip to join automatically\",\n    \"--width\",\n    \"925\",\n    \"--height\",\n    \"530\"\n  ],\n  \"resolver_processes\": 4 (number of processes to download / copy / unpack files),\n  \"write_profiles\": true (write all found local versions into game_dir/launcher_profiles.json),\n  \"run_before\": \"{local_java} -jar path/to/forge-...-installer.jar --installClient .\",\n  \"run_before_java\": version of java to install and replace {local_java} with it's path,\n  \"delete_files\": [\n      \"any file patterns to delete (for glob)\",\n      ...\n  ]\n}\n```\n\n\u003e NOTE: You can omit any config key. None of them are required\n\n#### Example config file\n\n```json\n{\n    \"game_dir\": \".\",\n    \"id\": \"1.18.2-forge-40.2.4\",\n    \"jvm_args\": [\n        \"-Xss1M\",\n        \"-Xmx4G\",\n        \"-XX:+UnlockExperimentalVMOptions\",\n        \"-XX:+UseG1GC\",\n        \"-XX:G1NewSizePercent=20\",\n        \"-XX:G1ReservePercent=20\",\n        \"-XX:MaxGCPauseMillis=50\",\n        \"-XX:G1HeapRegionSize=32M\",\n        \"-Dfml.ignoreInvalidMinecraftCertificates=true\",\n        \"-Dfml.ignorePatchDiscrepancies=true\",\n        \"-Djava.net.preferIPv4Stack=true\",\n        \"-Dminecraft.applet.TargetDirectory=.\"\n    ],\n    \"game_args\": [\n        \"--width\",\n        \"925\",\n        \"--height\",\n        \"530\"\n    ],\n    \"write_profiles\": true,\n    \"run_before\": \"{local_java} -jar forge-1.18.2-40.2.4-installer.jar --installClient .\",\n    \"run_before_java\": 17,\n    \"delete_files\": [\n        \"forge-1.18.2-40.2.4-installer*\",\n        \"hs_err_pid*.log\"\n    ]\n}\n```\n\n```json\n{\n    \"game_dir\": \".\",\n    \"id\": \"fabric-loader-0.15.11-1.20.1\",\n    \"jvm_args\": [\n        \"-Xss1M\",\n        \"-Xmx6G\",\n        \"-XX:+UnlockExperimentalVMOptions\",\n        \"-XX:+UseG1GC\",\n        \"-XX:G1NewSizePercent=20\",\n        \"-XX:G1ReservePercent=20\",\n        \"-XX:MaxGCPauseMillis=50\",\n        \"-XX:G1HeapRegionSize=32M\",\n        \"-Dfml.ignoreInvalidMinecraftCertificates=true\",\n        \"-Dfml.ignorePatchDiscrepancies=true\",\n        \"-Djava.net.preferIPv4Stack=true\",\n        \"-Dminecraft.applet.TargetDirectory=.\",\n        \"-Dorg.lwjgl.glfw.libname=./fix/libglfw.so\"\n    ],\n    \"game_args\": [\n        \"--width\",\n        \"925\",\n        \"--height\",\n        \"530\"\n    ],\n    \"write_profiles\": true,\n    \"run_before\": \"{local_java} -jar fabric-installer-1.0.1.jar client -dir . -mcversion 1.20.1 -loader 0.15.11\",\n    \"run_before_java\": 17,\n    \"delete_files\": [\n        \"fabric-installer-*\",\n        \"hs_err_pid*.log\"\n    ]\n}\n```\n\n----------\n\n## 🛑 Known issues\n\n----------\n\n### Minecraft not using GPU\n\n#### Linux (NVIDIA)\n\nOn linux, just run launcher with `DRI_PRIME=1` (for open-source drivers) or `prime-run` (for proprietary driver)\n\n- ex.: `DRI_PRIME=1 ./micro-minecraft-launcher-1.2.dev7-linux-x86_64`\n- ex.: `prime-run ./micro-minecraft-launcher-1.2.dev7-linux-x86_64`\n\n#### Windows\n\nYou need to manually specify what GPU launcher and java.exe should use\n\n\u003e This tutorial is copied from \u003chttps://pureinfotech.com/set-gpu-app-windows-10/\u003e\n\u003e I don't have windows, so idk will it work or not\n\n1. Open Settings on Windows 10.\n2. Click on System.\n3. Click on Display.\n4. Under the \"Multiple displays\" section, click the Graphics settings option.\n5. Select the app type using the drop-down menu:\n  Classic app — traditional (Win32) desktop programs.\n6. Click the \"Browse\" button and locate the locally downloaded \"java.exe\" by launcher\n7. Use the drop-down menu and select the app.\n8. Click the Add button.\n9. Set GPU for app\n10. Click the Options button.\n11. App GPU options\n12. Set the graphics card preference to use for the app:\n  High performance — runs the app on the most capable GPU, usually an external or discrete graphics processor.\n  Click the Save button.\n\n----------\n\n### SIGSEGV (libglfw.so) or \"stack smashing detected\" on Linux\n\nThe problem is related to the libglfw.so library on Linux, so you need to manually recompile it from source\n\n----------\n\n#### X11 or XWayland\n\n```shell\n# Select working dir (optionally)\ncd \"$HOME/Downloads\"\n\n# Clone repo\ngit clone https://github.com/glfw/glfw.git \u0026\u0026 cd glfw\n\n# Build it\ncmake -S . -B build -D BUILD_SHARED_LIBS=ON -D GLFW_BUILD_EXAMPLES=OFF -D GLFW_BUILD_TESTS=OFF -D GLFW_BUILD_DOCS=OFF -D GLFW_BUILD_WAYLAND=ON -D GLFW_BUILD_X11=ON \u0026\u0026 cmake --build build\n\n# Copy shared libs\nmkdir -p \"$HOME/.local/lib/glfw\" \u0026\u0026 cp build/src/libglfw* \"$HOME/.local/lib/glfw/\"\n\n# Delete repo (optional)\ncd ..\nrm -rf glfw\n```\n\n----------\n\n#### Wayland\n\n```shell\n# Select working dir (optionally)\ncd \"$HOME/Downloads\"\n\n# Clone glfw-wayland from BoyOrigin\ngit clone --recursive https://github.com/BoyOrigin/glfw-wayland.git \u0026\u0026 cd glfw-wayland\n\n# Or my fork (it's the same, just in case)\n# git clone --recursive https://github.com/F33RNI/glfw-wayland.git \u0026\u0026 cd glfw-wayland\n\n# Make sure you setup git in your system properly\n# If not, run this\n# git config --global user.name \"You name\"\n# git config --global user.email \"You email\"\n\n# In case of warning / error try to run this 2 times\n./applyPatches.sh\n\n# Build patched version without X11\ncd glfw-wayland\ncmake -S . -B build -D BUILD_SHARED_LIBS=ON -D GLFW_BUILD_EXAMPLES=OFF -D GLFW_BUILD_TESTS=OFF -D GLFW_BUILD_DOCS=OFF -D GLFW_BUILD_WAYLAND=ON -D GLFW_BUILD_X11=OFF \u0026\u0026 cmake --build build\n\n# Copy shared libs\nmkdir -p \"$HOME/.local/lib/glfw\" \u0026\u0026 cp build/src/libglfw* \"$HOME/.local/lib/glfw/\"\n\n# Delete repo (optional)\ncd ../..\nrm -rf glfw-wayland\n```\n\n----------\n\nSpecify path to shared lib in `jvm_args` (in config) or using `--jvm-args` argument like so:\n\n```json\n{\n    \"game_dir\": \".\",\n    \"id\": \"fabric-loader-0.15.11-1.20.1\",\n    \"jvm_args\": [\n        ...\n        \"-Dorg.lwjgl.glfw.libname=/path/to/.local/lib/glfw/libglfw.so\"\n    ],\n    ...\n}\n```\n\n----------\n\n## 🏗️ Build from Source\n\n### 1. Install Python (tested on `3.11` and `3.12`)\n\n### 2. Clone repo\n\n```shell\ngit clone https://github.com/F33RNI/micro-minecraft-launcher.git\ncd micro-minecraft-launcher\n```\n\n### 3. Create virtual environment and install dependencies\n\n```shell\npython -m venv venv\n\n# For Linux\nsource venv/bin/activate\n\n# For Windows\nvenv\\Scripts\\activate.bat\n\npip install -r requirements.txt --upgrade\n```\n\n### 4. **Launch** micro-minecraft-launcher as module\n\n#### 4.1. Temporarily add path to module to `PYTHONPATH` env variable\n\n- Linux\n\n  ```shell\n  export PYTHONPATH=./src:$PYTHONPATH\n  ```\n\n- Windows\n\n  ```shell\n  set PYTHONPATH=.\\src;%PYTHONPATH%\n  ```\n\n#### 4.2. Launch as module\n\n```shell\npython -m mml --verbose\n```\n\n### 5. **Build** using PyInstaller\n\n```shell\npip install pyinstaller\npyinstaller micro-minecraft-launcher.spec\n```\n\n\u003e Executable will be inside dist/ directory\n\n----------\n\n## ✨ Contribution\n\n- Anyone can contribute! Just create a **pull request**\n- Please use black formatter style for code\n- Please use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/#specification\u003e) style for commits\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ff33rni%2Fmicro-minecraft-launcher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ff33rni%2Fmicro-minecraft-launcher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ff33rni%2Fmicro-minecraft-launcher/lists"}