diff --git a/CMakeLists.txt b/CMakeLists.txt index 56bcf6c21..9f677d811 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -698,17 +698,18 @@ endif() if(APPLE) target_link_libraries(libfastfetch + PRIVATE "-framework Cocoa" PRIVATE "-framework CoreFoundation" + PRIVATE "-framework CoreAudio" + PRIVATE "-framework CoreVideo" + PRIVATE "-framework CoreWLAN" + PRIVATE "-framework IOBluetooth" PRIVATE "-framework IOKit" PRIVATE "-framework OpenGL" PRIVATE "-framework OpenCL" - PRIVATE "-framework Cocoa" - PRIVATE "-framework CoreWLAN" - PRIVATE "-framework CoreAudio" - PRIVATE "-framework CoreVideo" - PRIVATE "-framework IOBluetooth" - PRIVATE "-weak_framework MediaRemote -F /System/Library/PrivateFrameworks" + PRIVATE "-weak_framework CoreDisplay" PRIVATE "-weak_framework DisplayServices -F /System/Library/PrivateFrameworks" + PRIVATE "-weak_framework MediaRemote -F /System/Library/PrivateFrameworks" ) elseif(WIN32) target_compile_definitions(libfastfetch PRIVATE -D_WIN32_WINNT=0x0601) diff --git a/src/detection/brightness/brightness_apple.c b/src/detection/brightness/brightness_apple.c index e3a93a5ea..b318e0a6a 100644 --- a/src/detection/brightness/brightness_apple.c +++ b/src/detection/brightness/brightness_apple.c @@ -1,8 +1,10 @@ #include "brightness.h" +#include "util/apple/cf_helpers.h" #include extern int DisplayServicesGetBrightness(CGDirectDisplayID display, float *brightness) __attribute__((weak_import)); +extern CFDictionaryRef CoreDisplay_DisplayCreateInfoDictionary(CGDirectDisplayID display) __attribute__((weak_import)); const char* ffDetectBrightness(FFlist* result) { @@ -22,11 +24,27 @@ const char* ffDetectBrightness(FFlist* result) continue; FFBrightnessResult* display = (FFBrightnessResult*) ffListAdd(result); - if(CGDisplayIsBuiltin(screen)) - ffStrbufInitS(&display->name, "built-in"); - else - ffStrbufInitF(&display->name, "external-%u", (unsigned) screen); display->value = brightness * 100; + ffStrbufInit(&display->name); + + if(CoreDisplay_DisplayCreateInfoDictionary) + { + CFDictionaryRef FF_CFTYPE_AUTO_RELEASE displayInfo = CoreDisplay_DisplayCreateInfoDictionary(screen); + if(displayInfo) + { + CFDictionaryRef productNames; + if(!ffCfDictGetDict(displayInfo, CFSTR(kDisplayProductName), &productNames)) + { + if(!ffCfDictGetString(productNames, CFSTR("en_US"), &display->name)) + continue; + } + } + } + + if(CGDisplayIsBuiltin(screen)) + ffStrbufAppendS(&display->name, "built-in"); + else + ffStrbufAppendF(&display->name, "external-%u", (unsigned) screen); } return NULL;