Configuration
Use the in-game editor for visual changes, or edit config.lua directly. The
file contains comments for every available setting; this page covers the settings used most often.
After editing config.lua, reload the resource:
refresh
restart elvisuals_notifyconfig.lua is the baseline. Values saved by the editor are stored in settings.json and applied on
top. Reset the editor or remove settings.json if a file change appears to have no effect.
Language
Config.Locale = 'en'English (en) and Spanish (es) are included. To add a language, copy locales/en.json, translate
the values without changing the keys, and set the filename without .json.
Size
Config.Scale = 1.0
Config.IconScale = 1.0
Config.ScaleByWidth = {
{ width = 3440, scale = 1.35 },
{ width = 2560, scale = 1.15 },
{ width = 1920, scale = 1.00 },
{ width = 1280, scale = 0.90 },
}Scale controls the whole UI. IconScale adjusts icons on top of it. Resolution rules are checked
from the widest matching threshold down and replace Config.Scale for that player. Widths below the
smallest threshold use Config.Scale.
Set Config.ScaleByWidth = {} if you want one fixed scale on every display.
The editor saves the scale currently shown on the admin’s display. A saved scale overrides the resolution table for every player until the saved settings are reset.
Placement
Config.Anchor = 'minimap' -- minimap | corner | free
Config.Corner = 'bottom-left' -- used with corner
Config.Position = { x = 0.015, y = 0.72 } -- used with free
Config.PanelCorner = 'top-left'
Config.Offset = { x = 0, y = 0 }Position uses screen fractions from 0 to 1, not pixels. The notification stack, persistent panel,
and text prompt have independent positions. Offset nudges the rendered layers in scaled pixels.
To keep the notification stack away from a custom HUD, reserve one or more screen rectangles:
Config.Reserve = {
{ x = 0.0, y = 0.45, w = 0.22, h = 0.12 },
}Only reserved rectangles in the stack’s growth path affect its available space.
Capacity and grouping
Config.MaxVisible = 0
Config.MaxScreenShare = 0.55
Config.MaxQueued = 20
Config.ShowQueueBadge = true
Config.GroupDuplicates = true
Config.GroupWindow = 4000MaxVisible = 0lets available space decide how many cards fit. A positive value adds a count cap.MaxScreenSharelimits stack height as a fraction of the screen.MaxQueuedlimits cards waiting off-screen; additional cards are discarded.- Duplicate grouping combines identical notifications during
GroupWindowand adds a count.
Card heights are measured after rendering, so wrapped messages are included in the fit calculation.
Timing and sound
Config.Duration = 3000
Config.DurationByType = {
info = 3000,
success = 3000,
warning = 4000,
error = 5000,
}
Config.DurationMin = 1200
Config.DurationMax = 20000
Config.DurationMultiplier = 1.0
Config.Sound = true
Config.SoundOnUpdate = falseA duration supplied by the calling script takes priority. Otherwise, the type-specific value is
used, followed by Config.Duration. Transient durations are multiplied by DurationMultiplier and
then clamped between DurationMin and DurationMax.
Config.SoundByType selects GTA frontend sounds for each type. A caller can silence one notification
with sound = false. With SoundOnUpdate = false, persistent payloads are silent, including their
first send; set it to true to play a sound on every persistent send.
Motion
Config.Motion = 'full' -- full | reduced | none
Config.Entrance = 'bottom' -- left | right | top | bottom | scale | fade | none
Config.Exit = 'left'
Config.MotionSpeed = 1.0Entrance and exit values name the side a card comes from or leaves toward. reduced uses simple
fades; none removes notification motion. The player’s operating-system reduced-motion preference
also limits animation.
Theme and colors
Config.Preset = 'midnight' -- midnight | carbon | frost | neon
Config.PanelStyle = 'accent' -- accent | mono
Config.ShowBrandLabel = true
Config.BrandName = false
Config.Colors = {
-- accent = '#ff0044',
-- surface = '#12143b',
}Color overrides support accent, surface, text, info, success, warning, and error using
six-digit hex values. BrandName replaces the panel’s default label; false keeps the localized
label.
For deeper styling, edit the CSS variables in web/theme.css. Avoid backdrop-filter and do not set
color-scheme on the root element; both can produce an opaque NUI background in FiveM.
Text prompts
Config.TextUI = {
enabled = true,
position = 'right-center', -- right-center | left-center | top-center | bottom-center
keycap = true,
}Individual showTextUI calls can override the position. See the API reference.
Commands and diagnostics
Config.AdminCommand = 'evset'
Config.AdminAce = 'command.evset'
Config.PreviewCommand = 'notifypreview'
Config.PreviewAce = 'command.notifypreview'
Config.Debug = false
Config.DebugCommands = false
Config.DebugPrefix = 'ev'AdminAceprotects both opening and saving from the editor. See Settings editor for the behavior when it isfalse.PreviewAceprotects/notifypreview; grant it separately if you use that command.Debuglogs NUI messages in the CEF developer console.DebugCommandsadds local test commands such as/evtestand/evhelp.
Framework capture settings are covered in Integrations.