# Gui

{% hint style="info" %}
If you need to get a container ID or an existing control ID, enable&#x20;

**`LUA>GENERAL>`**![](/files/7vG3Dwxa1qz04XAxGVF0)**`Debug mode`**&#x20;

and hover on a groupbox or any element.
{% endhint %}

{% hint style="info" %}
You can stack most control in line with other controls. To do that, pass the ID of a control that already exists into the `container_id` argument of the function.
{% endhint %}

## Enums

<details>

<summary>Hotkey modes</summary>

* hotkey\_toggle
* hotkey\_hold

</details>

<details>

<summary>Dialog buttons</summary>

* dialog\_buttons\_ok\_cancel
* dialog\_buttons\_yes\_no
* dialog\_buttons\_yes\_no\_cancel

</details>

<details>

<summary>Dialog result</summary>

* dialog\_result\_affirmative
* dialog\_result\_negative

</details>

## Controls

### checkbox

```lua
local item = gui.checkbox('lua>elements a>test', 'lua>elements a', 'My item')
```

| [Parameter](/documentation/namespaces/gui.md) | [Datatype](/documentation/namespaces/gui.md) | [Description](/documentation/namespaces/gui.md) |
| :-------------------------------------------: | :------------------------------------------: | :---------------------------------------------: |
|                       id                      |                    string                    |                      new id                     |
|                 container\_id                 |                    string                    |                   container id                  |
|                     label                     |                    string                    |                      label                      |

#### Returns:

| [Value](/documentation/namespaces/gui.md) |   [Datatype](/documentation/namespaces/gui.md)   |
| :---------------------------------------: | :----------------------------------------------: |
|                  checkbox                 | [checkbox](/documentation/datatypes/checkbox.md) |

### get\_checkbox

```lua
local item = gui.get_checkbox('lua>elements a>test')
```

| [Parameter](/documentation/namespaces/gui.md) | [Datatype](/documentation/namespaces/gui.md) | [Description](/documentation/namespaces/gui.md) |
| :-------------------------------------------: | :------------------------------------------: | :---------------------------------------------: |
|                       id                      |                    string                    |                    control id                   |

#### Returns:

| [Value](/documentation/namespaces/gui.md) |   [Datatype](/documentation/namespaces/gui.md)   |
| :---------------------------------------: | :----------------------------------------------: |
|                  checkbox                 | [checkbox](/documentation/datatypes/checkbox.md) |

### slider

```lua
local item = gui.slider('lua>elements a>test', 'lua>elements a', 'My item', 0, 100)
```

<table data-header-hidden><thead><tr><th width="172" align="center"></th><th width="150" align="center"></th><th width="263" align="center"></th><th align="center"></th></tr></thead><tbody><tr><td align="center"><a href="/pages/5DurhgoynF2NuRFXbfwp">Parameter</a></td><td align="center"><a href="/pages/5DurhgoynF2NuRFXbfwp">Datatype</a></td><td align="center"><a href="/pages/5DurhgoynF2NuRFXbfwp">Description</a></td><td align="center"><a href="/pages/5DurhgoynF2NuRFXbfwp">Default value</a></td></tr><tr><td align="center">id</td><td align="center">string</td><td align="center">new id</td><td align="center">❌</td></tr><tr><td align="center">container_id</td><td align="center">string</td><td align="center">container id</td><td align="center">❌</td></tr><tr><td align="center">label</td><td align="center">string</td><td align="center">label</td><td align="center">❌</td></tr><tr><td align="center">min</td><td align="center">number</td><td align="center">minimum slider value</td><td align="center">❌</td></tr><tr><td align="center">max</td><td align="center">number</td><td align="center">maximum slider value</td><td align="center">❌</td></tr><tr><td align="center">format</td><td align="center">string</td><td align="center">format string</td><td align="center">'%.0f'</td></tr><tr><td align="center">step</td><td align="center">number</td><td align="center">step value</td><td align="center">1.0</td></tr></tbody></table>

#### Returns:

| [Value](/documentation/namespaces/gui.md) | [Datatype](/documentation/namespaces/gui.md) |
| :---------------------------------------: | :------------------------------------------: |
|                   slider                  | [slider](/documentation/datatypes/slider.md) |

