Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package fastfetch for openSUSE:Factory checked in at 2026-01-17 21:42:30 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/fastfetch (Old) and /work/SRC/openSUSE:Factory/.fastfetch.new.1928 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fastfetch" Sat Jan 17 21:42:30 2026 rev:86 rq:1327762 version:2.57.1 Changes: -------- --- /work/SRC/openSUSE:Factory/fastfetch/fastfetch.changes 2026-01-13 21:37:34.471480905 +0100 +++ /work/SRC/openSUSE:Factory/.fastfetch.new.1928/fastfetch.changes 2026-01-17 21:43:28.419700570 +0100 @@ -1,0 +2,19 @@ +Fri Jan 16 20:50:34 UTC 2026 - RN <[email protected]> + +- Update to version 2.57.1: + * DisplayServer (Linux): cleanup code + * Release: v2.57.1 + * Common: ensures thread safety of `ffTimeInitQpcMultiplier` + * Logo: removes unneeded `#include`s + * Common: add `on_scope_exit` utility for scope-based resource + management + * Platform (Windows): improves hostname retrieval by adding + fallback to NetBIOS name + * macOS: uses `MACH_PORT_NULL` to maintain compatibility with + older SDKs + * Logo (Builtin): updates PrismLinux and adds a small variant + (#2141) + * DisplayServer (Linux): refactors property handling in xcb and + xlib + +------------------------------------------------------------------- Old: ---- fastfetch-2.57.0.obscpio New: ---- fastfetch-2.57.1.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ fastfetch.spec ++++++ --- /var/tmp/diff_new_pack.QQ9ndy/_old 2026-01-17 21:43:28.939721871 +0100 +++ /var/tmp/diff_new_pack.QQ9ndy/_new 2026-01-17 21:43:28.943722035 +0100 @@ -17,7 +17,7 @@ Name: fastfetch -Version: 2.57.0 +Version: 2.57.1 Release: 0 Summary: Neofetch-like tool written mostly in C License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.QQ9ndy/_old 2026-01-17 21:43:28.971723182 +0100 +++ /var/tmp/diff_new_pack.QQ9ndy/_new 2026-01-17 21:43:28.979723511 +0100 @@ -6,7 +6,7 @@ <param name="scm">git</param> <param name="version">master</param> <param name="versionformat">@PARENT_TAG@</param> - <param name="revision">2.57.0</param> + <param name="revision">2.57.1</param> <!-- <param name="changesgenerate">enable</param> --> <!-- <param name="changesauthor">RN</param> --> </service> ++++++ fastfetch-2.57.0.obscpio -> fastfetch-2.57.1.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/.github/ISSUE_TEMPLATE/logo_request.yml new/fastfetch-2.57.1/.github/ISSUE_TEMPLATE/logo_request.yml --- old/fastfetch-2.57.0/.github/ISSUE_TEMPLATE/logo_request.yml 2026-01-12 03:02:57.000000000 +0100 +++ new/fastfetch-2.57.1/.github/ISSUE_TEMPLATE/logo_request.yml 2026-01-14 06:58:22.000000000 +0100 @@ -6,35 +6,42 @@ - type: markdown attributes: value: | - Tip: A logo can be displayed by fastfetch without getting into fastfetch's official repo. - For highly customized logo for personal use, it's recommended to keep it locally. + Tip: You can display a logo in fastfetch without adding it to fastfetch's official repo. + For highly customized, personal logos, we recommend keeping them locally. Please refer to https://github.com/fastfetch-cli/fastfetch/wiki/Migrate-Neofetch-Logo-To-Fastfetch - type: textarea attributes: label: OS - description: Paste content of `/etc/os-release` and `/etc/lsb-release` here. If none of these files exist, describe a way to identify the distro + description: Paste the contents of `/etc/os-release` and `/etc/lsb-release` here. If neither file exists, describe how to identify the distro. placeholder: cat /etc/os-release validations: required: true + - type: input + attributes: + label: Distro Website + description: To help prevent spam and verify the request, a distro website is required, and a downloadable ISO must be available on that site. + placeholder: https://example.com + validations: + required: true - type: textarea attributes: label: ASCII Art - description: An ASCII logo should not take up too much space (smaller than 50x20 characters). Please also include the color codes if not available in `os-release` + description: The ASCII logo should not take up too much space (smaller than 50x20 characters, W x H). Please also include the color codes if they are not available in `os-release`. placeholder: Paste ASCII art here validations: required: true - type: input attributes: - label: Original Image - description: If the ASCII art is based on an image, please provide a link to the original image - placeholder: Image URL or distro website URL + label: Original Image URL + description: If the ASCII art is based on an image, please provide a link to the original image file. + placeholder: Image URL from the distro website mentioned above - type: checkboxes attributes: label: Checklist options: - - label: The ASCII art is smaller than 50x20 characters (width x height) + - label: The ASCII art is smaller than 50x20 characters (W x H). required: true - - label: The ASCII art contains color codes, or the color codes are available in `os-release` + - label: The ASCII art includes color codes, or the color codes are available in `os-release`. required: true - - label: The ASCII art contains no internal paddings (spaces at the start and the end of lines) + - label: The ASCII art has no internal padding (spaces at the start and/or end of lines). required: true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/.github/pull_request_template.md new/fastfetch-2.57.1/.github/pull_request_template.md --- old/fastfetch-2.57.0/.github/pull_request_template.md 1970-01-01 01:00:00.000000000 +0100 +++ new/fastfetch-2.57.1/.github/pull_request_template.md 2026-01-14 06:58:22.000000000 +0100 @@ -0,0 +1,26 @@ +## Summary + +<!-- Briefly describe what this PR does. --> + +## Related issue (required for new logos for new distros) + +<!-- +If this PR adds a new logo, it MUST be linked to an existing "Logo Request" issue and has the requests fulfilled. + +Use one of the following formats so GitHub links it properly: +- Closes #1234 +- Fixes #1234 +- Resolves #1234 + +PRs that add logos without an associated Logo Request issue will not be accepted. +--> + +Closes # + +## Changes + +- + +## Checklist + +- [ ] I have tested my changes locally. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/CHANGELOG.md new/fastfetch-2.57.1/CHANGELOG.md --- old/fastfetch-2.57.0/CHANGELOG.md 2026-01-12 03:02:57.000000000 +0100 +++ new/fastfetch-2.57.1/CHANGELOG.md 2026-01-14 06:58:22.000000000 +0100 @@ -1,3 +1,17 @@ +# 2.57.1 + +Features: +* Tiny performance improvements (Windows) +* Improves the reliability of hostname retrieval (Title, Windows) + +Bugfixes: +* Fixes potential compilation issues on Linux (#2142, Linux) +* Fixes compilation errors on macOS when building with older SDKs (#2140, macOS) +* Fixes compilation issues when building with `-DENABLE_SYSTEM_YYJSON=ON` (#2143) + +Logos: +* Updates PrismLinux and adds a small variant + # 2.57.0 Deprecation notice: @@ -15,8 +29,8 @@ * Supports Secure Boot detection (Bootmgr, macOS) * Supports DPI scale factor detection on Windows 7 (Display, Windows) * Supports xterm 256-color codes in color configuration - * In `display.color`: "@<color-index>" (e.g., "@34" for color index 34) - * In `*.format` strings: "#@<color-index>" (e.g., "#@34" for color index 34) + * In `display.color`: "`@<color-index>`" (e.g., "`@34`" for color index `34`) + * In `*.format` strings: "`#@<color-index>`" (e.g., "`#@34`" for color index `34`) * Improves uptime accuracy on Windows 10+ (Uptime, Windows) * Adds a new module `Logo` to query built-in logo raw data in JSON output (Logo) * Usage: `fastfetch -s logo -l <logo-name> -j # Supported in JSON format only` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/CMakeLists.txt new/fastfetch-2.57.1/CMakeLists.txt --- old/fastfetch-2.57.0/CMakeLists.txt 2026-01-12 03:02:57.000000000 +0100 +++ new/fastfetch-2.57.1/CMakeLists.txt 2026-01-14 06:58:22.000000000 +0100 @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.12.0) # target_link_libraries with OBJECT libs & project homepage url project(fastfetch - VERSION 2.57.0 + VERSION 2.57.1 LANGUAGES C DESCRIPTION "Fast neofetch-like system information tool" HOMEPAGE_URL "https://github.com/fastfetch-cli/fastfetch" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/debian/changelog.tpl new/fastfetch-2.57.1/debian/changelog.tpl --- old/fastfetch-2.57.0/debian/changelog.tpl 2026-01-12 03:02:57.000000000 +0100 +++ new/fastfetch-2.57.1/debian/changelog.tpl 2026-01-14 06:58:22.000000000 +0100 @@ -1,3 +1,9 @@ +fastfetch (2.57.0~#UBUNTU_CODENAME#) #UBUNTU_CODENAME#; urgency=medium + + * Update to 2.57.0 + + -- Carter Li <[email protected]> Mon, 12 Jan 2026 10:11:21 +0800 + fastfetch (2.56.1~#UBUNTU_CODENAME#) #UBUNTU_CODENAME#; urgency=medium * Update to 2.56.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/src/common/impl/FFPlatform_windows.c new/fastfetch-2.57.1/src/common/impl/FFPlatform_windows.c --- old/fastfetch-2.57.0/src/common/impl/FFPlatform_windows.c 2026-01-12 03:02:57.000000000 +0100 +++ new/fastfetch-2.57.1/src/common/impl/FFPlatform_windows.c 2026-01-14 06:58:22.000000000 +0100 @@ -155,10 +155,16 @@ static void getHostName(FFPlatform* platform) { - wchar_t buffer[128]; + wchar_t buffer[256]; DWORD len = ARRAY_SIZE(buffer); - if(GetComputerNameExW(ComputerNameDnsHostname, buffer, &len)) - ffStrbufSetWS(&platform->hostName, buffer); + if (GetComputerNameExW(ComputerNameDnsHostname, buffer, &len) && len > 0) + ffStrbufSetNWS(&platform->hostName, len, buffer); + else + { + len = ARRAY_SIZE(buffer); + if (GetComputerNameExW(ComputerNameNetBIOS, buffer, &len) && len > 0) + ffStrbufSetNWS(&platform->hostName, len, buffer); + } } static void getUserShell(FFPlatform* platform) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/src/common/impl/time.c new/fastfetch-2.57.1/src/common/impl/time.c --- old/fastfetch-2.57.0/src/common/impl/time.c 2026-01-12 03:02:57.000000000 +0100 +++ new/fastfetch-2.57.1/src/common/impl/time.c 2026-01-14 06:58:22.000000000 +0100 @@ -81,3 +81,15 @@ return result; } + +#ifdef _WIN32 + double ffQpcMultiplier; + + __attribute__((constructor)) + static void ffTimeInitQpcMultiplier(void) + { + LARGE_INTEGER frequency; + QueryPerformanceFrequency(&frequency); + ffQpcMultiplier = 1000. / (double) frequency.QuadPart; + } +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/src/common/time.h new/fastfetch-2.57.1/src/common/time.h --- old/fastfetch-2.57.0/src/common/time.h 2026-01-12 03:02:57.000000000 +0100 +++ new/fastfetch-2.57.1/src/common/time.h 2026-01-14 06:58:22.000000000 +0100 @@ -1,11 +1,20 @@ #pragma once +#include <stdbool.h> #include <stdint.h> #include <time.h> #ifdef _WIN32 - #include <synchapi.h> + #include <ntdef.h> + #include <ntstatus.h> #include <profileapi.h> #include <sysinfoapi.h> + + NTSYSCALLAPI + NTSTATUS + NTAPI + NtDelayExecution( + _In_ BOOLEAN Alertable, + _In_ PLARGE_INTEGER DelayInterval); #elif defined(__HAIKU__) #include <OS.h> #endif @@ -15,11 +24,10 @@ static inline double ffTimeGetTick(void) //In msec { #ifdef _WIN32 - LARGE_INTEGER frequency; - QueryPerformanceFrequency(&frequency); + extern double ffQpcMultiplier; LARGE_INTEGER start; QueryPerformanceCounter(&start); - return (double) start.QuadPart * 1000 / (double) frequency.QuadPart; + return (double) start.QuadPart * ffQpcMultiplier; #elif defined(__HAIKU__) return (double) system_time() / 1000.; #else @@ -44,12 +52,15 @@ #endif } -static inline void ffTimeSleep(uint32_t msec) +// Returns true if not interrupted +static inline bool ffTimeSleep(uint32_t msec) { #ifdef _WIN32 - SleepEx(msec, TRUE); + LARGE_INTEGER interval; + interval.QuadPart = -(int64_t) msec * 10000; // Relative time in 100-nanosecond intervals + return NtDelayExecution(TRUE, &interval) == STATUS_SUCCESS; #else - nanosleep(&(struct timespec){ msec / 1000, (long) (msec % 1000) * 1000000 }, NULL); + return nanosleep(&(struct timespec){ msec / 1000, (long) (msec % 1000) * 1000000 }, NULL) == 0; #endif } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/src/common/windows/nt.h new/fastfetch-2.57.1/src/common/windows/nt.h --- old/fastfetch-2.57.0/src/common/windows/nt.h 2026-01-12 03:02:57.000000000 +0100 +++ new/fastfetch-2.57.1/src/common/windows/nt.h 2026-01-14 06:58:22.000000000 +0100 @@ -237,14 +237,14 @@ NTSTATUS NTAPI NtQueryDirectoryFile( - IN HANDLE FileHandle, - IN HANDLE Event OPTIONAL, - IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, - IN PVOID ApcContext OPTIONAL, - OUT PIO_STATUS_BLOCK IoStatusBlock, - OUT PVOID FileInformation, - IN ULONG Length, - IN FILE_INFORMATION_CLASS FileInformationClass, - IN BOOLEAN ReturnSingleEntry, - IN PUNICODE_STRING FileName OPTIONAL, - IN BOOLEAN RestartScan); + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID FileInformation, + IN ULONG Length, + IN FILE_INFORMATION_CLASS FileInformationClass, + IN BOOLEAN ReturnSingleEntry, + IN PUNICODE_STRING FileName OPTIONAL, + IN BOOLEAN RestartScan); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/src/common/windows/util.hpp new/fastfetch-2.57.1/src/common/windows/util.hpp --- old/fastfetch-2.57.0/src/common/windows/util.hpp 1970-01-01 01:00:00.000000000 +0100 +++ new/fastfetch-2.57.1/src/common/windows/util.hpp 2026-01-14 06:58:22.000000000 +0100 @@ -0,0 +1,19 @@ +#pragma once + +#include <utility> +#include <type_traits> + +template <typename Fn> +struct on_scope_exit { + static_assert(std::is_nothrow_move_constructible<Fn>::value, + "Fn must be nothrow move constructible"); + + explicit on_scope_exit(Fn &&fn) noexcept + : _fn(std::move(fn)) {}; + on_scope_exit(const on_scope_exit&) = delete; + on_scope_exit& operator=(const on_scope_exit&) = delete; + ~on_scope_exit() noexcept { this->_fn(); } + +private: + Fn _fn; +}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/src/detection/bluetooth/bluetooth_windows.cpp new/fastfetch-2.57.1/src/detection/bluetooth/bluetooth_windows.cpp --- old/fastfetch-2.57.0/src/detection/bluetooth/bluetooth_windows.cpp 2026-01-12 03:02:57.000000000 +0100 +++ new/fastfetch-2.57.1/src/detection/bluetooth/bluetooth_windows.cpp 2026-01-14 06:58:22.000000000 +0100 @@ -4,18 +4,10 @@ } #include "common/windows/wmi.hpp" #include "common/windows/unicode.hpp" +#include "common/windows/util.hpp" STDAPI InitVariantFromStringArray(_In_reads_(cElems) PCWSTR *prgsz, _In_ ULONG cElems, _Out_ VARIANT *pvar); -template <typename Fn> -struct on_scope_exit { - on_scope_exit(Fn &&fn): _fn(std::move(fn)) {} - ~on_scope_exit() { this->_fn(); } - -private: - Fn _fn; -}; - extern "C" const char* ffBluetoothDetectBattery(FFlist* devices) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/src/detection/bootmgr/bootmgr_apple.c new/fastfetch-2.57.1/src/detection/bootmgr/bootmgr_apple.c --- old/fastfetch-2.57.0/src/detection/bootmgr/bootmgr_apple.c 2026-01-12 03:02:57.000000000 +0100 +++ new/fastfetch-2.57.1/src/detection/bootmgr/bootmgr_apple.c 2026-01-14 06:58:22.000000000 +0100 @@ -7,7 +7,7 @@ static const char* detectSecureBoot(bool* result) { #if __aarch64__ - FF_IOOBJECT_AUTO_RELEASE io_registry_entry_t entryDevice = IORegistryEntryFromPath(kIOMainPortDefault, "IODeviceTree:/chosen"); + FF_IOOBJECT_AUTO_RELEASE io_registry_entry_t entryDevice = IORegistryEntryFromPath(MACH_PORT_NULL, "IODeviceTree:/chosen"); if (!entryDevice) return "IORegistryEntryFromPath() failed"; @@ -20,7 +20,7 @@ *result = (bool) *CFDataGetBytePtr((CFDataRef) prop); #else - FF_IOOBJECT_AUTO_RELEASE io_registry_entry_t entryDevice = IORegistryEntryFromPath(kIOMainPortDefault, "IODeviceTree:/options"); + FF_IOOBJECT_AUTO_RELEASE io_registry_entry_t entryDevice = IORegistryEntryFromPath(MACH_PORT_NULL, "IODeviceTree:/options"); if (!entryDevice) return "IORegistryEntryFromPath() failed"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/src/detection/camera/camera_windows.cpp new/fastfetch-2.57.1/src/detection/camera/camera_windows.cpp --- old/fastfetch-2.57.0/src/detection/camera/camera_windows.cpp 2026-01-12 03:02:57.000000000 +0100 +++ new/fastfetch-2.57.1/src/detection/camera/camera_windows.cpp 2026-01-14 06:58:22.000000000 +0100 @@ -4,20 +4,12 @@ } #include "common/windows/com.hpp" #include "common/windows/unicode.hpp" +#include "common/windows/util.hpp" #include <initguid.h> #include <mfapi.h> #include <mfidl.h> -template <typename Fn> -struct on_scope_exit { - on_scope_exit(Fn &&fn): _fn(std::move(fn)) {} - ~on_scope_exit() { this->_fn(); } - -private: - Fn _fn; -}; - extern "C" const char* ffDetectCamera(FF_MAYBE_UNUSED FFlist* result) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/src/detection/displayserver/linux/xcb.c new/fastfetch-2.57.1/src/detection/displayserver/linux/xcb.c --- old/fastfetch-2.57.0/src/detection/displayserver/linux/xcb.c 2026-01-12 03:02:57.000000000 +0100 +++ new/fastfetch-2.57.1/src/detection/displayserver/linux/xcb.c 2026-01-14 06:58:22.000000000 +0100 @@ -13,8 +13,28 @@ #include <xcb/randr.h> #include <xcb/xcb.h> -typedef struct XcbPropertyData +typedef struct XcbRandrData { + FF_LIBRARY_SYMBOL(xcb_randr_get_screen_resources_current) + FF_LIBRARY_SYMBOL(xcb_randr_get_screen_resources_current_reply) + FF_LIBRARY_SYMBOL(xcb_randr_get_screen_resources_current_modes_iterator) + FF_LIBRARY_SYMBOL(xcb_randr_mode_info_next) + FF_LIBRARY_SYMBOL(xcb_randr_get_monitors) + FF_LIBRARY_SYMBOL(xcb_randr_get_monitors_reply) + FF_LIBRARY_SYMBOL(xcb_randr_get_monitors_monitors_iterator) + FF_LIBRARY_SYMBOL(xcb_randr_monitor_info_next) + FF_LIBRARY_SYMBOL(xcb_randr_monitor_info_outputs_length) + FF_LIBRARY_SYMBOL(xcb_randr_monitor_info_outputs) + FF_LIBRARY_SYMBOL(xcb_randr_output_next) + FF_LIBRARY_SYMBOL(xcb_randr_get_output_info) + FF_LIBRARY_SYMBOL(xcb_randr_get_output_info_reply) + FF_LIBRARY_SYMBOL(xcb_randr_get_crtc_info) + FF_LIBRARY_SYMBOL(xcb_randr_get_crtc_info_reply) + FF_LIBRARY_SYMBOL(xcb_randr_get_output_property) + FF_LIBRARY_SYMBOL(xcb_randr_get_output_property_reply) + FF_LIBRARY_SYMBOL(xcb_randr_get_output_property_data) + FF_LIBRARY_SYMBOL(xcb_randr_get_output_property_data_length) + FF_LIBRARY_SYMBOL(xcb_intern_atom) FF_LIBRARY_SYMBOL(xcb_intern_atom_reply) FF_LIBRARY_SYMBOL(xcb_get_property) @@ -28,37 +48,21 @@ FF_LIBRARY_SYMBOL(xcb_get_setup) FF_LIBRARY_SYMBOL(xcb_setup_vendor) FF_LIBRARY_SYMBOL(xcb_setup_vendor_length) -} XcbPropertyData; - -static bool xcbInitPropertyData(FF_MAYBE_UNUSED void* libraryHandle, XcbPropertyData* propertyData) -{ - FF_LIBRARY_LOAD_SYMBOL_PTR(libraryHandle, propertyData, xcb_intern_atom, false) - FF_LIBRARY_LOAD_SYMBOL_PTR(libraryHandle, propertyData, xcb_intern_atom_reply, false) - FF_LIBRARY_LOAD_SYMBOL_PTR(libraryHandle, propertyData, xcb_get_property, false) - FF_LIBRARY_LOAD_SYMBOL_PTR(libraryHandle, propertyData, xcb_get_property_reply, false) - FF_LIBRARY_LOAD_SYMBOL_PTR(libraryHandle, propertyData, xcb_get_property_value, false) - FF_LIBRARY_LOAD_SYMBOL_PTR(libraryHandle, propertyData, xcb_get_property_value_length, false) - FF_LIBRARY_LOAD_SYMBOL_PTR(libraryHandle, propertyData, xcb_get_atom_name, false) - FF_LIBRARY_LOAD_SYMBOL_PTR(libraryHandle, propertyData, xcb_get_atom_name_name, false) - FF_LIBRARY_LOAD_SYMBOL_PTR(libraryHandle, propertyData, xcb_get_atom_name_name_length, false) - FF_LIBRARY_LOAD_SYMBOL_PTR(libraryHandle, propertyData, xcb_get_atom_name_reply, false) - FF_LIBRARY_LOAD_SYMBOL_PTR(libraryHandle, propertyData, xcb_get_setup, false) - FF_LIBRARY_LOAD_SYMBOL_PTR(libraryHandle, propertyData, xcb_setup_vendor, false) - FF_LIBRARY_LOAD_SYMBOL_PTR(libraryHandle, propertyData, xcb_setup_vendor_length, false) - return true; -} + //init once + xcb_connection_t* connection; + FFDisplayServerResult* result; +} XcbRandrData; -static void* xcbGetProperty(XcbPropertyData* data, xcb_connection_t* connection, xcb_window_t window, const char* request) +static void* xcbGetProperty(XcbRandrData* data, xcb_window_t window, const char* request) { - xcb_intern_atom_cookie_t requestAtomCookie = data->ffxcb_intern_atom(connection, true, (uint16_t) strlen(request), request); - FF_AUTO_FREE xcb_intern_atom_reply_t* requestAtomReply = data->ffxcb_intern_atom_reply(connection, requestAtomCookie, NULL); + xcb_intern_atom_cookie_t requestAtomCookie = data->ffxcb_intern_atom(data->connection, true, (uint16_t) strlen(request), request); + FF_AUTO_FREE xcb_intern_atom_reply_t* requestAtomReply = data->ffxcb_intern_atom_reply(data->connection, requestAtomCookie, NULL); if(requestAtomReply == NULL) return NULL; - xcb_get_property_cookie_t propertyCookie = data->ffxcb_get_property(connection, false, window, requestAtomReply->atom, XCB_ATOM_ANY, 0, 8 * 1024); - - FF_AUTO_FREE xcb_get_property_reply_t* propertyReply = data->ffxcb_get_property_reply(connection, propertyCookie, NULL); + xcb_get_property_cookie_t propertyCookie = data->ffxcb_get_property(data->connection, false, window, requestAtomReply->atom, XCB_ATOM_ANY, 0, 8 * 1024); + FF_AUTO_FREE xcb_get_property_reply_t* propertyReply = data->ffxcb_get_property_reply(data->connection, propertyCookie, NULL); if(propertyReply == NULL) return NULL; @@ -74,18 +78,18 @@ return replyValue; } -static void xcbDetectWMfromEWMH(XcbPropertyData* data, xcb_connection_t* connection, xcb_window_t rootWindow, FFDisplayServerResult* result) +static void xcbDetectWMfromEWMH(XcbRandrData* data, xcb_window_t rootWindow, FFDisplayServerResult* result) { if(result->wmProcessName.length > 0 || ffStrbufCompS(&result->wmProtocolName, FF_WM_PROTOCOL_WAYLAND) == 0) return; - FF_AUTO_FREE xcb_window_t* wmWindow = (xcb_window_t*) xcbGetProperty(data, connection, rootWindow, "_NET_SUPPORTING_WM_CHECK"); + FF_AUTO_FREE xcb_window_t* wmWindow = (xcb_window_t*) xcbGetProperty(data, rootWindow, "_NET_SUPPORTING_WM_CHECK"); if(wmWindow == NULL) return; - FF_AUTO_FREE char* wmName = (char*) xcbGetProperty(data, connection, *wmWindow, "WM_NAME"); + FF_AUTO_FREE char* wmName = (char*) xcbGetProperty(data, *wmWindow, "WM_NAME"); if(!ffStrSet(wmName)) - wmName = (char*) xcbGetProperty(data, connection, *wmWindow, "_NET_WM_NAME"); + wmName = (char*) xcbGetProperty(data, *wmWindow, "_NET_WM_NAME"); if(!ffStrSet(wmName)) return; @@ -93,9 +97,9 @@ ffStrbufSetS(&result->wmProcessName, wmName); } -static void xcbFetchServerVendor(XcbPropertyData* data, xcb_connection_t* connection, FFDisplayServerResult* result) +static void xcbFetchServerVendor(XcbRandrData* data, FFDisplayServerResult* result) { - const xcb_setup_t* setup = data->ffxcb_get_setup(connection); + const xcb_setup_t* setup = data->ffxcb_get_setup(data->connection); int length = data->ffxcb_setup_vendor_length(setup); if(length <= 0) @@ -110,36 +114,6 @@ } } -typedef struct XcbRandrData -{ - FF_LIBRARY_SYMBOL(xcb_randr_get_screen_resources_current) - FF_LIBRARY_SYMBOL(xcb_randr_get_screen_resources_current_reply) - FF_LIBRARY_SYMBOL(xcb_randr_get_screen_resources_current_modes_iterator) - FF_LIBRARY_SYMBOL(xcb_randr_mode_info_next) - FF_LIBRARY_SYMBOL(xcb_randr_get_monitors) - FF_LIBRARY_SYMBOL(xcb_randr_get_monitors_reply) - FF_LIBRARY_SYMBOL(xcb_randr_get_monitors_monitors_iterator) - FF_LIBRARY_SYMBOL(xcb_randr_monitor_info_next) - FF_LIBRARY_SYMBOL(xcb_randr_monitor_info_outputs_length) - FF_LIBRARY_SYMBOL(xcb_randr_monitor_info_outputs) - FF_LIBRARY_SYMBOL(xcb_randr_output_next) - FF_LIBRARY_SYMBOL(xcb_randr_get_output_info) - FF_LIBRARY_SYMBOL(xcb_randr_get_output_info_reply) - FF_LIBRARY_SYMBOL(xcb_randr_get_crtc_info) - FF_LIBRARY_SYMBOL(xcb_randr_get_crtc_info_reply) - FF_LIBRARY_SYMBOL(xcb_randr_get_output_property) - FF_LIBRARY_SYMBOL(xcb_randr_get_output_property_reply) - FF_LIBRARY_SYMBOL(xcb_randr_get_output_property_data) - FF_LIBRARY_SYMBOL(xcb_randr_get_output_property_data_length) - FF_LIBRARY_SYMBOL(xcb_intern_atom) - FF_LIBRARY_SYMBOL(xcb_intern_atom_reply) - - //init once - xcb_connection_t* connection; - FFDisplayServerResult* result; - XcbPropertyData propData; -} XcbRandrData; - static bool xcbRandrHandleOutput(XcbRandrData* data, xcb_randr_output_t output, FFstrbuf* name, bool primary, FFDisplayType displayType, struct xcb_randr_get_screen_resources_current_reply_t* screenResources, uint8_t bitDepth, double scaleFactor) { xcb_randr_get_output_info_cookie_t outputInfoCookie = data->ffxcb_randr_get_output_info(data->connection, output, XCB_CURRENT_TIME); @@ -251,14 +225,14 @@ .rem = data->ffxcb_randr_monitor_info_outputs_length(monitor) }; - FF_AUTO_FREE xcb_get_atom_name_reply_t* nameReply = data->propData.ffxcb_get_atom_name_reply( + FF_AUTO_FREE xcb_get_atom_name_reply_t* nameReply = data->ffxcb_get_atom_name_reply( data->connection, - data->propData.ffxcb_get_atom_name(data->connection, monitor->name), + data->ffxcb_get_atom_name(data->connection, monitor->name), NULL ); FF_STRBUF_AUTO_DESTROY name = ffStrbufCreateNS( - (uint32_t) data->propData.ffxcb_get_atom_name_name_length(nameReply), - data->propData.ffxcb_get_atom_name_name(nameReply) + (uint32_t) data->ffxcb_get_atom_name_name_length(nameReply), + data->ffxcb_get_atom_name_name(nameReply) ); const FFDisplayType displayType = ffdsGetDisplayType(name.chars); @@ -306,7 +280,7 @@ FF_AUTO_FREE struct xcb_randr_get_screen_resources_current_reply_t* screenResources = data->ffxcb_randr_get_screen_resources_current_reply(data->connection, screenResourcesCookie, NULL); double scaleFactor = 1; - FF_AUTO_FREE const char* resourceManager = xcbGetProperty(&data->propData, data->connection, screen->root, "RESOURCE_MANAGER"); + FF_AUTO_FREE const char* resourceManager = xcbGetProperty(data, screen->root, "RESOURCE_MANAGER"); if (resourceManager) { FF_STRBUF_AUTO_DESTROY dpi = ffStrbufCreate(); @@ -369,6 +343,18 @@ FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xcbRandr, data, xcb_intern_atom) FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xcbRandr, data, xcb_intern_atom_reply) + FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xcbRandr, data, xcb_get_property) + FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xcbRandr, data, xcb_get_property_reply) + FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xcbRandr, data, xcb_get_property_value) + FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xcbRandr, data, xcb_get_property_value_length) + FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xcbRandr, data, xcb_get_atom_name) + FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xcbRandr, data, xcb_get_atom_name_name) + FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xcbRandr, data, xcb_get_atom_name_name_length) + FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xcbRandr, data, xcb_get_atom_name_reply) + FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xcbRandr, data, xcb_get_setup) + FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xcbRandr, data, xcb_setup_vendor) + FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xcbRandr, data, xcb_setup_vendor_length) + FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xcbRandr, data, xcb_randr_get_screen_resources_current) FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xcbRandr, data, xcb_randr_get_screen_resources_current_reply) FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xcbRandr, data, xcb_randr_get_screen_resources_current_modes_iterator) @@ -389,8 +375,6 @@ FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xcbRandr, data, xcb_randr_get_crtc_info) FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xcbRandr, data, xcb_randr_get_crtc_info_reply) - bool propertyDataInitialized = xcbInitPropertyData(xcbRandr, &data.propData); - data.connection = ffxcb_connect(NULL, NULL); if(ffxcb_connection_has_error(data.connection) > 0) @@ -405,9 +389,9 @@ xcb_screen_iterator_t iterator = ffxcb_setup_roots_iterator(ffxcb_get_setup(data.connection)); - if(iterator.rem > 0 && propertyDataInitialized) { - xcbDetectWMfromEWMH(&data.propData, data.connection, iterator.data->root, result); - xcbFetchServerVendor(&data.propData, data.connection, result); + if(iterator.rem > 0) { + xcbDetectWMfromEWMH(&data, iterator.data->root, result); + xcbFetchServerVendor(&data, result); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/src/detection/displayserver/linux/xlib.c new/fastfetch-2.57.1/src/detection/displayserver/linux/xlib.c --- old/fastfetch-2.57.0/src/detection/displayserver/linux/xlib.c 2026-01-12 03:02:57.000000000 +0100 +++ new/fastfetch-2.57.1/src/detection/displayserver/linux/xlib.c 2026-01-14 06:58:22.000000000 +0100 @@ -10,25 +10,29 @@ #include <X11/extensions/Xrandr.h> #include <X11/Xlib.h> -typedef struct X11PropertyData +typedef struct XrandrData { FF_LIBRARY_SYMBOL(XInternAtom) + FF_LIBRARY_SYMBOL(XGetAtomName) FF_LIBRARY_SYMBOL(XGetWindowProperty) FF_LIBRARY_SYMBOL(XServerVendor) FF_LIBRARY_SYMBOL(XFree) -} X11PropertyData; - -static bool x11InitPropertyData(FF_MAYBE_UNUSED void* libraryHandle, X11PropertyData* propertyData) -{ - FF_LIBRARY_LOAD_SYMBOL_PTR(libraryHandle, propertyData, XInternAtom, false) - FF_LIBRARY_LOAD_SYMBOL_PTR(libraryHandle, propertyData, XGetWindowProperty, false) - FF_LIBRARY_LOAD_SYMBOL_PTR(libraryHandle, propertyData, XServerVendor, false) - FF_LIBRARY_LOAD_SYMBOL_PTR(libraryHandle, propertyData, XFree, false) + FF_LIBRARY_SYMBOL(XRRGetMonitors) + FF_LIBRARY_SYMBOL(XRRGetScreenResourcesCurrent) + FF_LIBRARY_SYMBOL(XRRGetOutputInfo) + FF_LIBRARY_SYMBOL(XRRGetOutputProperty) + FF_LIBRARY_SYMBOL(XRRGetCrtcInfo) + FF_LIBRARY_SYMBOL(XRRFreeCrtcInfo) + FF_LIBRARY_SYMBOL(XRRFreeOutputInfo) + FF_LIBRARY_SYMBOL(XRRFreeScreenResources) + FF_LIBRARY_SYMBOL(XRRFreeMonitors) - return true; -} + //Init once + Display* display; + FFDisplayServerResult* result; +} XrandrData; -static unsigned char* x11GetProperty(X11PropertyData* data, Display* display, Window window, const char* request) +static unsigned char* x11GetProperty(XrandrData* data, Display* display, Window window, const char* request) { Atom requestAtom = data->ffXInternAtom(display, request, False); if(requestAtom == None) @@ -44,18 +48,18 @@ return result; } -static void x11DetectWMFromEWMH(X11PropertyData* data, Display* display, FFDisplayServerResult* result) +static void x11DetectWMFromEWMH(XrandrData* data, FFDisplayServerResult* result) { if(result->wmProcessName.length > 0 || ffStrbufCompS(&result->wmProtocolName, FF_WM_PROTOCOL_WAYLAND) == 0) return; - Window* wmWindow = (Window*) x11GetProperty(data, display, DefaultRootWindow(display), "_NET_SUPPORTING_WM_CHECK"); + Window* wmWindow = (Window*) x11GetProperty(data, data->display, DefaultRootWindow(data->display), "_NET_SUPPORTING_WM_CHECK"); if(wmWindow == NULL) return; - char* wmName = (char*) x11GetProperty(data, display, *wmWindow, "WM_NAME"); + char* wmName = (char*) x11GetProperty(data, data->display, *wmWindow, "WM_NAME"); if(!ffStrSet(wmName)) - wmName = (char*) x11GetProperty(data, display, *wmWindow, "_NET_WM_NAME"); + wmName = (char*) x11GetProperty(data, data->display, *wmWindow, "_NET_WM_NAME"); if(ffStrSet(wmName)) ffStrbufSetS(&result->wmProcessName, wmName); @@ -64,35 +68,13 @@ data->ffXFree(wmWindow); } -static void x11FetchServerVendor(X11PropertyData* data, Display* display, FFDisplayServerResult* result) +static void x11FetchServerVendor(XrandrData* data, FFDisplayServerResult* result) { - const char* serverVendor = data->ffXServerVendor(display); - if (serverVendor && !ffStrEquals(serverVendor, "The X.Org Foundation")) { + const char* serverVendor = data->ffXServerVendor(data->display); + if (serverVendor && !ffStrEquals(serverVendor, "The X.Org Foundation")) ffStrbufSetS(&result->wmProtocolName, serverVendor); - } } -typedef struct XrandrData -{ - FF_LIBRARY_SYMBOL(XInternAtom) - FF_LIBRARY_SYMBOL(XGetAtomName); - FF_LIBRARY_SYMBOL(XFree); - FF_LIBRARY_SYMBOL(XRRGetMonitors) - FF_LIBRARY_SYMBOL(XRRGetScreenResourcesCurrent) - FF_LIBRARY_SYMBOL(XRRGetOutputInfo) - FF_LIBRARY_SYMBOL(XRRGetOutputProperty) - FF_LIBRARY_SYMBOL(XRRGetCrtcInfo) - FF_LIBRARY_SYMBOL(XRRFreeCrtcInfo) - FF_LIBRARY_SYMBOL(XRRFreeOutputInfo) - FF_LIBRARY_SYMBOL(XRRFreeScreenResources) - FF_LIBRARY_SYMBOL(XRRFreeMonitors) - - //Init once - Display* display; - FFDisplayServerResult* result; - X11PropertyData* propData; -} XrandrData; - static bool xrandrHandleCrtc(XrandrData* data, XRROutputInfo* output, FFstrbuf* name, bool primary, FFDisplayType displayType, uint8_t* edidData, uint32_t edidLength, XRRScreenResources* screenResources, uint8_t bitDepth, double scaleFactor) { //We do the check here, because we want the best fallback display if this call failed @@ -247,7 +229,7 @@ XRRScreenResources* screenResources = data->ffXRRGetScreenResourcesCurrent(data->display, RootWindowOfScreen(screen)); double scaleFactor = 1; - char* resourceManager = (char*) x11GetProperty(data->propData, data->display, screen->root, "RESOURCE_MANAGER"); + char* resourceManager = (char*) x11GetProperty(data, data->display, screen->root, "RESOURCE_MANAGER"); if (resourceManager) { FF_STRBUF_AUTO_DESTROY dpi = ffStrbufCreate(); @@ -307,6 +289,8 @@ FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xrandr, data, XInternAtom); FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xrandr, data, XGetAtomName); + FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xrandr, data, XGetWindowProperty); + FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xrandr, data, XServerVendor); FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xrandr, data, XFree); FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xrandr, data, XRRGetMonitors); FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xrandr, data, XRRGetScreenResourcesCurrent); @@ -318,17 +302,13 @@ FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xrandr, data, XRRFreeScreenResources); FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(xrandr, data, XRRFreeMonitors); - X11PropertyData propertyData; - bool propertyDataInitialized = x11InitPropertyData(xrandr, &propertyData); - data.propData = &propertyData; - data.display = ffXOpenDisplay(NULL); if(data.display == NULL) return "XOpenDisplay() failed"; - if(propertyDataInitialized && ScreenCount(data.display) > 0) { - x11DetectWMFromEWMH(&propertyData, data.display, result); - x11FetchServerVendor(&propertyData, data.display, result); + if(ScreenCount(data.display) > 0) { + x11DetectWMFromEWMH(&data, result); + x11FetchServerVendor(&data, result); } data.result = result; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/src/detection/gpu/gpu_wsl.cpp new/fastfetch-2.57.1/src/detection/gpu/gpu_wsl.cpp --- old/fastfetch-2.57.0/src/detection/gpu/gpu_wsl.cpp 2026-01-12 03:02:57.000000000 +0100 +++ new/fastfetch-2.57.1/src/detection/gpu/gpu_wsl.cpp 2026-01-14 06:58:22.000000000 +0100 @@ -6,6 +6,7 @@ #include "detection/gpu/gpu.h" #include "detection/gpu/gpu_driver_specific.h" } +#include "common/windows/util.hpp" #include <wsl/winadapter.h> #include <directx/dxcore.h> @@ -16,15 +17,6 @@ #pragma GCC diagnostic ignored "-Wmissing-field-initializers" -template <typename Fn> -struct on_scope_exit { - on_scope_exit(Fn &&fn): _fn(std::move(fn)) {} - ~on_scope_exit() { this->_fn(); } - -private: - Fn _fn; -}; - extern "C" const char* ffGPUDetectByDirectX(FF_MAYBE_UNUSED const FFGPUOptions* options, FFlist* gpus) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/src/detection/physicalmemory/physicalmemory_apple.m new/fastfetch-2.57.1/src/detection/physicalmemory/physicalmemory_apple.m --- old/fastfetch-2.57.0/src/detection/physicalmemory/physicalmemory_apple.m 2026-01-12 03:02:57.000000000 +0100 +++ new/fastfetch-2.57.1/src/detection/physicalmemory/physicalmemory_apple.m 2026-01-14 06:58:22.000000000 +0100 @@ -123,7 +123,7 @@ FF_MAYBE_UNUSED static const char* detectFromIokit(FFlist* result) { - FF_IOOBJECT_AUTO_RELEASE io_registry_entry_t entryDevice = IORegistryEntryFromPath(kIOMainPortDefault, "IODeviceTree:/chosen"); + FF_IOOBJECT_AUTO_RELEASE io_registry_entry_t entryDevice = IORegistryEntryFromPath(MACH_PORT_NULL, "IODeviceTree:/chosen"); if (!entryDevice) return "IORegistryEntryFromPath() failed"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/src/detection/wm/wm_windows.cpp new/fastfetch-2.57.1/src/detection/wm/wm_windows.cpp --- old/fastfetch-2.57.0/src/detection/wm/wm_windows.cpp 2026-01-12 03:02:57.000000000 +0100 +++ new/fastfetch-2.57.1/src/detection/wm/wm_windows.cpp 2026-01-14 06:58:22.000000000 +0100 @@ -7,22 +7,13 @@ } #include "common/windows/com.hpp" +#include "common/windows/util.hpp" -#include <utility> #include <windows.h> #include <tlhelp32.h> #include <shlobj.h> #include <propkey.h> -template <typename Fn> -struct on_scope_exit { - on_scope_exit(Fn &&fn): _fn(std::move(fn)) {} - ~on_scope_exit() { this->_fn(); } - -private: - Fn _fn; -}; - extern "C" const char* ffDetectWMPlugin(FFstrbuf* pluginName) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/src/logo/ascii/prismlinux.txt new/fastfetch-2.57.1/src/logo/ascii/prismlinux.txt --- old/fastfetch-2.57.0/src/logo/ascii/prismlinux.txt 2026-01-12 03:02:57.000000000 +0100 +++ new/fastfetch-2.57.1/src/logo/ascii/prismlinux.txt 2026-01-14 06:58:22.000000000 +0100 @@ -1,17 +1,21 @@ - .;oo;. - .;ldddol;. - .:cldddddolc:. - ':lloddddoooolcc:' - ':lllodddddooooolccc:, - ,:lllloddddooooollllccccc,. - .,clllllddddooooollllllccc::::,. - .,clllllloodoooooooollllccc:::::::,. -'cllllllllllllloooooollcccc::::::::::, - ,lllllllllllllooooolllccc::::::::::, - ,cllllllllllllloollllcc::::::::::; - 'clllllllllllllllcccc::::::::;:, - .clllllllccccc::cc:::::::::;:' - .cllllccccc:;;;:cc::::::;;:. - .cccccccc;;;:::::cc:::;;:. - .:cccc;;;:::::::::c::;:. - .;::::;;;;;;;;;;;;;::. + ⣤⣤ ⢀⡄ + ⢀⣾⣦ ⠙⠛ ⢀⣴⣿⣷ ⢠⣤ + ⣤⡄ ⣸⣿⣿⣷⣄ ⣠⣶⣿⣿⣿⣿ ⠈⠉ ⢀⣤⡀ + ⠉⠁ ⢠⣿⣿⣿⣿⣿⣦⡈⢿⣿⣿⣿⣿⣿⡇⢀⣀⣤⣤⣤⣤⣴⣶⠆⠘⠿⠃ ⠉ ⡀ + ⢤⣄⡀ ⣾⣿⣿⣿⣿⣿⣿⣷⡄⠻⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⡏ ⡇ + ⠘⣿⣿⣿⣿⣶⣤⣈⣉⠛⠿⢿⣿⣿⣿⣿⣦⠘⢿⣿⣿⣷⠈⣿⣿⣿⣿⣿⠏ ⠐⠁ + ⢿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣦⣤⣉⡛⠻⢿⣷⣄⠻⣿⣿ ⣿⣿⣿⣿⠟⢠⣀ ⡐⠁ + ⢰⣶ ⠘⣿⣿⣿⣿⣿⣿⣿⠿⠿⠛⠛⠉⠉ ⠈⠉ ⠘⣿ ⣿⣿⣿⡏⢠⣿⣿⣿⣶⣦⣄⡀ ⠂ + ⠈⠁ ⠙⠋⣉⣉⣤⣤⣶⣶⠾⠉ ⠈ ⢹⣿⠏⢠⣿⣿⣿⣿⣿⣿⣿⣿⠟ + ⢀⣠⣤⣴⣶⣿⣿⣿⣿⣿⣿⣿⠟⠁ ⢸⠟⣰⣿⣿⣿⣿⣿⡿⠟⠉ + ⠈⠛⢿⣿⣿⣿⣿⣿⣿⣿⠟⢁⣴⡏ ⠈⣰⣿⣿⣿⠿⠛⣁⡀ ⢀⡒ + ⢤⡀ ⠙⢿⣿⣿⣿⠟⢁⣴⣿⣿ ⣰⡿⠟⢉⣠⣴⣾⣿⣿⣆ + ⠛⠁ ⠔ ⠈⠛⢁⣴⣿⣿⣿⡇⢰⡆ ⠊⣁⣤⣾⣿⣿⣿⣿⣿⣿⣿⣷⡀ + ⡠⠂ ⢀⣴⣿⣿⣿⣿⣿⠃⣾⣿⡄⢢⡀ ⠤⠶⠿⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡄ + ⢀⠈ ⢀⣴⣿⣿⣿⣿⣿⣿⡿⢠⣿⣿⣷ ⢿⣷⣄⠑⢶⣶⣶⣶⣶⣶⣤⣤⣤⣤⣤⣤ +⠠⠁ ⠚⠛⠿⠿⢿⣿⣿⣿⡇⢸⣿⣿⣿⣧⠈⢿⣿⣿⣦⣌⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⡄ ⢰⣶ +⡆ ⣼⣿⣿⣿⣿⣇⠘⣿⣿⣿⣿⣿⣦⣈⠛⢿⣿⣿⣿⣿⣿⡇ +⢁ ⣀ ⠄⠂⠁⢀⣿⣿⣿⣿⣿⣿⡆⠹⣿⣿⣿⣿⣿⣿⠗ ⠈⠛⢿⣿⣿⡇ + ⠁⠂ ⠒⠒⠈⠁ ⢸⣿⣿⣿⠿⠛⠉ ⢻⣿⣿⣿⣿⠟ ⠈⠙⠃ + ⠼⠛⠉⠁ ⢻⣿⣿⠏ ⢀⣄ + ⠿⠇ ⠈⠿⠁ ⠘⠋ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/src/logo/ascii/prismlinux_small.txt new/fastfetch-2.57.1/src/logo/ascii/prismlinux_small.txt --- old/fastfetch-2.57.0/src/logo/ascii/prismlinux_small.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/fastfetch-2.57.1/src/logo/ascii/prismlinux_small.txt 2026-01-14 06:58:22.000000000 +0100 @@ -0,0 +1,13 @@ + ⢠⣦⡀⠘⠁⢀⣴⣾ ⢀⡄ + ⠛ ⣸⣿⣿⣄⢰⣿⣿⣿⡄⢀⣀⣀⣀⡀⢾⠆⠐⠂⢄ + ⠰⣤⣄⡀ ⢿⣿⣿⣿⣧⡹⣿⣿⡇⣿⣿⣿⡿⠁ + ⢻⣿⣿⣿⣶⣶⣭⣝⡻⠷⣌⢿⡇⢸⣿⡿⢁⣀ + ⠘⠛ ⠸⠿⠟⣛⣋⡭⠅ ⠻⢸⡿⢡⣿⣿⣿⣶⣤⠁ + ⠠⣤⣶⣶⣿⣿⡿⢋ ⠸⣡⣿⣿⡿⠟⠉ + ⢠ ⠈⠻⣿⡿⢋⣴⡟ ⢰⠟⣋⣥⣾⣦⡀ ⠁ + ⠈⠠⠊ ⢈⣴⣿⣿⣇⣧⢀ ⢀⣠⣴⣿⣿⣿⣿⣿⣷⡄ + ⣰⣿⣿⣿⣿⢹⣿⣆⢳⣦⣐⠶⣶⣦⣤⣬⣭⣭⠉⢉⠉⠉ +⡀ ⠈⠉⠉⢉⢸⣿⣿⣆⢻⣿⣷⣮⡙⢿⣿⣿⣿ ⠉ + ⣀⣀ ⠄⠐⠈ ⣾⣿⣿⠿ ⣿⣿⣿⡿ ⠉⠻⢿ + ⠛⠉ ⢀⡀⠘⣿⠟ ⢠⡀ + ⠈⠁ ⠁ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/src/logo/builtin.c new/fastfetch-2.57.1/src/logo/builtin.c --- old/fastfetch-2.57.0/src/logo/builtin.c 2026-01-12 03:02:57.000000000 +0100 +++ new/fastfetch-2.57.1/src/logo/builtin.c 2026-01-14 06:58:22.000000000 +0100 @@ -4060,6 +4060,16 @@ FF_COLOR_FG_BLUE, }, }, + // PrismLinuxSmall + { + .names = {"PrismLinux_small"}, + .type = FF_LOGO_LINE_TYPE_SMALL_BIT, + .lines = FASTFETCH_DATATEXT_LOGO_PRISMLINUX_SMALL, + .colors = { + FF_COLOR_FG_BLUE, + FF_COLOR_FG_BLUE, + }, + }, // LAST {}, }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.57.0/src/modules/logo/logo.c new/fastfetch-2.57.1/src/modules/logo/logo.c --- old/fastfetch-2.57.0/src/modules/logo/logo.c 2026-01-12 03:02:57.000000000 +0100 +++ new/fastfetch-2.57.1/src/modules/logo/logo.c 2026-01-14 06:58:22.000000000 +0100 @@ -1,7 +1,5 @@ -#include "3rdparty/yyjson/yyjson.h" #include "common/printing.h" #include "logo/logo.h" -#include "fastfetch.h" #include "modules/logo/logo.h" #include "options/logo.h" ++++++ fastfetch.obsinfo ++++++ --- /var/tmp/diff_new_pack.QQ9ndy/_old 2026-01-17 21:43:29.947763164 +0100 +++ /var/tmp/diff_new_pack.QQ9ndy/_new 2026-01-17 21:43:29.951763328 +0100 @@ -1,5 +1,5 @@ name: fastfetch -version: 2.57.0 -mtime: 1768183377 -commit: 163781557fd06b1b52ed6a46cff3a9672b0bd6ed +version: 2.57.1 +mtime: 1768370302 +commit: 0418e9ca5e2bd449df4634c78e968f726cf09a5a
