Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
6979b1e
Dep (3rdparty): upgrades display-library
CarterLi Apr 26, 2026
ba7e1eb
Netif (Windows): correctly selects lowest-metric default route on IPv4
CarterLi Apr 26, 2026
8b61189
Packages (Linux): adds `cards` counting (NuTyX) (#2287)
tnut Apr 27, 2026
0db820a
Binary: skips short string entirely to improve performance
CarterLi Apr 27, 2026
039fa1b
CommandOption: generates JSON result entry even for unknown modules
CarterLi Apr 27, 2026
c10027f
JsonConfig: fixes `CPUUsage` preparation never executed
CarterLi Apr 27, 2026
37ee193
DBus: improves message handling
CarterLi Apr 27, 2026
ffc38eb
FFlist: add `__restrict`
CarterLi Apr 27, 2026
08b79ff
Platform (OpenBSD): silences a compiler warning
CarterLi Apr 27, 2026
4eebc1b
Platform (Windows): adds comments
CarterLi Apr 27, 2026
3883047
Platform: initializes `pageSize`
CarterLi Apr 27, 2026
d79e1d7
FFstrbuf: improves robustness of `ffStrbufMatchSeparatedNS`
CarterLi Apr 27, 2026
31c7354
Font: improves `pt` handling
CarterLi Apr 27, 2026
c4c934d
Format: fixes `UINT64` handling
CarterLi Apr 27, 2026
181b775
Init: don't print unecessary ANSI escape codes
CarterLi Apr 27, 2026
e1dffe7
Library: improves code quality
CarterLi Apr 27, 2026
414f7ce
Netif: improves code quality
CarterLi Apr 27, 2026
4ee7dd7
IO: improves code quality & reliablity
CarterLi Apr 28, 2026
94ceeb4
Chore: fixes typo from `FF_UNITIALIZED` to `FF_UNINITIALIZED` (#2290)
Or-simen Apr 28, 2026
594c734
Netif: fixes compiler warnings
CarterLi Apr 28, 2026
55e4896
Chore: runs `clang-format`
CarterLi Apr 28, 2026
e7cd5f6
Bluetooth (Windows): uses CM API to detect BTH battery detection
CarterLi Apr 28, 2026
6e50aaf
Brightness (Windows): uses COM-less method to query WMI
CarterLi Apr 28, 2026
24ec0e6
Common (Windows): removes old COM based WMI query implementation
CarterLi Apr 28, 2026
2e4dd1d
Chore: silenses compiler warnings
CarterLi Apr 28, 2026
69cc19d
Brightness (Windows): cleanups debug log
CarterLi Apr 29, 2026
025febc
Battery (Windows): switches to query WMI with NtApi as a fast path
CarterLi Apr 29, 2026
d9eccd7
Battery (Windows): removes option `useSetupApi`
CarterLi Apr 29, 2026
ab5cf94
Networking: improves reliablity
CarterLi Apr 29, 2026
e91f62a
Option: improve reliablity
CarterLi Apr 29, 2026
6cb186f
Parsing: improves reliablity
CarterLi Apr 29, 2026
c514185
Path: removes dead code
CarterLi Apr 29, 2026
dfff57d
Percent: improve reliability
CarterLi Apr 29, 2026
e694c8a
Properties: fixes a typo
CarterLi Apr 30, 2026
3d6bffe
Settings: fixes DBusMessage reply leaks in XFConf functions
CarterLi Apr 30, 2026
cd25803
Option: adds a missing validation
CarterLi Apr 30, 2026
b68ad36
Sysctl: returns error on failed string fetch and removes malloc null …
CarterLi Apr 30, 2026
14b8bb2
Temps: validates temp color thresholds as integers in JSON parsing
CarterLi Apr 30, 2026
42f2e5a
Netif (macOS): improves reliability
CarterLi Apr 30, 2026
383a419
Comon (macOS): tidy
CarterLi Apr 30, 2026
994bd53
Media (Windows): major code refactor
CarterLi Apr 30, 2026
fe1c5c8
Media (Windows): improves readability
CarterLi May 1, 2026
3cddf31
Add ASCII logo for KibaOS (#2294)
christopherfoxjr May 1, 2026
0dd8d80
Logo (Builtin): correctly detects GNOME OS (#2296)
vixalien May 1, 2026
90e2d8f
OS (Linux): detects Ubuntu Studio before Kubuntu on KDE systems (#2298)
Iamliuxiaozhen May 2, 2026
08e252a
OS (Linux): adds Ubuntu Kylin detection
CarterLi May 2, 2026
0557f16
OS (Linux): adds Ubuntu Unity detection
CarterLi May 2, 2026
2e6b9cd
OS (Linux): adds comments
CarterLi May 2, 2026
b465052
Logo (Builtin): removes Ubuntu KDE
CarterLi May 2, 2026
d9e4389
Logo (Builtin): add NebiOS (#2295)
th3s4rp May 4, 2026
93f9ed1
Wmtheme (Linux): adds NebiDE support
CarterLi May 4, 2026
451bc39
OS (Linux): enhances Deepin version detection using /etc/os-version (…
Iamliuxiaozhen May 6, 2026
ba54763
Camera (Windows): adds support for Display P3 color space
CarterLi May 6, 2026
79b61f1
Common (Windows): inits WinRT/COM globally
CarterLi May 6, 2026
dca3b15
Global (Windows): fixes possible use-before-init errors
CarterLi May 6, 2026
8159f47
Common (Windows): allows COM be used in C sources
CarterLi May 6, 2026
8c55c06
OS (Linux): detects bedrock only on Linux
CarterLi May 6, 2026
f5dfec6
Battery (Windows): tidy
CarterLi May 8, 2026
9a15666
Wifi (Linux): switches to netlink impl
CarterLi May 8, 2026
b86acf6
Wifi (Linux): fixes bugs when multiple BSS exists; adds ioctl fallback
CarterLi May 9, 2026
44e2948
Wifi: adds 6 GHz channels detection
CarterLi May 9, 2026
91f1c4d
Wifi: fixes 60 GHz band detection
CarterLi May 9, 2026
fdb5f30
CMake (Linux): removes `linux/wireless` detection
CarterLi May 9, 2026
f46aa31
Wifi (Linux): improves protocol reporting
CarterLi May 9, 2026
87d8913
Common (Windows): fixes Windows 11 detection code
CarterLi May 9, 2026
bc0a515
Common (Windows): works around a compiler optimise bug
CarterLi May 9, 2026
a923f61
Wallpaper (Haiku): adds support (#2314)
mmuman May 10, 2026
fbc9569
DisplayServer (Linux): updates `kde-output-device-v2` again
CarterLi May 10, 2026
b37f020
DisplayServer (Linux): binds minimal version to avoid breakage
CarterLi May 10, 2026
1c89bbc
Chore: `clang-format`
CarterLi May 10, 2026
f8667d9
Doc: updates changelog
CarterLi May 10, 2026
60fbe1f
Common (Windows): uses WinRT APIs only when `FF_HAVE_WINRT` is defined
CarterLi May 10, 2026
0747fc0
CI (OmniOS): fixes build
CarterLi May 10, 2026
26b3a84
Terminal: fixes TDE konsole version detection
CarterLi May 11, 2026
92082ee
Doc: update PR template [ci skip]
CarterLi May 11, 2026
6c7a8a8
Logo (Builtin): adds XJ380 OS Logo (#2309)
GuoqiFish May 11, 2026
50964fc
Logo (Builtin): adds openRuyi (#2318)
HNO3Miracle May 11, 2026
38e98d3
Logo (Builtin): cleans up xj380
CarterLi May 11, 2026
320e1bf
Doc: update changelog [ci skip]
CarterLi May 11, 2026
8daec25
Common (Windows): adds a missing `#include`
CarterLi May 11, 2026
5d29e26
Logo (Builtin): cleans up Kylin
CarterLi May 11, 2026
43ddbdc
Logo (Builtin): tidy
CarterLi May 11, 2026
efca4f3
DBus: expands `Get(U)Int` to `(u)int64`
CarterLi May 11, 2026
1942dce
Media (Linux): detects song length & play position
CarterLi May 11, 2026
470e3b4
IO (Linux): fixes a possible fd leak
CarterLi May 11, 2026
235a201
Chore: update `.clang-format` [ci skip]
CarterLi May 11, 2026
8426833
DE (Linux): adds Enlightenment version detection support
CarterLi May 11, 2026
7799dbe
WM: adds full support of Enlightenment
CarterLi May 12, 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
2 changes: 1 addition & 1 deletion .clang-format
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# find . -type f \( -name "*.c" -o -name "*.h" -o -name "*.cpp" -o -name "*.hpp" \) ! -path "src/3rdparty/*" -print0 | xargs -0 clang-format -i
# find . -type f \( -name "*.c" -o -name "*.h" -o -name "*.cpp" -o -name "*.hpp" \) -print0 | xargs -0 clang-format -i

BasedOnStyle: LLVM
Language: Cpp
Expand Down
1 change: 1 addition & 0 deletions .clang-format-ignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
src/3rdparty/**
build/**
src/logo/builtin.c
4 changes: 4 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ Closes #

-

## Screenshots

<!-- Required if this PR introduces visual changes. -->

## Checklist

- [ ] I have tested my changes locally.
2 changes: 1 addition & 1 deletion .github/workflows/build-omnios-amd64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
envs: 'CMAKE_BUILD_TYPE'
prepare: |
uname -a
pkg update --accept
pkg update --accept || true
pkg install gcc14 cmake git pkg-config glib2 dbus sqlite-3 imagemagick ninja

run: |
Expand Down
28 changes: 28 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,31 @@
# 2.63.0

Changes:
* On Windows, multi-battery detection is now always enabled
* Removes the old Windows-specific `useSetupApi` option. (Battery, Windows)

Features:
* Adds wallpaper detection support on Haiku (#2314, Wallpaper, Haiku)
* Adds Wi-Fi 6 GHz channel detection and improves protocol reporting (Wifi, Linux)
* Improves Deepin version detection using `/etc/os-version` (#2300, OS, Linux)
* Adds Ubuntu Kylin and Ubuntu Unity flavor detection (OS, Linux)
* Adds NebiDE support (WMTheme, Linux)
* Adds package counting for `cards` on NuTyX (#2287, Packages, Linux)
* Adds support for Enlightenment desktop environment (#2165, WM, Linux)

Bugfixes:
* Improves DisplayServer compatibility on Linux by handling newer `kde-output-device-v2` protocol updates (DisplayServer, Linux)
* This fixes a long-standing issue where display detection fails with an `interface 'kde_output_device_mode_v2' has no event X` error.
* Improves Wi-Fi reliability on Linux by switching to a netlink implementation (Wifi, Linux)
* Improves network interface reliability and default route selection on macOS and Windows (Netif, macOS / Windows)
* Validates temperature color thresholds as integers when parsing JSON config (Temps)
* Fixes TDE konsole version detection (#2319, Terminal, Linux)
* Various internal cleanups and optimizations

Logos:
* Adds KibaOS, NebiOS, XJ380 and openRuyi
* Fixes GNOME OS builtin logo detection (#2296)

# 2.62.1

Bugfixes:
Expand Down
65 changes: 30 additions & 35 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ cmake_dependent_option(ENABLE_DRM "Enable libdrm" ON "LINUX OR FreeBSD OR OpenBS
cmake_dependent_option(ENABLE_DRM_AMDGPU "Enable libdrm_amdgpu" ON "LINUX OR FreeBSD OR GNU" OFF)
cmake_dependent_option(ENABLE_GIO "Enable gio-2.0" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR ANDROID OR SunOS OR GNU" OFF)
cmake_dependent_option(ENABLE_DCONF "Enable dconf" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR ANDROID OR SunOS OR GNU" OFF)
cmake_dependent_option(ENABLE_EET "Enable eet" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR ANDROID OR SunOS OR GNU" OFF)
cmake_dependent_option(ENABLE_DBUS "Enable dbus-1" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR ANDROID OR SunOS OR Haiku OR GNU" OFF)
cmake_dependent_option(ENABLE_SQLITE3 "Enable sqlite3" ON "LINUX OR FreeBSD OR APPLE OR OpenBSD OR NetBSD OR SunOS OR GNU" OFF)
cmake_dependent_option(ENABLE_RPM "Enable rpm" ON "LINUX OR GNU" OFF)
Expand Down Expand Up @@ -160,7 +161,11 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_FLAGS} -Werror=incompatible-pointe

if(WIN32 OR Haiku)
enable_language(CXX)
set(CMAKE_CXX_STANDARD 17)
if(WIN32)
set(CMAKE_CXX_STANDARD 20)
else()
set(CMAKE_CXX_STANDARD 17)
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WARNING_FLAGS}")
endif()

Expand Down Expand Up @@ -1029,20 +1034,18 @@ elseif(WIN32)
src/common/impl/debug_windows.c
src/common/impl/kmod_windows.c
src/common/windows/getline.c
src/common/windows/com.cpp
src/common/windows/com.c
src/common/windows/registry.c
src/common/windows/unicode.c
src/common/windows/wmi.cpp
src/common/windows/variant.cpp
src/common/windows/version.c
src/detection/battery/battery_windows.c
src/detection/bios/bios_windows.c
src/detection/bluetooth/bluetooth_windows.c
src/detection/bluetooth/bluetooth_windows.cpp
src/detection/bluetoothradio/bluetoothradio_windows.c
src/detection/board/board_windows.c
src/detection/bootmgr/bootmgr_windows.c
src/detection/brightness/brightness_windows.cpp
src/detection/brightness/brightness_windows.c
src/detection/btrfs/btrfs_nosupport.c
src/detection/chassis/chassis_windows.c
src/detection/cpu/cpu_windows.c
Expand All @@ -1067,7 +1070,7 @@ elseif(WIN32)
src/detection/locale/locale_windows.c
src/detection/localip/localip_windows.c
src/detection/gamepad/gamepad_windows.c
src/detection/media/media_windows.c
src/detection/media/media_windows.cpp
src/detection/memory/memory_windows.c
src/detection/mouse/mouse_windows.c
src/detection/physicalmemory/physicalmemory_linux.c
Expand Down Expand Up @@ -1238,7 +1241,7 @@ elseif(Haiku)
src/detection/tpm/tpm_nosupport.c
src/detection/uptime/uptime_haiku.c
src/detection/users/users_linux.c
src/detection/wallpaper/wallpaper_nosupport.c
src/detection/wallpaper/wallpaper_haiku.cpp
src/detection/wifi/wifi_nosupport.c
src/detection/wm/wm_nosupport.c
src/detection/de/de_nosupport.c
Expand Down Expand Up @@ -1334,6 +1337,14 @@ endif()
if(WIN32)
list(APPEND LIBFASTFETCH_SRC src/detection/gpu/gpu_intel.c)
list(APPEND LIBFASTFETCH_SRC src/detection/gpu/gpu_amd.c)

include(CheckIncludeFileCXX)
CHECK_INCLUDE_FILE_CXX("winrt/Windows.Foundation.h" HAVE_WINRT)
if(HAVE_WINRT)
message(STATUS "WinRT headers are available, media detection will be enabled")
else()
message(WARNING "WinRT headers are NOT available, media detection will be disabled")
endif()
endif()
include(CheckFunctionExists)
check_function_exists(wcwidth HAVE_WCWIDTH)
Expand Down Expand Up @@ -1436,7 +1447,7 @@ if(LINUX)
elseif(ANDROID)
target_compile_definitions(libfastfetch PUBLIC _GNU_SOURCE _XOPEN_SOURCE _FILE_OFFSET_BITS=64 "$<$<CONFIG:DEBUG>:__BIONIC_FORTIFY>" "$<$<CONFIG:DEBUG>:__BIONIC_FORTIFY_RUNTIME_CHECKS_ENABLED>")
elseif(WIN32)
target_compile_definitions(libfastfetch PUBLIC _GNU_SOURCE WIN32_LEAN_AND_MEAN _WIN32_WINNT=0x0A00 NOMINMAX UNICODE) # "$<$<CONFIG:Release>:_FORTIFY_SOURCE=3>"
target_compile_definitions(libfastfetch PUBLIC _GNU_SOURCE WIN32_LEAN_AND_MEAN WINRT_LEAN_AND_MEAN _WIN32_WINNT=0x0A00 NOMINMAX UNICODE) # "$<$<CONFIG:Release>:_FORTIFY_SOURCE=3>"
elseif(APPLE)
target_compile_definitions(libfastfetch PUBLIC _GNU_SOURCE _XOPEN_SOURCE __STDC_WANT_LIB_EXT1__ _FILE_OFFSET_BITS=64 _DARWIN_C_SOURCE)
elseif(OpenBSD)
Expand Down Expand Up @@ -1604,6 +1615,10 @@ ff_lib_enable(DCONF
"dconf"
"DConf"
)
ff_lib_enable(EET
"eet"
"Eet"
)
ff_lib_enable(DBUS
"dbus-1"
"DBus"
Expand Down Expand Up @@ -1747,6 +1762,11 @@ elseif(WIN32)
PRIVATE "mincore"
)
endif()
if(HAVE_WINRT)
target_link_libraries(libfastfetch
PRIVATE "runtimeobject"
)
endif()
elseif(FreeBSD)
target_link_libraries(libfastfetch
PRIVATE "m"
Expand Down Expand Up @@ -1833,20 +1853,6 @@ target_link_libraries(libfastfetch
target_compile_options(libfastfetch PRIVATE
$<$<COMPILE_LANGUAGE:CXX>:-fno-exceptions -fno-rtti>)

if(WIN32)
set(CMAKE_CXX_STANDARD 20)
include(CheckIncludeFileCXX)
CHECK_INCLUDE_FILE_CXX("winrt/Windows.Foundation.h" HAVE_WINRT)
if(HAVE_WINRT)
add_library(ffwinrt MODULE src/detection/media/media_windows.dll.cpp)
target_link_libraries(ffwinrt PRIVATE "RuntimeObject")
target_compile_definitions(ffwinrt PRIVATE WIN32_LEAN_AND_MEAN=1 WINRT_LEAN_AND_MEAN=1)
target_link_options(ffwinrt
PRIVATE "-static" # stdc++, winpthread, gcc_s, etc.
)
endif()
set(CMAKE_CXX_STANDARD 17)
endif()
if(FreeBSD)
set(CMAKE_REQUIRED_INCLUDES "/usr/local/include" "/usr/include")
endif()
Expand All @@ -1856,12 +1862,6 @@ if(LINUX OR FreeBSD OR OpenBSD OR NetBSD)
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_LINUX_VIDEODEV2=1)
endif()
endif()
if(LINUX)
CHECK_INCLUDE_FILE("linux/wireless.h" HAVE_LINUX_WIRELESS)
if(HAVE_LINUX_WIRELESS)
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_LINUX_WIRELESS=1)
endif()
endif()
if(NOT WIN32)
CHECK_INCLUDE_FILE("utmpx.h" HAVE_UTMPX)
if(HAVE_UTMPX)
Expand Down Expand Up @@ -1893,6 +1893,8 @@ if(NOT WIN32)
message(WARNING "pthread_timedjoin_np was not found; networking timeout will not work")
endif()
endif()
elseif(HAVE_WINRT)
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_WINRT=1)
endif()

set(PACKAGES_DISABLE_LIST "")
Expand Down Expand Up @@ -2039,13 +2041,6 @@ if (TARGET flashfetch)
)
endif()

if (TARGET ffwinrt)
install(
TARGETS ffwinrt
DESTINATION "${CMAKE_INSTALL_BINDIR}"
)
endif()

install(
FILES "${CMAKE_SOURCE_DIR}/completions/${CMAKE_PROJECT_NAME}.bash"
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/bash-completion/completions"
Expand Down
5 changes: 0 additions & 5 deletions doc/json_schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -1540,11 +1540,6 @@
"const": "battery",
"description": "Print battery information"
},
"useSetupApi": {
"description": "Whether to use the `CM API` on Windows to detect battery information. Supports multiple batteries, but is slower (Windows only)",
"type": "boolean",
"default": false
},
"temp": {
"$ref": "#/$defs/temperature"
},
Expand Down
Loading
Loading