Configuration
JsonConfigStore reads and writes Config.json in the application directory. JSON properties use PascalCase and are read case-insensitively
Close the launcher before editing the file manually and preserve unrelated fields. The following fragment illustrates common preferences, not a complete replacement file:
{
"Language": "en-US",
"Theme": "dark",
"AccentColor": "blue",
"CloseAfterLaunch": false,
"UseCustomJava": false,
"JavaArguments": "-Xms2G -Xmx4G",
"GpuPreference": "auto",
"OnlineMode": false
}
Selection and authentication
| Key | Default | Meaning |
|---|---|---|
Version | 2.0.0 | Configuration schema version, not the launcher release |
SelectedInstanceId | empty | Current instance ID |
SelectedProfileId | empty | Active profile ID |
OnlineMode | true | Use a connected authentication service for local profiles |
AuthDomain | sessions.sanasol.ws | Connected local-profile session service |
AuthServers | [] | User-added authentication service domains available in Network settings |
CurseForgeKey | empty | API key prepared during bootstrap when missing |
Official profiles always use official authentication and do not show the Auth Server editor. For unofficial profiles, the Network settings list appears only while Connected mode is enabled. The built-in sessions.sanasol.ws entry is always listed; AuthServers stores additional user-added entries and AuthDomain stores the selected value. The desktop checks each listed server with the game-session authentication API and records no availability result in configuration. Local Node chooses a free port from 8443 to 9999 on 127.0.0.1; neither the address nor its per-launch port is stored in this file
Launch settings
| Key | Default | Meaning |
|---|---|---|
CloseAfterLaunch | false | Close Desktop after successful process start |
UseCustomJava | false | Use the executable in CustomJavaPath |
CustomJavaPath | empty | Path to the Java executable |
JavaArguments | empty | Extra JVM arguments and UI-managed heap options |
GpuPreference | dedicated | Automatic, legacy adapter type, or a specific adapter key |
GameEnvironmentVariables | empty | Newline-separated KEY=VALUE assignments |
GPU values include auto, legacy dedicated and integrated, or pci:<id> when available and an adapter name otherwise. Platform adapters translate the selection into supported launch overrides
Interface and storage
| Key | Default | Meaning |
|---|---|---|
Language | en-US | UI culture |
Theme | dark | Desktop appearance: dark, light, or system; system follows the operating system |
AccentColor | blue | Primary action color: blue, cyan, green, yellow, orange, red, pink, purple, or slate |
InstanceDirectory | empty | Default instance root, or the HyprismLibrary path created inside the directory selected in Desktop |
ShowAlphaMods | false | Include alpha mod releases |
LastExportPath | empty | Remembered mod export destination |
HasCompletedOnboarding | false | Whether first-run setup finished after a profile was created or official sign-in succeeded |
Desktop shows the wizard when this flag is false and there are no existing profiles or instances. It checks for an enabled mirror when the player chooses an offline profile; a mirror skips the download-source warning.
When loading an older configuration, Desktop removes the unused music and Discord announcement preferences and dismissed announcement IDs. Other unknown properties remain available for future migrations.
Older configurations can contain a custom instance root outside HyprismLibrary. Desktop recognizes those paths when reading configuration. When moving from such a path, it copies recognized instance data and leaves the old directory in place. Desktop marks libraries it creates with .hyprism-library and only removes marked custom roots after a successful move.
Compatibility
Profile names, UUIDs, and sessions belong in Profiles, not Config.json. Loading older data migrates Nick, UUID, Profiles, and ActiveProfileIndex into the profile store
Instances, VersionType, and SelectedVersion remain compatibility fields. PreferredMirror is obsolete and ignored; source selection is automatic
Environment overrides
| Variable | Scope |
|---|---|
HYPRISM_DATA | Existing directory used as the full application data root |
XDG_DATA_HOME | Linux default data root when HYPRISM_DATA is absent |
HYPRISM_WIN32_COMPOSITION | Windows rendering diagnostic override, see performance |
HYPRISM_DOCS_SCREENSHOTS | Opt-in output directory for documentation captures |
The managed launch also supplies Java, DualAuth, GPU, and local certificate variables to child processes. Those runtime values are not independent launcher settings
Source: Config