Messages/Tasks App Containers
Manages visibility of UI apps (messages, tasks) within named containers.
Manages visibility of UI apps (messages, tasks) within named containers.
Overview
ui_messagesTasksAppContainers controls which sub-apps (e.g. messages, tasks) are visible inside container groups. Each container maps to a guihook trigger that notifies the CEF UI of visibility changes. Supports serialization to preserve state across sessions.
Extension path: lua/ge/extensions/ui/messagesTasksAppContainers.lua
Exports (M)
| Function | Signature | Description |
|---|---|---|
setAppVisibility | (containerId, appId, visible) | Sets a specific app's visibility and triggers UI update. |
getAppVisibility | (containerId, appId) → bool | Returns whether an app is currently visible. |
showApp | (containerId, appId) | Shorthand for setAppVisibility(..., true). |
hideApp | (containerId, appId) | Shorthand for setAppVisibility(..., false). |
toggleApp | (containerId, appId) | Toggles an app's visibility. |
hideAllApps | (containerId) | Hides all apps in a container, fires onUIContainerAppsHidden. |
getVisibleApps | (containerId) → string[] | Returns list of visible app IDs. |
getAvailableApps | (containerId) → table | Returns all apps (id → {visible}) for a container. |
getMessagesTasksAppContainerMounted | () → bool | Whether the Vue container component is mounted. |
setDebug | (enabled) | Enables an ImGui debug overlay. |
onSerialize | () → table | Saves container visibility state. |
onDeserialize | (data) | Restores container visibility state. |
onExtensionLoaded | () | Hook - initializes message/task container state. |
onExtensionUnloaded | () | Hook - cleans up containers. |
setVerboseLogging | (enabled) | Enables or disables verbose debug logging. |
onMessagesTasksAppContainerMounted | (containerId) | Hook - registers a messages/tasks container mount. |
onMessagesTasksAppContainerUnmounted | (containerId) | Hook - unregisters a messages/tasks container. |
Internals
Container Registry
appContainersById = {
['messagesTasksApps'] = {
apps = {
messages = { visible = true },
tasks = { visible = true },
},
trigger = 'setMessagesTasksAppVisibility',
}
}Each container has a trigger string used with guihooks.trigger(...) when visibility changes.
Debug Window
When setDebug(true) is called, onUpdate renders an ImGui window showing per-container app states with show/hide/toggle buttons.
How It Works
- Extensions or gameplay code call
showApp/hideApp/toggleApp. - The module updates internal state and fires the container's guihook trigger.
- The CEF/Vue UI receives
setMessagesTasksAppVisibilitywith{appId, visible, allApps}. - On serialize, the visibility map is saved; on deserialize, it is restored.
Lua Examples
-- Hide the tasks app
extensions.ui_messagesTasksAppContainers.hideApp('messagesTasksApps', 'tasks')
-- Check if messages are visible
local vis = extensions.ui_messagesTasksAppContainers.getAppVisibility('messagesTasksApps', 'messages')
-- Hide all apps in the container
extensions.ui_messagesTasksAppContainers.hideAllApps('messagesTasksApps')Hooks
| Hook | Payload | When |
|---|---|---|
setMessagesTasksAppVisibility (guihook) | {appId, visible, allApps} | Any app visibility changes |
onUIContainerAppsHidden (extension) | containerId | hideAllApps called |
Additional Exports
The following exports are available but not yet documented in detail:
M.getAppVisibilityM.getAvailableAppsM.getMessagesTasksAppContainerMountedM.getVisibleAppsM.hideAllAppsM.hideAppM.onDeserializeM.onExtensionLoadedM.onExtensionUnloadedM.onMessagesTasksAppContainerMountedM.onMessagesTasksAppContainerUnmountedM.onSerializeM.onUpdateM.setAppVisibilityM.setDebugM.setVerboseLoggingM.showAppM.toggleApp