From 17c007348b327de8daa09aad347496d4cde970e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Sat, 14 Oct 2023 21:52:15 +0800 Subject: [PATCH 1/6] Icons (Windows): fix detection --- src/detection/icons/icons_windows.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/detection/icons/icons_windows.c b/src/detection/icons/icons_windows.c index 0008d04af..894e34465 100644 --- a/src/detection/icons/icons_windows.c +++ b/src/detection/icons/icons_windows.c @@ -4,11 +4,12 @@ const char* ffDetectIcons(FFstrbuf* result) { FF_HKEY_AUTO_DESTROY hKey = NULL; - if(!ffRegOpenKeyForRead(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\HideDesktopIcons\\ClassicStartMenu", &hKey, NULL)) - return "ffRegOpenKeyForRead(Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\HideDesktopIcons\\ClassicStartMenu) failed"; + if(!ffRegOpenKeyForRead(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\HideDesktopIcons\\NewStartPanel", &hKey, NULL) && + !ffRegOpenKeyForRead(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\HideDesktopIcons\\ClassicStartMenu", &hKey, NULL)) + return "ffRegOpenKeyForRead(Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\HideDesktopIcons\\{NewStartPanel|ClassicStartMenu}) failed"; // Whether these icons are hidden - uint32_t ThisPC = 0, UsersFiles = 0, RemoteNetwork = 0, RecycleBin = 0, ControlPanel = 0; + uint32_t ThisPC = 1, UsersFiles = 1, RemoteNetwork = 1, RecycleBin = 0 /* Shown by default */, ControlPanel = 1; ffRegReadUint(hKey, L"{20D04FE0-3AEA-1069-A2D8-08002B30309D}", &ThisPC, NULL); ffRegReadUint(hKey, L"{59031a47-3f72-44a7-89c5-5595fe6b30ee}", &UsersFiles, NULL); ffRegReadUint(hKey, L"{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}", &RemoteNetwork, NULL); From d29931a91ac8bf8499fe998cfe8ac02da7760468 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Sun, 15 Oct 2023 10:41:05 +0800 Subject: [PATCH 2/6] Brightness (Linux): fix compatibility for ddcutil 2.0 Ref: https://github.com/fastfetch-cli/fastfetch/issues/576#issuecomment-1763184172 --- src/detection/brightness/brightness_linux.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/detection/brightness/brightness_linux.c b/src/detection/brightness/brightness_linux.c index 85713f225..0f9ebef8e 100644 --- a/src/detection/brightness/brightness_linux.c +++ b/src/detection/brightness/brightness_linux.c @@ -100,11 +100,9 @@ static const char* detectWithDdcci(FFBrightnessOptions* options, FFlist* result) FF_LIBRARY_LOAD_SYMBOL_MESSAGE(libddcutil, ddca_get_any_vcp_value_using_explicit_type) FF_LIBRARY_LOAD_SYMBOL_MESSAGE(libddcutil, ddca_free_any_vcp_value) FF_LIBRARY_LOAD_SYMBOL_MESSAGE(libddcutil, ddca_close_display) - FF_LIBRARY_LOAD_SYMBOL_MESSAGE(libddcutil, ddca_set_default_sleep_multiplier) + FF_LIBRARY_LOAD_SYMBOL_MESSAGE(libddcutil, ddca_set_sleep_multiplier) libddcutil = NULL; // Don't dlclose libddcutil. See https://github.com/rockowitz/ddcutil/issues/330 - ffddca_set_default_sleep_multiplier(options->ddcciSleep / 40.0); - FF_AUTO_FREE DDCA_Display_Info_List* infoList = NULL; if (__builtin_expect(ffddca_get_display_info_list2(false, &infoList) < 0, 0)) return "ddca_get_display_info_list2(false, &infoList) failed"; @@ -119,6 +117,8 @@ static const char* detectWithDdcci(FFBrightnessOptions* options, FFlist* result) DDCA_Display_Handle handle; if (ffddca_open_display2(display->dref, false, &handle) >= 0) { + ffddca_set_sleep_multiplier(options->ddcciSleep / 40.0); // As of ddcutil 1.5, it sets the sleep multiplier for open display on the current thread + DDCA_Any_Vcp_Value* vcpValue = NULL; if (ffddca_get_any_vcp_value_using_explicit_type(handle, 0x10 /*brightness*/, DDCA_NON_TABLE_VCP_VALUE, &vcpValue) >= 0) { From 0cc38c20be110f1729b35e56261d30447039aba7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Sun, 15 Oct 2023 10:46:25 +0800 Subject: [PATCH 3/6] CPUUsage (FreeBSD): silence compiler warnings --- src/detection/cpuusage/cpuusage_bsd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/detection/cpuusage/cpuusage_bsd.c b/src/detection/cpuusage/cpuusage_bsd.c index 6c58832e0..87c6757a7 100644 --- a/src/detection/cpuusage/cpuusage_bsd.c +++ b/src/detection/cpuusage/cpuusage_bsd.c @@ -12,7 +12,7 @@ const char* ffGetCpuUsageInfo(FFlist* cpuTimes) if(sysctlbyname("kern.cp_times", NULL, &neededLength, NULL, 0) != 0) return "sysctlbyname(kern.cp_times, NULL) failed"; - uint32_t coreCount = neededLength / (CPUSTATES * (uint32_t) sizeof(uint64_t)); + uint32_t coreCount = (uint32_t) (neededLength / (CPUSTATES * sizeof(uint64_t))); assert(coreCount > 0); FF_AUTO_FREE uint64_t (*cpTimes)[CPUSTATES] = malloc(neededLength); From ea85f40682d145bcddd6065470ccf2d7c9402395 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Sun, 15 Oct 2023 10:51:25 +0800 Subject: [PATCH 4/6] Release v2.1.2 --- CHANGELOG.md | 7 +++++++ CMakeLists.txt | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2546d975f..1cd3246ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# 2.1.2 + +Bugfixes: +* Fix icon detection on Windows. It shows enabled system icons in desktop (`This PC`, `Recycle Bin`, etc) (Icon, Windows) +* Fix compatibility with ddcutil 2.0 (Brightness, Linux) +* Fix a compile warning (CPUUsage, FreeBSD) + # 2.1.1 Features: diff --git a/CMakeLists.txt b/CMakeLists.txt index 91b13df6c..f883df03d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.12.0) # target_link_libraries with OBJECT libs & project homepage url project(fastfetch - VERSION 2.1.1 + VERSION 2.1.2 LANGUAGES C DESCRIPTION "Fast system information tool" HOMEPAGE_URL "https://github.com/fastfetch-cli/fastfetch" From 27cfec68ed0fa73cf4533b9c5705f5beb413a4a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Sun, 15 Oct 2023 11:37:39 +0800 Subject: [PATCH 5/6] Brightness (Linux): fix compatibility for ddcutil 2.0 --- src/detection/brightness/brightness_linux.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/detection/brightness/brightness_linux.c b/src/detection/brightness/brightness_linux.c index 0f9ebef8e..6de6b139a 100644 --- a/src/detection/brightness/brightness_linux.c +++ b/src/detection/brightness/brightness_linux.c @@ -90,8 +90,15 @@ static const char* detectWithBacklight(FFlist* result) #include "common/library.h" #include "util/mallocHelper.h" +#include +#include #include +// Try to be compatible with ddcutil 2.0 +#if DDCUTIL_VMAJOR >= 2 +double ddca_set_default_sleep_multiplier(double multiplier); // ddcutil 1.4 +#endif + static const char* detectWithDdcci(FFBrightnessOptions* options, FFlist* result) { FF_LIBRARY_LOAD(libddcutil, &instance.config.libDdcutil, "dlopen ddcutil failed", "libddcutil" FF_LIBRARY_EXTENSION, 5); @@ -100,11 +107,14 @@ static const char* detectWithDdcci(FFBrightnessOptions* options, FFlist* result) FF_LIBRARY_LOAD_SYMBOL_MESSAGE(libddcutil, ddca_get_any_vcp_value_using_explicit_type) FF_LIBRARY_LOAD_SYMBOL_MESSAGE(libddcutil, ddca_free_any_vcp_value) FF_LIBRARY_LOAD_SYMBOL_MESSAGE(libddcutil, ddca_close_display) - FF_LIBRARY_LOAD_SYMBOL_MESSAGE(libddcutil, ddca_set_sleep_multiplier) libddcutil = NULL; // Don't dlclose libddcutil. See https://github.com/rockowitz/ddcutil/issues/330 + __typeof__(&ddca_set_default_sleep_multiplier) ffddca_set_default_sleep_multiplier = dlsym(libddcutil, "ddca_set_default_sleep_multiplier"); + if (ffddca_set_default_sleep_multiplier) + ffddca_set_default_sleep_multiplier(options->ddcciSleep / 40.0); + FF_AUTO_FREE DDCA_Display_Info_List* infoList = NULL; - if (__builtin_expect(ffddca_get_display_info_list2(false, &infoList) < 0, 0)) + if (ffddca_get_display_info_list2(false, &infoList) < 0) return "ddca_get_display_info_list2(false, &infoList) failed"; if (infoList->ct == 0) @@ -117,8 +127,6 @@ static const char* detectWithDdcci(FFBrightnessOptions* options, FFlist* result) DDCA_Display_Handle handle; if (ffddca_open_display2(display->dref, false, &handle) >= 0) { - ffddca_set_sleep_multiplier(options->ddcciSleep / 40.0); // As of ddcutil 1.5, it sets the sleep multiplier for open display on the current thread - DDCA_Any_Vcp_Value* vcpValue = NULL; if (ffddca_get_any_vcp_value_using_explicit_type(handle, 0x10 /*brightness*/, DDCA_NON_TABLE_VCP_VALUE, &vcpValue) >= 0) { From 7362808d5d405ea07794565f4397db91e2beaed7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Sun, 15 Oct 2023 13:46:58 +0800 Subject: [PATCH 6/6] Brightness (Linux): fix compatibility for ddcutil 2.0 3rd try --- src/detection/brightness/brightness_linux.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/detection/brightness/brightness_linux.c b/src/detection/brightness/brightness_linux.c index 6de6b139a..9b354c0f2 100644 --- a/src/detection/brightness/brightness_linux.c +++ b/src/detection/brightness/brightness_linux.c @@ -90,7 +90,6 @@ static const char* detectWithBacklight(FFlist* result) #include "common/library.h" #include "util/mallocHelper.h" -#include #include #include @@ -107,12 +106,13 @@ static const char* detectWithDdcci(FFBrightnessOptions* options, FFlist* result) FF_LIBRARY_LOAD_SYMBOL_MESSAGE(libddcutil, ddca_get_any_vcp_value_using_explicit_type) FF_LIBRARY_LOAD_SYMBOL_MESSAGE(libddcutil, ddca_free_any_vcp_value) FF_LIBRARY_LOAD_SYMBOL_MESSAGE(libddcutil, ddca_close_display) - libddcutil = NULL; // Don't dlclose libddcutil. See https://github.com/rockowitz/ddcutil/issues/330 __typeof__(&ddca_set_default_sleep_multiplier) ffddca_set_default_sleep_multiplier = dlsym(libddcutil, "ddca_set_default_sleep_multiplier"); if (ffddca_set_default_sleep_multiplier) ffddca_set_default_sleep_multiplier(options->ddcciSleep / 40.0); + libddcutil = NULL; // Don't dlclose libddcutil. See https://github.com/rockowitz/ddcutil/issues/330 + FF_AUTO_FREE DDCA_Display_Info_List* infoList = NULL; if (ffddca_get_display_info_list2(false, &infoList) < 0) return "ddca_get_display_info_list2(false, &infoList) failed";