diff --git a/doc/en/scripting/builtins/libgui.md b/doc/en/scripting/builtins/libgui.md
index cf6839db..cbcca4ce 100644
--- a/doc/en/scripting/builtins/libgui.md
+++ b/doc/en/scripting/builtins/libgui.md
@@ -103,3 +103,9 @@ gui.load_document(
```
Loads a UI document with its script, returns the name of the document if successfully loaded.
+
+```lua
+gui.root: Document
+```
+
+Root UI document
diff --git a/doc/ru/scripting/builtins/libgui.md b/doc/ru/scripting/builtins/libgui.md
index aea2f44a..a9bffe48 100644
--- a/doc/ru/scripting/builtins/libgui.md
+++ b/doc/ru/scripting/builtins/libgui.md
@@ -100,3 +100,9 @@ gui.load_document(
```
Загружает UI документ с его скриптом, возвращает имя документа, если успешно загружен.
+
+```lua
+gui.root: Document
+```
+
+Корневой UI документ
diff --git a/res/project_script.lua b/res/project_script.lua
index 0da3b54d..9158f361 100644
--- a/res/project_script.lua
+++ b/res/project_script.lua
@@ -17,7 +17,7 @@ local function configure_menu()
end
return w, h
end
- _GUI_ROOT.root:add(
+ gui.root.root:add(
"", controller)
menubg = _GUI_ROOT.menubg
diff --git a/res/scripts/stdlib.lua b/res/scripts/stdlib.lua
index c5d48faf..68b9e4f6 100644
--- a/res/scripts/stdlib.lua
+++ b/res/scripts/stdlib.lua
@@ -189,6 +189,7 @@ end
_GUI_ROOT = Document.new("core:root")
_MENU = _GUI_ROOT.menu
menu = _MENU
+gui.root = _GUI_ROOT
--- Console library extension ---
console.cheats = {}
diff --git a/src/logic/scripting/scripting.cpp b/src/logic/scripting/scripting.cpp
index 04db321e..00d18668 100644
--- a/src/logic/scripting/scripting.cpp
+++ b/src/logic/scripting/scripting.cpp
@@ -143,6 +143,12 @@ std::unique_ptr scripting::load_project_script(
auto L = lua::get_main_state();
auto source = io::read_string(script);
auto env = create_environment(nullptr);
+ lua::pushenv(L, *env);
+ if (lua::getglobal(L, "__vc_app")) {
+ lua::setfield(L, "app");
+ }
+ lua::pop(L);
+
lua::loadbuffer(L, *env, source, script.name());
lua::call(L, 0);
return std::make_unique(L, std::move(env));