<pre style='margin:0'>
Herby Gillot (herbygillot) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/4c98d11b1a9dfde83ad46819f6af4410bdf82043">https://github.com/macports/macports-ports/commit/4c98d11b1a9dfde83ad46819f6af4410bdf82043</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 4c98d11b1a9 fastfetch: fix the port for old systems and powerpc
</span>4c98d11b1a9 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 4c98d11b1a9dfde83ad46819f6af4410bdf82043
</span>Author: Sergey Fedorov <barracuda@macos-powerpc.org>
AuthorDate: Sun Aug 4 21:49:21 2024 +0800
<span style='display:block; white-space:pre;color:#404040;'> fastfetch: fix the port for old systems and powerpc
</span>---
sysutils/fastfetch/Portfile | 43 +-
.../files/0001-gpu_apple.m-unbreak-for-10.11.patch | 36 ++
.../files/0002-memory_apple-fix-for-32-bit.patch | 47 +++
.../files/0003-opengl_apple.c-fix-for-10.7.patch | 27 ++
.../files/0004-sound_apple.c-fix-for-10.8.patch | 21 +
.../0005-monitor_apple.m-no-HDR-before-10.11.patch | 47 +++
.../0006-gpu_apple.c-fix-for-old-systems.patch | 27 ++
.../0007-camera_apple.m-unbreak-for-10.7.patch | 21 +
...-brightness_apple.c-add-a-missing-include.patch | 22 +
...t-refresh-rate-detection-commit-for-macOS.patch | 88 ++++
...nor-fix-for-a-type-fixes-calculation-of-d.patch | 19 +
.../0011-CMakeLists-adjust-for-legacy-macOS.patch | 118 ++++++
...012-os_apple.m-etc.-fix-syntax-for-plists.patch | 160 ++++++++
.../files/0013-osascript.m-fix-syntax.patch | 34 ++
...014-Revert-some-display-related-breakages.patch | 441 +++++++++++++++++++++
.../fastfetch/files/0015-Fix-PowerPC-macros.patch | 31 ++
.../files/0016-Fix-autorelease-pools.patch | 315 +++++++++++++++
...017-disk_bsd-no-support-for-creation-time.patch | 29 ++
.../files/0018-Support-PowerPC-CPU-detection.patch | 47 +++
19 files changed, 1572 insertions(+), 1 deletion(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fastfetch/Portfile b/sysutils/fastfetch/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 3e9aff7b64d..d2c7b69ac01 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/sysutils/fastfetch/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fastfetch/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3,6 +3,10 @@
</span> PortSystem 1.0
PortGroup github 1.0
PortGroup cmake 1.1
<span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup legacysupport 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# clock_gettime
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+legacysupport.newest_darwin_requires_legacy 15
</span>
github.setup fastfetch-cli fastfetch 2.20.0
github.tarball_from archive
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -36,4 +40,41 @@ depends_lib-append port:chafa \
</span>
configure.args-append \
-DENABLE_SYSTEM_YYJSON=ON \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- -DENABLE_VULKAN=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DENABLE_VULKAN=OFF \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DENABLE_OPENCL=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.c_standard 2011
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.cxx_standard 2017
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/fastfetch-cli/fastfetch/issues/942
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/fastfetch-cli/fastfetch/issues/943
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/fastfetch-cli/fastfetch/issues/944
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/fastfetch-cli/fastfetch/issues/1148
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.platform} eq "darwin" && ${os.major} < 11} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patchfiles-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0001-gpu_apple.m-unbreak-for-10.11.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0002-memory_apple-fix-for-32-bit.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0003-opengl_apple.c-fix-for-10.7.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0004-sound_apple.c-fix-for-10.8.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0005-monitor_apple.m-no-HDR-before-10.11.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0006-gpu_apple.c-fix-for-old-systems.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0007-camera_apple.m-unbreak-for-10.7.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0008-brightness_apple.c-add-a-missing-include.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0009-Revert-refresh-rate-detection-commit-for-macOS.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0010-disk_bsd-minor-fix-for-a-type-fixes-calculation-of-d.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0011-CMakeLists-adjust-for-legacy-macOS.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0012-os_apple.m-etc.-fix-syntax-for-plists.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0013-osascript.m-fix-syntax.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0014-Revert-some-display-related-breakages.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0015-Fix-PowerPC-macros.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0016-Fix-autorelease-pools.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0017-disk_bsd-no-support-for-creation-time.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0018-Support-PowerPC-CPU-detection.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DENABLE_LTO=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # https://trac.macports.org/ticket/59917
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.cflags-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -F/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fastfetch/files/0001-gpu_apple.m-unbreak-for-10.11.patch b/sysutils/fastfetch/files/0001-gpu_apple.m-unbreak-for-10.11.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..89e66146b1e
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fastfetch/files/0001-gpu_apple.m-unbreak-for-10.11.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,36 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From cfe53c77d31534fca3a1b3a8b1d055542c6dcfa3 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 4 Aug 2024 00:54:02 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] gpu_apple.m: unbreak for < 10.11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/gpu/gpu_apple.m src/detection/gpu/gpu_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index e5b6bebf..314f83a3 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/gpu/gpu_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/gpu/gpu_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,5 +1,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "gpu.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #import <Metal/MTLDevice.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef MAC_OS_VERSION_13_0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -9,9 +11,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define MTLFeatureSet_macOS_GPUFamily1_v4 ((MTLFeatureSet) 10004)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define MTLFeatureSet_macOS_GPUFamily2_v1 ((MTLFeatureSet) 10005)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const char* ffGpuDetectMetal(FFlist* gpus)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (@available(macOS 10.13, *))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for (id<MTLDevice> device in MTLCopyAllDevices())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -47,5 +51,6 @@ const char* ffGpuDetectMetal(FFlist* gpus)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return "Metal API is not supported by this macOS version";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fastfetch/files/0002-memory_apple-fix-for-32-bit.patch b/sysutils/fastfetch/files/0002-memory_apple-fix-for-32-bit.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..cbcaa6abeb5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fastfetch/files/0002-memory_apple-fix-for-32-bit.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,47 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 27aef35a2f139b04e740c9c6472d847d3e34b27b Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 4 Aug 2024 00:58:05 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] memory_apple: fix for 32-bit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/memory/memory_apple.c src/detection/memory/memory_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index cabdab26..cdfdee12 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/memory/memory_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/memory/memory_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -4,6 +4,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <mach/mach.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <sys/sysctl.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <unistd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const char* ffDetectMemory(FFMemoryResult* ram)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -11,10 +12,17 @@ const char* ffDetectMemory(FFMemoryResult* ram)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (sysctl((int[]){ CTL_HW, HW_MEMSIZE }, 2, &ram->bytesTotal, &length, NULL, 0))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return "Failed to read hw.memsize";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__i386__) || defined(__ppc__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mach_msg_type_number_t count = HOST_VM_INFO_COUNT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ vm_statistics_data_t vmstat;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if(host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t) (&vmstat), &count) != KERN_SUCCESS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return "Failed to read host_statistics";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mach_msg_type_number_t count = HOST_VM_INFO64_COUNT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ vm_statistics64_data_t vmstat;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(host_statistics64(mach_host_self(), HOST_VM_INFO64, (host_info64_t) (&vmstat), &count) != KERN_SUCCESS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return "Failed to read host_statistics64";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // https://github.com/exelban/stats/blob/master/Modules/RAM/readers.swift#L56
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ram->bytesUsed = ((uint64_t)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -22,9 +30,11 @@ const char* ffDetectMemory(FFMemoryResult* ram)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ + vmstat.inactive_count
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ + vmstat.speculative_count
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ + vmstat.wire_count
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if (MAC_OS_X_VERSION_MIN_REQUIRED >= 1060) && !defined(__ppc__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ + vmstat.compressor_page_count
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - vmstat.purgeable_count
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - vmstat.external_page_count
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ) * instance.state.platform.sysinfo.pageSize;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return NULL;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fastfetch/files/0003-opengl_apple.c-fix-for-10.7.patch b/sysutils/fastfetch/files/0003-opengl_apple.c-fix-for-10.7.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..8aad6e4d5ff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fastfetch/files/0003-opengl_apple.c-fix-for-10.7.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,27 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 4c21619da789f9b83af7e3e5011635d9773b732d Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 4 Aug 2024 01:01:30 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] opengl_apple.c: fix for < 10.7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/opengl/opengl_apple.c src/detection/opengl/opengl_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c6b56f07..8c97eeda 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/opengl/opengl_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/opengl/opengl_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,4 +1,4 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "fastfetch.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "opengl.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -6,6 +6,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <OpenGL/gl.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <OpenGL/OpenGL.h> // This brings in CGL, not GL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define kCGLPFAOpenGLProfile 99
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define kCGLOGLPVersion_3_2_Core 0x3200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void ffOpenGLHandleResult(FFOpenGLResult* result, __typeof__(&glGetString) ffglGetString);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static const char* cglHandleContext(FFOpenGLResult* result, CGLContextObj context)
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fastfetch/files/0004-sound_apple.c-fix-for-10.8.patch b/sysutils/fastfetch/files/0004-sound_apple.c-fix-for-10.8.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..237b362eb3e
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fastfetch/files/0004-sound_apple.c-fix-for-10.8.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,21 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 051a65a36dabbb3eed29c72935056754a15e6f5f Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 4 Aug 2024 01:03:05 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] sound_apple.c: fix for < 10.8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/sound/sound_apple.c src/detection/sound/sound_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 22ecec2a..10646206 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/sound/sound_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/sound/sound_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -4,6 +4,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <CoreAudio/CoreAudio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef MAC_OS_X_VERSION_10_8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define kAudioObjectPropertyScopeInput kAudioDevicePropertyScopeInput
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define kAudioObjectPropertyScopeOutput kAudioDevicePropertyScopeOutput
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef MAC_OS_VERSION_12_0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define kAudioObjectPropertyElementMain kAudioObjectPropertyElementMaster
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fastfetch/files/0005-monitor_apple.m-no-HDR-before-10.11.patch b/sysutils/fastfetch/files/0005-monitor_apple.m-no-HDR-before-10.11.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..3fecdb6b729
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fastfetch/files/0005-monitor_apple.m-no-HDR-before-10.11.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,47 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 48d0ac753d8ce3a7c558ee1dd96a75c3d7c27665 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 4 Aug 2024 00:59:49 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] monitor_apple.m: no HDR before 10.11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/monitor/monitor_apple.m src/detection/monitor/monitor_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 2c4a1e3c..c0169c29 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/monitor/monitor_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/monitor/monitor_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3,20 +3,25 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "util/apple/cf_helpers.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "util/edidHelper.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#import <AppKit/NSScreen.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#import <Foundation/Foundation.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#import <CoreGraphics/CoreGraphics.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AppKit/NSScreen.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <Foundation/Foundation.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <CoreGraphics/CoreGraphics.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern CFDictionaryRef CoreDisplay_DisplayCreateInfoDictionary(CGDirectDisplayID display) __attribute__((weak_import));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef MAC_OS_X_VERSION_10_15
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#import <IOKit/graphics/IOGraphicsLib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <IOKit/graphics/IOGraphicsLib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef MAC_OS_X_VERSION_10_8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define CoreDisplay_IODisplayCreateInfoDictionary IODisplayCreateInfoDictionary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern CFDictionaryRef CoreDisplay_IODisplayCreateInfoDictionary(io_service_t framebuffer, IOOptionBits options) __attribute__((weak_import));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static bool detectHdrSupportWithNSScreen(FFDisplayResult* display)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NSScreen* mainScreen = NSScreen.mainScreen;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (display->primary)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef MAC_OS_X_VERSION_10_15
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -41,6 +46,7 @@ static bool detectHdrSupportWithNSScreen(FFDisplayResult* display)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fastfetch/files/0006-gpu_apple.c-fix-for-old-systems.patch b/sysutils/fastfetch/files/0006-gpu_apple.c-fix-for-old-systems.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..fd3ea42327f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fastfetch/files/0006-gpu_apple.c-fix-for-old-systems.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,27 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From d374667cfa14899533c4390839a77fa2e2cab725 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 4 Aug 2024 01:09:46 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] gpu_apple.c: fix for old systems
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/gpu/gpu_apple.c src/detection/gpu/gpu_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 1190a636..b6fb2721 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/gpu/gpu_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/gpu/gpu_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -4,6 +4,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "detection/temps/temps_apple.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "util/apple/cf_helpers.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <IOKit/graphics/IOGraphicsLib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const char* ffGpuDetectMetal(FFlist* gpus);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -98,7 +99,9 @@ const char* ffDetectGPUImpl(const FFGPUOptions* options, FFlist* gpus)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ gpu->dedicated.total = gpu->dedicated.used = gpu->shared.total = gpu->shared.used = FF_GPU_VMEM_SIZE_UNSET;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ gpu->type = FF_GPU_TYPE_UNKNOWN;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ gpu->frequency = FF_GPU_FREQUENCY_UNSET;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 && !defined(__ppc__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ IORegistryEntryGetRegistryEntryID(registryEntry, &gpu->deviceId);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ffStrbufInitStatic(&gpu->platformApi, "Metal");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ffStrbufInit(&gpu->driver); // Ok for both Apple and Intel
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fastfetch/files/0007-camera_apple.m-unbreak-for-10.7.patch b/sysutils/fastfetch/files/0007-camera_apple.m-unbreak-for-10.7.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..83201157b49
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fastfetch/files/0007-camera_apple.m-unbreak-for-10.7.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,21 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 9c1cb4a2055b6eb627b435c4a0a2579a1339334d Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 4 Aug 2024 01:11:58 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] camera_apple.m: unbreak for < 10.7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/camera/camera_apple.m src/detection/camera/camera_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ab15fb99..d30c4259 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/camera/camera_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/camera/camera_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,7 +1,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "camera.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "common/io/io.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #import <AVFoundation/AVCaptureDevice.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // warning: 'AVCaptureDeviceTypeExternalUnknown' is deprecated
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fastfetch/files/0008-brightness_apple.c-add-a-missing-include.patch b/sysutils/fastfetch/files/0008-brightness_apple.c-add-a-missing-include.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..bc9a8a6f07c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fastfetch/files/0008-brightness_apple.c-add-a-missing-include.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,22 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 457aef63aec7f6bbf39fe7d8a420fec1573093e5 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 4 Aug 2024 01:24:23 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] brightness_apple.c: add a missing include
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/brightness/brightness_apple.c src/detection/brightness/brightness_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index a9f8daf0..688e1f1a 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/brightness/brightness_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/brightness/brightness_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -14,10 +14,11 @@ extern IOReturn IOAVServiceCopyEDID(IOAVServiceRef service, CFDataRef* x2) __att
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern IOReturn IOAVServiceReadI2C(IOAVServiceRef service, uint32_t chipAddress, uint32_t offset, void* outputBuffer, uint32_t outputBufferSize) __attribute__((weak_import));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern IOReturn IOAVServiceWriteI2C(IOAVServiceRef service, uint32_t chipAddress, uint32_t dataAddress, void* inputBuffer, uint32_t inputBufferSize) __attribute__((weak_import));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// DDC/CI (Intel)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// DDC/CI (Intel / PowerPC)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <IOKit/IOKitLib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <IOKit/graphics/IOGraphicsLib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <IOKit/i2c/IOI2CInterface.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <ApplicationServices/ApplicationServices.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern void CGSServiceForDisplayNumber(CGDirectDisplayID display, io_service_t* service) __attribute__((weak_import));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fastfetch/files/0009-Revert-refresh-rate-detection-commit-for-macOS.patch b/sysutils/fastfetch/files/0009-Revert-refresh-rate-detection-commit-for-macOS.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..80c0cb17970
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fastfetch/files/0009-Revert-refresh-rate-detection-commit-for-macOS.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,88 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From c45838ef0fe86afc70a787af52fdac67332e5136 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 4 Aug 2024 02:32:59 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Revert refresh rate detection commit for macOS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/monitor/monitor.h src/detection/monitor/monitor.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 4066f117..a6150e5d 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/monitor/monitor.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/monitor/monitor.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -5,7 +5,6 @@ typedef struct FFMonitorResult
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FFstrbuf name;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uint32_t width; // native / maximum resolution, in pixels
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uint32_t height; // native / maximum resolution, in pixels
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- double refreshRate;// maximum refresh rate in native resolution, in Hz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uint32_t physicalWidth; // in mm
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uint32_t physicalHeight; // in mm
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool hdrCompatible;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/monitor/monitor_apple.m src/detection/monitor/monitor_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c0169c29..c6219fe5 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/monitor/monitor_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/monitor/monitor_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -108,19 +108,6 @@ const char* ffDetectMonitor(FFlist* results)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ detectHdrSupportWithNSScreen(display);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ monitor->serial = CGDisplaySerialNumber((CGDirectDisplayID) display->id);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- FF_CFTYPE_AUTO_RELEASE CFArrayRef modes = CGDisplayCopyAllDisplayModes((CGDirectDisplayID) display->id, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- double maxRefreshRate = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- for (uint32_t j = 0; j < CFArrayGetCount(modes); ++j)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- CGDisplayModeRef mode = (CGDisplayModeRef) CFArrayGetValueAtIndex(modes, j);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (CGDisplayModeGetWidth(mode) == (uint32_t) width && CGDisplayModeGetHeight(mode) == (uint32_t) height)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- double refreshRate = CGDisplayModeGetRefreshRate(mode);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (refreshRate > maxRefreshRate) maxRefreshRate = refreshRate;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- monitor->refreshRate = maxRefreshRate;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int64_t year, week;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (ffCfDictGetInt64(displayInfo, CFSTR("DisplayYearManufacture"), &year) == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ monitor->manufactureYear = (uint16_t) year;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/modules/monitor/monitor.c src/modules/monitor/monitor.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index d83e3431..27d31cca 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/modules/monitor/monitor.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/modules/monitor/monitor.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -6,7 +6,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <math.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#define FF_MONITOR_NUM_FORMAT_ARGS 11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FF_MONITOR_NUM_FORMAT_ARGS 10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void ffPrintMonitor(FFMonitorOptions* options)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -53,8 +53,6 @@ void ffPrintMonitor(FFMonitorOptions* options)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ffPrintLogoAndKey(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf("%ux%u px", display->width, display->height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (display->refreshRate > 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- printf(" @ %.3f Hz", display->refreshRate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (inch > 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printf(" - %ux%u mm (%.2f inches, %.2f ppi)\n", display->physicalWidth, display->physicalHeight, inch, ppi);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -82,7 +80,6 @@ void ffPrintMonitor(FFMonitorOptions* options)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {FF_FORMAT_ARG_TYPE_UINT16, &display->manufactureYear, "manufacture-year"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {FF_FORMAT_ARG_TYPE_UINT16, &display->manufactureWeek, "manufacture-week"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {FF_FORMAT_ARG_TYPE_STRING, buf, "serial"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {FF_FORMAT_ARG_TYPE_DOUBLE, buf, "refresh-rate"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -157,8 +154,6 @@ void ffGenerateMonitorJsonResult(FF_MAYBE_UNUSED FFMonitorOptions* options, yyjs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ yyjson_mut_obj_add_uint(doc, physical, "height", item->physicalHeight);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ yyjson_mut_obj_add_uint(doc, physical, "width", item->physicalWidth);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- yyjson_mut_obj_add_real(doc, obj, "refreshRate", item->refreshRate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (item->manufactureYear)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ yyjson_mut_val* manufactureDate = yyjson_mut_obj_add_obj(doc, obj, "manufactureDate");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -196,7 +191,6 @@ void ffPrintMonitorHelpFormat(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "Year of manufacturing - manufacture-year",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "Nth week of manufacturing in the year - manufacture-week",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "Serial number - serial",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- "Maximum refresh rate in Hz - refresh-rate",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fastfetch/files/0010-disk_bsd-minor-fix-for-a-type-fixes-calculation-of-d.patch b/sysutils/fastfetch/files/0010-disk_bsd-minor-fix-for-a-type-fixes-calculation-of-d.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..cd4d2f97661
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fastfetch/files/0010-disk_bsd-minor-fix-for-a-type-fixes-calculation-of-d.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,19 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 73f4ce4e98799b4b882473f856fa4457717ef35b Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 4 Aug 2024 19:51:30 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] disk_bsd: minor fix for a type, fixes calculation of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ disk usage on 32-bit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/disk/disk_bsd.c src/detection/disk/disk_bsd.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 3046a357..81be9c83 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/disk/disk_bsd.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/disk/disk_bsd.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -123,7 +123,7 @@ const char* ffDetectDisksImpl(FFDiskOptions* options, FFlist* disks)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FFDisk* disk = ffListAdd(disks);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- disk->bytesTotal = fs->f_blocks * fs->f_bsize;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ disk->bytesTotal = (uint64_t)fs->f_blocks * fs->f_bsize;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ disk->bytesFree = (uint64_t)fs->f_bfree * fs->f_bsize;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ disk->bytesAvailable = (uint64_t)fs->f_bavail * fs->f_bsize;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ disk->bytesUsed = 0; // To be filled in ./disk.c
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fastfetch/files/0011-CMakeLists-adjust-for-legacy-macOS.patch b/sysutils/fastfetch/files/0011-CMakeLists-adjust-for-legacy-macOS.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..61b30268072
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fastfetch/files/0011-CMakeLists-adjust-for-legacy-macOS.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,118 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 513f8b439cfd38a4d0bec246723a769c02d12e22 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 4 Aug 2024 01:36:58 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 11/15] CMakeLists: adjust for legacy macOS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CMakeLists.txt | 36 ++++++++++++++----------------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 14 insertions(+), 22 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git CMakeLists.txt CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index db96fd6c..1d75f646 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -111,10 +111,10 @@ else()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ message(STATUS "Threads type: disabled")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-set(WARNING_FLAGS "-Wall -Wextra -Wconversion -Werror=uninitialized -Werror=return-type")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++set(WARNING_FLAGS "-Wall -Wextra -Wconversion -Wno-error=uninitialized -Werror=return-type")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set(CMAKE_C_STANDARD 11)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_FLAGS} -Werror=incompatible-pointer-types -Werror=implicit-function-declaration -Werror=int-conversion")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_FLAGS} -Wno-error=incompatible-pointer-types -Wno-error=implicit-function-declaration -Wno-error=int-conversion")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(WIN32 OR ENABLE_DIRECTX_HEADERS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enable_language(CXX)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -629,10 +629,10 @@ elseif(APPLE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/common/sysctl.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/battery/battery_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/bios/bios_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- src/detection/bluetooth/bluetooth_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ src/detection/bluetooth/bluetooth_nosupport.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/board/board_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/bootmgr/bootmgr_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- src/detection/brightness/brightness_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ src/detection/brightness/brightness_nosupport.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/chassis/chassis_nosupport.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/cpu/cpu_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/cpucache/cpucache_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -642,7 +642,7 @@ elseif(APPLE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/disk/disk_bsd.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/dns/dns_linux.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/physicaldisk/physicaldisk_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- src/detection/physicalmemory/physicalmemory_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ src/detection/physicalmemory/physicalmemory_nosupport.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/diskio/diskio_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/displayserver/displayserver_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/font/font_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -656,15 +656,15 @@ elseif(APPLE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/libc/libc_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/locale/locale_linux.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/localip/localip_linux.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- src/detection/gamepad/gamepad_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- src/detection/media/media_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ src/detection/gamepad/gamepad_nosupport.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ src/detection/media/media_nosupport.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/memory/memory_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/monitor/monitor_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/netio/netio_bsd.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/opengl/opengl_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/os/os_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/packages/packages_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- src/detection/poweradapter/poweradapter_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ src/detection/poweradapter/poweradapter_nosupport.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/processes/processes_bsd.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/sound/sound_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/swap/swap_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -675,8 +675,8 @@ elseif(APPLE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/theme/theme_nosupport.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/uptime/uptime_bsd.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/users/users_linux.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- src/detection/wallpaper/wallpaper_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- src/detection/wifi/wifi_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ src/detection/wallpaper/wallpaper_nosupport.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ src/detection/wifi/wifi_nosupport.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/wm/wm_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/de/de_nosupport.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/wmtheme/wmtheme_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -877,7 +877,7 @@ else()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Used for dlopen finding dylibs installed by homebrew
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # `/opt/homebrew/lib` is not on in dlopen search path by default
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(APPLE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath,/opt/homebrew/lib -Wl,-rpath,/usr/local/lib")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath,/opt/local/lib")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1093,25 +1093,17 @@ if(LINUX)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ elseif(APPLE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ target_link_libraries(libfastfetch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PRIVATE "-framework AVFoundation"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PRIVATE "-framework Cocoa"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PRIVATE "-framework CoreFoundation"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PRIVATE "-framework CoreAudio"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PRIVATE "-framework CoreMedia"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PRIVATE "-framework CoreVideo"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PRIVATE "-framework CoreWLAN"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PRIVATE "-framework IOBluetooth"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PRIVATE "-framework IOKit"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PRIVATE "-framework Metal"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PRIVATE "-framework OpenGL"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PRIVATE "-framework OpenCL"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PRIVATE "-framework SystemConfiguration"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PRIVATE "-weak_framework CoreDisplay"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PRIVATE "-F /System/Library/PrivateFrameworks"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PRIVATE "-weak_framework DisplayServices"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PRIVATE "-weak_framework MediaRemote"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- PRIVATE "-weak_framework Apple80211"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PRIVATE "-framework DisplayServices"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PRIVATE "-F/System/Library/PrivateFrameworks"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ elseif(WIN32)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ target_compile_definitions(libfastfetch PRIVATE -D_WIN32_WINNT=0x0601)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.46.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fastfetch/files/0012-os_apple.m-etc.-fix-syntax-for-plists.patch b/sysutils/fastfetch/files/0012-os_apple.m-etc.-fix-syntax-for-plists.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..9ccb1022921
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fastfetch/files/0012-os_apple.m-etc.-fix-syntax-for-plists.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,160 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 85671c268f8fe64db8e6c199da57ca8d5ee81b32 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 4 Aug 2024 01:39:51 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] os_apple.m etc.: fix syntax for plists
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git CMakeLists.txt CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 1d75f646..2cda6f53 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -638,7 +638,7 @@ elseif(APPLE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/cpu/cpu_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/cpucache/cpucache_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/cpuusage/cpuusage_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- src/detection/cursor/cursor_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ src/detection/cursor/cursor_nosupport.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/disk/disk_bsd.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/dns/dns_linux.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/detection/physicaldisk/physicaldisk_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/cursor/cursor_apple.m src/detection/cursor/cursor_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 40d4b90c..c71c440a 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/cursor/cursor_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/cursor/cursor_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -19,15 +19,7 @@ static void appendColor(FFstrbuf* str, NSDictionary* color)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void ffDetectCursor(FFCursorResult* result)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- NSError* error;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- NSString* fileName = [NSString stringWithFormat:@"file://%s/Library/Preferences/com.apple.universalaccess.plist", instance.state.platform.homeDir.chars];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- NSDictionary* dict = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:fileName]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- error:&error];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if(error)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffStrbufAppendS(&result->error, error.localizedDescription.UTF8String);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ NSDictionary* dict = [NSDictionary dictionaryWithContentsOfFile:[NSHomeDirectory() stringByAppendingPathComponent:@"/Library/Preferences/com.apple.universalaccess.plist"]];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NSDictionary* color;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/os/os_apple.m src/detection/os/os_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 5a8ef621..dc606c92 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/os/os_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/os/os_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -6,25 +6,21 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#import <Foundation/Foundation.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <Foundation/Foundation.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void parseSystemVersion(FFOSResult* os)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- NSError* error;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- NSString* fileName = @"file:///System/Library/CoreServices/SystemVersion.plist";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- NSDictionary* dict = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:fileName]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- error:&error];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if(error)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ NSDictionary* dict = [NSDictionary dictionaryWithContentsOfFile:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ @"/System/Library/CoreServices/SystemVersion.plist"];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NSString* value;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if((value = [dict valueForKey:@"ProductName"]))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffStrbufInitS(&os->name, value.UTF8String);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if((value = [dict valueForKey:@"ProductUserVisibleVersion"]))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffStrbufInitS(&os->version, value.UTF8String);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if((value = [dict valueForKey:@"ProductBuildVersion"]))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffStrbufInitS(&os->buildID, value.UTF8String);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if ((value = [dict objectForKey:@"ProductName"]))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ffStrbufInitS(&os->name, [value UTF8String]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if ((value = [dict objectForKey:@"ProductUserVisibleVersion"]))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ffStrbufInitS(&os->version, [value UTF8String]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if ((value = [dict objectForKey:@"ProductBuildVersion"]))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ffStrbufInitS(&os->buildID, [value UTF8String]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static bool detectOSCodeName(FFOSResult* os)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/terminalfont/terminalfont_apple.m src/detection/terminalfont/terminalfont_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 7d6aca28..96917199 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/terminalfont/terminalfont_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/terminalfont/terminalfont_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -16,19 +16,11 @@ static void detectIterm2(FFTerminalFontResult* terminalFont)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- NSError* error;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- NSString* fileName = [NSString stringWithFormat:@"file://%s/Library/Preferences/com.googlecode.iterm2.plist", instance.state.platform.homeDir.chars];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- NSDictionary* dict = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:fileName]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- error:&error];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if(error)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffStrbufAppendS(&terminalFont->error, error.localizedDescription.UTF8String);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ NSDictionary* dict = [NSDictionary dictionaryWithContentsOfFile:[NSHomeDirectory() stringByAppendingPathComponent:@"/Library/Preferences/com.googlecode.iterm2.plist"]];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for(NSDictionary* bookmark in [dict valueForKey:@"New Bookmarks"])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if(![[bookmark valueForKey:@"Name"] isEqualToString:@(profile)])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if(![[bookmark valueForKey:@"Name"] isEqualToString:[NSString stringWithUTF8String:profile]])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ continue;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NSString* normalFont = [bookmark valueForKey:@"Normal Font"];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -37,14 +29,14 @@ static void detectIterm2(FFTerminalFontResult* terminalFont)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ffStrbufAppendF(&terminalFont->error, "`Normal Font` key in profile `%s` doesn't exist", profile);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffFontInitWithSpace(&terminalFont->font, normalFont.UTF8String);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ffFontInitWithSpace(&terminalFont->font, [normalFont UTF8String]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NSNumber* useNonAsciiFont = [bookmark valueForKey:@"Use Non-ASCII Font"];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if(useNonAsciiFont.boolValue)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if([useNonAsciiFont boolValue])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NSString* nonAsciiFont = [bookmark valueForKey:@"Non Ascii Font"];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (nonAsciiFont)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffFontInitWithSpace(&terminalFont->fallback, nonAsciiFont.UTF8String);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ffFontInitWithSpace(&terminalFont->fallback, [nonAsciiFont UTF8String]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -68,15 +60,7 @@ static void detectAppleTerminal(FFTerminalFontResult* terminalFont)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void detectWarpTerminal(FFTerminalFontResult* terminalFont)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- NSError* error;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- NSString* fileName = [NSString stringWithFormat:@"file://%s/Library/Preferences/dev.warp.Warp-Stable.plist", instance.state.platform.homeDir.chars];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- NSDictionary* dict = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:fileName]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- error:&error];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if(error)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffStrbufAppendS(&terminalFont->error, error.localizedDescription.UTF8String);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ NSDictionary* dict = [NSDictionary dictionaryWithContentsOfFile:[NSHomeDirectory() stringByAppendingPathComponent:@"/Library/Preferences/dev.warp.Warp-Stable.plist"]];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NSString* fontName = [dict valueForKey:@"FontName"];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(!fontName)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/wmtheme/wmtheme_apple.m src/detection/wmtheme/wmtheme_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 08810b6c..b78acac0 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/wmtheme/wmtheme_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/wmtheme/wmtheme_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -5,15 +5,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool ffDetectWmTheme(FFstrbuf* themeOrError)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- NSError* error;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- NSString* fileName = [NSString stringWithFormat:@"file://%s/Library/Preferences/.GlobalPreferences.plist", instance.state.platform.homeDir.chars];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- NSDictionary* dict = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:fileName]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- error:&error];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if(error)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffStrbufAppendS(themeOrError, error.localizedDescription.UTF8String);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ NSDictionary* dict = [NSDictionary dictionaryWithContentsOfFile:[NSHomeDirectory() stringByAppendingPathComponent:@"/Library/Preferences/.GlobalPreferences.plist"]];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NSNumber* wmThemeColor = [dict valueForKey:@"AppleAccentColor"];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(!wmThemeColor)
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fastfetch/files/0013-osascript.m-fix-syntax.patch b/sysutils/fastfetch/files/0013-osascript.m-fix-syntax.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..3900a6db8b3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fastfetch/files/0013-osascript.m-fix-syntax.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,34 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From d5f0c1f2b2ff7583ef8748daf9f0f419aa558958 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 4 Aug 2024 01:38:18 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] osascript.m: fix syntax
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/util/apple/osascript.m src/util/apple/osascript.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 8b01ba06..ddef3407 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/util/apple/osascript.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/util/apple/osascript.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,17 +1,17 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "osascript.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#import <Foundation/Foundation.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#import <AppKit/AppKit.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#import <CoreData/CoreData.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <Foundation/Foundation.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AppKit/AppKit.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <CoreData/CoreData.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-bool ffOsascript(const char* input, FFstrbuf* result)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- NSAppleScript* script = [NSAppleScript.alloc initWithSource:@(input)];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++bool ffOsascript(const char* input, FFstrbuf* result) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ NSString* appleScript = [NSString stringWithUTF8String: input];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ NSAppleScript* script = [[NSAppleScript alloc] initWithSource:appleScript];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NSDictionary* errInfo = nil;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NSAppleEventDescriptor* descriptor = [script executeAndReturnError:&errInfo];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (errInfo)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffStrbufSetS(result, descriptor.stringValue.UTF8String);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ffStrbufSetS(result, [[descriptor stringValue] cStringUsingEncoding:NSUTF8StringEncoding]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fastfetch/files/0014-Revert-some-display-related-breakages.patch b/sysutils/fastfetch/files/0014-Revert-some-display-related-breakages.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..f12af408e95
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fastfetch/files/0014-Revert-some-display-related-breakages.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,441 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From f6061f58992f50e0897edcbe7a405482f952b3f4 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 4 Aug 2024 05:41:15 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Revert some display-related breakages
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/displayserver/displayserver.c src/detection/displayserver/displayserver.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 73f1cd0c..20a36623 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/displayserver/displayserver.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/displayserver/displayserver.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,6 +1,24 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "displayserver.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-FFDisplayResult* ffdsAppendDisplay(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++uint32_t ffdsParseRefreshRate(int32_t refreshRate)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if(refreshRate <= 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int remainder = refreshRate % 5;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if(remainder >= 3)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ refreshRate += (5 - remainder);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ refreshRate -= remainder;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // All other typicall refresh rates are dividable by 5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if(refreshRate == 145)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ refreshRate = 144;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (uint32_t) refreshRate;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++bool ffdsAppendDisplay(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FFDisplayServerResult* result,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uint32_t width,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uint32_t height,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -11,12 +29,10 @@ FFDisplayResult* ffdsAppendDisplay(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FFstrbuf* name,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FFDisplayType type,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool primary,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- uint64_t id,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- uint32_t physicalWidth,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- uint32_t physicalHeight)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ uint64_t id)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(width == 0 || height == 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FFDisplayResult* display = ffListAdd(&result->displays);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ display->width = width;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -27,16 +43,10 @@ FFDisplayResult* ffdsAppendDisplay(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ display->rotation = rotation;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ffStrbufInitMove(&display->name, name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ display->type = type;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- display->id = id;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- display->physicalWidth = physicalWidth;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- display->physicalHeight = physicalHeight;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ display->primary = primary;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ display->id = id;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- display->bitDepth = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- display->hdrEnabled = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- display->wcgEnabled = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return display;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void ffConnectDisplayServerImpl(FFDisplayServerResult* ds);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/displayserver/displayserver.h src/detection/displayserver/displayserver.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index aa0bd900..ffe46466 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/displayserver/displayserver.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/displayserver/displayserver.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -58,13 +58,8 @@ typedef struct FFDisplayResult
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FFstrbuf name;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FFDisplayType type;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uint32_t rotation;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- uint64_t id; // platform dependent
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- uint32_t physicalWidth;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- uint32_t physicalHeight;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool primary;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- uint8_t bitDepth;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- bool hdrEnabled;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- bool wcgEnabled;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ uint64_t id; // platform dependent
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } FFDisplayResult;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef struct FFDisplayServerResult
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -79,7 +74,9 @@ typedef struct FFDisplayServerResult
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const FFDisplayServerResult* ffConnectDisplayServer();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-FFDisplayResult* ffdsAppendDisplay(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++uint32_t ffdsParseRefreshRate(int32_t refreshRate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++bool ffdsAppendDisplay(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FFDisplayServerResult* result,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uint32_t width,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uint32_t height,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -90,6 +87,4 @@ FFDisplayResult* ffdsAppendDisplay(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FFstrbuf* name,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FFDisplayType type,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool primary,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- uint64_t id,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- uint32_t physicalWidth,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- uint32_t physicalHeight);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ uint64_t id);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/displayserver/displayserver_apple.c src/detection/displayserver/displayserver_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index d2e87ecf..7402ea1a 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/displayserver/displayserver_apple.c.orig 2024-07-26 10:27:31.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/displayserver/displayserver_apple.c 2024-08-04 11:11:20.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,117 +1,78 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "displayserver.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "util/apple/cf_helpers.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include "util/stringUtils.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "common/sysctl.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <ctype.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <assert.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <CoreGraphics/CGDirectDisplay.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <CoreVideo/CVDisplayLink.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <ApplicationServices/ApplicationServices.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-extern CFDictionaryRef CoreDisplay_DisplayCreateInfoDictionary(CGDirectDisplayID display) __attribute__((weak_import));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#ifndef MAC_OS_X_VERSION_10_15
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#import <IOKit/graphics/IOGraphicsLib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-extern CFDictionaryRef CoreDisplay_IODisplayCreateInfoDictionary(io_service_t framebuffer, IOOptionBits options) __attribute__((weak_import));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++typedef union
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ uint8_t rawData[0xDC];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ struct
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ uint32_t mode;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ uint32_t flags; // 0x4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ uint32_t width; // 0x8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ uint32_t height; // 0xC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ uint32_t depth; // 0x10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ uint32_t dc2[42];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ uint16_t dc3;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ uint16_t freq; // 0xBC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ uint32_t dc4[4];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ float density; // 0xD0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } derived;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++} modes_D4;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void CGSGetCurrentDisplayMode(CGDirectDisplayID display, int* modeNum);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void CGSGetDisplayModeDescriptionOfLength(CGDirectDisplayID display, int idx, modes_D4* mode, int length);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void detectDisplays(FFDisplayServerResult* ds)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- CGDirectDisplayID screens[128];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- uint32_t screenCount;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if(CGGetOnlineDisplayList(sizeof(screens) / sizeof(screens[0]), screens, &screenCount) != kCGErrorSuccess)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ CGDisplayCount screenCount;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ CGGetOnlineDisplayList(INT_MAX, NULL, &screenCount);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if(screenCount == 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ CGDirectDisplayID* screens = malloc(screenCount * sizeof(CGDirectDisplayID));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ CGGetOnlineDisplayList(INT_MAX, screens, &screenCount);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for(uint32_t i = 0; i < screenCount; i++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- CGDirectDisplayID screen = screens[i];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- CGDisplayModeRef mode = CGDisplayCopyDisplayMode(screen);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if(mode)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- //https://github.com/glfw/glfw/commit/aab08712dd8142b642e2042e7b7ba563acd07a45
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- double refreshRate = CGDisplayModeGetRefreshRate(mode);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (refreshRate == 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- CVDisplayLinkRef link;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if(CVDisplayLinkCreateWithCGDisplay(screen, &link) == kCVReturnSuccess)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- const CVTime time = CVDisplayLinkGetNominalOutputVideoRefreshPeriod(link);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (!(time.flags & kCVTimeIsIndefinite))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- refreshRate = time.timeScale / (double) time.timeValue + 0.5; //59.97...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- CVDisplayLinkRelease(link);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- FF_STRBUF_AUTO_DESTROY name = ffStrbufCreate();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- #ifdef MAC_OS_X_VERSION_10_15
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if(CoreDisplay_DisplayCreateInfoDictionary)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- CFDictionaryRef FF_CFTYPE_AUTO_RELEASE displayInfo = CoreDisplay_DisplayCreateInfoDictionary(screen);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if(displayInfo)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- CFDictionaryRef productNames;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if(!ffCfDictGetDict(displayInfo, CFSTR(kDisplayProductName), &productNames))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffCfDictGetString(productNames, CFSTR("en_US"), &name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if(CoreDisplay_IODisplayCreateInfoDictionary)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- io_service_t servicePort = CGDisplayIOServicePort(screen);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- CFDictionaryRef FF_CFTYPE_AUTO_RELEASE displayInfo = CoreDisplay_IODisplayCreateInfoDictionary(servicePort, kIODisplayOnlyPreferredName);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if(displayInfo)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- CFDictionaryRef productNames;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if(!ffCfDictGetDict(displayInfo, CFSTR(kDisplayProductName), &productNames))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffCfDictGetString(productNames, CFSTR("en_US"), &name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- CGSize size = CGDisplayScreenSize(screen);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- FFDisplayResult* display = ffdsAppendDisplay(ds,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (uint32_t)CGDisplayModeGetPixelWidth(mode),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (uint32_t)CGDisplayModeGetPixelHeight(mode),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- refreshRate,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (uint32_t)CGDisplayModeGetWidth(mode),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (uint32_t)CGDisplayModeGetHeight(mode),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (uint32_t)CGDisplayRotation(screen),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- &name,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- CGDisplayIsBuiltin(screen) ? FF_DISPLAY_TYPE_BUILTIN : FF_DISPLAY_TYPE_EXTERNAL,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- CGDisplayIsMain(screen),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (uint64_t)screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (uint32_t) (size.width + 0.5),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (uint32_t) (size.height + 0.5)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (display)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- // Shitty code
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- uint8_t bitDepth = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- FF_CFTYPE_AUTO_RELEASE CFStringRef desc = CFCopyDescription(mode);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- CFRange start = CFStringFind(desc, CFSTR("BitsPerSample = "), 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (start.location != kCFNotFound)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- for (CFIndex idx = start.location + start.length; idx < CFStringGetLength(desc); ++idx)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- UniChar ch = CFStringGetCharacterAtIndex(desc, idx);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (!ffCharIsDigit((char) ch))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- bitDepth = (uint8_t) (bitDepth * 10 + (ch - '0'));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- display->bitDepth = bitDepth;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- CGDisplayModeRelease(mode);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- CGDisplayRelease(screen);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int modeID;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ CGSGetCurrentDisplayMode(screens[i], &modeID);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ modes_D4 mode;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ CGSGetDisplayModeDescriptionOfLength(screens[i], modeID, &mode, 0xD4);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ double refreshRate = ffdsParseRefreshRate(mode.derived.freq);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ffdsAppendDisplay(ds,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mode.derived.width,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mode.derived.height,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ refreshRate,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ NULL,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ FF_DISPLAY_TYPE_UNKNOWN,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ true,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ free(screens);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void ffConnectDisplayServerImpl(FFDisplayServerResult* ds)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FF_CFTYPE_AUTO_RELEASE CFMachPortRef port = CGWindowServerCreateServerPort();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ FF_CFTYPE_AUTO_RELEASE CFMachPortRef port = CGWindowServerCFMachPort();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (port)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ffStrbufSetStatic(&ds->wmProcessName, "WindowServer");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/monitor/monitor_apple.m src/detection/monitor/monitor_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c6219fe5..f2bd2245 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/monitor/monitor_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/monitor/monitor_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -106,9 +106,10 @@ const char* ffDetectMonitor(FFlist* results)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ monitor->physicalHeight = (uint32_t) (size.height + 0.5);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ monitor->hdrCompatible = CFDictionaryContainsKey(displayInfo, CFSTR("ReferencePeakHDRLuminance")) ||
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ detectHdrSupportWithNSScreen(display);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- monitor->serial = CGDisplaySerialNumber((CGDirectDisplayID) display->id);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- int64_t year, week;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int64_t serial, year, week;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (ffCfDictGetInt64(displayInfo, CFSTR("DisplaySerialNumber"), &serial) == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ monitor->serial = (uint32_t) (uint64_t) serial;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (ffCfDictGetInt64(displayInfo, CFSTR("DisplayYearManufacture"), &year) == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ monitor->manufactureYear = (uint16_t) year;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (ffCfDictGetInt64(displayInfo, CFSTR("DisplayWeekManufacture"), &week) == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/modules/display/display.c src/modules/display/display.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index d89a042a..008f4ce6 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/modules/display/display.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/modules/display/display.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -4,9 +4,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "modules/display/display.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "util/stringUtils.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <math.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#define FF_DISPLAY_NUM_FORMAT_ARGS 16
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FF_DISPLAY_NUM_FORMAT_ARGS 9
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int sortByNameAsc(FFDisplayResult* a, FFDisplayResult* b)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -91,55 +89,42 @@ void ffPrintDisplay(FFDisplayOptions* options)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- FF_PARSE_FORMAT_STRING_CHECKED(&key, &options->moduleArgs.key, 4, ((FFformatarg[]){
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ FF_PARSE_FORMAT_STRING_CHECKED(&key, &options->moduleArgs.key, 3, ((FFformatarg[]){
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {FF_FORMAT_ARG_TYPE_UINT, &moduleIndex, "index"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {FF_FORMAT_ARG_TYPE_STRBUF, &result->name, "name"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {FF_FORMAT_ARG_TYPE_STRING, displayType, "type"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {FF_FORMAT_ARG_TYPE_STRBUF, &options->moduleArgs.keyIcon, "icon"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- FF_STRBUF_AUTO_DESTROY buffer = ffStrbufCreate();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- double inch = sqrt(result->physicalWidth * result->physicalWidth + result->physicalHeight * result->physicalHeight) / 25.4;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(options->moduleArgs.outputFormat.length == 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ffPrintLogoAndKey(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffStrbufAppendF(&buffer, "%ix%i", result->width, result->height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ printf("%ix%i", result->width, result->height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(result->refreshRate > 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(options->preciseRefreshRate)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffStrbufAppendF(&buffer, " @ %g Hz", ((int) (result->refreshRate * 1000 + 0.5)) / 1000.0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ printf(" @ %gHz", ((int) (result->refreshRate * 1000 + 0.5)) / 1000.0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffStrbufAppendF(&buffer, " @ %i Hz", (uint32_t) (result->refreshRate + 0.5));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ printf(" @ %iHz", (uint32_t) (result->refreshRate + 0.5));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ result->scaledWidth > 0 && result->scaledWidth != result->width &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ result->scaledHeight > 0 && result->scaledHeight != result->height)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffStrbufAppendF(&buffer, " (as %ix%i)", result->scaledWidth, result->scaledHeight);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (inch > 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffStrbufAppendF(&buffer, " in %i″", (uint32_t) (inch + 0.5));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ printf(" (as %ix%i)", result->scaledWidth, result->scaledHeight);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(result->type != FF_DISPLAY_TYPE_UNKNOWN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffStrbufAppendS(&buffer, result->type == FF_DISPLAY_TYPE_BUILTIN ? " [Built-in]" : " [External]");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (result->hdrEnabled)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffStrbufAppendS(&buffer, " [HDR]");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fputs(result->type == FF_DISPLAY_TYPE_BUILTIN ? " [Built-in]" : " [External]", stdout);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(moduleIndex > 0 && result->primary)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffStrbufAppendS(&buffer, " *");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ printf(" *");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffStrbufPutTo(&buffer, stdout);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ffStrbufClear(&buffer);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ putchar('\n');
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- double ppi = sqrt(result->width * result->width + result->height * result->height) / inch;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FF_PRINT_FORMAT_CHECKED(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY, FF_DISPLAY_NUM_FORMAT_ARGS, ((FFformatarg[]) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {FF_FORMAT_ARG_TYPE_UINT, &result->width, "width"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {FF_FORMAT_ARG_TYPE_UINT, &result->height, "height"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -150,13 +135,6 @@ void ffPrintDisplay(FFDisplayOptions* options)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {FF_FORMAT_ARG_TYPE_STRING, displayType, "type"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {FF_FORMAT_ARG_TYPE_UINT, &result->rotation, "rotation"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {FF_FORMAT_ARG_TYPE_BOOL, &result->primary, "is-primary"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {FF_FORMAT_ARG_TYPE_UINT, &result->physicalWidth, "physical-width"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {FF_FORMAT_ARG_TYPE_UINT, &result->physicalHeight, "physical-height"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {FF_FORMAT_ARG_TYPE_DOUBLE, &inch, "inch"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {FF_FORMAT_ARG_TYPE_DOUBLE, &ppi, "ppi"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {FF_FORMAT_ARG_TYPE_UINT8, &result->bitDepth, "bit-depth"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {FF_FORMAT_ARG_TYPE_BOOL, &result->hdrEnabled, "hdr-enabled"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- {FF_FORMAT_ARG_TYPE_BOOL, &result->wcgEnabled, "wcg-enabled"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -306,28 +284,15 @@ void ffGenerateDisplayJsonResult(FF_MAYBE_UNUSED FFDisplayOptions* options, yyjs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FF_LIST_FOR_EACH(FFDisplayResult, item, dsResult->displays)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ yyjson_mut_val* obj = yyjson_mut_arr_add_obj(doc, arr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ yyjson_mut_obj_add_uint(doc, obj, "width", item->width);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ yyjson_mut_obj_add_uint(doc, obj, "height", item->height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ yyjson_mut_obj_add_uint(doc, obj, "id", item->id);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ yyjson_mut_obj_add_strbuf(doc, obj, "name", &item->name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ yyjson_mut_obj_add_bool(doc, obj, "primary", item->primary);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- yyjson_mut_val* output = yyjson_mut_obj_add_obj(doc, obj, "output");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- yyjson_mut_obj_add_uint(doc, output, "width", item->width);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- yyjson_mut_obj_add_uint(doc, output, "height", item->height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- yyjson_mut_val* scaled = yyjson_mut_obj_add_obj(doc, obj, "scaled");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- yyjson_mut_obj_add_uint(doc, scaled, "width", item->scaledWidth);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- yyjson_mut_obj_add_uint(doc, scaled, "height", item->scaledHeight);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- yyjson_mut_val* physical = yyjson_mut_obj_add_obj(doc, obj, "physical");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- yyjson_mut_obj_add_uint(doc, physical, "width", item->physicalWidth);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- yyjson_mut_obj_add_uint(doc, physical, "height", item->physicalHeight);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ yyjson_mut_obj_add_real(doc, obj, "refreshRate", item->refreshRate);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ yyjson_mut_obj_add_uint(doc, obj, "rotation", item->rotation);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- yyjson_mut_obj_add_uint(doc, obj, "bitDepth", item->bitDepth);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- yyjson_mut_obj_add_bool(doc, obj, "hdrEnabled", item->hdrEnabled);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- yyjson_mut_obj_add_bool(doc, obj, "wcgEnabled", item->wcgEnabled);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ yyjson_mut_obj_add_uint(doc, obj, "scaledHeight", item->scaledHeight);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ yyjson_mut_obj_add_uint(doc, obj, "scaledWidth", item->scaledWidth);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch (item->type)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case FF_DISPLAY_TYPE_BUILTIN:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -355,13 +320,6 @@ void ffPrintDisplayHelpFormat(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "Screen type (builtin, external or unknown) - type",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "Screen rotation (in degrees) - rotation",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "True if being the primary screen - is-primary",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- "Screen physical width (in millimeters) - physical-width",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- "Screen physical height (in millimeters) - physical-height",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- "Physical diagonal length in inches - inch",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- "Pixels per inch (PPI) - ppi",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- "Bits per color channel - bit-depth",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- "True if high dynamic range (HDR) is enabled - hdr-enabled",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- "True if wide color gamut (WCG) is enabled - wcg-enabled",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fastfetch/files/0015-Fix-PowerPC-macros.patch b/sysutils/fastfetch/files/0015-Fix-PowerPC-macros.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..b2ae049be87
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fastfetch/files/0015-Fix-PowerPC-macros.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,31 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 623bcc5045ee78e8759dd34a672d5702c8dc30c4 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 4 Aug 2024 10:12:44 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Fix PowerPC macros
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/3rdparty/yyjson/yyjson.c src/3rdparty/yyjson/yyjson.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 16ecbacf..298a56c0 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/3rdparty/yyjson/yyjson.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/3rdparty/yyjson/yyjson.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -236,7 +236,7 @@ uint32_t yyjson_version(void) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif (defined(__BIG_ENDIAN__) && __BIG_ENDIAN__ == 1) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ defined(__ARMEB__) || defined(__THUMBEB__) || defined(__AARCH64EB__) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- defined(__or1k__) || defined(__OR1K__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ defined(__or1k__) || defined(__OR1K__) || defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # define YYJSON_ENDIAN YYJSON_BIG_ENDIAN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/version/version.c src/detection/version/version.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b6d6e7d7..7d456313 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/version/version.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/version/version.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -10,7 +10,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define FF_ARCHITECTURE "arm"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(__mips__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define FF_ARCHITECTURE "mips"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined(__powerpc__) || defined(__powerpc)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(__powerpc__) || defined(__powerpc) || defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define FF_ARCHITECTURE "powerpc"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(__riscv__) || defined(__riscv)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define FF_ARCHITECTURE "riscv"
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fastfetch/files/0016-Fix-autorelease-pools.patch b/sysutils/fastfetch/files/0016-Fix-autorelease-pools.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..ec762a50ba1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fastfetch/files/0016-Fix-autorelease-pools.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,315 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From c64f0ca14193f2b2dae5a153637ed83008deafbc Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 4 Aug 2024 10:56:00 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Fix autorelease pools
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/bluetooth/bluetooth_apple.m src/detection/bluetooth/bluetooth_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index abd31a0c..f983e46b 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/bluetooth/bluetooth_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/bluetooth/bluetooth_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,9 +1,19 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "bluetooth.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#import <IOBluetooth/IOBluetooth.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <IOBluetooth/IOBluetooth.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED < 1090
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLSTART NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLEND [pool release];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLSTART
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLEND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const char* ffDetectBluetooth(FFlist* devices /* FFBluetoothResult */)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ POOLSTART
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NSArray<IOBluetoothDevice*>* ioDevices = IOBluetoothDevice.pairedDevices;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(!ioDevices)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return "IOBluetoothDevice.pairedDevices failed";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -87,6 +97,6 @@ const char* ffDetectBluetooth(FFlist* devices /* FFBluetoothResult */)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ffStrbufTrimRight(&device->type, ',');
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ POOLEND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/camera/camera_apple.m src/detection/camera/camera_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index d30c4259..66330c5f 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/camera/camera_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/camera/camera_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -4,7 +4,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#import <AVFoundation/AVCaptureDevice.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AVFoundation/AVCaptureDevice.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // warning: 'AVCaptureDeviceTypeExternalUnknown' is deprecated
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/cursor/cursor_apple.m src/detection/cursor/cursor_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c71c440a..1a152d82 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/cursor/cursor_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/cursor/cursor_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,6 +1,15 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "cursor.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#import <Foundation/Foundation.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <Foundation/Foundation.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED < 1090
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLSTART NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLEND [pool release];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLSTART
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLEND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void appendColor(FFstrbuf* str, NSDictionary* color)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -19,6 +28,7 @@ static void appendColor(FFstrbuf* str, NSDictionary* color)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void ffDetectCursor(FFCursorResult* result)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ POOLSTART
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NSDictionary* dict = [NSDictionary dictionaryWithContentsOfFile:[NSHomeDirectory() stringByAppendingPathComponent:@"/Library/Preferences/com.apple.universalaccess.plist"]];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NSDictionary* color;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -41,4 +51,5 @@ void ffDetectCursor(FFCursorResult* result)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ffStrbufAppendF(&result->size, "%d", (int) (mouseDriverCursorSize.doubleValue * 32));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ffStrbufAppendS(&result->size, "32");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ POOLEND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/font/font_apple.m src/detection/font/font_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 683acad0..618d1287 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/font/font_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/font/font_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2,7 +2,16 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "common/io/io.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "font.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#import <AppKit/NSFont.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AppKit/NSFont.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED < 1090
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLSTART NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLEND [pool release];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLSTART
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLEND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void generateString(FFFontResult* font)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -23,6 +32,7 @@ static void generateString(FFFontResult* font)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const char* ffDetectFontImpl(FFFontResult* result)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ POOLSTART
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ffStrbufAppendS(&result->fonts[0], [NSFont systemFontOfSize:12].familyName.UTF8String);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ffStrbufAppendS(&result->fonts[1], [NSFont userFontOfSize:12].familyName.UTF8String);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef MAC_OS_X_VERSION_10_15
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -32,6 +42,6 @@ const char* ffDetectFontImpl(FFFontResult* result)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ffStrbufAppendS(&result->fonts[3], [NSFont userFixedPitchFontOfSize:12].familyName.UTF8String);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ generateString(result);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ POOLEND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/gpu/gpu_apple.m src/detection/gpu/gpu_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 314f83a3..b72c289c 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/gpu/gpu_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/gpu/gpu_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -13,11 +13,20 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED < 1090
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLSTART NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLEND [pool release];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLSTART
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLEND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const char* ffGpuDetectMetal(FFlist* gpus)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (@available(macOS 10.13, *))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ POOLSTART
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for (id<MTLDevice> device in MTLCopyAllDevices())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FFGPUResult* gpu = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -49,6 +58,7 @@ const char* ffGpuDetectMetal(FFlist* gpus)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ gpu->type = device.hasUnifiedMemory ? FF_GPU_TYPE_INTEGRATED : FF_GPU_TYPE_DISCRETE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ POOLEND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/monitor/monitor_apple.m src/detection/monitor/monitor_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f2bd2245..3e4c9f36 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/monitor/monitor_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/monitor/monitor_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -8,6 +8,14 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <CoreGraphics/CoreGraphics.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED < 1090
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLSTART NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLEND [pool release];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLSTART
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLEND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern CFDictionaryRef CoreDisplay_DisplayCreateInfoDictionary(CGDirectDisplayID display) __attribute__((weak_import));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef MAC_OS_X_VERSION_10_15
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -20,7 +28,7 @@ extern CFDictionaryRef CoreDisplay_IODisplayCreateInfoDictionary(io_service_t fr
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static bool detectHdrSupportWithNSScreen(FFDisplayResult* display)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- NSScreen* mainScreen = NSScreen.mainScreen;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ POOLSTART
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (display->primary)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -47,11 +55,13 @@ static bool detectHdrSupportWithNSScreen(FFDisplayResult* display)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ POOLEND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const char* ffDetectMonitor(FFlist* results)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ POOLSTART
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef MAC_OS_X_VERSION_10_15
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(!CoreDisplay_DisplayCreateInfoDictionary) return "CoreDisplay_DisplayCreateInfoDictionary is not available";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -115,6 +125,6 @@ const char* ffDetectMonitor(FFlist* results)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (ffCfDictGetInt64(displayInfo, CFSTR("DisplayWeekManufacture"), &week) == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ monitor->manufactureWeek = (uint16_t) week;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ POOLEND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/os/os_apple.m src/detection/os/os_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index dc606c92..5af33bdd 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/os/os_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/os/os_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -7,9 +7,19 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <Foundation/Foundation.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED < 1090
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLSTART NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLEND [pool release];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLSTART
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLEND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void parseSystemVersion(FFOSResult* os)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ POOLSTART
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NSDictionary* dict = [NSDictionary dictionaryWithContentsOfFile:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @"/System/Library/CoreServices/SystemVersion.plist"];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -21,6 +31,7 @@ static void parseSystemVersion(FFOSResult* os)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ffStrbufInitS(&os->version, [value UTF8String]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if ((value = [dict objectForKey:@"ProductBuildVersion"]))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ffStrbufInitS(&os->buildID, [value UTF8String]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ POOLEND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static bool detectOSCodeName(FFOSResult* os)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -65,7 +76,6 @@ static bool detectOSCodeName(FFOSResult* os)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/wmtheme/wmtheme_apple.m src/detection/wmtheme/wmtheme_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b78acac0..e90f225f 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/wmtheme/wmtheme_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/wmtheme/wmtheme_apple.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2,9 +2,19 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "wmtheme.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #import <Foundation/Foundation.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED < 1090
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLSTART NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLEND [pool release];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLSTART
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLEND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool ffDetectWmTheme(FFstrbuf* themeOrError)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ POOLSTART
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NSDictionary* dict = [NSDictionary dictionaryWithContentsOfFile:[NSHomeDirectory() stringByAppendingPathComponent:@"/Library/Preferences/.GlobalPreferences.plist"]];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NSNumber* wmThemeColor = [dict valueForKey:@"AppleAccentColor"];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -28,5 +38,6 @@ bool ffDetectWmTheme(FFstrbuf* themeOrError)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NSString* wmTheme = [dict valueForKey:@"AppleInterfaceStyle"];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ffStrbufAppendF(themeOrError, " (%s)", wmTheme ? wmTheme.UTF8String : "Light");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ POOLEND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/util/apple/osascript.h src/util/apple/osascript.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 2c9fe830..f7c0b27b 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/util/apple/osascript.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/util/apple/osascript.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -8,3 +8,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool ffOsascript(const char* input, FFstrbuf* result);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED < 1090
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLSTART NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLEND [pool release];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLSTART
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POOLEND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/util/apple/osascript.m src/util/apple/osascript.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ddef3407..ebe9ae8e 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/util/apple/osascript.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/util/apple/osascript.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -5,6 +5,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <CoreData/CoreData.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool ffOsascript(const char* input, FFstrbuf* result) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ POOLSTART
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NSString* appleScript = [NSString stringWithUTF8String: input];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NSAppleScript* script = [[NSAppleScript alloc] initWithSource:appleScript];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NSDictionary* errInfo = nil;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -13,5 +14,6 @@ bool ffOsascript(const char* input, FFstrbuf* result) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ffStrbufSetS(result, [[descriptor stringValue] cStringUsingEncoding:NSUTF8StringEncoding]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ POOLEND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fastfetch/files/0017-disk_bsd-no-support-for-creation-time.patch b/sysutils/fastfetch/files/0017-disk_bsd-no-support-for-creation-time.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..18514276454
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fastfetch/files/0017-disk_bsd-no-support-for-creation-time.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,29 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From b425aae0e3f0c1211a267432018e1cfb58481911 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 4 Aug 2024 19:58:34 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] disk_bsd: no support for creation time
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/disk/disk_bsd.c src/detection/disk/disk_bsd.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 81be9c83..4c35f50c 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/disk/disk_bsd.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/disk/disk_bsd.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -65,6 +65,7 @@ static void detectFsInfo(struct statfs* fs, FFDisk* disk)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <sys/attr.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <unistd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef MAC_OS_X_VERSION_10_15
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define MNT_REMOVABLE 0x00000200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -143,9 +144,11 @@ const char* ffDetectDisksImpl(FFDiskOptions* options, FFlist* disks)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(fs->f_flags & MNT_RDONLY)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ disk->type |= FF_DISK_VOLUME_TYPE_READONLY_BIT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef MAC_OS_X_VERSION_10_15
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct stat st;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(stat(fs->f_mntonname, &st) == 0 && st.st_birthtimespec.tv_sec > 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ disk->createTime = (uint64_t)((st.st_birthtimespec.tv_sec * 1000) + (st.st_birthtimespec.tv_nsec / 1000000));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return NULL;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/fastfetch/files/0018-Support-PowerPC-CPU-detection.patch b/sysutils/fastfetch/files/0018-Support-PowerPC-CPU-detection.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..8a3302b9040
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/fastfetch/files/0018-Support-PowerPC-CPU-detection.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,47 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 795f8322794e1d7b3765e24fee44539c56e8fe12 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 4 Aug 2024 21:05:10 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Support PowerPC CPU detection
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/cpu/cpu.c src/detection/cpu/cpu.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 68d23ac8..b491d3c7 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/cpu/cpu.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/cpu/cpu.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -24,6 +24,9 @@ const char* ffCPUAppleCodeToName(uint32_t code)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // https://github.com/AsahiLinux/docs/wiki/Codenames
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch (code)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case 10: return "PowerPC 7400";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case 11: return "PowerPC 7450";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case 100: return "PowerPC 970";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case 8103: return "Apple M1";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case 6000: return "Apple M1 Pro";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case 6001: return "Apple M1 Max";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/detection/cpu/cpu_apple.c src/detection/cpu/cpu_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index efdad950..6ec776f6 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/detection/cpu/cpu_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/detection/cpu/cpu_apple.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -100,12 +100,23 @@ static const char* detectCoreCount(FFCPUResult* cpu)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const char* ffDetectCPUImpl(const FFCPUOptions* options, FFCPUResult* cpu)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __POWERPC__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int cpuSubType;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ size_t size = sizeof(cpuSubType);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (sysctlbyname("hw.cpusubtype", &cpuSubType, &size, NULL, 0) == 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ const char *cpuName = ffCPUAppleCodeToName(cpuSubType);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ffStrbufAppendS(&cpu->name, cpuName);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return "sysctlbyname(hw.cpusubtype) failed";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (ffSysctlGetString("machdep.cpu.brand_string", &cpu->name) != NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return "sysctlbyname(machdep.cpu.brand_string) failed";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ffSysctlGetString("machdep.cpu.vendor", &cpu->vendor);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (cpu->vendor.length == 0 && ffStrbufStartsWithS(&cpu->name, "Apple "))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ffStrbufAppendS(&cpu->vendor, "Apple");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cpu->coresPhysical = (uint16_t) ffSysctlGetInt("hw.physicalcpu_max", 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(cpu->coresPhysical == 1)
</span></pre><pre style='margin:0'>
</pre>