Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
6362c89
Packaging: updates debian stuff [ci skip]
CarterLi Jan 14, 2026
de6d066
LICENSE: update copyright year to 2026 [ci skip]
CarterLi Jan 14, 2026
2459141
FFstrbuf: clarify usage requirements for `ffStrbufGetdelim` and friends
CarterLi Jan 15, 2026
79a11c4
CommandOption: adds a new option `--structure-disabled` (WIP)
CarterLi Jan 15, 2026
d3453de
Global: puts more fastfetch-only properties into `FFdata`
CarterLi Jan 15, 2026
a20d915
JsonConfig: supports `--structure-disabled`
CarterLi Jan 15, 2026
31e833c
Colors: updates module description
CarterLi Jan 15, 2026
f027322
JsonSchema: update [ci skip]
CarterLi Jan 15, 2026
508a3fd
Windows: fixes building
CarterLi Jan 15, 2026
7592885
GPU (Windows): ensures `devId` is uppercase for consistent parsing
CarterLi Jan 15, 2026
4eaa04d
Presets: update examples to replace deprecated `--load-config` with `…
krekhovx Jan 15, 2026
25671fa
DisplayServer (Linux): fixes crashes on KDE beta
CarterLi Jan 16, 2026
67f16b2
DisplayServer (Linux): regenerates `wlr-output-management-unstable-v1*`
CarterLi Jan 16, 2026
0f3db37
Chassis (Linux): supports arm devices
CarterLi Jan 16, 2026
461552b
DynamicInterval: reruns `prepare` code before next interval
CarterLi Jan 16, 2026
70b4582
DE (Linux): removes option `slowVersionDetection`
CarterLi Jan 19, 2026
3b9a91e
DE (Linux): silences compiler warnings [ci skip]
CarterLi Jan 20, 2026
927d44d
Chassis (Linux): uses `/proc/device-tree/smbios` if available
CarterLi Jan 20, 2026
a313fd1
Linux: uses the standard `/sys/firmware/devicetree/base` instead of t…
CarterLi Jan 20, 2026
f0e3d3d
Host (Linux): uses `/sys/firmware/devicetree/base/smbios` if available
CarterLi Jan 20, 2026
4445e1e
Fix Bedrock Linux version detection & futureproof for 0.8
6epe3ka Jan 16, 2026
bae80e2
Add new KISS Linux logo based off favicon
6epe3ka Jan 16, 2026
3a865df
Packages (Linux): Auto detect the DBPath directory for pacman on arch…
It-is-Sean Jan 20, 2026
e851f3a
Packages (Linux): optimises pacman detection code
CarterLi Jan 20, 2026
2a82009
WM (macOS): checks the version of WindowServer instead of WindowManager
CarterLi Jan 21, 2026
f08a1fb
Release: v2.58.0
CarterLi Jan 21, 2026
e26a05e
DE (Linux): ensures process returns successfully before using its output
CarterLi Jan 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,25 @@
# 2.58.0

An early release to fix compatibility issues with KDE Plasma 6.6.

Breaking changes:
* The `de.slowVersionDetection` option has been removed. Slow version detection is now always enabled, as required on non-FHS-compliant distros (e.g., NixOS). (#2149, DE, Linux)

Features:
* Adds the `--structure-disabled <modules...>` command-line flag to temporarily disable module structure printing.
* For example: `fastfetch --structure-disabled colors` removes the color blocks from the default output.
* Supports chassis type detection on Linux ARM devices when reported via the device tree (Chassis, Linux)
* Supports Bedrock Linux version detection (#2155, OS, Linux)
* Honors the `DBPath` and `RootDir` settings in `pacman.conf` when detecting Pacman packages (#2154, Packages, Linux)

Bugfixes:
* Fixes a crash issues on KDE Plasma 6.6 (Display, Linux)
* Fixes the Command module not working with `--dynamic-interval` (#2152, Command)
* Fixes Quartz Compositor version detection. It now correctly reports the version of `WindowServer` (`SkyLight`) instead of `WindowManager`. (WM, macOS)

Logos:
* Adds Kiss2

# 2.57.1

Features:
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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.1
VERSION 2.58.0
LANGUAGES C
DESCRIPTION "Fast neofetch-like system information tool"
HOMEPAGE_URL "https://github.com/fastfetch-cli/fastfetch"
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
MIT License

Copyright (c) 2021-2023 Linus Dierheimer
Copyright (c) 2022-2025 Carter Li
Copyright (c) 2022-2026 Carter Li

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
6 changes: 6 additions & 0 deletions debian/changelog.tpl
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
fastfetch (2.57.1~#UBUNTU_CODENAME#) #UBUNTU_CODENAME#; urgency=medium

* Update to 2.57.1

-- Carter Li <zhangsongcui@live.cn> Wed, 14 Jan 2026 14:00:17 +0800

fastfetch (2.57.0~#UBUNTU_CODENAME#) #UBUNTU_CODENAME#; urgency=medium

* Update to 2.57.0
Expand Down
2 changes: 1 addition & 1 deletion doc/json_schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -1999,7 +1999,7 @@
"additionalProperties": false,
"properties": {
"type": {
"description": "Print some colored blocks",
"description": "Display the terminal's 16-color palette",
"const": "colors"
},
"symbol": {
Expand Down
2 changes: 1 addition & 1 deletion presets/examples/10.jsonc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Load with --load-config examples/2.jsonc
// Load with --config examples/2.jsonc
// Note that you must replace the image path to an existing image to display it.

{
Expand Down
2 changes: 1 addition & 1 deletion presets/examples/2.jsonc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Load with --load-config examples/2.jsonc
// Load with --config examples/2.jsonc
// Note that you must replace the image path to an existing image to display it.

{
Expand Down
2 changes: 1 addition & 1 deletion presets/examples/3.jsonc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Load with --load-config examples/3.jsonc
// Load with --config examples/3.jsonc

{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
Expand Down
2 changes: 1 addition & 1 deletion presets/examples/4.jsonc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Load with --load-config examples/4.jsonc
// Load with --config examples/4.jsonc

{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
Expand Down
2 changes: 1 addition & 1 deletion presets/examples/5.jsonc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Load with --load-config examples/5.jsonc
// Load with --config examples/5.jsonc

{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
Expand Down
2 changes: 1 addition & 1 deletion presets/examples/6.jsonc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Load with --load-config examples/2.jsonc
// Load with --config examples/2.jsonc
// Note that you must replace the image path to an existing image to display it.

{
Expand Down
2 changes: 1 addition & 1 deletion presets/examples/7.jsonc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Load with --load-config examples/2.jsonc
// Load with --config examples/2.jsonc
// Note that you must replace the image path to an existing image to display it.

{
Expand Down
2 changes: 1 addition & 1 deletion src/common/FFPlatform.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ typedef struct FFPlatform
FFstrbuf cacheDir; // Trailing slash included
FFlist configDirs; // List of FFstrbuf, trailing slash included
FFlist dataDirs; // List of FFstrbuf, trailing slash included
FFstrbuf exePath; // The real path of current exe
FFstrbuf exePath; // The real path of current exe (empty if unavailable)

FFstrbuf userName;
FFstrbuf fullUserName;
Expand Down
16 changes: 12 additions & 4 deletions src/common/FFstrbuf.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,10 @@ FF_C_NODISCARD uint64_t ffStrbufToUInt(const FFstrbuf* strbuf, uint64_t defaultV
void ffStrbufUpperCase(FFstrbuf* strbuf);
void ffStrbufLowerCase(FFstrbuf* strbuf);

// Function alters the buffer to extract lines or delimited segments (replaces the delimiter with '\0')
// so that buffer MUST be heap allocated (NOT a static string)
// `lineptr` must be `NULL` and `n` MUST be `0` for the first call
// Caller MUST NOT free `*lineptr`
bool ffStrbufGetdelim(char** lineptr, size_t* n, char delimiter, FFstrbuf* buffer);
void ffStrbufGetdelimRestore(char** lineptr, size_t* n, char delimiter, FFstrbuf* buffer);

Expand All @@ -111,10 +115,14 @@ void ffStrbufGetdelimRestore(char** lineptr, size_t* n, char delimiter, FFstrbuf
*
* @details Behaves like getline(3) but reads from a FFstrbuf.
*
* @param[in,out] lineptr The pointer to a pointer that will be set to the start of the line.
* Can be NULL for the first call.
* @param[in,out] lineptr The pointer to a pointer that will be set to the start of the line
(points to buffer's internal memory address to avoid memory allocation and copy).
MUST NOT be freed by the caller, unlike `getline(3)`.
* MUST be NULL for the first call.
* @param[in,out] n The pointer to the size of the buffer of lineptr.
* @param[in] buffer The buffer to read from. The buffer must not be a string literal.
MUST be 0 for the first call.
* @param[in] buffer The buffer to read from.
MUST be heap allocated (NOT a static string).
*
* @return true if a line has been read, false if the end of the buffer has been reached.
*/
Expand All @@ -124,7 +132,7 @@ static inline bool ffStrbufGetline(char** lineptr, size_t* n, FFstrbuf* buffer)
}
/**
* @brief Restore the end of a line that was modified by ffStrbufGetline.
* @warning This function should be called before breaking an ffStrbufGetline loop.
* @warning This function should be called before breaking an ffStrbufGetline loop if `buffer` will be used later.
*/
static inline void ffStrbufGetlineRestore(char** lineptr, size_t* n, FFstrbuf* buffer)
{
Expand Down
13 changes: 3 additions & 10 deletions src/common/commandoption.h
Original file line number Diff line number Diff line change
@@ -1,15 +1,8 @@
#pragma once

#include "fastfetch.h"

// Things only needed by fastfetch
typedef struct FFdata
{
FFstrbuf structure;
bool configLoaded;
} FFdata;
#include "common/ffdata.h"

void ffPrepareCommandOption(FFdata* data);
void ffPrintCommandOption(FFdata* data, yyjson_mut_doc* jsonDoc);
void ffMigrateCommandOptionToJsonc(FFdata* data, yyjson_mut_doc* jsonDoc);
void ffPrintCommandOption(FFdata* data);
void ffMigrateCommandOptionToJsonc(FFdata* data);
bool ffParseModuleOptions(const char* key, const char* value);
24 changes: 24 additions & 0 deletions src/common/ffdata.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#pragma once

#include "common/FFstrbuf.h"

typedef enum __attribute__((__packed__)) FFDataResultDocType
{
FF_RESULT_DOC_TYPE_DEFAULT = 0,
FF_RESULT_DOC_TYPE_JSON,
FF_RESULT_DOC_TYPE_CONFIG,
FF_RESULT_DOC_TYPE_CONFIG_FULL,
} FFDataResultDocType;

// FFdata aggregates configuration, generation parameters, and output state used by fastfetch.
// It holds the parsed configuration document, a mutable JSON document for results, and related metadata.
typedef struct FFdata
{
yyjson_doc* configDoc; // Parsed JSON configuration document
yyjson_mut_doc* resultDoc; // Mutable JSON document for storing results
FFstrbuf structure; // Custom output structure from command line
FFstrbuf structureDisabled; // Disabled modules in the output structure from command line
FFstrbuf genConfigPath; // Path to generate configuration file
FFDataResultDocType docType; // Type of result document
bool configLoaded;
} FFdata;
Loading
Loading