Configuration
Last updated on
The configuration file is located at client/modules/config.lua. This file controls the world prompt, visual theme, compact menu, and keybinds.
General Settings
local config = {}
-- Maximum distance that interacts will render the indicator sprite
-- Recommend keeping this pretty low for optimization
config.maxInteractDistance = 5.0
-- Visual theme for the world prompt.
-- Built-in: legacy | modern | minimal | light | retro | cyber | vice | noir | industrial | fantasy
config.theme = 'modern'
-- Default accent per theme. Used by the HUD and the world indicator sprite.
config.themeColors = {
legacy = { 28, 100, 184, 200 },
modern = { 49, 164, 252, 255 },
minimal = { 168, 186, 204, 255 },
light = { 37, 99, 235, 255 },
retro = { 255, 176, 32, 255 },
cyber = { 0, 229, 255, 255 },
vice = { 255, 64, 180, 255 },
noir = { 240, 240, 236, 255 },
industrial = { 212, 168, 48, 255 },
fantasy = { 212, 175, 110, 255 },
}
-- Optional override for every theme. Set to { r, g, b, a } to force one accent
-- across all looks. Leave nil to use the theme's own color above.
config.themeColor = nil
-- If true, targets with more than one option show "Interact" until E is pressed.
-- The list expands, then collapses after a selection or a short idle.
-- If false, every option is shown immediately.
config.compactOptions = true
-- Milliseconds of no menu activity before a compact list collapses.
config.compactIdleMs = 2500
-- Default key for the interact action. Players can rebind this in GTA Settings > Key Bindings > FiveM.
config.defaultInteractKey = 'E'
-- Texture dictionary and texture name for the sprite used to show non-active interactions
config.IndicatorSprite = { dict = 'shared', txt = 'emptydot_32' }
-- Use a keybind to show and hide the interactions
config.useShowKeyBind = false
-- Default key mapping for the show interactions keybind
config.defaultShowKeyBind = 'LMENU'
-- Sets the behavior of the show interactions keybind: "hold" or "toggle"
config.showKeyBindBehavior = 'toggle'Options Explained
| Option | Type | Default | Description |
|---|---|---|---|
maxInteractDistance | number | 5.0 | Maximum distance at which interact indicator sprites are rendered. Keep low for performance. |
theme | string | 'modern' | Visual look of the world prompt. Must match a file in web/themes/<id>.css. |
themeColors | table | see above | Per-theme RGBA accent { r, g, b, a } (0–255). Drives the HUD highlight and the world indicator sprite. |
themeColor | number[] | nil | nil | Optional global accent override. When set, every theme uses this color instead of themeColors. |
compactOptions | boolean | true | Compact multi-option prompt. See Compact prompt. |
compactIdleMs | number | 2500 | Idle time in milliseconds before a compact list collapses. Minimum 500. |
defaultInteractKey | string | 'E' | Default mapping for the interact action. Players can rebind it in GTA Settings; the prompt shows the live key. |
IndicatorSprite | table | { dict = 'shared', txt = 'emptydot_32' } | Texture dictionary and name for the non-active interaction sprite. |
useShowKeyBind | boolean | false | Whether a keybind is required to show/hide interactions. |
defaultShowKeyBind | string | 'LMENU' | The default key mapping for toggling interaction visibility. |
showKeyBindBehavior | string | 'toggle' | "hold" requires holding the key; "toggle" switches on/off per press. |
The maxInteractDistance directly affects performance. A lower value means fewer interactions are checked and rendered each frame.
Interact is registered as a FiveM keybind (interact_action). Players rebind it in GTA Settings → Key Bindings → FiveM. The prompt reads the live mapping, so the keycap updates after they leave the pause menu.
Themes
config.theme selects the prompt skin. Each built-in look has its own accent in config.themeColors. Leave config.themeColor as nil unless you want one color on every theme.
| Id | Description |
|---|---|
legacy | Original sleepless_interact prompt |
modern | Night HUD with frost panels |
minimal | Quiet hairline frames |
light | Light panels, dark type |
retro | CRT amber with scanlines |
cyber | Angular HUD with a clipped corner |
vice | Magenta-to-cyan neon rim |
noir | Circular iris key, letterbox title cards |
industrial | Riveted plates, hazard stripe on select |
fantasy | Manuscript corner brackets |
An option's color field still overrides the accent for that row only. See Interact Options.
To add your own look, see Custom Themes.
Compact prompt
When compactOptions is true (the default), a target with more than one option starts as a single INTERACT label.
- Press E once to open the list.
- Press E again to select the highlighted option. Hold E for options with
holdTime. - Scroll to move the highlight. The list stays still; the highlight moves.
- After a selection, or after
compactIdleMswith no activity, the list collapses back toINTERACT. - A hold in progress will not collapse.
Targets with a single option always show that option. Set compactOptions to false to always show the full list.
Locales
Compact prompt copy uses ox_lib locales. English ships in locales/en.json. Add another file (for example locales/fr.json) to translate it; ox_lib merges that over English using the player's language.
{
"interact": "Interact",
"interact_enabled": "Enabled",
"interact_disabled": "Disabled"
}| Key | Use |
|---|---|
interact | Compact prompt label, keybind name, and notify title |
interact_enabled | Notify when the show-interactions keybind turns the prompt on |
interact_disabled | Notify when the show-interactions keybind turns the prompt off |
The compact label is drawn in uppercase by the HUD, so store sentence case in the locale file (Interact, not INTERACT).
For details on how to define interaction options (the Option type used in exports), see the Interact Options reference page.