### get\_slider

```lua
local item = gui.get_slider('lua>elements a>test')
```

| [Parameter](/documentation/namespaces/gui.md) | [Datatype](/documentation/namespaces/gui.md) | [Description](/documentation/namespaces/gui.md) |
| :-------------------------------------------: | :------------------------------------------: | :---------------------------------------------: |
|                       id                      |                    string                    |                    control id                   |

#### Returns:

| [Value](/documentation/namespaces/gui.md) | [Datatype](/documentation/namespaces/gui.md) |
| :---------------------------------------: | :------------------------------------------: |
|                   slider                  | [slider](/documentation/datatypes/slider.md) |

### combobox

```lua
local item = gui.combobox('lua>elements a>test', 'lua>elements a', true, 'My item', 'Item 1', 'Item 2', 'Item 3')
```

| [Parameter](/documentation/namespaces/gui.md) | [Datatype](/documentation/namespaces/gui.md) | [Description](/documentation/namespaces/gui.md) |
| :-------------------------------------------: | :------------------------------------------: | :---------------------------------------------: |
|                       id                      |                    string                    |                      new id                     |
|                 container\_id                 |                    string                    |                   container id                  |
|                     label                     |                    string                    |                      label                      |
|                   is\_multi                   |                    boolean                   |    true if combobox should enable multiselect   |
|                     values                    |                   string...                  |                      items                      |

#### Returns:

| [Value](/documentation/namespaces/gui.md) |   [Datatype](/documentation/namespaces/gui.md)   |
| :---------------------------------------: | :----------------------------------------------: |
|                  combobox                 | [combobox](/documentation/datatypes/combobox.md) |

### get\_combobox

```lua
local item = gui.get_combobox('lua>elements a>test')
```

| [Parameter](/documentation/namespaces/gui.md) | [Datatype](/documentation/namespaces/gui.md) | [Description](/documentation/namespaces/gui.md) |
| :-------------------------------------------: | :------------------------------------------: | :---------------------------------------------: |
|                       id                      |                    string                    |                    control id                   |

#### Returns:

| [Value](/documentation/namespaces/gui.md) |   [Datatype](/documentation/namespaces/gui.md)   |
| :---------------------------------------: | :----------------------------------------------: |
|                  combobox                 | [combobox](/documentation/datatypes/combobox.md) |

### list

```lua
local item = gui.list('lua>elements a>test', 'lua>elements a', true, 60)
```

<table data-header-hidden><thead><tr><th width="172" align="center"></th><th width="150" align="center"></th><th width="263" align="center"></th><th align="center"></th></tr></thead><tbody><tr><td align="center"><a href="/pages/5DurhgoynF2NuRFXbfwp">Parameter</a></td><td align="center"><a href="/pages/5DurhgoynF2NuRFXbfwp">Datatype</a></td><td align="center"><a href="/pages/5DurhgoynF2NuRFXbfwp">Description</a></td><td align="center"><a href="/pages/5DurhgoynF2NuRFXbfwp">Default value</a></td></tr><tr><td align="center">id</td><td align="center">string</td><td align="center">new id</td><td align="center">❌</td></tr><tr><td align="center">container_id</td><td align="center">string</td><td align="center">container id</td><td align="center">❌</td></tr><tr><td align="center">label</td><td align="center">string</td><td align="center">label</td><td align="center">❌</td></tr><tr><td align="center">is_mult</td><td align="center">boolean</td><td align="center">true if list should enable multiselect</td><td align="center">❌</td></tr><tr><td align="center">height</td><td align="center">number</td><td align="center">element height</td><td align="center">120</td></tr></tbody></table>

#### Returns:

| [Value](/documentation/namespaces/gui.md) | [Datatype](/documentation/namespaces/gui.md) |
| :---------------------------------------: | :------------------------------------------: |
|                    list                   |   [list](/documentation/datatypes/list.md)   |

### button

```lua
local item = gui.button('lua>elements a>test', 'lua>elements a', 'My item')
```

| [Parameter](/documentation/namespaces/gui.md) | [Datatype](/documentation/namespaces/gui.md) | [Description](/documentation/namespaces/gui.md) |
| :-------------------------------------------: | :------------------------------------------: | :---------------------------------------------: |
|                       id                      |                    string                    |                      new id                     |
|                 container\_id                 |                    string                    |                   container id                  |
|                     label                     |                    string                    |                      label                      |

