Skip to content
Merged
Show file tree
Hide file tree
Changes from 107 commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
bfe30ee
Doc: updates changelog [ci skip]
CarterLi Aug 14, 2026
51f36fa
FFstrbuf: adds comments [ci skip]
CarterLi Aug 14, 2026
858d374
FFstrbuf: adds `FF_STRBUF_STATIC`
CarterLi Aug 14, 2026
3908c39
Modules: adds l10n strings
CarterLi Aug 14, 2026
f95167e
Global: adds option `key-language`
CarterLi Aug 14, 2026
bdba78c
CI: silences codespell errors
CarterLi Aug 14, 2026
e5c3fa4
CI: fixes compiling errors
CarterLi Aug 14, 2026
4dc27b3
DiskIO / NetIO: fixes I/O rate calculation precision, prevent div-by-…
CarterLi Aug 15, 2026
8d82eed
DiskIO / NetIO: updates default value of waitTime to reduce latency
CarterLi Aug 15, 2026
b677f1e
Theme: improves GTK theme/icons/font detection on standalone WMs (Hyp…
CarterLi Aug 15, 2026
233c481
CMAKE: bumps minimum CMake version to 3.21.0 (#2517)
Guiorgy Aug 15, 2026
45f9de6
L10n: improves performance
CarterLi Aug 16, 2026
359cb0a
L10n (Pt): renames `pt_BR` to `pt`
CarterLi Aug 16, 2026
b700d9d
L10n (Ru): changes `Блютус` to `Блютуз`
CarterLi Aug 16, 2026
2de674e
L10n (Ar / He): adds support
CarterLi Aug 16, 2026
bbb906b
L10n (Pt): matches all Portuguese locales, not only bare `pt` (#2521)
HashimAbdulaziz Aug 16, 2026
7fbd06a
Doc: updates README.md [ci skip]
CarterLi Aug 16, 2026
9ff7969
Bluetooth / BluetoothRadio: keeps the brand name in Latin script in R…
wehrwolfmann Aug 16, 2026
bcb4877
Modules: proofreads Russian l10n strings
wehrwolfmann Aug 16, 2026
5e9c31a
Completion (Fish): prints enum description [ci skip]
CarterLi Aug 17, 2026
2ca7e03
L10n (Zh): translates `shell`
CarterLi Aug 17, 2026
72d240f
L10n (Zh): clarifies `Bluetooth` actually detects `Bluetooth devices`
CarterLi Aug 17, 2026
679d868
L10n (Zh): clarifies `Disk` actually detects `Disk partitions`
CarterLi Aug 17, 2026
e6d90c2
L10n (Zh): uses a different name for `Monitor`
CarterLi Aug 17, 2026
6cb1588
L10n: don't use `ffStrbufCreateStatic` for buffers that will be modif…
CarterLi Aug 18, 2026
e5b6e36
L10n: falls back to English when the auto-detected locale is unsupported
wehrwolfmann Aug 18, 2026
7c93f9c
GPU (macOS): removes useless `@available` tests
CarterLi Aug 18, 2026
232cd66
Wifi (Linux): adds channel width and device driver detection
CarterLi Aug 18, 2026
514efab
Wifi (Windows): adds channel width and device driver detection
CarterLi Aug 18, 2026
f04a533
Wifi (macOS): adds channel width, accurate channel frequency and devi…
CarterLi Aug 18, 2026
124bbb0
Wifi (macOS): fixes compatibility for old Intel MBP
CarterLi Aug 18, 2026
54fe4ff
Wifi (FreeBSD): adds channel width detection
CarterLi Aug 19, 2026
6d0d093
Wifi (NetBSD): adds channel width detection
CarterLi Aug 19, 2026
93566cb
Wifi (Android / OpenBSD): inits unsupported properties
CarterLi Aug 19, 2026
f0765b1
Wifi (SunOS): adds basic Wifi detection impl
CarterLi Aug 19, 2026
db8ee81
Wifi (Haiku): adds basic Wifi detection impl
CarterLi Aug 19, 2026
cafe82b
Battery (SunOS): adds basic detection impl
CarterLi Aug 19, 2026
2a269bf
Wifi: removes driver detection support
CarterLi Aug 19, 2026
d8452f7
Wifi (SunOS): fortifies code
CarterLi Aug 20, 2026
b1f2bf3
WM: uses full name in EN, as DE and LM modules do
CarterLi Aug 20, 2026
8b40117
Wifi (OpenBSD): fortifies detection and adds channel to frequency helper
CarterLi Aug 20, 2026
5d11b65
TerminalFont (Android): adds font size detection
CarterLi Aug 20, 2026
0c4ec62
L10n: (gl) Added Galician Support
Arqes-0 Aug 20, 2026
6570a7a
L10n (ES): fixes Spanish translations (#2537)
Arqes-0 Aug 21, 2026
e0c2397
L10n: adds `cs` `id` `tr` `uk` `vi`
CarterLi Aug 21, 2026
e7ecba4
Doc: updates README [ci skip]
CarterLi Aug 21, 2026
6d5cb52
Logo (Builtin): adds artix2 in
CarterLi Aug 21, 2026
5edda06
PhysicalDisk (DragonFly): eliminates‌ compiler warnings
CarterLi Aug 24, 2026
83cc7a9
Top: adds new module
CarterLi Aug 24, 2026
b5897f7
Processes (GNU): uses native impl
CarterLi Aug 24, 2026
a979d8a
CI: Bump the github-actions group with 4 updates
dependabot[bot] Aug 23, 2026
143939f
DE (Android): adds asus zenfone support
CarterLi Aug 25, 2026
880284f
DisplayServer (Android): enables Wayland support
CarterLi Aug 25, 2026
55bfcd6
Top (Android): fixes building
CarterLi Aug 25, 2026
f15a1e9
Top (Linux): don't error out when reading `/proc/pid/io` fails
CarterLi Aug 25, 2026
63d16ca
Top: removes option `kernelTask` (never implemented)
CarterLi Aug 25, 2026
b7d8c12
CI: adds `top` module
CarterLi Aug 25, 2026
4344aa2
Top: adds option `showType: <cpu|mem|disk>`
CarterLi Aug 25, 2026
7172824
Common (Sysctl): handle varying data lengths in integer retrieval fun…
CarterLi Aug 25, 2026
6c19a8b
Top (DragonFly): fixes building
CarterLi Aug 25, 2026
1b1df2e
Common (Settings): tidy
CarterLi Aug 25, 2026
3b76ade
Shell: fixes the fast path of ash version detection
CarterLi Aug 26, 2026
9670b58
LM: detects LM from processes list if systemd is not available
CarterLi Aug 26, 2026
8b162e8
WMDE: improves performance
CarterLi Aug 26, 2026
fb30913
LM (Linux): queries systemd session info via dbus
CarterLi Aug 26, 2026
203cd7c
LM (Linux): adds pretty name
CarterLi Aug 26, 2026
c5598d2
LM (macOS): adds support
CarterLi Aug 26, 2026
32757b0
LM (Windows): adds support
CarterLi Aug 26, 2026
2b42db5
LM (OpenBSD): adds support
CarterLi Aug 26, 2026
c9ad429
Global: introduces global macro `FF_PATH_PKG_BASE` to replace `_PATH_…
CarterLi Aug 26, 2026
04f26a2
CI: enables bluetooth module on platforms other than macOS
CarterLi Aug 27, 2026
5936c1c
CI: adds benchmark job
CarterLi Aug 27, 2026
1dc794f
Doc: updates changelog [ci skip]
CarterLi Aug 27, 2026
191c5f2
Doc: updates README
CarterLi Aug 27, 2026
dcce4cc
CI: moves `benchmark-index` to `/.github` as required by the script
CarterLi Aug 27, 2026
d80fe3f
Logo (Builtin): adds macOS_old
CarterLi Aug 27, 2026
d7de7c4
CI: disables fail on alert
CarterLi Aug 27, 2026
4d00dc6
Logo (Builtin): adds omarchy
CarterLi Aug 28, 2026
14cf6bf
Top (macOS): adds comments
CarterLi Aug 28, 2026
51b370a
Processes: adds total thread count detection
CarterLi Aug 28, 2026
2c4caf8
Top: removes realloc retries
CarterLi Aug 28, 2026
f169165
Top (Linux): improves performance of `stat` parsing
CarterLi Aug 28, 2026
41da49f
Top (SunOS / Hurd): skips kernel tasks
CarterLi Aug 28, 2026
7fe08bd
Processes: adds option `countKprocs`
CarterLi Aug 28, 2026
1c9e521
Top: disables `FF_TOP_TYPE_DISK` on Hurd and Haiku
CarterLi Aug 29, 2026
af8a422
Top (Hurd): reports `startTime`; uses `time_value64_t`
CarterLi Aug 29, 2026
3abcf41
Processes: corrects the structure of JSON result
CarterLi Aug 29, 2026
b04587e
Presets: moves `top` to the bottom of running modules [ci skip]
CarterLi Aug 29, 2026
753ddec
Memory (Windows): prefers `NQSI`
CarterLi Aug 29, 2026
4dba32a
WM (macOS): improves reliability of WM plugin detection
CarterLi Aug 30, 2026
39024ab
Processes (Haiku): honors `options->countKprocs`
CarterLi Aug 30, 2026
5b1ad10
CI: Bump the github-actions group with 3 updates
dependabot[bot] Aug 30, 2026
df99241
L10n (gl): adds missing missing Galician translations
CarterLi Aug 31, 2026
a33d632
CMake: enables `CONFIGURE_DEPENDS` to `FF_MODULE_DIRS` globbing
CarterLi Aug 31, 2026
d5214af
Global: fixes British spellings and typos found by AI
CarterLi Aug 31, 2026
ef7f5ae
CPU (Android): adds pretty names of new SoCs
CarterLi Aug 31, 2026
42002a6
CPU (Linux): supports more Snapdragon X SoCs
CarterLi Aug 31, 2026
76b6768
JsonSchema: regenerates `moduleFormat`
CarterLi Aug 31, 2026
9c791b2
Doc: adds `CONTRIBUTING.md`
CarterLi Aug 31, 2026
b9e4d04
Global: addresses review comments generated by CI
CarterLi Aug 31, 2026
6eef800
Top: supports sorting by `start-time`
CarterLi Aug 31, 2026
4ff931c
Top: adds thread count detection
CarterLi Aug 31, 2026
b5ffc32
Top / Processes (Windows): improves detection of system / kernel proc…
CarterLi Aug 31, 2026
43d01f2
Top: handle unknown process names gracefully in output
CarterLi Aug 31, 2026
b0ba084
Global: address review comments v2
CarterLi Aug 31, 2026
8ea4468
Common (Endian): adds new header
CarterLi Aug 31, 2026
4863a17
Wifi (linux): enables netlink on big-endian platforms
CarterLi Aug 31, 2026
3d10776
Wifi (Linux): fixes compatibility with old kernel headers
CarterLi Sep 1, 2026
0b1bc5b
CI: upgrades deps; reenables Haiku
CarterLi Aug 31, 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 .codespellrc
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
check-filenames =
builtin = clear,rare,usage,informal
skip = */.git,*/cmake-build-*,*/.idea,*/completions,*/presets,*/screenshots,*/tests,*/3rdparty,*/logo/ascii,./src/detection/gpu/asahi_drm.h,./src/detection/cpu/cpu_x86.c,./src/detection/gpu/gpu_bsddrm.c,./src/detection/displayserver/linux/wayland/*-protocol.*,./build,./build-*,./build_*,./src/common/impl/genconfig.c
ignore-words-list = iterm,compiletime,unknwn,pengwin,siduction,master,slave,sur,doas,conexant,ags,bu,renderD,SME,Carmel,kinda
ignore-words-list = iterm,compiletime,unknwn,pengwin,siduction,master,slave,sur,doas,conexant,ags,bu,renderD,SME,Carmel,kinda,symbole,connexion,comando,processus,lokale,adres,titel,som,environnement,Sistem,Lokal,Lokal,Sistem,Paket,Hava
405 changes: 405 additions & 0 deletions .github/benchmark-index.html

Large diffs are not rendered by default.

55 changes: 55 additions & 0 deletions .github/workflows/build-benchmark.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Reusable Benchmark

on:
workflow_call:

permissions:
contents: write

jobs:
benchmark:
runs-on: ubuntu-latest
concurrency:
group: benchmark
cancel-in-progress: false
steps:
- name: checkout repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: download benchmark data
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
pattern: benchmark-*
path: benchmarks

- name: merge benchmark data
run: jq -s 'add' benchmarks/*/benchmark.json > benchmark.json

- name: save benchmark dashboard
run: cp .github/benchmark-index.html "$RUNNER_TEMP/benchmark-index.html"

- name: store benchmark result
uses: benchmark-action/github-action-benchmark@52576c92bccf6ac60c8223ec7eb2565637cae9ba # v1.22.1
with:
name: Fastfetch
tool: customSmallerIsBetter
output-file-path: benchmark.json
github-token: ${{ secrets.GITHUB_TOKEN }}
ref: ${{ github.sha }}
auto-push: true
summary-always: true
benchmark-data-dir-path: dev/bench

- name: publish benchmark dashboard
run: |
git fetch origin gh-pages
git switch --force-create gh-pages FETCH_HEAD
mkdir -p dev/bench
cp "$RUNNER_TEMP/benchmark-index.html" dev/bench/index.html
git config user.name github-action-benchmark
git config user.email github@users.noreply.github.com
git add dev/bench/index.html
if ! git diff --cached --quiet; then
git commit -m "Update benchmark dashboard"
git push origin gh-pages
fi
2 changes: 1 addition & 1 deletion .github/workflows/build-dragonfly-amd64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Start VM
uses: cross-platform-actions/action@5ea7e8e4677bd726033a10b094ba1c5762b15dee # v1.3.0
uses: cross-platform-actions/action@24ef01df165c76df1ed2b9f9e9212e78dc2fc963 # v1.4.0
with:
operating_system: dragonflybsd
version: '6.4.2'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-freebsd-amd64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Start VM
uses: cross-platform-actions/action@5ea7e8e4677bd726033a10b094ba1c5762b15dee # v1.3.0
uses: cross-platform-actions/action@24ef01df165c76df1ed2b9f9e9212e78dc2fc963 # v1.4.0
with:
operating_system: freebsd
version: '15.1'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-haiku-amd64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Start VM
uses: cross-platform-actions/action@5ea7e8e4677bd726033a10b094ba1c5762b15dee # v1.3.0
uses: cross-platform-actions/action@24ef01df165c76df1ed2b9f9e9212e78dc2fc963 # v1.4.0
with:
operating_system: haiku
version: 'r1beta5'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-linux-armv7l.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: run VM
uses: uraimo/run-on-arch-action@f9b26e3a1a408d5fd530d20c17b9f3f4428ff8d9 # v3.1.0
uses: uraimo/run-on-arch-action@460cb8e6d9f726a588fc9b5e681c8a6cab09ae41 # v3.2.0
id: runcmd
with:
arch: armv7
Expand Down
36 changes: 32 additions & 4 deletions .github/workflows/build-linux-hosts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ jobs:
run: sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test

- name: install required packages
run: sudo apt-get update && sudo apt-get install -y gcc-13 libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev ocl-icd-opencl-dev libpulse-dev libdrm-dev libelf-dev libddcutil-dev libefl-all-dev libunwind-dev liblua5.4-dev libvdpau-dev libva-dev rpm ninja-build
run: sudo apt-get update && sudo apt-get install -y gcc-13 jq libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev ocl-icd-opencl-dev libpulse-dev libdrm-dev libelf-dev libddcutil-dev libefl-all-dev libunwind-dev liblua5.4-dev libvdpau-dev libva-dev rpm ninja-build

- name: install linuxbrew packages
run: |
Expand All @@ -52,7 +52,7 @@ jobs:

- name: Initialize CodeQL
if: inputs.arch == 'amd64'
uses: github/codeql-action/init@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6
uses: github/codeql-action/init@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8
with:
languages: c

Expand All @@ -64,7 +64,7 @@ jobs:

- name: perform CodeQL analysis
if: inputs.arch == 'amd64'
uses: github/codeql-action/analyze@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6
uses: github/codeql-action/analyze@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8

- name: list features
run: ./fastfetch --list-features
Expand All @@ -73,7 +73,29 @@ jobs:
run: time ./fastfetch -c presets/ci.jsonc --stat false

- name: run fastfetch --format json
run: time ./fastfetch -c presets/ci.jsonc --format json
run: |
{ time -p ./fastfetch -c presets/ci.jsonc --format json > fastfetch.raw.json 2> fastfetch.error; } 2> fastfetch.time
sed -n '/^[[:space:]]*\[/,$p' fastfetch.raw.json > fastfetch.json
cat fastfetch.json
cat fastfetch.error >&2
cat fastfetch.time >&2

- name: prepare benchmark data
run: |
real_seconds=$(awk '$1 == "real" { print $2 }' fastfetch.time)
jq -e 'type == "array"' fastfetch.json > /dev/null
jq --arg platform "linux" --arg arch "${{ inputs.arch }}" --argjson real_seconds "$real_seconds" '
map(select(.stat | type == "number") | {
name: ("fastfetch " + $platform + " " + $arch + " module " + .type),
unit: "ms",
value: .stat
}) + [{
name: ("fastfetch " + $platform + " " + $arch + " total process time"),
unit: "ms",
value: ($real_seconds * 1000)
}]
' fastfetch.json > benchmark.json
cat benchmark.json

- name: run flashfetch
run: time ./flashfetch
Expand Down Expand Up @@ -105,3 +127,9 @@ jobs:
with:
name: fastfetch-linux-${{ inputs.arch }}
path: ./fastfetch-*.*

- name: upload benchmark data
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: benchmark-linux-${{ inputs.arch }}
path: benchmark.json
2 changes: 1 addition & 1 deletion .github/workflows/build-linux-vms.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: run VM
uses: uraimo/run-on-arch-action@f9b26e3a1a408d5fd530d20c17b9f3f4428ff8d9 # v3.1.0
uses: uraimo/run-on-arch-action@460cb8e6d9f726a588fc9b5e681c8a6cab09ae41 # v3.2.0
id: runcmd
with:
arch: ${{ inputs.arch }}
Expand Down
34 changes: 31 additions & 3 deletions .github/workflows/build-macos-hosts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
- name: install required packages
run: |
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew update
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install --overwrite vulkan-loader vulkan-headers molten-vk imagemagick chafa lua quickjs-ng
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install --overwrite vulkan-loader vulkan-headers molten-vk imagemagick chafa lua quickjs-ng jq

- name: configure project
run: cmake -DSET_TWEAK=Off -DBUILD_TESTS=On .
Expand All @@ -41,10 +41,32 @@ jobs:
run: ./fastfetch --list-features

- name: run fastfetch
run: time ./fastfetch -c presets/ci.jsonc --structure-disabled vulkan --stat false
run: time ./fastfetch -c presets/ci.jsonc --structure-disabled vulkan:bluetooth:bluetoothradio --stat false

- name: run fastfetch --format json
run: time ./fastfetch -c presets/ci.jsonc --structure-disabled vulkan --format json
run: |
{ time -p ./fastfetch -c presets/ci.jsonc --structure-disabled vulkan:bluetooth:bluetoothradio --format json > fastfetch.raw.json 2> fastfetch.error; } 2> fastfetch.time
sed -n '/^[[:space:]]*\[/,$p' fastfetch.raw.json > fastfetch.json
cat fastfetch.json
cat fastfetch.error >&2
cat fastfetch.time >&2

- name: prepare benchmark data
run: |
real_seconds=$(awk '$1 == "real" { print $2 }' fastfetch.time)
jq -e 'type == "array"' fastfetch.json > /dev/null
jq --arg platform "macos" --arg arch "${{ inputs.arch }}" --argjson real_seconds "$real_seconds" '
map(select(.stat | type == "number") | {
name: ("fastfetch " + $platform + " " + $arch + " module " + .type),
unit: "ms",
value: .stat
}) + [{
name: ("fastfetch " + $platform + " " + $arch + " total process time"),
unit: "ms",
value: ($real_seconds * 1000)
}]
' fastfetch.json > benchmark.json
cat benchmark.json

- name: run flashfetch
run: time ./flashfetch
Expand All @@ -60,3 +82,9 @@ jobs:
with:
name: fastfetch-macos-${{ inputs.arch }}
path: ./fastfetch-*.*

- name: upload benchmark data
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: benchmark-macos-${{ inputs.arch }}
path: benchmark.json
2 changes: 1 addition & 1 deletion .github/workflows/build-netbsd-amd64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Start VM
uses: cross-platform-actions/action@5ea7e8e4677bd726033a10b094ba1c5762b15dee # v1.3.0
uses: cross-platform-actions/action@24ef01df165c76df1ed2b9f9e9212e78dc2fc963 # v1.4.0
with:
operating_system: netbsd
version: '10.1'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-omnios-amd64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Start VM
uses: cross-platform-actions/action@5ea7e8e4677bd726033a10b094ba1c5762b15dee # v1.3.0
uses: cross-platform-actions/action@24ef01df165c76df1ed2b9f9e9212e78dc2fc963 # v1.4.0
with:
operating_system: omnios
version: 'r151058'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-openbsd-amd64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Start VM
uses: cross-platform-actions/action@5ea7e8e4677bd726033a10b094ba1c5762b15dee # v1.3.0
uses: cross-platform-actions/action@24ef01df165c76df1ed2b9f9e9212e78dc2fc963 # v1.4.0
with:
operating_system: openbsd
version: '7.9'
Expand Down
34 changes: 31 additions & 3 deletions .github/workflows/build-windows-hosts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:
with:
msystem: ${{ inputs.msystem }}
update: true
install: git mingw-w64-clang-${{ inputs.msys-arch }}-7zip mingw-w64-clang-${{ inputs.msys-arch }}-cmake mingw-w64-clang-${{ inputs.msys-arch }}-clang mingw-w64-clang-${{ inputs.msys-arch }}-vulkan-loader mingw-w64-clang-${{ inputs.msys-arch }}-vulkan-headers mingw-w64-clang-${{ inputs.msys-arch }}-opencl-icd mingw-w64-clang-${{ inputs.msys-arch }}-opencl-headers mingw-w64-clang-${{ inputs.msys-arch }}-cppwinrt mingw-w64-clang-${{ inputs.msys-arch }}-imagemagick mingw-w64-clang-${{ inputs.msys-arch }}-chafa mingw-w64-clang-${{ inputs.msys-arch }}-lua mingw-w64-clang-${{ inputs.msys-arch }}-quickjs-ng mingw-w64-clang-${{ inputs.msys-arch }}-directx-headers
install: git mingw-w64-clang-${{ inputs.msys-arch }}-7zip mingw-w64-clang-${{ inputs.msys-arch }}-cmake mingw-w64-clang-${{ inputs.msys-arch }}-clang mingw-w64-clang-${{ inputs.msys-arch }}-jq mingw-w64-clang-${{ inputs.msys-arch }}-vulkan-loader mingw-w64-clang-${{ inputs.msys-arch }}-vulkan-headers mingw-w64-clang-${{ inputs.msys-arch }}-opencl-icd mingw-w64-clang-${{ inputs.msys-arch }}-opencl-headers mingw-w64-clang-${{ inputs.msys-arch }}-cppwinrt mingw-w64-clang-${{ inputs.msys-arch }}-imagemagick mingw-w64-clang-${{ inputs.msys-arch }}-chafa mingw-w64-clang-${{ inputs.msys-arch }}-lua mingw-w64-clang-${{ inputs.msys-arch }}-quickjs-ng mingw-w64-clang-${{ inputs.msys-arch }}-directx-headers

- name: print msys version
run: uname -a
Expand All @@ -70,7 +70,29 @@ jobs:
run: time ./fastfetch -c presets/ci.jsonc --stat false

- name: run fastfetch --format json
run: time ./fastfetch -c presets/ci.jsonc --format json
run: |
{ time -p ./fastfetch -c presets/ci.jsonc --format json > fastfetch.raw.json 2> fastfetch.error; } 2> fastfetch.time
sed -n '/^[[:space:]]*\[/,$p' fastfetch.raw.json > fastfetch.json
cat fastfetch.json
cat fastfetch.error >&2
cat fastfetch.time >&2

- name: prepare benchmark data
run: |
real_seconds=$(awk '$1 == "real" { print $2 }' fastfetch.time)
jq -e 'type == "array"' fastfetch.json > /dev/null
jq --arg platform "windows" --arg arch "${{ inputs.arch }}" --argjson real_seconds "$real_seconds" '
map(select(.stat | type == "number") | {
name: ("fastfetch " + $platform + " " + $arch + " module " + .type),
unit: "ms",
value: .stat
}) + [{
name: ("fastfetch " + $platform + " " + $arch + " total process time"),
unit: "ms",
value: ($real_seconds * 1000)
}]
' fastfetch.json > benchmark.json
cat benchmark.json

- name: run flashfetch
run: time ./flashfetch
Expand All @@ -94,7 +116,7 @@ jobs:

- if: github.event_name == 'push' && github.repository == 'fastfetch-cli/fastfetch'
name: submit signing request
uses: signpath/github-action-submit-signing-request@b9d91eadd323de506c0c81cf0c7fe7438f3360fd # v2.2
uses: signpath/github-action-submit-signing-request@c92b958760219087e01f8d67a1669ed57afe2627 # v2.3
with:
api-token: '${{ secrets.SIGNPATH_API_TOKEN }}'
organization-id: '${{ vars.SIGNPATH_ORG_ID }}'
Expand All @@ -116,3 +138,9 @@ jobs:
name: fastfetch-windows-${{ inputs.arch }}
path: ./fastfetch-windows-${{ inputs.arch }}.*
overwrite: true

- name: upload benchmark data
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: benchmark-windows-${{ inputs.arch }}
path: benchmark.json
11 changes: 11 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,17 @@ jobs:
secrets:
SIGNPATH_API_TOKEN: ${{ secrets.SIGNPATH_API_TOKEN }}

benchmark:
if: github.event_name == 'push' && github.ref == 'refs/heads/dev' && github.repository == 'fastfetch-cli/fastfetch'
name: Benchmark
needs:
- linux-hosts
- macos-hosts
- windows-hosts
permissions:
contents: write
uses: ./.github/workflows/build-benchmark.yml

release:
if: github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository == 'fastfetch-cli/fastfetch'
name: Release
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,5 @@ fastfetch.kdev4
*.user.*
*.swp
*.log
/*.zh.md
/.*-ai/
42 changes: 39 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,44 @@
# 2.68.0

Changes:
* The DE / WM / LM modules now reports the full name "Desktop Environment" / "Window Manager" / "Login Manager" instead of the abbreviations.

Features:
* Improved Login Manager (LM) module
* Added support on macOS, Windows and POSIX systems without systemd (by process list enumeration).
* Reports pretty name on Linux.
* Added Top module to print processes with the highest CPU, memory or disk I/O usage. (Top)
* Added module key localization support. (General)
* Added a new option `--key-language <?lang>` (`display.key.language: "<?lang>"` in JSON config). When left empty, it defaults to the system locale.
* See `fastfetch -h key-language` for all supported languages.
* Improved Wi-Fi module
* Added Wifi channel width detection, exposed via `{channel-width}` in custom format (reports 0 when not supported).
* Improved Wifi channel frequency accuracy and fortified detection on Windows, macOS.
* Added Wifi detection support on SunOS, Haiku.
* Added Battery detection support on SunOS. (Battery, SunOS)
* Added terminal font size detection support on Termux. (TerminalFont, Android)
* Improved GTK theme/icons/font detection on standalone WMs such as Hyprland, sway, niri and i3. (Theme, Linux)
* Improved fish completion scripts to print enum descriptions. (Completion)
* Enabled Wayland support on Android. (DisplayServer, Android)
* Added DE detection support for ASUS Zenfone. (DE, Android)
* Added new ARM SoCs (CPU, Linux / Android)

Bugfixes:
* Fixed I/O rate calculation precision in DiskIO and NetIO, and prevented division by zero. (DiskIO / NetIO)
* Fixed the fast path of ash version detection. (Shell)
* Fixed memory usage detection support on x86-32 FreeBSD (Memory, FreeBSD)
* Note: Although 32-bit systems are still supported, they are deprecated and barely tested. Users are encouraged to upgrade to 64-bit systems.
* Some internal cleanups and optimizations.

Logos:
* Added macOS_old
* Added Omarchy, Omarchy2

# 2.67.1

Bugfixes:
* Fixed a `Symbol not found` error when running on macOS 10.15. (Codec, macOS)
* Fixed Alacritty font size never being parsed from the TOML config. (TerminalFont)
* Fixed a `Symbol not found` error when running on macOS 10.15. (#2499, Codec, macOS)
* Fixed Alacritty font size never being parsed from the TOML config. (#2501, TerminalFont)
* Fixed bright colors incorrectly being active when the terminal uses a light theme. (#2509, Display)
* Fixed Ghostty terminal font detection (TerminalFont)
* Now tries to load the config with the `.ghostty` extension. (#2500)
Expand Down Expand Up @@ -3279,7 +3315,7 @@ Features:
* Enhance `--percent-type` to allow hiding other texts (#387)
* Add Wifi module support for Linux
* Detect scaled resolutions (Windows, macOS)
* Optimise font module printing (Windows)
* Optimize font module printing (Windows)
* Detect pacman package count inside MSYS2 environment (Windows)
* Add Wifi / Battery module support for Android
* Disk name support for Linux
Expand Down
Loading
Loading