diff --git a/src/wl_platform.h b/src/wl_platform.h
index 56291c8dc1ccc96c3834d75d74f41ca82fb9efa7..1eaf4d2a283822272e331f60032ab6e6d2ff2854 100644
--- a/src/wl_platform.h
+++ b/src/wl_platform.h
@@ -177,6 +177,9 @@ typedef struct _GLFWwindowWayland
 
     struct zwp_idle_inhibitor_v1*          idleInhibitor;
 
+    // This is a hack to prevent auto-iconification on creation.
+    GLFWbool                    justCreated;
+
 } _GLFWwindowWayland;
 
 // Wayland-specific global data
diff --git a/src/wl_window.c b/src/wl_window.c
index b78233afe2d3baf70eb7378c638367d357fcad5b..82ed2cda281b82660a06c1f00820ddef1aaf0bc6 100644
--- a/src/wl_window.c
+++ b/src/wl_window.c
@@ -338,9 +338,10 @@ static void xdgToplevelHandleConfigure(void* data,
         _glfwInputWindowDamage(window);
     }
 
-    if (!activated && window->autoIconify)
+    if (!window->wl.justCreated && !activated && window->autoIconify)
         _glfwPlatformIconifyWindow(window);
     _glfwInputWindowFocus(window, activated);
+    window->wl.justCreated = GLFW_FALSE;
 }
 
 static void xdgToplevelHandleClose(void* data,
@@ -561,6 +562,7 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
                               const _GLFWctxconfig* ctxconfig,
                               const _GLFWfbconfig* fbconfig)
 {
+    window->wl.justCreated = GLFW_TRUE;
     window->wl.transparent = fbconfig->transparent;
 
     if (!createSurface(window, wndconfig))