Skip to content

Commit 11f3dc3

Browse files
committed
WMTheme: use Cocoa API to parse plist file
drop libplist dependency ( macOS )
1 parent 87de3f1 commit 11f3dc3

File tree

3 files changed

+62
-107
lines changed

3 files changed

+62
-107
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ if(APPLE)
308308
src/detection/terminalfont/terminalfont_apple.m
309309
src/detection/media/media_apple.m
310310
src/detection/disk/disk_apple.m
311-
src/detection/wmtheme/wmtheme_apple.c
311+
src/detection/wmtheme/wmtheme_apple.m
312312
src/detection/temps/temps_apple.c
313313
src/detection/font/font_apple.m
314314
)

src/detection/wmtheme/wmtheme_apple.c

Lines changed: 0 additions & 106 deletions
This file was deleted.
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#include "fastfetch.h"
2+
#include "detection/displayserver/displayserver.h"
3+
#include "wmtheme.h"
4+
5+
#import <Foundation/Foundation.h>
6+
7+
static bool detectQuartzCompositor(FFinstance* instance, FFstrbuf* themeOrError)
8+
{
9+
FF_UNUSED(instance);
10+
11+
NSError* error;
12+
NSString* fileName = [NSString stringWithFormat:@"file://%s/Library/Preferences/.GlobalPreferences.plist", instance->state.passwd->pw_dir];
13+
NSDictionary* dict = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:fileName]
14+
error:&error];
15+
if(error)
16+
{
17+
ffStrbufAppendS(themeOrError, error.localizedDescription.UTF8String);
18+
return false;
19+
}
20+
21+
NSNumber* wmThemeColor = [dict valueForKey:@"AppleAccentColor"];
22+
if(!wmThemeColor)
23+
ffStrbufAppendS(themeOrError, "Multicolor");
24+
else
25+
{
26+
switch(wmThemeColor.intValue)
27+
{
28+
case -1: ffStrbufAppendS(themeOrError, "Graphite"); break;
29+
case 0: ffStrbufAppendS(themeOrError, "Red"); break;
30+
case 1: ffStrbufAppendS(themeOrError, "Orange"); break;
31+
case 2: ffStrbufAppendS(themeOrError, "Yellow"); break;
32+
case 3: ffStrbufAppendS(themeOrError, "Green"); break;
33+
case 4: ffStrbufAppendS(themeOrError, "Blue"); break;
34+
case 5: ffStrbufAppendS(themeOrError, "Purple"); break;
35+
case 6: ffStrbufAppendS(themeOrError, "Pink"); break;
36+
default: ffStrbufAppendS(themeOrError, "Unknown"); break;
37+
}
38+
}
39+
40+
NSString* wmTheme = [dict valueForKey:@"AppleInterfaceStyle"];
41+
ffStrbufAppendF(themeOrError, " (%s)", wmTheme ? wmTheme.UTF8String : "Light");
42+
return true;
43+
}
44+
45+
bool ffDetectWmTheme(FFinstance* instance, FFstrbuf* themeOrError)
46+
{
47+
const FFDisplayServerResult* wm = ffConnectDisplayServer(instance);
48+
49+
if(wm->wmPrettyName.length == 0)
50+
{
51+
ffStrbufAppendS(themeOrError, "WM Theme needs sucessfull WM detection");
52+
return false;
53+
}
54+
55+
if(ffStrbufIgnCaseCompS(&wm->wmPrettyName, "Quartz Compositor") == 0)
56+
return detectQuartzCompositor(instance, themeOrError);
57+
58+
ffStrbufAppendS(themeOrError, "Unknown WM: ");
59+
ffStrbufAppend(themeOrError, &wm->dePrettyName);
60+
return false;
61+
}

0 commit comments

Comments
 (0)