From 0c6e97ace6dfb7f1ded69248e02893acf3c75255 Mon Sep 17 00:00:00 2001 From: dijunkun Date: Fri, 31 Jul 2026 17:34:32 +0800 Subject: [PATCH] fix: use custom titlebar only with X11 --- src/gui/application/gui_application.cpp | 14 ++++++++++---- src/gui/application/gui_application.h | 1 + 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/gui/application/gui_application.cpp b/src/gui/application/gui_application.cpp index 51fd321..d1f13c6 100644 --- a/src/gui/application/gui_application.cpp +++ b/src/gui/application/gui_application.cpp @@ -970,6 +970,14 @@ bool GuiApplication::InitializeSDL() { LOG_ERROR("SDL initialization failed: {}", SDL_GetError()); return false; } +#if defined(__linux__) && !defined(__APPLE__) + const char* active_video_driver = SDL_GetCurrentVideoDriver(); + // X11 permits the manual move/position operations used by the frameless + // main window. Keep native Wayland decorations as a compatibility fallback. + use_x11_custom_titlebar_ = + active_video_driver != nullptr && + std::strcmp(active_video_driver, "x11") == 0; +#endif if (const SDL_DisplayMode* mode = SDL_GetCurrentDisplayMode(0)) { screen_width_ = mode->w; @@ -1004,10 +1012,8 @@ void GuiApplication::InitializeUi() { #if _WIN32 ui_->main->set_custom_titlebar(true); #elif defined(__linux__) - if (use_xwayland_gui_) { - ui_->main->set_custom_titlebar(true); - ui_->main->set_wayland_titlebar(true); - } + ui_->main->set_custom_titlebar(use_x11_custom_titlebar_); + ui_->main->set_wayland_titlebar(use_xwayland_gui_); #endif std::vector release_note_blocks; for (const auto& parsed : ParseReleaseNotesMarkdownForSlint(release_notes_)) { diff --git a/src/gui/application/gui_application.h b/src/gui/application/gui_application.h index 805460b..072e974 100644 --- a/src/gui/application/gui_application.h +++ b/src/gui/application/gui_application.h @@ -66,6 +66,7 @@ private: std::unique_ptr ui_; #if defined(__linux__) && !defined(__APPLE__) bool use_xwayland_gui_ = false; + bool use_x11_custom_titlebar_ = false; #endif };