diff --git a/src/server/frontend/wayland/wayland_connector.cpp b/src/server/frontend/wayland/wayland_connector.cpp index 6bc06736c7..1a2a79c548 100644 --- a/src/server/frontend/wayland/wayland_connector.cpp +++ b/src/server/frontend/wayland/wayland_connector.cpp @@ -2737,8 +2737,10 @@ mf::WaylandConnector::WaylandConnector( display_config); shell_global = std::make_unique(display.get(), shell, *seat_global); data_device_manager_global = std::make_unique(display.get()); - xdg_shell_global = std::make_unique(display.get(), shell, *seat_global); - xdg_shell_global = std::make_unique(display.get(), shell, *seat_global); + + // The XDG shell support is currently too flaky to enable by default + if (getenv("MIR_EXPERIMENTAL_XDG_SHELL")) + xdg_shell_global = std::make_unique(display.get(), shell, *seat_global); wl_display_init_shm(display.get());