#### Returns:

| [Value](/documentation/namespaces/gui.md) |  [Datatype](/documentation/namespaces/gui.md)  |
| :---------------------------------------: | :--------------------------------------------: |
|                   button                  | [control](/documentation/datatypes/control.md) |

### label

```lua
local item = gui.label('lua>elements a>test', 'lua>elements a', 'My item')
```

| [Parameter](/documentation/namespaces/gui.md) | [Datatype](/documentation/namespaces/gui.md) | [Description](/documentation/namespaces/gui.md) |
| :-------------------------------------------: | :------------------------------------------: | :---------------------------------------------: |
|                       id                      |                    string                    |                      new id                     |
|                 container\_id                 |                    string                    |                   container id                  |
|                     label                     |                    string                    |                      label                      |

#### Returns:

| [Value](/documentation/namespaces/gui.md) |  [Datatype](/documentation/namespaces/gui.md)  |
| :---------------------------------------: | :--------------------------------------------: |
|                   label                   | [control](/documentation/datatypes/control.md) |

### textbox

```lua
local item = gui.textbox('lua>elements a>test', 'lua>elements a')
```

| [Parameter](/documentation/namespaces/gui.md) | [Datatype](/documentation/namespaces/gui.md) | [Description](/documentation/namespaces/gui.md) |
| :-------------------------------------------: | :------------------------------------------: | :---------------------------------------------: |
|                       id                      |                    string                    |                      new id                     |
|                 container\_id                 |                    string                    |                   container id                  |

#### Returns:

| [Value](/documentation/namespaces/gui.md) |  [Datatype](/documentation/namespaces/gui.md)  |
| :---------------------------------------: | :--------------------------------------------: |
|                  textbox                  | [textbox](/documentation/datatypes/textbox.md) |

### colorpicker

```lua
local item = gui.color_picker('lua>elements a>test', 'lua>elements a', 'My item', render.color('#fff'))
```

<table data-header-hidden><thead><tr><th width="172" align="center"></th><th width="150" align="center"></th><th width="263" align="center"></th><th align="center"></th></tr></thead><tbody><tr><td align="center"><a href="/pages/5DurhgoynF2NuRFXbfwp">Parameter</a></td><td align="center"><a href="/pages/5DurhgoynF2NuRFXbfwp">Datatype</a></td><td align="center"><a href="/pages/5DurhgoynF2NuRFXbfwp">Description</a></td><td align="center"><a href="/pages/5DurhgoynF2NuRFXbfwp">Default value</a></td></tr><tr><td align="center">id</td><td align="center">string</td><td align="center">new id</td><td align="center">❌</td></tr><tr><td align="center">container_id</td><td align="center">string</td><td align="center">container id</td><td align="center">❌</td></tr><tr><td align="center">label</td><td align="center">string</td><td align="center">label</td><td align="center">❌</td></tr><tr><td align="center">default</td><td align="center"><a href="/pages/McV9CTPvTSQx89z8iuxi#color">render.color</a></td><td align="center">default color</td><td align="center">❌</td></tr><tr><td align="center">allow_alpha</td><td align="center">boolean</td><td align="center">true if alpha modification is allowed</td><td align="center">true</td></tr></tbody></table>

#### Returns:

| [Value](/documentation/namespaces/gui.md) | [Datatype](/documentation/namespaces/gui.md) |
| :---------------------------------------: | :------------------------------------------: |
|                    list                   |   [list](/documentation/datatypes/list.md)   |

### get\_colorpicker

```lua
local item = gui.get_colorpicker('lua>elements a>test')
```

| [Parameter](/documentation/namespaces/gui.md) | [Datatype](/documentation/namespaces/gui.md) | [Description](/documentation/namespaces/gui.md) |
| :-------------------------------------------: | :------------------------------------------: | :---------------------------------------------: |
|                       id                      |                    string                    |                    control id                   |

#### Returns:

| [Value](/documentation/namespaces/gui.md) |        [Datatype](/documentation/namespaces/gui.md)       |
| :---------------------------------------: | :-------------------------------------------------------: |
|               color\_picker               | [color\_picker](/documentation/datatypes/color_picker.md) |

