Settings files¶
Both files are plain JSON and can be edited by hand while the program that owns them is closed. Both are forgiving: a bad value falls back to its default or is clamped into range, and a file that cannot be read is set aside, never deleted.
Launcher settings¶
launcher.json in the data folder. Written atomically.
{
"schema": 1,
"selected": { "minecraft": "1.8.9", "kind": "xol" },
"preset": "balanced",
"memoryMiB": null,
"javaPath": null,
"width": 1280,
"height": 720,
"fullscreen": false,
"extraJvmArgs": [],
"instanceIds": {},
"diagnosticsConsent": false,
"autoUpdate": true
}
These are the defaults.
| Field | Type | Default | Allowed | Set in |
|---|---|---|---|---|
schema |
number | 1 |
1 |
|
selected.minecraft |
text | "1.8.9" |
A Minecraft version that has a profile | Main screen |
selected.kind |
text | "xol" |
xol, optifine, forge, forge-optimized. (fabric and fabric-optimized are reserved for later; no such profile exists yet.) |
Main screen |
preset |
text | "balanced" |
max-fps, balanced, quality, battery |
Main screen |
memoryMiB |
number or null |
null |
null means "use the recommendation". Otherwise whole MiB from 512 up. When set in the launcher it is clamped to 75% of installed memory and rounded down to 256. |
Settings ▸ Game |
javaPath |
text or null |
null |
An absolute path of at most 1,024 characters. null means the managed runtime. |
Settings ▸ Java |
width |
number | 1280 |
640 to 7680 | Settings ▸ Game |
height |
number | 720 |
480 to 4320 | Settings ▸ Game |
fullscreen |
true or false | false |
Settings ▸ Game | |
extraJvmArgs |
list of text | [] |
At most 32 flags, each starting with -, without spaces, at most 512 characters. Flags that load code are refused at launch. |
Settings ▸ Java |
instanceIds |
object | {} |
Maps a profile identifier to the instance to use for it, for example {"xol-1.8.9": "xol-1.8.9-custom"}. At most 64 entries. A profile that is not listed uses its default instance. |
Settings ▸ Instance |
diagnosticsConsent |
true or false | false |
Only a literal true counts as consent. Anything else, including a missing field, is "no". |
Settings ▸ Support |
autoUpdate |
true or false | true |
On unless it is a literal false |
Settings ▸ Service |
The file contains no credentials. The account and the access key are in accounts.json and service.json, sealed by the operating system.
How a damaged or foreign file is handled¶
| Situation | Result |
|---|---|
| One field has a bad value | That field alone falls back to its default |
The file is not readable, or has no valid schema |
Defaults are used. The old file is first copied to launcher.json.bak-<number>. The launcher shows "Settings were reset". |
The file was written by a newer Xol (schema higher than this build knows) |
The same: defaults, a backup copy, a notice. A newer file is never overwritten in place. |
Client settings¶
xol/config.json inside each Xol instance. Schema 2. Saved when a Xol screen closes.
{
"schema": 2,
"activeLayout": "Default",
"modules": {
"<module id>": { "enabled": false, "settings": { "<setting id>": "<value>" } }
},
"layouts": [
{ "name": "Default", "modules": { "<module id>": { "anchor": "TOP_LEFT", "x": 4.0, "y": 4.0, "scale": 1.0 } } }
]
}
Value formats¶
| Setting type | Stored as | Example |
|---|---|---|
| On or off | true or false |
"background": true |
| Whole number | A number, clamped to the setting's range on load | "size": 4 |
| Decimal number | A number, clamped and snapped to the setting's step | "divisor": 4.0 |
| Choice | The option's name, so reordering options in a later version never changes a saved choice | "shape": "Cross" |
| Colour | Eight hex digits, alpha first | "color": "FFFFFFFF" |
| Key | The game's key code. 0 is none. Mouse buttons are the button number minus 100, as vanilla stores its own bindings. Valid range -100 to 255. |
"key": 46 |
Every module and setting identifier¶
| Module | Setting | Type | Range or options | Default |
|---|---|---|---|---|
general |
animations |
On or off | true |
|
| Every HUD module | background |
On or off | true |
|
| Every HUD module | shadow |
On or off | true |
|
| Every HUD module | color |
Colour | FFFFFFFF |
|
cps |
buttons |
Choice | Left, Left \| Right |
Left |
keystrokes |
mouse |
On or off | true |
|
keystrokes |
space |
On or off | true |
|
keystrokes |
pressed |
Colour | D0E9EAEC |
|
armor |
durability |
Choice | Remaining, Percent, Remaining / max |
Remaining |
armor |
held |
On or off | true |
|
armor |
colorize |
On or off | true |
|
toggle-sprint |
status-text |
On or off | true |
|
zoom |
key |
Key | 46 (C) |
|
zoom |
divisor |
Decimal number | 1.5 to 8, step 0.5 | 4.0 |
zoom |
smooth-camera |
On or off | true |
|
crosshair |
shape |
Choice | Cross, Dot, Cross + dot, Square |
Cross |
crosshair |
size |
Whole number | 1 to 12 | 4 |
crosshair |
gap |
Whole number | 0 to 8 | 2 |
crosshair |
thickness |
Whole number | 1 to 4 | 1 |
crosshair |
color |
Colour | FFFFFFFF |
|
crosshair |
outline |
On or off | false |
|
chat |
background-opacity |
Whole number | 0 to 100 | 100 |
chat |
text-shadow |
On or off | true |
|
chat |
timestamps |
On or off | false |
|
chat |
timestamp-format |
Choice | HH:mm, HH:mm:ss |
HH:mm |
The HUD modules are fps, ping, coordinates, session-timer, cps, keystrokes, armor, potions, toggle-sprint and packs. fps, ping, coordinates, session-timer, potions and packs have only the three shared settings. enabled defaults to true for fps and false for every other module; general has no enabled.
Layout entries¶
| Field | Allowed | Default |
|---|---|---|
anchor |
TOP_LEFT, TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER, MIDDLE_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT |
The module's default anchor |
x, y |
Offsets in GUI pixels, pointing inward from the anchor. Held within ±10,000. | The module's default offset |
scale |
0.5 to 3.0 | 1.0 |
Layout rules (1 to 16 layouts, names of 1 to 24 characters, unique ignoring case) are on Layouts, export and import.
How a damaged or older file is handled¶
| Situation | Result |
|---|---|
| Schema 1 (client 0.1.0), which kept position and appearance flat on each module | Migrated on load: positions move into a layout named "Default", appearance moves into settings |
| Unknown modules, settings or fields | Ignored |
| Out-of-range numbers | Clamped |
| The file cannot be read, or was written by a newer client | Renamed to config.json.invalid-<number> in the same folder; the client starts with defaults |
The export file¶
xol/xol-settings.json has the same shape as config.json plus "kind": "xol-settings-export". See Layouts, export and import.