From 106cc84e621c9fbc64ecf403d589172394855a95 Mon Sep 17 00:00:00 2001 From: zhenyan121 <3367366583@qq.com> Date: Fri, 17 Jul 2026 17:54:28 +0800 Subject: [PATCH] refactor: simplify WM detection and exclusive fullscreen default Removed WindowManager enum; detect_wm() now returns string directly. Default exclusive fullscreen based on platform (true on Linux). Added WM info to debug overlay. --- include/Cubed/tools/system_window_manager.hpp | 33 +++++-------------- src/debug_collector.cpp | 8 ++++- src/window.cpp | 21 ++++-------- 3 files changed, 21 insertions(+), 41 deletions(-) diff --git a/include/Cubed/tools/system_window_manager.hpp b/include/Cubed/tools/system_window_manager.hpp index a573504..7251ac3 100644 --- a/include/Cubed/tools/system_window_manager.hpp +++ b/include/Cubed/tools/system_window_manager.hpp @@ -5,40 +5,23 @@ #include #include namespace Cubed { -enum class WindowManager { WINDOWS, UNKNOWN, NIRI, SWAY, HYPRLAND, KDE, GNOME }; namespace Tools { -inline WindowManager detect_wm() { +inline std::string detect_wm() { #ifdef _WIN32 - return WindowManager::WINDOWS; + return "Windows"; #endif #ifdef __linux__ const char* desktop = getenv("XDG_CURRENT_DESKTOP"); - - if (!desktop) - return WindowManager::UNKNOWN; - Logger::info("XDG_CURRENT_DESKTOP {}", desktop); - std::string wm(desktop); - - if (wm.find("niri") != std::string::npos) - return WindowManager::NIRI; - - if (wm.find("sway") != std::string::npos) - return WindowManager::SWAY; - - if (wm.find("Hyprland") != std::string::npos) - return WindowManager::HYPRLAND; - - if (wm.find("KDE") != std::string::npos) - return WindowManager::KDE; - - if (wm.find("GNOME") != std::string::npos) - return WindowManager::GNOME; - + if (!desktop) { + return "Unknown"; + } + Logger::info("XDG_CURRENT_DESKTOP: {}", desktop); + return std::string(desktop); #endif - return WindowManager::UNKNOWN; + return "Unknown"; } } // namespace Tools diff --git a/src/debug_collector.cpp b/src/debug_collector.cpp index ef251d6..9ed43a5 100644 --- a/src/debug_collector.cpp +++ b/src/debug_collector.cpp @@ -1,6 +1,7 @@ #include "Cubed/debug_collector.hpp" #include "Cubed/tools/system_info.hpp" +#include "Cubed/tools/system_window_manager.hpp" #include "version.hpp" #include @@ -72,7 +73,12 @@ void DebugCollector::init(int width, int height) { } else { os_text.set_text("OS: Unknown"); } - + { + std::string wm{"WM: "}; + wm.append(Tools::detect_wm()); + auto& wm_label = m_widget.add_child