Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package fastfetch for openSUSE:Factory checked in at 2025-05-26 18:34:56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/fastfetch (Old) and /work/SRC/openSUSE:Factory/.fastfetch.new.2732 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fastfetch" Mon May 26 18:34:56 2025 rev:67 rq:1279681 version:2.44.0 Changes: -------- --- /work/SRC/openSUSE:Factory/fastfetch/fastfetch.changes 2025-05-20 09:39:01.627829646 +0200 +++ /work/SRC/openSUSE:Factory/.fastfetch.new.2732/fastfetch.changes 2025-05-26 18:36:37.406165434 +0200 @@ -1,0 +2,19 @@ +Fri May 23 22:21:22 UTC 2025 - RN <r_ni...@proton.me> + +- Update to 2.44.0: + Features: + * Add option `--disk-hide-folders` and `--disk-hide-fs` to hide + specific mountpoints and filesystems in Disk module (Disk) + - `--disk-hide-folders` defaults to `/efi:/boot:/boot/efi` on + Linux and *BSD. Previously these EFI-related folders were + hardcoded to be hidden on Linux. + Bugfixes: + * Ignore `/usr/bin/script` when detecting shell and terminal + (gh#fastfetch-cli/fastfetch#1761) + * Fix compatibility with KDE Plasma 6.4 which is in beta + currently (gh#fastfetch-cli/fastfetch#1765) + Logos: + * Add Kylin (gh#fastfetch-cli/fastfetch#1760) + * Add UBLinux (gh#fastfetch-cli/fastfetch#1764) + +------------------------------------------------------------------- Old: ---- fastfetch-2.43.0.tar.gz New: ---- fastfetch-2.44.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ fastfetch.spec ++++++ --- /var/tmp/diff_new_pack.1XGRjf/_old 2025-05-26 18:36:38.122195471 +0200 +++ /var/tmp/diff_new_pack.1XGRjf/_new 2025-05-26 18:36:38.126195639 +0200 @@ -17,7 +17,7 @@ Name: fastfetch -Version: 2.43.0 +Version: 2.44.0 Release: 0 Summary: Neofetch-like tool written mostly in C License: MIT ++++++ fastfetch-2.43.0.tar.gz -> fastfetch-2.44.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/CHANGELOG.md new/fastfetch-2.44.0/CHANGELOG.md --- old/fastfetch-2.43.0/CHANGELOG.md 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/CHANGELOG.md 2025-05-23 10:10:12.000000000 +0200 @@ -1,3 +1,18 @@ +# 2.44.0 + +Features: +* Add option `--disk-hide-folders` and `--disk-hide-fs` to hide specific mountpoints and filesystems in Disk module (Disk) + * `--disk-hide-folders` defaults to `/efi:/boot:/boot/efi` on Linux and *BSD. Previously these EFI-related folders were hardcoded to be hidden on Linux. + +Bugfixes: +* Fix Apple Terminal compatibility with `--stat` (macOS, #1755) +* Ignore `/usr/bin/script` when detecting shell and terminal (Terminal / Shell, #1761) +* Fix compatibility with KDE Plasma 6.4 which is in beta currently (Display, Linux, #1765) + +Logos: +* Add Kylin (#1760) +* Add UBLinux (#1764) + # 2.43.0 Features: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/CMakeLists.txt new/fastfetch-2.44.0/CMakeLists.txt --- old/fastfetch-2.43.0/CMakeLists.txt 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/CMakeLists.txt 2025-05-23 10:10:12.000000000 +0200 @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.12.0) # target_link_libraries with OBJECT libs & project homepage url project(fastfetch - VERSION 2.43.0 + VERSION 2.44.0 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.43.0/README.md new/fastfetch-2.44.0/README.md --- old/fastfetch-2.43.0/README.md 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/README.md 2025-05-23 10:10:12.000000000 +0200 @@ -21,6 +21,8 @@ <img src="screenshots/example3.png" width="48%" align="top" /> <img src="screenshots/example5.png" height="15%" align="top" /> +According configuration files for examples are located [here](https://github.com/fastfetch-cli/fastfetch/tree/dev/presets/examples). + There are [screenshots on different platforms](https://github.com/fastfetch-cli/fastfetch/wiki). ## Installation diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/completions/fastfetch.fish new/fastfetch-2.44.0/completions/fastfetch.fish --- old/fastfetch-2.43.0/completions/fastfetch.fish 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/completions/fastfetch.fish 2025-05-23 10:10:12.000000000 +0200 @@ -62,11 +62,17 @@ echo ' import json, subprocess, sys + def main(): data: dict[str, list[dict]] = json.loads(subprocess.check_output(["fastfetch", "--help-raw"])) for key in data: for flag in data[key]: + if flag["long"] == "logo-color-[1-9]": + for i in range(1, 10): + print(f"""complete -c fastfetch -d "{flag["desc"]}" -l "logo-color-{i}" -x -a "(__fastfetch_complete_color)" """) + continue + if flag.get("pseudo", False): continue @@ -75,7 +81,7 @@ command_prefix += f""" -o {flag["short"]}""" if "arg" in flag: - type: str = flag["arg"]["type"]; + type: str = flag["arg"]["type"] if type == "bool": print(f"{command_prefix} -x -a \"(__fastfetch_complete_bool)\"") elif type == "color": @@ -98,6 +104,7 @@ else: print(f"{command_prefix} -f") + if __name__ == "__main__": try: main() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/debian/changelog new/fastfetch-2.44.0/debian/changelog --- old/fastfetch-2.43.0/debian/changelog 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/debian/changelog 2025-05-23 10:10:12.000000000 +0200 @@ -1,3 +1,9 @@ +fastfetch (2.43.0) jammy; urgency=medium + + * Update to 2.43.0 + + -- Carter Li <zhangsong...@live.cn> Wed, 14 May 2025 09:49:50 +0800 + fastfetch (2.42.0) jammy; urgency=medium * Update to 2.42.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/debian/files new/fastfetch-2.44.0/debian/files --- old/fastfetch-2.43.0/debian/files 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/debian/files 2025-05-23 10:10:12.000000000 +0200 @@ -1 +1 @@ -fastfetch_2.42.0_source.buildinfo universe/utils optional +fastfetch_2.43.0_source.buildinfo universe/utils optional diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/doc/json_schema.json new/fastfetch-2.44.0/doc/json_schema.json --- old/fastfetch-2.43.0/doc/json_schema.json 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/doc/json_schema.json 2025-05-23 10:10:12.000000000 +0200 @@ -1754,6 +1754,14 @@ "type": "string", "description": "A colon (semicolon on Windows) separated list of folder paths for the disk output\nDefault: auto detection using mount-points\nThis option overrides other `show*` options" }, + "hideFolders": { + "type": "string", + "description": "A colon (semicolon on Windows) separated list of folder paths to hide from the disk output\nDefault: /efi:/boot:/boot/efi" + }, + "hideFS": { + "type": "string", + "description": "A colon separated file systems to hide from the disk output" + }, "showExternal": { "type": "boolean", "description": "Set if external volume should be printed", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/common/commandoption.c new/fastfetch-2.44.0/src/common/commandoption.c --- old/fastfetch-2.43.0/src/common/commandoption.c 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/src/common/commandoption.c 2025-05-23 10:10:12.000000000 +0200 @@ -134,7 +134,7 @@ int len = snprintf(str, sizeof str, "%.3fms", ms); if (thres > 0) snprintf(str, sizeof str, "\e[%sm%.3fms\e[m", (ms <= thres ? FF_COLOR_FG_GREEN : ms <= 2 * thres ? FF_COLOR_FG_YELLOW : FF_COLOR_FG_RED), ms); - printf("\e[s\e[1A\e[9999999C\e[%dD%s\e[u", len, str); // Save; Up 1; Right 9999999; Left <len>; Print <str>; Load + printf("\e7\e[1A\e[9999999C\e[%dD%s\e8", len, str); // Save; Up 1; Right 9999999; Left <len>; Print <str>; Load } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/common/jsonconfig.c new/fastfetch-2.44.0/src/common/jsonconfig.c --- old/fastfetch-2.43.0/src/common/jsonconfig.c 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/src/common/jsonconfig.c 2025-05-23 10:10:12.000000000 +0200 @@ -224,7 +224,7 @@ int len = snprintf(str, sizeof str, "%.3fms", ms); if (thres > 0) snprintf(str, sizeof str, "\e[%sm%.3fms\e[m", (ms <= thres ? FF_COLOR_FG_GREEN : ms <= 2 * thres ? FF_COLOR_FG_YELLOW : FF_COLOR_FG_RED), ms); - printf("\e[s\e[1A\e[9999999C\e[%dD%s\e[u", len, str); // Save; Up 1; Right 9999999; Left <len>; Print <str>; Load + printf("\e7\e[1A\e[9999999C\e[%dD%s\e8", len, str); // Save; Up 1; Right 9999999; Left <len>; Print <str>; Load } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/data/help.json new/fastfetch-2.44.0/src/data/help.json --- old/fastfetch-2.43.0/src/data/help.json 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/src/data/help.json 2025-05-23 10:10:12.000000000 +0200 @@ -841,6 +841,22 @@ } }, { + "long": "disk-hide-folders", + "desc": "A colon (semicolon on Windows) separated list of folder paths to hide from the disk output", + "arg": { + "type": "path", + "default": "/efi:/boot:/boot/efi" + } + }, + { + "long": "disk-hide-fs", + "desc": "A colon separated list of file systems to hide from the disk output", + "arg": { + "type": "string", + "default": "" + } + }, + { "long": "disk-show-regular", "desc": "Specify whether regular volumes should be displayed", "arg": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/detection/disk/disk.c new/fastfetch-2.44.0/src/detection/disk/disk.c --- old/fastfetch-2.43.0/src/detection/disk/disk.c 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/src/detection/disk/disk.c 2025-05-23 10:10:12.000000000 +0200 @@ -1,6 +1,6 @@ #include "disk.h" -bool ffDiskMatchMountpoint(FFDiskOptions* options, const char* mountpoint) +bool ffDiskMatchMountpoint(FFstrbuf* folders, const char* mountpoint) { #ifdef _WIN32 const char separator = ';'; @@ -11,12 +11,12 @@ uint32_t mountpointLength = (uint32_t) strlen(mountpoint); uint32_t startIndex = 0; - while(startIndex < options->folders.length) + while(startIndex < folders->length) { - uint32_t colonIndex = ffStrbufNextIndexC(&options->folders, startIndex, separator); + uint32_t colonIndex = ffStrbufNextIndexC(folders, startIndex, separator); uint32_t folderLength = colonIndex - startIndex; - if (folderLength == mountpointLength && memcmp(options->folders.chars + startIndex, mountpoint, mountpointLength) == 0) + if (folderLength == mountpointLength && memcmp(folders->chars + startIndex, mountpoint, mountpointLength) == 0) return true; startIndex = colonIndex + 1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/detection/disk/disk.h new/fastfetch-2.44.0/src/detection/disk/disk.h --- old/fastfetch-2.43.0/src/detection/disk/disk.h 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/src/detection/disk/disk.h 2025-05-23 10:10:12.000000000 +0200 @@ -28,4 +28,4 @@ const char* ffDetectDisks(FFDiskOptions* options, FFlist* disks /* list of FFDisk */); const char* ffDetectDisksImpl(FFDiskOptions* options, FFlist* disks); -bool ffDiskMatchMountpoint(FFDiskOptions* options, const char* mountpoint); +bool ffDiskMatchMountpoint(FFstrbuf* folders, const char* mountpoint); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/detection/disk/disk_bsd.c new/fastfetch-2.44.0/src/detection/disk/disk_bsd.c --- old/fastfetch-2.43.0/src/detection/disk/disk_bsd.c 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/src/detection/disk/disk_bsd.c 2025-05-23 10:10:12.000000000 +0200 @@ -145,7 +145,7 @@ { if(__builtin_expect(options->folders.length > 0, 0)) { - if(!ffDiskMatchMountpoint(options, fs->f_mntonname)) + if(!ffDiskMatchMountpoint(&options->folders, fs->f_mntonname)) continue; } else if(!ffStrEquals(fs->f_mntonname, "/") && !ffStrStartsWith(fs->f_mntfromname, "/dev/") && !ffStrEquals(fs->f_fstypename, "zfs")) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/detection/disk/disk_haiku.cpp new/fastfetch-2.44.0/src/detection/disk/disk_haiku.cpp --- old/fastfetch-2.43.0/src/detection/disk/disk_haiku.cpp 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/src/detection/disk/disk_haiku.cpp 2025-05-23 10:10:12.000000000 +0200 @@ -23,7 +23,7 @@ if (__builtin_expect(options->folders.length, 0)) { - if (!ffDiskMatchMountpoint(options, path.Path())) + if (!ffDiskMatchMountpoint(&options->folders, path.Path())) continue; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/detection/disk/disk_linux.c new/fastfetch-2.44.0/src/detection/disk/disk_linux.c --- old/fastfetch-2.43.0/src/detection/disk/disk_linux.c 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/src/detection/disk/disk_linux.c 2025-05-23 10:10:12.000000000 +0200 @@ -220,7 +220,7 @@ static void detectType(const FFlist* disks, FFDisk* currentDisk, struct mntent* device) { - if(ffStrbufStartsWithS(¤tDisk->mountpoint, "/boot") || ffStrbufStartsWithS(¤tDisk->mountpoint, "/efi")) + if(hasmntopt(device, "x-gvfs-hide") || hasmntopt(device, "hidden")) currentDisk->type = FF_DISK_VOLUME_TYPE_HIDDEN_BIT; else if(isSubvolume(disks, currentDisk)) currentDisk->type = FF_DISK_VOLUME_TYPE_SUBVOLUME_BIT; @@ -281,7 +281,7 @@ { if (__builtin_expect(options->folders.length, 0)) { - if (!ffDiskMatchMountpoint(options, device->mnt_dir)) + if (!ffDiskMatchMountpoint(&options->folders, device->mnt_dir)) continue; } else if(!isPhysicalDevice(device)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/detection/disk/disk_sunos.c new/fastfetch-2.44.0/src/detection/disk/disk_sunos.c --- old/fastfetch-2.43.0/src/detection/disk/disk_sunos.c 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/src/detection/disk/disk_sunos.c 2025-05-23 10:10:12.000000000 +0200 @@ -113,7 +113,7 @@ { if (__builtin_expect(options->folders.length, 0)) { - if (!ffDiskMatchMountpoint(options, device.mnt_mountp)) + if (!ffDiskMatchMountpoint(&options->folders, device.mnt_mountp)) continue; } else if(!isPhysicalDevice(&device)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/detection/disk/disk_windows.c new/fastfetch-2.44.0/src/detection/disk/disk_windows.c --- old/fastfetch-2.43.0/src/detection/disk/disk_windows.c 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/src/detection/disk/disk_windows.c 2025-05-23 10:10:12.000000000 +0200 @@ -47,7 +47,7 @@ if (__builtin_expect((long) options->folders.length, 0)) { - if (!ffDiskMatchMountpoint(options, buffer.chars)) + if (!ffDiskMatchMountpoint(&options->folders, buffer.chars)) continue; } else if(driveType == DRIVE_NO_ROOT_DIR) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/detection/displayserver/linux/wayland/kde-output-device-v2-client-protocol.h new/fastfetch-2.44.0/src/detection/displayserver/linux/wayland/kde-output-device-v2-client-protocol.h --- old/fastfetch-2.43.0/src/detection/displayserver/linux/wayland/kde-output-device-v2-client-protocol.h 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/src/detection/displayserver/linux/wayland/kde-output-device-v2-client-protocol.h 2025-05-23 10:10:12.000000000 +0200 @@ -5,7 +5,7 @@ #include <stdint.h> #include <stddef.h> -#include <wayland-util.h> +#include <wayland-client.h> #ifdef __cplusplus extern "C" { @@ -214,6 +214,26 @@ * @since 9 */ KDE_OUTPUT_DEVICE_V2_CAPABILITY_BRIGHTNESS = 0x80, + /** + * if this outputdevice supports the built-in color profile + * @since 12 + */ + KDE_OUTPUT_DEVICE_V2_CAPABILITY_BUILT_IN_COLOR = 0x100, + /** + * if this outputdevice supports DDC/CI + * @since 14 + */ + KDE_OUTPUT_DEVICE_V2_CAPABILITY_DDC_CI = 0x200, + /** + * if this outputdevice supports setting max bpc + * @since 15 + */ + KDE_OUTPUT_DEVICE_V2_CAPABILITY_MAX_BITS_PER_COLOR = 0x400, + /** + * if this outputdevice supports EDR + * @since 16 + */ + KDE_OUTPUT_DEVICE_V2_CAPABILITY_EDR = 0x800, }; /** * @ingroup iface_kde_output_device_v2 @@ -235,6 +255,22 @@ * @ingroup iface_kde_output_device_v2 */ #define KDE_OUTPUT_DEVICE_V2_CAPABILITY_BRIGHTNESS_SINCE_VERSION 9 +/** + * @ingroup iface_kde_output_device_v2 + */ +#define KDE_OUTPUT_DEVICE_V2_CAPABILITY_BUILT_IN_COLOR_SINCE_VERSION 12 +/** + * @ingroup iface_kde_output_device_v2 + */ +#define KDE_OUTPUT_DEVICE_V2_CAPABILITY_DDC_CI_SINCE_VERSION 14 +/** + * @ingroup iface_kde_output_device_v2 + */ +#define KDE_OUTPUT_DEVICE_V2_CAPABILITY_MAX_BITS_PER_COLOR_SINCE_VERSION 15 +/** + * @ingroup iface_kde_output_device_v2 + */ +#define KDE_OUTPUT_DEVICE_V2_CAPABILITY_EDR_SINCE_VERSION 16 #endif /* KDE_OUTPUT_DEVICE_V2_CAPABILITY_ENUM */ #ifndef KDE_OUTPUT_DEVICE_V2_VRR_POLICY_ENUM @@ -316,6 +352,18 @@ }; #endif /* KDE_OUTPUT_DEVICE_V2_COLOR_POWER_TRADEOFF_ENUM */ +#ifndef KDE_OUTPUT_DEVICE_V2_EDR_POLICY_ENUM +#define KDE_OUTPUT_DEVICE_V2_EDR_POLICY_ENUM +/** + * @ingroup iface_kde_output_device_v2 + * when the compositor may make use of EDR + */ +enum kde_output_device_v2_edr_policy { + KDE_OUTPUT_DEVICE_V2_EDR_POLICY_NEVER = 0, + KDE_OUTPUT_DEVICE_V2_EDR_POLICY_ALWAYS = 1, +}; +#endif /* KDE_OUTPUT_DEVICE_V2_EDR_POLICY_ENUM */ + /** * @ingroup iface_kde_output_device_v2 * @struct kde_output_device_v2_listener @@ -658,6 +706,74 @@ void (*dimming)(void *data, struct kde_output_device_v2 *kde_output_device_v2, uint32_t multiplier); + /** + * source output for mirroring + * + * + * @param source uuid of the source output + * @since 13 + */ + void (*replication_source)(void *data, + struct kde_output_device_v2 *kde_output_device_v2, + const char *source); + /** + * if DDC/CI should be used to control brightness etc. + * + * If the ddc_ci capability is present, this determines if + * settings such as brightness, contrast or others should be set + * using DDC/CI. + * @param allowed 1 if allowed, 0 if disabled + * @since 14 + */ + void (*ddc_ci_allowed)(void *data, + struct kde_output_device_v2 *kde_output_device_v2, + uint32_t allowed); + /** + * override max bpc + * + * This limits the amount of bits per color that are sent to the + * display. + * @param max_bpc 0 for the default / automatic + * @since 15 + */ + void (*max_bits_per_color)(void *data, + struct kde_output_device_v2 *kde_output_device_v2, + uint32_t max_bpc); + /** + * range of max bits per color value + * + * + * @param min_value the minimum supported by the driver + * @param max_value the maximum supported by the driver + * @since 15 + */ + void (*max_bits_per_color_range)(void *data, + struct kde_output_device_v2 *kde_output_device_v2, + uint32_t min_value, + uint32_t max_value); + /** + * if and to what value automatic max bpc is limited + * + * + * @param max_bpc_limit which value automatic bpc gets limited to. 0 if not limited + * @since 15 + */ + void (*automatic_max_bits_per_color_limit)(void *data, + struct kde_output_device_v2 *kde_output_device_v2, + uint32_t max_bpc_limit); + /** + * when the compositor may apply EDR + * + * When EDR is enabled, the compositor may increase the backlight + * beyond the user-specified setting, in order to present HDR + * content on displays without native HDR support. This will + * usually result in better visuals, but also increases battery + * usage. + * @since 16 + */ + void (*edr_policy)(void *data, + struct kde_output_device_v2 *kde_output_device_v2, + uint32_t policy); }; /** @@ -779,6 +895,30 @@ * @ingroup iface_kde_output_device_v2 */ #define KDE_OUTPUT_DEVICE_V2_DIMMING_SINCE_VERSION 11 +/** + * @ingroup iface_kde_output_device_v2 + */ +#define KDE_OUTPUT_DEVICE_V2_REPLICATION_SOURCE_SINCE_VERSION 13 +/** + * @ingroup iface_kde_output_device_v2 + */ +#define KDE_OUTPUT_DEVICE_V2_DDC_CI_ALLOWED_SINCE_VERSION 14 +/** + * @ingroup iface_kde_output_device_v2 + */ +#define KDE_OUTPUT_DEVICE_V2_MAX_BITS_PER_COLOR_SINCE_VERSION 15 +/** + * @ingroup iface_kde_output_device_v2 + */ +#define KDE_OUTPUT_DEVICE_V2_MAX_BITS_PER_COLOR_RANGE_SINCE_VERSION 15 +/** + * @ingroup iface_kde_output_device_v2 + */ +#define KDE_OUTPUT_DEVICE_V2_AUTOMATIC_MAX_BITS_PER_COLOR_LIMIT_SINCE_VERSION 15 +/** + * @ingroup iface_kde_output_device_v2 + */ +#define KDE_OUTPUT_DEVICE_V2_EDR_POLICY_SINCE_VERSION 16 /** @ingroup iface_kde_output_device_v2 */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/detection/displayserver/linux/wayland/kde-output-device-v2-protocol.c new/fastfetch-2.44.0/src/detection/displayserver/linux/wayland/kde-output-device-v2-protocol.c --- old/fastfetch-2.43.0/src/detection/displayserver/linux/wayland/kde-output-device-v2-protocol.c 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/src/detection/displayserver/linux/wayland/kde-output-device-v2-protocol.c 2025-05-23 10:10:12.000000000 +0200 @@ -60,12 +60,18 @@ { "brightness", "8u", kde_output_device_v2_types + 0 }, { "color_power_tradeoff", "10u", kde_output_device_v2_types + 0 }, { "dimming", "11u", kde_output_device_v2_types + 0 }, + { "replication_source", "13s", kde_output_device_v2_types + 0 }, + { "ddc_ci_allowed", "14u", kde_output_device_v2_types + 0 }, + { "max_bits_per_color", "15u", kde_output_device_v2_types + 0 }, + { "max_bits_per_color_range", "15uu", kde_output_device_v2_types + 0 }, + { "automatic_max_bits_per_color_limit", "15u", kde_output_device_v2_types + 0 }, + { "edr_policy", "16u", kde_output_device_v2_types + 0 }, }; WL_EXPORT const struct wl_interface kde_output_device_v2_interface = { - "kde_output_device_v2", 11, + "kde_output_device_v2", 16, 0, NULL, - 27, kde_output_device_v2_events, + 33, kde_output_device_v2_events, }; static const struct wl_message kde_output_device_mode_v2_events[] = { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/detection/displayserver/linux/wayland/kde-output.c new/fastfetch-2.44.0/src/detection/displayserver/linux/wayland/kde-output.c --- old/fastfetch-2.43.0/src/detection/displayserver/linux/wayland/kde-output.c 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/src/detection/displayserver/linux/wayland/kde-output.c 2025-05-23 10:10:12.000000000 +0200 @@ -137,6 +137,12 @@ display->hdrEnabled = !!hdr_enabled; } +static void waylandKdeMaxBitsPerColorListener(void *data, FF_MAYBE_UNUSED struct kde_output_device_v2 *kde_output_device_v2, uint32_t max_bpc) +{ + WaylandDisplay* display = data; + display->bitDepth = (uint8_t) max_bpc; +} + static struct kde_output_device_v2_listener outputListener = { .geometry = waylandKdeGeometryListener, .current_mode = waylandKdeCurrentModeListener, @@ -165,6 +171,12 @@ .brightness = (void*) stubListener, .color_power_tradeoff = (void*) stubListener, .dimming = (void*) stubListener, + .replication_source = (void*) stubListener, + .ddc_ci_allowed = (void*) stubListener, + .max_bits_per_color = (void*) waylandKdeMaxBitsPerColorListener, + .max_bits_per_color_range = (void*) stubListener, + .automatic_max_bits_per_color_limit = (void*) stubListener, + .edr_policy = (void*) stubListener, }; const char* ffWaylandHandleKdeOutput(WaylandData* wldata, struct wl_registry* registry, uint32_t name, uint32_t version) @@ -237,6 +249,7 @@ item->manufactureYear = display.myear; item->manufactureWeek = display.mweek; item->serial = display.serial; + item->bitDepth = display.bitDepth; } ffStrbufDestroy(&display.description); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/detection/displayserver/linux/wayland/wayland.h new/fastfetch-2.44.0/src/detection/displayserver/linux/wayland/wayland.h --- old/fastfetch-2.43.0/src/detection/displayserver/linux/wayland/wayland.h 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/src/detection/displayserver/linux/wayland/wayland.h 2025-05-23 10:10:12.000000000 +0200 @@ -34,6 +34,7 @@ typedef struct WaylandDisplay { WaylandData* parent; + void* internal; int32_t width; int32_t height; int32_t refreshRate; @@ -55,7 +56,7 @@ uint16_t myear; uint16_t mweek; uint32_t serial; - void* internal; + uint8_t bitDepth; } WaylandDisplay; inline static void stubListener(void* data, ...) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/detection/terminalshell/terminalshell_linux.c new/fastfetch-2.44.0/src/detection/terminalshell/terminalshell_linux.c --- old/fastfetch-2.43.0/src/detection/terminalshell/terminalshell_linux.c 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/src/detection/terminalshell/terminalshell_linux.c 2025-05-23 10:10:12.000000000 +0200 @@ -55,9 +55,10 @@ ffStrbufEqualS(&result->processName, "valgrind") || ffStrbufEqualS(&result->processName, "fastfetch") || //994 ffStrbufEqualS(&result->processName, "flashfetch") || + ffStrbufEqualS(&result->processName, "proot") || + ffStrbufEqualS(&result->processName, "script") || ffStrbufContainS(&result->processName, "debug") || ffStrbufContainS(&result->processName, "command-not-") || - ffStrbufEqualS(&result->processName, "proot") || ffStrbufEndsWithS(&result->processName, ".sh") ) { @@ -107,6 +108,7 @@ ffStrbufEqualS(&result->processName, "clifm") || // https://github.com/leo-arch/clifm/issues/289 ffStrbufEqualS(&result->processName, "chezmoi") || // #762 ffStrbufEqualS(&result->processName, "proot") || + ffStrbufEqualS(&result->processName, "script") || #ifdef __linux__ ffStrbufStartsWithS(&result->processName, "flatpak-") || // #707 #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/logo/ascii/kylin.txt new/fastfetch-2.44.0/src/logo/ascii/kylin.txt --- old/fastfetch-2.43.0/src/logo/ascii/kylin.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/fastfetch-2.44.0/src/logo/ascii/kylin.txt 2025-05-23 10:10:12.000000000 +0200 @@ -0,0 +1,22 @@ + $1++ + $2* *** + $2******* + $2*******$1++ + $2********$1+$3=== + $2******$1#$2*$1+$3====== + $2*******$1#$2***$1++$3=== + $2*********$1+$2**$3=== + $1##$2*********$1##$3== $3====$1+ +$4%$1##$2****$1++$3==$1+$2****$1# $2***$1+$3=$2** +$1#$2****$1++$3=====$1++$2****$1## $2******** +$1####$2*$1+$3=======$1+$2******$3===$1- $2***$1#$2*$1##$2**** + $1#$4%$1#$2******$1+$2**$1+$3==$1++$2**$3=======$1+$2*$1+$2*$1#$4% + $4%$1#$2****$1+$2******$3=====$1+$3====$1+++$3==$2** + $1#$2*********$1##$2***$1###$2********$1##$4% + $2***$1##$4%$1#$4%%%%$2*****$1#$2*$1###$2*****$1#$4% + $2*$1#$4%%%$1#$4%%%%%$2**** $4%%$2*******$1#$4% + $1#$4%%%%%% $4%%%$1##$2***$1###$4%% + $2**$1#$4% $4%%%%$1#$4% $2**$1#$2**$1## + $1###$4%% $4%%%%%$1 $4%%%$2*** + $4%%%%%% $4%%%%%%%$1 $4%%%%$1#$2* + $4%%%%%% $4%%%%%%$1+$3= \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/logo/ascii/ublinux.txt new/fastfetch-2.44.0/src/logo/ascii/ublinux.txt --- old/fastfetch-2.43.0/src/logo/ascii/ublinux.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/fastfetch-2.44.0/src/logo/ascii/ublinux.txt 2025-05-23 10:10:12.000000000 +0200 @@ -0,0 +1,19 @@ +$1 UUU +$1 UUUUUUUUUUU +$1 UUUUUUUUUUUUUUUUU +$1 UUUUUUUUUUUUUUUUUUUUUUUUU +$1UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU$3#. +$1UU$2BBBBB$1UUUUUU$2BBBBBBBBBBB.$1UUUUUU$3## +$1UU$2BBBBB$1UUUUUU$2BBBBBBBBBBBBB:$1UUUU$3## +$1UU$2BBBBB$1UUUUUU$2BBBBB$1UUUU$2BBBBB$1UUUU$3## +$1UU$2BBBBB$1UUUUUU$2BBBBB$1UUUU$2BBBBB$1UUUU$3## +$1UU$2BBBBB$1UUUUUU$2BBBBBBBBBBBB$1UUUUUU$3## +$1UU$2BBBBB$1UUUUUU$2BBBBB$1UUUU,$2BBBB.$1UUU$3## +$1UUU$2BBBBB$1UUUUU$2BBBBB$1UUUUU$2BBBBB$1UUU$3## +$1UUU$2BBBBB$1UUUUU$2BBBBB$1UUUUU$2BBBBB$1UUU$3## +$1UUU#$2BBBBBBBBBBBBBBBBBBBBBBB$1UUUU$3## +$1UUUUUU$2'BBBBBBBBBBBBBBBB'$1UUUUUUU$3## +$1 UUUUUUUUUUUUUUUUUUUUUUUUU$3##' +$1 UUUUUUUUUUUUUUUUU$3###' +$1 UUUUUUUUUUU$3###' +$1 UUU$3###' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/logo/ascii/ublinux_small.txt new/fastfetch-2.44.0/src/logo/ascii/ublinux_small.txt --- old/fastfetch-2.43.0/src/logo/ascii/ublinux_small.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/fastfetch-2.44.0/src/logo/ascii/ublinux_small.txt 2025-05-23 10:10:12.000000000 +0200 @@ -0,0 +1,11 @@ +$1 UUUU +$1 UUUUUUUUUU +$1 $2BBB$1UUUU$2BBBBBB$1UU$3# +$1U$2BBB$1UUUU$2BBB$1UUU$2B$1UU$3# +$1U$2BBB$1UUUU$2BBB$1UUU$2B$1UU$3# +$1U$2BBB$1UUUU$2BBBBBB$1UUU$3# +$1U$2BBB$1UUUU$2BBB$1UUU$2BB$1U$3# +$1UU$2BBB$1UUU$2BBB$1UUU$2BB$1U$3# +$1 UU$2BBBBBBBBBBB$1UU$3# +$1 UUUUUUUUU$3# +$1 UUU$3# diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/logo/builtin.c new/fastfetch-2.44.0/src/logo/builtin.c --- old/fastfetch-2.43.0/src/logo/builtin.c 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/src/logo/builtin.c 2025-05-23 10:10:12.000000000 +0200 @@ -2516,6 +2516,19 @@ .colorKeys = FF_COLOR_FG_BLUE, .colorTitle = FF_COLOR_FG_BLUE, }, + // Kylin + { + .names = {"Kylin", "kylin"}, + .lines = FASTFETCH_DATATEXT_LOGO_KYLIN, + .colors = { + FF_COLOR_FG_BLUE, + FF_COLOR_FG_CYAN, + FF_COLOR_FG_WHITE, + FF_COLOR_FG_LIGHT_BLACK + }, + .colorKeys = FF_COLOR_FG_BLUE, + .colorTitle = FF_COLOR_FG_BLUE, + }, // LAST {}, }; @@ -4722,6 +4735,31 @@ }; static const FFlogo U[] = { + // UBLinux + { + .names = {"UBLinux"}, + .lines = FASTFETCH_DATATEXT_LOGO_UBLINUX, + .colors = { + FF_COLOR_FG_256 "38", + FF_COLOR_FG_WHITE, + FF_COLOR_FG_LIGHT_BLACK, + }, + .colorKeys = FF_COLOR_FG_256 "38", + .colorTitle = FF_COLOR_FG_WHITE, + }, + // UBLinuxSmall + { + .names = {"UBLinux_small"}, + .type = FF_LOGO_LINE_TYPE_SMALL_BIT, + .lines = FASTFETCH_DATATEXT_LOGO_UBLINUX_SMALL, + .colors = { + FF_COLOR_FG_256 "38", + FF_COLOR_FG_WHITE, + FF_COLOR_FG_LIGHT_BLACK, + }, + .colorKeys = FF_COLOR_FG_256 "38", + .colorTitle = FF_COLOR_FG_WHITE, + }, // Ubuntu { .names = {"ubuntu", "ubuntu-linux"}, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/modules/disk/disk.c new/fastfetch-2.44.0/src/modules/disk/disk.c --- old/fastfetch-2.43.0/src/modules/disk/disk.c 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/src/modules/disk/disk.c 2025-05-23 10:10:12.000000000 +0200 @@ -179,6 +179,12 @@ if(__builtin_expect(options->folders.length == 0, 1) && (disk->type & ~options->showTypes)) continue; + if (options->hideFolders.length && ffDiskMatchMountpoint(&options->hideFolders, disk->mountpoint.chars)) + continue; + + if (options->hideFS.length && ffStrbufMatchSeparated(&disk->filesystem, &options->hideFS, ':')) + continue; + printDisk(options, disk, ++index); } } @@ -205,6 +211,18 @@ return true; } + if (ffStrEqualsIgnCase(subKey, "hide-folders")) + { + ffOptionParseString(key, value, &options->hideFolders); + return true; + } + + if (ffStrEqualsIgnCase(subKey, "hide-fs")) + { + ffOptionParseString(key, value, &options->hideFS); + return true; + } + if (ffStrEqualsIgnCase(subKey, "show-regular")) { if (ffOptionParseBoolean(value)) @@ -293,6 +311,18 @@ continue; } + if (ffStrEqualsIgnCase(key, "hideFolders")) + { + ffStrbufSetS(&options->hideFolders, yyjson_get_str(val)); + continue; + } + + if (ffStrEqualsIgnCase(key, "hideFS")) + { + ffStrbufSetS(&options->hideFS, yyjson_get_str(val)); + continue; + } + if (ffStrEqualsIgnCase(key, "showExternal")) { if (yyjson_get_bool(val)) @@ -382,6 +412,12 @@ if (!ffStrbufEqual(&options->folders, &defaultOptions.folders)) yyjson_mut_obj_add_strbuf(doc, module, "folders", &options->folders); + if (!ffStrbufEqual(&options->hideFolders, &defaultOptions.hideFolders)) + yyjson_mut_obj_add_strbuf(doc, module, "hideFolders", &options->hideFolders); + + if (!ffStrbufEqual(&options->hideFS, &defaultOptions.hideFS)) + yyjson_mut_obj_add_strbuf(doc, module, "hideFS", &options->hideFS); + if (defaultOptions.calcType != options->calcType) yyjson_mut_obj_add_bool(doc, module, "useAvailable", options->calcType == FF_DISK_CALC_TYPE_AVAILABLE); @@ -496,6 +532,12 @@ ffOptionInitModuleArg(&options->moduleArgs, ""); ffStrbufInit(&options->folders); + #if _WIN32 || __APPLE__ || __ANDROID__ + ffStrbufInit(&options->hideFolders); + #else + ffStrbufInitStatic(&options->hideFolders, "/efi:/boot:/boot/efi"); + #endif + ffStrbufInit(&options->hideFS); options->showTypes = FF_DISK_VOLUME_TYPE_REGULAR_BIT | FF_DISK_VOLUME_TYPE_EXTERNAL_BIT | FF_DISK_VOLUME_TYPE_READONLY_BIT; options->calcType = FF_DISK_CALC_TYPE_FREE; options->percent = (FFPercentageModuleConfig) { 50, 80, 0 }; @@ -504,4 +546,7 @@ void ffDestroyDiskOptions(FFDiskOptions* options) { ffOptionDestroyModuleArg(&options->moduleArgs); + ffStrbufDestroy(&options->folders); + ffStrbufDestroy(&options->hideFolders); + ffStrbufDestroy(&options->hideFS); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/modules/disk/option.h new/fastfetch-2.44.0/src/modules/disk/option.h --- old/fastfetch-2.43.0/src/modules/disk/option.h 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/src/modules/disk/option.h 2025-05-23 10:10:12.000000000 +0200 @@ -29,6 +29,8 @@ FFModuleArgs moduleArgs; FFstrbuf folders; + FFstrbuf hideFolders; + FFstrbuf hideFS; FFDiskVolumeType showTypes; FFDiskCalcType calcType; FFPercentageModuleConfig percent; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/util/FFstrbuf.c new/fastfetch-2.44.0/src/util/FFstrbuf.c --- old/fastfetch-2.43.0/src/util/FFstrbuf.c 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/src/util/FFstrbuf.c 2025-05-23 10:10:12.000000000 +0200 @@ -607,3 +607,32 @@ return changed; } + +/// @brief Check if a separated string contains a substring. +/// @param strbuf The substring to check. +/// @param compLength The length of the separated string to check. +/// @param comp The separated string to check. +/// @param separator The separator character. +bool ffStrbufMatchSeparatedNS(const FFstrbuf* strbuf, uint32_t compLength, const char* comp, char separator) +{ + if (strbuf->length == 0) + return true; + + if (compLength == 0) + return false; + + for (const char* p = comp; p < comp + compLength;) + { + const char* colon = memchr(p, separator, compLength); + if (colon == NULL) + return strcmp(strbuf->chars, p) == 0; + + uint32_t substrLength = (uint32_t) (colon - p); + if (strbuf->length == substrLength && memcmp(strbuf->chars, p, substrLength) == 0) + return true; + + p = colon + 1; + } + + return false; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/src/util/FFstrbuf.h new/fastfetch-2.44.0/src/util/FFstrbuf.h --- old/fastfetch-2.43.0/src/util/FFstrbuf.h 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/src/util/FFstrbuf.h 2025-05-23 10:10:12.000000000 +0200 @@ -92,6 +92,7 @@ bool ffStrbufGetline(char** lineptr, size_t* n, FFstrbuf* buffer); void ffStrbufGetlineRestore(char** lineptr, size_t* n, FFstrbuf* buffer); bool ffStrbufRemoveDupWhitespaces(FFstrbuf* strbuf); +bool ffStrbufMatchSeparatedNS(const FFstrbuf* strbuf, uint32_t compLength, const char* comp, char separator); FF_C_NODISCARD static inline FFstrbuf ffStrbufCreateA(uint32_t allocate) { @@ -506,4 +507,14 @@ ffStrbufTrimLeft(strbuf, c); } +static inline bool ffStrbufMatchSeparatedS(const FFstrbuf* strbuf, const char* comp, char separator) +{ + return ffStrbufMatchSeparatedNS(strbuf, (uint32_t) strlen(comp), comp, separator); +} + +static inline bool ffStrbufMatchSeparated(const FFstrbuf* strbuf, const FFstrbuf* comp, char separator) +{ + return ffStrbufMatchSeparatedNS(strbuf, comp->length, comp->chars, separator); +} + #define FF_STRBUF_AUTO_DESTROY FFstrbuf __attribute__((__cleanup__(ffStrbufDestroy))) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fastfetch-2.43.0/tests/strbuf.c new/fastfetch-2.44.0/tests/strbuf.c --- old/fastfetch-2.43.0/tests/strbuf.c 2025-05-14 03:41:33.000000000 +0200 +++ new/fastfetch-2.44.0/tests/strbuf.c 2025-05-23 10:10:12.000000000 +0200 @@ -635,6 +635,20 @@ VERIFY(ffStrbufEqualS(&newStr, "")); } + { + ffStrbufSetStatic(&strbuf, "abc"); + VERIFY(ffStrbufMatchSeparatedS(&strbuf, "abc:def:ghi", ' ') == false); + VERIFY(ffStrbufMatchSeparatedS(&strbuf, "abc:def:ghi", ':') == true); + VERIFY(ffStrbufMatchSeparatedS(&strbuf, "def:ghi", ' ') == false); + VERIFY(ffStrbufMatchSeparatedS(&strbuf, "def:ghi", ':') == false); + VERIFY(ffStrbufMatchSeparatedS(&strbuf, "def", ':') == false); + VERIFY(ffStrbufMatchSeparatedS(&strbuf, "abc", ':') == true); + VERIFY(ffStrbufMatchSeparatedS(&strbuf, "", ' ') == false); + VERIFY(ffStrbufMatchSeparatedS(&strbuf, ":abc:", ':') == true); + VERIFY(ffStrbufMatchSeparatedS(&strbuf, "abc:", ':') == true); + VERIFY(ffStrbufMatchSeparatedS(&strbuf, ":abc", ':') == true); + } + //Success puts("\e[32mAll tests passed!" FASTFETCH_TEXT_MODIFIER_RESET); }