## Misc

### is\_menu\_open

```lua
gui.is_menu_open()
```

#### Returns:

| [Value](/documentation/namespaces/gui.md) | [Datatype](/documentation/namespaces/gui.md) |
| :---------------------------------------: | :------------------------------------------: |
|          menu's visibility state          |                    boolean                   |

### get\_menu\_rect

```lua
gui.get_menu_rect()
```

#### Returns:

| [Value](/documentation/namespaces/gui.md) | [Datatype](/documentation/namespaces/gui.md) |
| :---------------------------------------: | :------------------------------------------: |
|                     x1                    |                    number                    |
|                     y1                    |                    number                    |
|                     x2                    |                    number                    |
|                     y2                    |                    number                    |

### show\_message <a href="#show_message" id="show_message"></a>

```lua
gui.show_message('my_message', 'Hello!', 'Click OK to close this message.')
```

| [Parameter](/documentation/namespaces/gui.md) | [Datatype](/documentation/namespaces/gui.md) | [Description](/documentation/namespaces/gui.md) |
| :-------------------------------------------: | :------------------------------------------: | :---------------------------------------------: |
|                       id                      |                    string                    |                  messagebox id                  |
|                     title                     |                    string                    |                      title                      |
|                    message                    |                    string                    |                     message                     |

### show\_dialog <a href="#show_message" id="show_message"></a>

```lua
gui.show_dialog('my_dialog', 'Hello!', 'Do you like balls?', gui.dialog_buttons_yes_no, function (res)
    if res == gui.dialog_result_affirmative then
        gui.show_message('my_message', 'Hey!', 'Me too');
    else
        gui.show_message('my_message', ':(', 'Ligma');
    end
end);
```

| [Parameter](/documentation/namespaces/gui.md) | [Datatype](/documentation/namespaces/gui.md) | [Description](/documentation/namespaces/gui.md) |
| :-------------------------------------------: | :------------------------------------------: | :---------------------------------------------: |
|                       id                      |                    string                    |                    dialog id                    |
|                     title                     |                    string                    |                      title                      |
|                    message                    |                    string                    |                     message                     |
|                     button                    |            [Enum](#dialog-buttons)           |                dialog box buttons               |
|                    callback                   |       function([Enum](#dialog-result))       |                 result callback                 |

### add\_notification <a href="#show_message" id="show_message"></a>

```lua
gui.add_notification('Hello', 'This lua was loaded!')
```

| [Parameter](/documentation/namespaces/gui.md) | [Datatype](/documentation/namespaces/gui.md) | [Description](/documentation/namespaces/gui.md) |
| :-------------------------------------------: | :------------------------------------------: | :---------------------------------------------: |
|                     title                     |                    string                    |                      title                      |
|                    message                    |                    string                    |                     message                     |

### for\_each\_hotkey

```lua
gui.for_each_hotkey(function (name, key, mode, is_active)
    print('Hotkey ' .. name .. ':');
    print('\tkey = ' .. tostring(key));
    print('\tmode = ' .. tostring(mode));
    print('\tis_active = ' .. tostring(is_active));
end);
```

| [Parameter](/documentation/namespaces/gui.md) | [Datatype](/documentation/namespaces/gui.md) | [Description](/documentation/namespaces/gui.md) |
| :-------------------------------------------: | :------------------------------------------: | :---------------------------------------------: |
|                       fn                      |    function(string, number, number, bool)    |                callback function                |

#### Callback parameters:

| [Parameter](/documentation/namespaces/gui.md) | [Datatype](/documentation/namespaces/gui.md) |                           [Description](/documentation/namespaces/gui.md)                          |
| :-------------------------------------------: | :------------------------------------------: | :------------------------------------------------------------------------------------------------: |
|                      name                     |                    string                    |                                              item name                                             |
|                      key                      |                    number                    | active key ([keycode](https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes)) |
|                      mode                     |             [Enum](#hotkey-modes)            |                                             hotkey mode                                            |
|                   is\_active                  |                    boolean                   |                                      true if currently active                                      |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://golua.fatality.win/documentation/namespaces/gui.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
