Skip to content

Project

Building from source

Build the launcher and CLI yourself on Windows or Linux.

Requirements#

  • Rust, stable toolchain
  • Windows: the MSVC toolchain (Visual Studio Build Tools). The Windows SDK's resource compiler embeds the app icon; without it the build still succeeds with a default icon.
  • Linux: a C toolchain (build-essential). The window uses X11 or Wayland through OpenGL, loaded at runtime.

Build#

git clone https://github.com/brksfrb/arctic-launcher
cd arctic-launcher
cargo build --release -p arctic-app -p arctic-cli

This produces:

BinaryWindowsLinux
Launchertarget/release/arctic-launcher.exetarget/release/arctic-launcher
Command linetarget/release/arctic.exetarget/release/arctic

Run the launcher directly with cargo run --release -p arctic-app.

The Arctic Client#

The launcher embeds the jars in mod/dist/, which are committed, so the steps above don't need Java. The client is a shared core (mod/core, Java 8, no Minecraft code) plus one adapter source tree for every Fabric version (mod/versions/fabric), where version differences sit in //#if MC >= 26.2 … //#else … //#endif blocks that the build resolves. mod/targets.json lists what gets built and which Minecraft versions each jar covers; the launcher reads the same file. To change the client, you need JDK 25:

cd mod && ./gradlew -p core build   # checks the core still compiles for Java 8
python mod/build.py                 # every target into mod/dist (or: python mod/build.py 26.2)

Launch an instance with ARCTIC_COSMETICS_URL=http://127.0.0.1:8080 set to point the client and the launcher at a local cosmetics server. Adding -Darctic.selftest=true to the instance's JVM arguments makes the client screenshot each of its screens and quit, which is handy after changing an adapter.

The cosmetics server#

ARCTIC_COSMETICS_SECRET=$(openssl rand -hex 32) \
ARCTIC_COSMETICS_ASSETS=crates/arctic-cosmetics/assets \
cargo run -p arctic-cosmetics

It listens on 0.0.0.0:8080 and stores data in cosmetics.db. For deployment there is a Dockerfile: docker build -f crates/arctic-cosmetics/Dockerfile -t arctic-cosmetics . (mount a volume at /data).

Optional settings: ARCTIC_COSMETICS_TRUST_PROXY=1 when it runs behind a reverse proxy (rate limits use X-Forwarded-For), and ARCTIC_COSMETICS_ADMIN_KEY to remove any gallery item with DELETE /v1/gallery/{id} and an X-Admin-Key header.

Checks#

cargo fmt --all --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace

CI runs these on every push.

Development tips#

  • ARCTIC_DATA_DIR=<dir> keeps a dev build's data away from your real installation. A portable.txt next to the executable does the same, using ./data.
  • cargo run -p arctic-core --example smoke_launch -- latest --spawn downloads and starts a version and prints timings.
  • arctic -v … shows the launcher's log on stderr.

Microsoft sign-in in your build#

Microsoft sign-in needs an Azure application (client) ID that Mojang has approved for Minecraft. Official releases include one. For your own builds, register an app and pass its ID at build time or at runtime, as described in microsoft-auth.md. Without it, the Microsoft options show as unavailable.

Releasing#

See releasing.md.

Edit this page on GitHub