diff --git a/src/detection/theme/theme_windows.c b/src/detection/theme/theme_windows.c index 68372eb0c..4c82d2c04 100644 --- a/src/detection/theme/theme_windows.c +++ b/src/detection/theme/theme_windows.c @@ -1,27 +1,34 @@ #include "theme.h" #include "detection/os/os.h" +#include "detection/displayserver/displayserver.h" const char* ffDetectTheme(FFThemeResult* result) { const FFOSResult* os = ffDetectOS(); + const FFDisplayServerResult* displayServer = ffConnectDisplayServer(); + if (ffStrbufEqualS(&displayServer->wmProcessName, "dwm.exe")) { + uint32_t ver = (uint32_t) ffStrbufToUInt(&os->version, 0); - if (ver > 1000) { - // Windows Server - if (ver >= 2016) { - ffStrbufSetStatic(&result->theme1, "Fluent"); - } else if (ver >= 2012) { - ffStrbufSetStatic(&result->theme1, "Metro"); + if (ver > 1000) { + // Windows Server + if (ver >= 2016) { + ffStrbufSetStatic(&result->theme1, "Fluent"); + } else if (ver >= 2012) { + ffStrbufSetStatic(&result->theme1, "Metro"); + } else { + ffStrbufSetStatic(&result->theme1, "Aero"); + } } else { - ffStrbufSetStatic(&result->theme1, "Aero"); - } - } else { - if (ver >= 10) { - ffStrbufSetStatic(&result->theme1, "Fluent"); - } else if (ver >= 8) { - ffStrbufSetStatic(&result->theme1, "Metro"); - } else { - ffStrbufSetStatic(&result->theme1, "Aero"); + if (ver >= 10) { + ffStrbufSetStatic(&result->theme1, "Fluent"); + } else if (ver >= 8) { + ffStrbufSetStatic(&result->theme1, "Metro"); + } else { + ffStrbufSetStatic(&result->theme1, "Aero"); + } } + } else if (ffStrbufEqualS(&displayServer->wmProcessName, "explorer.exe")) { + ffStrbufSetStatic(&result->theme1, "Basic"); } return nullptr; }