diff --git a/source/ArmarXGui/applications/ArmarXGui/ArmarXMainWindow.cpp b/source/ArmarXGui/applications/ArmarXGui/ArmarXMainWindow.cpp
index 8ca9b2fa87bd2b448bc97f53ae26122c6feb34a4..c78239e60a30b0e1754958d40c02f136e7017853 100644
--- a/source/ArmarXGui/applications/ArmarXGui/ArmarXMainWindow.cpp
+++ b/source/ArmarXGui/applications/ArmarXGui/ArmarXMainWindow.cpp
@@ -98,6 +98,8 @@
 #include <sstream>
 //#include <omp.h>
 
+// To start ArViz Godot
+#include <fcntl.h>
 
 
 #define ARMARX_ORGANIZATION "KIT"
@@ -1217,6 +1219,9 @@ namespace armarx
             connect(action, SIGNAL(clicked(QString, QString)), this, SLOT(createArmarXWidget(QString, QString)), Qt::UniqueConnection);
 
         }
+
+        addArVizGodotIcon();
+
         AddArmarXWidgetAction* completerAction = new AddArmarXWidgetAction("", ui->menuAdd_Widget, this);
         InfixCompleter* completer = new InfixCompleter(widgetNameList, searchField);
         connect(searchField, SIGNAL(textEdited(QString)), completer, SLOT(setCompletionInfix(QString)));
@@ -1281,9 +1286,60 @@ namespace armarx
         }
     }
 
-    void ArmarXMainWindow::updateRecentlyOpenedFileList()
+    void ArmarXMainWindow::addArVizGodotIcon()
     {
+        const char* path = std::getenv("arviz_godot_DIR");
+        if (path == nullptr)
+        {
+            return;
+        }
+
+        std::filesystem::path buildDirectory(path);
+        std::filesystem::path mainDirectory = buildDirectory.parent_path();
+
+        std::filesystem::path binaryPath = buildDirectory / "bin" / "arviz-godot";
+        std::filesystem::path iconPath = mainDirectory / "source" / "arviz_godot" / "project" / "icon.png";
+
+        if (not std::filesystem::exists(binaryPath) or not std::filesystem::exists(iconPath))
+        {
+            return;
+        }
+
+        QIcon icon(iconPath.c_str());
+        QString name("ArViz Godot");
+
+        QAction* action = new QAction(icon, name, this);
+
+        bool allowText = false;
+        addActionToToolBar(action, allowText);
+
+        auto slot = [action, this, binaryPath]()
+        {
+            pid_t pid = fork();
 
+            if (pid == -1)
+            {
+                ARMARX_ERROR << "Failed to start ArViz Godot";
+                return;
+            }
+
+            if (pid != 0)
+            {
+                return;
+            }
+
+            int null = open("/dev/null", O_WRONLY);
+            dup2(null, STDOUT_FILENO);
+            dup2(null, STDERR_FILENO);
+
+            execl(binaryPath.c_str(), "arviz-godot", nullptr);
+        };
+
+        connect(action, &QAction::triggered, this, slot, Qt::UniqueConnection);
+    }
+
+    void ArmarXMainWindow::updateRecentlyOpenedFileList()
+    {
         QStringList recentlyFiles = mainSettings.value("RecentlyFiles").toStringList();
         QMenu* menu = ui->menuRecently_Opened_Files;
         auto actions = menu->actions();
@@ -1304,8 +1360,6 @@ namespace armarx
             connect(action, SIGNAL(triggered()), action, SLOT(openFile()));
             menu->addAction(action);
         }
-
-
     }
 
     void ArmarXMainWindow::updateStatusOfOpenWidgets()
diff --git a/source/ArmarXGui/applications/ArmarXGui/ArmarXMainWindow.h b/source/ArmarXGui/applications/ArmarXGui/ArmarXMainWindow.h
index 0feb70b88cab1dc0d6c87f43d3bb4cdac40dce7e..64a351bdefc747a6daa6e2bff554793acefd6be1 100644
--- a/source/ArmarXGui/applications/ArmarXGui/ArmarXMainWindow.h
+++ b/source/ArmarXGui/applications/ArmarXGui/ArmarXMainWindow.h
@@ -186,6 +186,11 @@ namespace armarx
         void updateAvailableWidgetList();
         void updateOpenWidgetList();
 
+        /**
+         * Add the (optional) icon button to start ArViz Godot to the main widgets if ArViz Godot is available.
+         */
+        void addArVizGodotIcon();
+
         /**
         * sets a SoQtExamine rViewer up. This ExaminerViewer is contained by the class member QWidget* view
         */