ohmu
·
2026-10-15
1#include "theme.h"
2
3#include "detection/os/os.h"
4#include "detection/displayserver/displayserver.h"
5
6const char* ffDetectTheme(FFThemeResult* result) {
7 const FFOSResult* os = ffDetectOS();
8 const FFDisplayServerResult* displayServer = ffConnectDisplayServer();
9 if (ffStrbufEqualS(&displayServer->wmProcessName, "dwm.exe")) {
10
11 uint32_t ver = (uint32_t) ffStrbufToUInt(&os->version, 0);
12 if (ver > 1000) {
13 // Windows Server
14 if (ver >= 2016) {
15 ffStrbufSetStatic(&result->theme1, "Fluent");
16 } else if (ver >= 2012) {
17 ffStrbufSetStatic(&result->theme1, "Metro");
18 } else {
19 ffStrbufSetStatic(&result->theme1, "Aero");
20 }
21 } else {
22 if (ver >= 10) {
23 ffStrbufSetStatic(&result->theme1, "Fluent");
24 } else if (ver >= 8) {
25 ffStrbufSetStatic(&result->theme1, "Metro");
26 } else {
27 ffStrbufSetStatic(&result->theme1, "Aero");
28 }
29 }
30 } else if (ffStrbufEqualS(&displayServer->wmProcessName, "explorer.exe")) {
31 ffStrbufSetStatic(&result->theme1, "Basic");
32 }
33 return nullptr;
34}