Configs
Configuration system for Flarial Client.
Overview
Flarial's config system keeps the client feeling personal between sessions. It tracks which modules are enabled, keybinds, favorites, HUD positions, visual styling, text formats, client-wide options, active config selection, and script settings.
Each config is a JSON profile, usually starting at default.json.
Every registered module owns a settings object keyed by its display name.
Scripting modules store their own JSON files under the scripting config folder.
Storage layout
The client builds its folders from PlatformUtils::getRoamingPath(). Modern installs normally use the GDK-style folder first. UWP paths are still supported for older installs and migration, but most users should look at the GDK paths.
GDK
Main folder for modern GDK/non-UWP installs.
Stores config profiles, PRIVATE, and Legacy imports.
The default module-profile JSON file.
Global client settings and the active config pointer.
Separate settings files for scripting modules.
UWP
Older UWP-style client folder.
Older UWP config profile location.
Older UWP default module-profile JSON file.
Older UWP global client settings file.
File model
Flarial separates global client state from module profile state. The active profile is stored inPRIVATE, while module settings are saved into the selected .jsonconfig file.
PRIVATE
Stores client-wide settings such as fonts, blur intensity, VSync/Better Frames toggles, watermark options, command prefix, animation preferences, RGB settings, and currentConfig.
{
"currentConfig": "default.json",
"fontname": "Space Grotesk",
"blurintensity": 2.0,
"vsync": false,
"killdx": false,
"dotcmdprefix": ".",
"enabledModulesOnTop": true,
"watermark": true
}Config profile JSON
Stores a top-level object where each key is a module name. Each module value is that module's settings object, generated through Settings::ToJson().
{
"ClickGUI": {
"enabled": false,
"keybind": "K",
"favorite": false
},
"Coordinates": {
"enabled": true,
"percentageX": 0.012,
"percentageY": 0.84,
"textCol": "fafafa",
"textOpacity": 1.0,
"showBg": true
},
"Zoom": {
"enabled": false,
"keybind": "C",
"modifier": 30.0
}
}Stored data
Saved values include enabled, favorite, primary and extra keybinds, and each module's custom options.
HUD modules persist percentageX and percentageY, so dragged overlays return to the same screen position.
Scale, background, border, glow, shadow, opacity, color hex strings, RGB flags, text alignment, padding, rotation, and rectangle sizing can all be saved.
The settings container serializes primitive JSON values: booleans, integers, floats, and strings.
Load/save flow
- 1During client startup, Flarial creates the client, Config, Scripts, assets, logs, Crosshairs, and MessageLogger directories if needed.
- 2Legacy config data is detected first. Older main.flarial and per-module .flarial files can be moved under Config\Legacy and appended into the new settings format.
- 3PRIVATE is loaded to discover the selected currentConfig, then that config JSON is parsed into Client::globalSettings.
- 4Each module calls loadSettings(), reads its object from Client::globalSettings[moduleName], applies defaults for missing keys, then enables itself if its saved enabled value is true.
- 5When saving, Flarial writes every module's Settings JSON into a temporary .tmp file, renames it over the active config, then saves script settings too.
Config actions
createConfig creates a file in the Config folder and immediately switches to it.
switchConfig updates currentConfig, saves the old state, saves PRIVATE, then reloads PRIVATE.
Deleting a config switches back to default.json first, then removes the selected file or folder.
Sharing configs
Configs are meant to be portable. A normal shared config is just the selected .jsonprofile from the Config folder. The PRIVATE file should usually stay yours because it controls client-wide preferences and which config is active.
Open the configs folder and send the chosen .json file from the Config directory.
The receiver can then place it in their configs folder. Flarial's importer accepts .json files. After importing, the new config will be available for use after you reload the configs through the chat command .configs reload.
Legacy config ZIPs are extracted under Config\Legacy, then the client reloads config metadata so the imported entries can appear.
Avoid sharing PRIVATE, logs, caches, or unrelated folders. For most users, the profile JSON is the config.