From 8be070998f531102b94486d4375154eb819d2d28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Mon, 29 Sep 2025 09:40:10 +0800 Subject: [PATCH] Theme (Windows): moves Windows theme detection logic from DE to dedicated module Like the last commit --- CMakeLists.txt | 2 +- .../displayserver/displayserver_windows.c | 23 --------------- src/detection/theme/theme_windows.c | 29 +++++++++++++++++++ 3 files changed, 30 insertions(+), 24 deletions(-) create mode 100644 src/detection/theme/theme_windows.c diff --git a/CMakeLists.txt b/CMakeLists.txt index baef303d7..d52eb0da3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1044,7 +1044,7 @@ elseif(WIN32) src/detection/terminalfont/terminalfont_windows.c src/detection/terminalshell/terminalshell_windows.c src/detection/terminalsize/terminalsize_windows.c - src/detection/theme/theme_nosupport.c + src/detection/theme/theme_windows.c src/detection/tpm/tpm_windows.c src/detection/uptime/uptime_windows.c src/detection/users/users_windows.c diff --git a/src/detection/displayserver/displayserver_windows.c b/src/detection/displayserver/displayserver_windows.c index 077390960..55247ce73 100644 --- a/src/detection/displayserver/displayserver_windows.c +++ b/src/detection/displayserver/displayserver_windows.c @@ -254,27 +254,4 @@ void ffConnectDisplayServerImpl(FFDisplayServerResult* ds) } detectDisplays(ds); - - //https://github.com/hykilpikonna/hyfetch/blob/master/neofetch#L2067 - const FFOSResult* os = ffDetectOS(); - uint32_t ver = (uint32_t) ffStrbufToUInt(&os->version, 0); - if (ver > 1000) - { - // Windows Server - if (ver >= 2016) - ffStrbufSetStatic(&ds->dePrettyName, "Fluent"); - else if (ver >= 2012) - ffStrbufSetStatic(&ds->dePrettyName, "Metro"); - else - ffStrbufSetStatic(&ds->dePrettyName, "Aero"); - } - else - { - if (ver >= 10) - ffStrbufSetStatic(&ds->dePrettyName, "Fluent"); - else if (ver >= 8) - ffStrbufSetStatic(&ds->dePrettyName, "Metro"); - else - ffStrbufSetStatic(&ds->dePrettyName, "Aero"); - } } diff --git a/src/detection/theme/theme_windows.c b/src/detection/theme/theme_windows.c new file mode 100644 index 000000000..54853f62d --- /dev/null +++ b/src/detection/theme/theme_windows.c @@ -0,0 +1,29 @@ +#include "theme.h" + +#include "detection/os/os.h" + +const char* ffDetectTheme(FFThemeResult* result) +{ + const FFOSResult* os = ffDetectOS(); + 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"); + 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"); + } + return NULL; +}