Showing preview only (5,446K chars total). Download the full file or copy to clipboard to get everything.
Repository: fastfetch-cli/fastfetch
Branch: dev
Commit: 56eabbe2cb96
Files: 1400
Total size: 5.0 MB
Directory structure:
gitextract_aqn42s14/
├── .codespellrc
├── .editorconfig
├── .gitattributes
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report_crash.yml
│ │ ├── bug_report_general.yml
│ │ ├── bug_report_logo.yml
│ │ ├── feature_request.yml
│ │ └── logo_request.yml
│ ├── pull_request_template.md
│ ├── stale.yml
│ └── workflows/
│ └── ci.yml
├── .gitignore
├── CHANGELOG.md
├── CMakeLists.txt
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README-cn.md
├── README.md
├── completions/
│ ├── fastfetch.bash
│ ├── fastfetch.fish
│ └── fastfetch.zsh
├── debian/
│ ├── changelog.tpl
│ ├── compat
│ ├── control
│ ├── copyright
│ ├── publish.sh
│ ├── rules
│ └── watch
├── doc/
│ ├── fastfetch.1.in
│ └── json_schema.json
├── presets/
│ ├── all.jsonc
│ ├── archey.jsonc
│ ├── ci.jsonc
│ ├── examples/
│ │ ├── 10.jsonc
│ │ ├── 11.jsonc
│ │ ├── 12.jsonc
│ │ ├── 13.jsonc
│ │ ├── 14.jsonc
│ │ ├── 15.jsonc
│ │ ├── 16.jsonc
│ │ ├── 17.jsonc
│ │ ├── 18.jsonc
│ │ ├── 19.jsonc
│ │ ├── 2.jsonc
│ │ ├── 20.jsonc
│ │ ├── 21.jsonc
│ │ ├── 22.jsonc
│ │ ├── 23.jsonc
│ │ ├── 24.jsonc
│ │ ├── 25.jsonc
│ │ ├── 26.jsonc
│ │ ├── 27.jsonc
│ │ ├── 28.jsonc
│ │ ├── 29.jsonc
│ │ ├── 3.jsonc
│ │ ├── 30.jsonc
│ │ ├── 31.jsonc
│ │ ├── 32.jsonc
│ │ ├── 4.jsonc
│ │ ├── 5.jsonc
│ │ ├── 6.jsonc
│ │ ├── 7.jsonc
│ │ ├── 8.jsonc
│ │ └── 9.jsonc
│ ├── neofetch.jsonc
│ ├── paleofetch.jsonc
│ └── screenfetch.jsonc
├── run.sh
├── scripts/
│ ├── gen-amdgpuids.py
│ ├── gen-man.py
│ └── gen-pciids.py
├── src/
│ ├── 3rdparty/
│ │ ├── display-library/
│ │ │ ├── adl_defines.h
│ │ │ ├── adl_sdk.h
│ │ │ ├── adl_structures.h
│ │ │ └── repo.json
│ │ ├── widecharwidth/
│ │ │ ├── repo.json
│ │ │ └── widechar_width_c.h
│ │ └── yyjson/
│ │ ├── repo.json
│ │ ├── yyjson.c
│ │ └── yyjson.h
│ ├── common/
│ │ ├── FFPlatform.h
│ │ ├── FFcheckmacros.h
│ │ ├── FFlist.h
│ │ ├── FFstrbuf.h
│ │ ├── apple/
│ │ │ ├── Info.plist.in
│ │ │ ├── cf_helpers.c
│ │ │ ├── cf_helpers.h
│ │ │ ├── osascript.h
│ │ │ ├── osascript.m
│ │ │ ├── smc_temps.c
│ │ │ └── smc_temps.h
│ │ ├── argType.h
│ │ ├── arrayUtils.h
│ │ ├── base64.h
│ │ ├── binary.h
│ │ ├── color.h
│ │ ├── commandoption.h
│ │ ├── dbus.h
│ │ ├── debug.h
│ │ ├── duration.h
│ │ ├── edidHelper.h
│ │ ├── ffdata.h
│ │ ├── font.h
│ │ ├── format.h
│ │ ├── frequency.h
│ │ ├── haiku/
│ │ │ ├── version.cpp
│ │ │ └── version.h
│ │ ├── impl/
│ │ │ ├── FFPlatform.c
│ │ │ ├── FFPlatform_private.h
│ │ │ ├── FFPlatform_unix.c
│ │ │ ├── FFPlatform_windows.c
│ │ │ ├── FFlist.c
│ │ │ ├── FFstrbuf.c
│ │ │ ├── base64.c
│ │ │ ├── binary_apple.c
│ │ │ ├── binary_linux.c
│ │ │ ├── binary_windows.c
│ │ │ ├── commandoption.c
│ │ │ ├── dbus.c
│ │ │ ├── debug_windows.c
│ │ │ ├── duration.c
│ │ │ ├── edidHelper.c
│ │ │ ├── font.c
│ │ │ ├── format.c
│ │ │ ├── frequency.c
│ │ │ ├── init.c
│ │ │ ├── io_unix.c
│ │ │ ├── io_windows.c
│ │ │ ├── jsonconfig.c
│ │ │ ├── kmod_apple.c
│ │ │ ├── kmod_bsd.c
│ │ │ ├── kmod_linux.c
│ │ │ ├── kmod_nbsd.c
│ │ │ ├── kmod_nosupport.c
│ │ │ ├── kmod_sunos.c
│ │ │ ├── kmod_windows.c
│ │ │ ├── library.c
│ │ │ ├── memrchr.c
│ │ │ ├── netif.c
│ │ │ ├── netif_apple.c
│ │ │ ├── netif_bsd.c
│ │ │ ├── netif_gnu.c
│ │ │ ├── netif_haiku.c
│ │ │ ├── netif_linux.c
│ │ │ ├── netif_windows.c
│ │ │ ├── networking_common.c
│ │ │ ├── networking_linux.c
│ │ │ ├── networking_windows.c
│ │ │ ├── option.c
│ │ │ ├── parsing.c
│ │ │ ├── path.c
│ │ │ ├── percent.c
│ │ │ ├── printing.c
│ │ │ ├── processing_linux.c
│ │ │ ├── processing_windows.c
│ │ │ ├── properties.c
│ │ │ ├── settings.c
│ │ │ ├── size.c
│ │ │ ├── smbiosHelper.c
│ │ │ ├── sysctl.c
│ │ │ ├── temps.c
│ │ │ ├── time.c
│ │ │ └── wcwidth.c
│ │ ├── init.h
│ │ ├── io.h
│ │ ├── jsonconfig.h
│ │ ├── kmod.h
│ │ ├── library.h
│ │ ├── mallocHelper.h
│ │ ├── memrchr.h
│ │ ├── netif.h
│ │ ├── networking.h
│ │ ├── option.h
│ │ ├── parsing.h
│ │ ├── path.h
│ │ ├── percent.h
│ │ ├── printing.h
│ │ ├── processing.h
│ │ ├── properties.h
│ │ ├── settings.h
│ │ ├── size.h
│ │ ├── smbiosHelper.h
│ │ ├── stringUtils.h
│ │ ├── sysctl.h
│ │ ├── temps.h
│ │ ├── textModifier.h
│ │ ├── thread.h
│ │ ├── time.h
│ │ ├── unused.h
│ │ ├── wcwidth.h
│ │ └── windows/
│ │ ├── c-logo.sh
│ │ ├── com.cpp
│ │ ├── com.hpp
│ │ ├── getline.c
│ │ ├── getline.h
│ │ ├── manifest.xml
│ │ ├── nt.h
│ │ ├── perflib_.h
│ │ ├── registry.c
│ │ ├── registry.h
│ │ ├── unicode.c
│ │ ├── unicode.h
│ │ ├── unicode.hpp
│ │ ├── util.hpp
│ │ ├── variant.cpp
│ │ ├── variant.hpp
│ │ ├── version.c
│ │ ├── version.h
│ │ ├── version.rc
│ │ ├── wmi.cpp
│ │ └── wmi.hpp
│ ├── data/
│ │ ├── help.json
│ │ └── structure.txt
│ ├── detection/
│ │ ├── battery/
│ │ │ ├── battery.h
│ │ │ ├── battery_android.c
│ │ │ ├── battery_apple.c
│ │ │ ├── battery_bsd.c
│ │ │ ├── battery_haiku.c
│ │ │ ├── battery_linux.c
│ │ │ ├── battery_nbsd.c
│ │ │ ├── battery_nosupport.c
│ │ │ ├── battery_obsd.c
│ │ │ └── battery_windows.c
│ │ ├── bios/
│ │ │ ├── bios.h
│ │ │ ├── bios_android.c
│ │ │ ├── bios_apple.c
│ │ │ ├── bios_bsd.c
│ │ │ ├── bios_linux.c
│ │ │ ├── bios_nbsd.c
│ │ │ ├── bios_nosupport.c
│ │ │ └── bios_windows.c
│ │ ├── bluetooth/
│ │ │ ├── bluetooth.h
│ │ │ ├── bluetooth_apple.m
│ │ │ ├── bluetooth_bsd.c
│ │ │ ├── bluetooth_haiku.cpp
│ │ │ ├── bluetooth_linux.c
│ │ │ ├── bluetooth_nosupport.c
│ │ │ ├── bluetooth_windows.c
│ │ │ └── bluetooth_windows.cpp
│ │ ├── bluetoothradio/
│ │ │ ├── bluetoothradio.c
│ │ │ ├── bluetoothradio.h
│ │ │ ├── bluetoothradio_apple.m
│ │ │ ├── bluetoothradio_linux.c
│ │ │ ├── bluetoothradio_nosupport.c
│ │ │ └── bluetoothradio_windows.c
│ │ ├── board/
│ │ │ ├── board.h
│ │ │ ├── board_android.c
│ │ │ ├── board_apple.c
│ │ │ ├── board_bsd.c
│ │ │ ├── board_linux.c
│ │ │ ├── board_nbsd.c
│ │ │ ├── board_nosupport.c
│ │ │ └── board_windows.c
│ │ ├── bootmgr/
│ │ │ ├── bootmgr.c
│ │ │ ├── bootmgr.h
│ │ │ ├── bootmgr_apple.c
│ │ │ ├── bootmgr_bsd.c
│ │ │ ├── bootmgr_linux.c
│ │ │ ├── bootmgr_nosupport.c
│ │ │ ├── bootmgr_windows.c
│ │ │ └── efi_helper.h
│ │ ├── brightness/
│ │ │ ├── brightness.h
│ │ │ ├── brightness_apple.c
│ │ │ ├── brightness_bsd.c
│ │ │ ├── brightness_linux.c
│ │ │ ├── brightness_nbsd.c
│ │ │ ├── brightness_nosupport.c
│ │ │ ├── brightness_obsd.c
│ │ │ └── brightness_windows.cpp
│ │ ├── btrfs/
│ │ │ ├── btrfs.h
│ │ │ ├── btrfs_linux.c
│ │ │ └── btrfs_nosupport.c
│ │ ├── camera/
│ │ │ ├── camera.h
│ │ │ ├── camera_android.c
│ │ │ ├── camera_apple.m
│ │ │ ├── camera_linux.c
│ │ │ ├── camera_nosupport.c
│ │ │ └── camera_windows.cpp
│ │ ├── chassis/
│ │ │ ├── chassis.c
│ │ │ ├── chassis.h
│ │ │ ├── chassis_apple.c
│ │ │ ├── chassis_bsd.c
│ │ │ ├── chassis_linux.c
│ │ │ ├── chassis_nbsd.c
│ │ │ ├── chassis_nosupport.c
│ │ │ └── chassis_windows.c
│ │ ├── command/
│ │ │ ├── command.c
│ │ │ └── command.h
│ │ ├── cpu/
│ │ │ ├── cpu.c
│ │ │ ├── cpu.h
│ │ │ ├── cpu_apple.c
│ │ │ ├── cpu_arm.h
│ │ │ ├── cpu_bsd.c
│ │ │ ├── cpu_haiku.c
│ │ │ ├── cpu_linux.c
│ │ │ ├── cpu_nbsd.c
│ │ │ ├── cpu_nosupport.c
│ │ │ ├── cpu_obsd.c
│ │ │ ├── cpu_sunos.c
│ │ │ └── cpu_windows.c
│ │ ├── cpucache/
│ │ │ ├── cpucache.h
│ │ │ ├── cpucache_apple.c
│ │ │ ├── cpucache_linux.c
│ │ │ ├── cpucache_nosupport.c
│ │ │ ├── cpucache_shared.c
│ │ │ └── cpucache_windows.c
│ │ ├── cpuusage/
│ │ │ ├── cpuusage.c
│ │ │ ├── cpuusage.h
│ │ │ ├── cpuusage_apple.c
│ │ │ ├── cpuusage_bsd.c
│ │ │ ├── cpuusage_haiku.c
│ │ │ ├── cpuusage_linux.c
│ │ │ ├── cpuusage_nosupport.c
│ │ │ ├── cpuusage_sunos.c
│ │ │ └── cpuusage_windows.c
│ │ ├── cursor/
│ │ │ ├── cursor.h
│ │ │ ├── cursor_apple.m
│ │ │ ├── cursor_linux.c
│ │ │ ├── cursor_nosupport.c
│ │ │ └── cursor_windows.c
│ │ ├── de/
│ │ │ ├── de.h
│ │ │ ├── de_linux.c
│ │ │ └── de_nosupport.c
│ │ ├── disk/
│ │ │ ├── disk.c
│ │ │ ├── disk.h
│ │ │ ├── disk_bsd.c
│ │ │ ├── disk_haiku.cpp
│ │ │ ├── disk_linux.c
│ │ │ ├── disk_nosupport.c
│ │ │ ├── disk_sunos.c
│ │ │ └── disk_windows.c
│ │ ├── diskio/
│ │ │ ├── diskio.c
│ │ │ ├── diskio.h
│ │ │ ├── diskio_apple.c
│ │ │ ├── diskio_bsd.c
│ │ │ ├── diskio_linux.c
│ │ │ ├── diskio_nbsd.c
│ │ │ ├── diskio_nosupport.c
│ │ │ ├── diskio_obsd.c
│ │ │ ├── diskio_sunos.c
│ │ │ └── diskio_windows.c
│ │ ├── displayserver/
│ │ │ ├── displayserver.c
│ │ │ ├── displayserver.h
│ │ │ ├── displayserver_android.c
│ │ │ ├── displayserver_apple.c
│ │ │ ├── displayserver_haiku.cpp
│ │ │ ├── displayserver_windows.c
│ │ │ └── linux/
│ │ │ ├── common.c
│ │ │ ├── displayserver_linux.c
│ │ │ ├── displayserver_linux.h
│ │ │ ├── drm.c
│ │ │ ├── wayland/
│ │ │ │ ├── global-output.c
│ │ │ │ ├── kde-output-device-v2-client-protocol.h
│ │ │ │ ├── kde-output-device-v2-protocol.c
│ │ │ │ ├── kde-output-order-v1-client-protocol.h
│ │ │ │ ├── kde-output-order-v1-protocol.c
│ │ │ │ ├── kde-output.c
│ │ │ │ ├── wayland.c
│ │ │ │ ├── wayland.h
│ │ │ │ ├── wlr-output-management-unstable-v1-client-protocol.h
│ │ │ │ ├── wlr-output-management-unstable-v1-protocol.c
│ │ │ │ ├── xdg-output-unstable-v1-client-protocol.h
│ │ │ │ ├── xdg-output-unstable-v1-protocol.c
│ │ │ │ └── zwlr-output.c
│ │ │ ├── wmde.c
│ │ │ ├── xcb.c
│ │ │ └── xlib.c
│ │ ├── dns/
│ │ │ ├── dns.h
│ │ │ ├── dns_apple.c
│ │ │ ├── dns_linux.c
│ │ │ └── dns_windows.c
│ │ ├── editor/
│ │ │ ├── editor.c
│ │ │ └── editor.h
│ │ ├── font/
│ │ │ ├── font.c
│ │ │ ├── font.h
│ │ │ ├── font_apple.m
│ │ │ ├── font_haiku.cpp
│ │ │ ├── font_linux.c
│ │ │ ├── font_nosupport.c
│ │ │ └── font_windows.c
│ │ ├── gamepad/
│ │ │ ├── gamepad.h
│ │ │ ├── gamepad_apple.c
│ │ │ ├── gamepad_bsd.c
│ │ │ ├── gamepad_haiku.cpp
│ │ │ ├── gamepad_linux.c
│ │ │ ├── gamepad_nosupport.c
│ │ │ └── gamepad_windows.c
│ │ ├── gpu/
│ │ │ ├── adl.h
│ │ │ ├── asahi_drm.h
│ │ │ ├── gpu.c
│ │ │ ├── gpu.h
│ │ │ ├── gpu_amd.c
│ │ │ ├── gpu_android.c
│ │ │ ├── gpu_apple.c
│ │ │ ├── gpu_apple.m
│ │ │ ├── gpu_bsd.c
│ │ │ ├── gpu_driver_specific.h
│ │ │ ├── gpu_drm.c
│ │ │ ├── gpu_gnu.c
│ │ │ ├── gpu_haiku.c
│ │ │ ├── gpu_intel.c
│ │ │ ├── gpu_linux.c
│ │ │ ├── gpu_mthreads.c
│ │ │ ├── gpu_nbsd.c
│ │ │ ├── gpu_nosupport.c
│ │ │ ├── gpu_nvidia.c
│ │ │ ├── gpu_obsd.c
│ │ │ ├── gpu_pci.c
│ │ │ ├── gpu_sunos.c
│ │ │ ├── gpu_windows.c
│ │ │ ├── gpu_wsl.cpp
│ │ │ ├── igcl.h
│ │ │ ├── intel_drm.h
│ │ │ ├── mtml.h
│ │ │ ├── nvapi.h
│ │ │ └── nvml.h
│ │ ├── gtk_qt/
│ │ │ ├── gtk.c
│ │ │ ├── gtk_qt.h
│ │ │ └── qt.c
│ │ ├── host/
│ │ │ ├── host.h
│ │ │ ├── host_android.c
│ │ │ ├── host_apple.c
│ │ │ ├── host_bsd.c
│ │ │ ├── host_linux.c
│ │ │ ├── host_mac.c
│ │ │ ├── host_nbsd.c
│ │ │ ├── host_nosupport.c
│ │ │ ├── host_obsd.c
│ │ │ └── host_windows.c
│ │ ├── icons/
│ │ │ ├── icons.h
│ │ │ ├── icons_linux.c
│ │ │ ├── icons_nosupport.c
│ │ │ └── icons_windows.c
│ │ ├── initsystem/
│ │ │ ├── initsystem.h
│ │ │ ├── initsystem_haiku.c
│ │ │ ├── initsystem_linux.c
│ │ │ └── initsystem_nosupport.c
│ │ ├── keyboard/
│ │ │ ├── keyboard.h
│ │ │ ├── keyboard_apple.c
│ │ │ ├── keyboard_bsd.c
│ │ │ ├── keyboard_haiku.cpp
│ │ │ ├── keyboard_linux.c
│ │ │ ├── keyboard_nosupport.c
│ │ │ └── keyboard_windows.c
│ │ ├── libc/
│ │ │ ├── libc.h
│ │ │ ├── libc_android.c
│ │ │ ├── libc_apple.c
│ │ │ ├── libc_bsd.c
│ │ │ ├── libc_linux.c
│ │ │ ├── libc_nosupport.c
│ │ │ └── libc_windows.cpp
│ │ ├── lm/
│ │ │ ├── lm.h
│ │ │ ├── lm_linux.c
│ │ │ └── lm_nosupport.c
│ │ ├── loadavg/
│ │ │ ├── loadavg.h
│ │ │ ├── loadavg_bsd.c
│ │ │ ├── loadavg_linux.c
│ │ │ ├── loadavg_nosupport.c
│ │ │ └── loadavg_sunos.c
│ │ ├── locale/
│ │ │ ├── locale.h
│ │ │ ├── locale_linux.c
│ │ │ └── locale_windows.c
│ │ ├── localip/
│ │ │ ├── localip.h
│ │ │ ├── localip_linux.c
│ │ │ └── localip_windows.c
│ │ ├── media/
│ │ │ ├── media.c
│ │ │ ├── media.h
│ │ │ ├── media_apple.m
│ │ │ ├── media_linux.c
│ │ │ ├── media_nosupport.c
│ │ │ ├── media_windows.c
│ │ │ ├── media_windows.dll.cpp
│ │ │ └── media_windows.dll.h
│ │ ├── memory/
│ │ │ ├── memory.h
│ │ │ ├── memory_apple.c
│ │ │ ├── memory_bsd.c
│ │ │ ├── memory_haiku.c
│ │ │ ├── memory_linux.c
│ │ │ ├── memory_nbsd.c
│ │ │ ├── memory_nosupport.c
│ │ │ ├── memory_obsd.c
│ │ │ ├── memory_sunos.c
│ │ │ └── memory_windows.c
│ │ ├── mouse/
│ │ │ ├── mouse.h
│ │ │ ├── mouse_apple.c
│ │ │ ├── mouse_bsd.c
│ │ │ ├── mouse_haiku.cpp
│ │ │ ├── mouse_linux.c
│ │ │ ├── mouse_nosupport.c
│ │ │ └── mouse_windows.c
│ │ ├── netio/
│ │ │ ├── netio.c
│ │ │ ├── netio.h
│ │ │ ├── netio_apple.c
│ │ │ ├── netio_bsd.c
│ │ │ ├── netio_haiku.cpp
│ │ │ ├── netio_linux.c
│ │ │ ├── netio_nosupport.c
│ │ │ ├── netio_sunos.c
│ │ │ └── netio_windows.c
│ │ ├── opencl/
│ │ │ ├── opencl.c
│ │ │ └── opencl.h
│ │ ├── opengl/
│ │ │ ├── opengl.h
│ │ │ ├── opengl_apple.c
│ │ │ ├── opengl_haiku.cpp
│ │ │ ├── opengl_linux.c
│ │ │ ├── opengl_shared.c
│ │ │ └── opengl_windows.c
│ │ ├── os/
│ │ │ ├── os.c
│ │ │ ├── os.h
│ │ │ ├── os_android.c
│ │ │ ├── os_apple.m
│ │ │ ├── os_haiku.c
│ │ │ ├── os_linux.c
│ │ │ ├── os_nbsd.c
│ │ │ ├── os_obsd.c
│ │ │ ├── os_sunos.c
│ │ │ └── os_windows.c
│ │ ├── packages/
│ │ │ ├── packages.c
│ │ │ ├── packages.h
│ │ │ ├── packages_apple.c
│ │ │ ├── packages_bsd.c
│ │ │ ├── packages_haiku.c
│ │ │ ├── packages_linux.c
│ │ │ ├── packages_nbsd.c
│ │ │ ├── packages_nix.c
│ │ │ ├── packages_nosupport.c
│ │ │ ├── packages_obsd.c
│ │ │ ├── packages_sunos.c
│ │ │ └── packages_windows.c
│ │ ├── physicaldisk/
│ │ │ ├── physicaldisk.h
│ │ │ ├── physicaldisk_apple.c
│ │ │ ├── physicaldisk_bsd.c
│ │ │ ├── physicaldisk_haiku.c
│ │ │ ├── physicaldisk_linux.c
│ │ │ ├── physicaldisk_nosupport.c
│ │ │ ├── physicaldisk_sunos.c
│ │ │ └── physicaldisk_windows.c
│ │ ├── physicalmemory/
│ │ │ ├── physicalmemory.c
│ │ │ ├── physicalmemory.h
│ │ │ ├── physicalmemory_apple.m
│ │ │ ├── physicalmemory_linux.c
│ │ │ └── physicalmemory_nosupport.c
│ │ ├── poweradapter/
│ │ │ ├── poweradapter.h
│ │ │ ├── poweradapter_apple.c
│ │ │ ├── poweradapter_linux.c
│ │ │ └── poweradapter_nosupport.c
│ │ ├── processes/
│ │ │ ├── processes.h
│ │ │ ├── processes_bsd.c
│ │ │ ├── processes_haiku.c
│ │ │ ├── processes_linux.c
│ │ │ ├── processes_nbsd.c
│ │ │ ├── processes_nosupport.c
│ │ │ ├── processes_obsd.c
│ │ │ └── processes_windows.c
│ │ ├── publicip/
│ │ │ ├── publicip.c
│ │ │ └── publicip.h
│ │ ├── sound/
│ │ │ ├── audio_oss_sunos.h
│ │ │ ├── sound.h
│ │ │ ├── sound_apple.c
│ │ │ ├── sound_bsd.c
│ │ │ ├── sound_haiku.cpp
│ │ │ ├── sound_linux.c
│ │ │ ├── sound_nbsd.c
│ │ │ ├── sound_nosupport.c
│ │ │ ├── sound_obsd.c
│ │ │ ├── sound_sunos.c
│ │ │ └── sound_windows.cpp
│ │ ├── swap/
│ │ │ ├── swap.h
│ │ │ ├── swap_apple.c
│ │ │ ├── swap_bsd.c
│ │ │ ├── swap_haiku.c
│ │ │ ├── swap_linux.c
│ │ │ ├── swap_nosupport.c
│ │ │ ├── swap_obsd.c
│ │ │ ├── swap_sunos.c
│ │ │ └── swap_windows.c
│ │ ├── terminalfont/
│ │ │ ├── terminalfont.c
│ │ │ ├── terminalfont.h
│ │ │ ├── terminalfont_android.c
│ │ │ ├── terminalfont_apple.m
│ │ │ ├── terminalfont_linux.c
│ │ │ └── terminalfont_windows.c
│ │ ├── terminalshell/
│ │ │ ├── terminalshell.c
│ │ │ ├── terminalshell.h
│ │ │ ├── terminalshell_linux.c
│ │ │ └── terminalshell_windows.c
│ │ ├── terminalsize/
│ │ │ ├── terminalsize.h
│ │ │ ├── terminalsize_linux.c
│ │ │ └── terminalsize_windows.c
│ │ ├── terminaltheme/
│ │ │ ├── terminaltheme.c
│ │ │ └── terminaltheme.h
│ │ ├── theme/
│ │ │ ├── theme.h
│ │ │ ├── theme_apple.c
│ │ │ ├── theme_linux.c
│ │ │ ├── theme_nosupport.c
│ │ │ └── theme_windows.c
│ │ ├── tpm/
│ │ │ ├── tpm.h
│ │ │ ├── tpm_apple.c
│ │ │ ├── tpm_bsd.c
│ │ │ ├── tpm_linux.c
│ │ │ ├── tpm_nosupport.c
│ │ │ └── tpm_windows.c
│ │ ├── uptime/
│ │ │ ├── uptime.h
│ │ │ ├── uptime_bsd.c
│ │ │ ├── uptime_haiku.c
│ │ │ ├── uptime_linux.c
│ │ │ ├── uptime_sunos.c
│ │ │ └── uptime_windows.c
│ │ ├── users/
│ │ │ ├── users.h
│ │ │ ├── users_linux.c
│ │ │ ├── users_nosupport.c
│ │ │ ├── users_obsd.c
│ │ │ └── users_windows.c
│ │ ├── version/
│ │ │ ├── version.c
│ │ │ └── version.h
│ │ ├── vulkan/
│ │ │ ├── vulkan.c
│ │ │ └── vulkan.h
│ │ ├── wallpaper/
│ │ │ ├── wallpaper.h
│ │ │ ├── wallpaper_apple.m
│ │ │ ├── wallpaper_linux.c
│ │ │ ├── wallpaper_nosupport.c
│ │ │ └── wallpaper_windows.c
│ │ ├── weather/
│ │ │ ├── weather.c
│ │ │ └── weather.h
│ │ ├── wifi/
│ │ │ ├── wifi.h
│ │ │ ├── wifi_android.c
│ │ │ ├── wifi_apple.m
│ │ │ ├── wifi_bsd.c
│ │ │ ├── wifi_linux.c
│ │ │ ├── wifi_nbsd.c
│ │ │ ├── wifi_nosupport.c
│ │ │ ├── wifi_obsd.c
│ │ │ └── wifi_windows.c
│ │ ├── wm/
│ │ │ ├── wm.h
│ │ │ ├── wm_apple.m
│ │ │ ├── wm_linux.c
│ │ │ ├── wm_nosupport.c
│ │ │ └── wm_windows.c
│ │ ├── wmtheme/
│ │ │ ├── wmtheme.h
│ │ │ ├── wmtheme_apple.m
│ │ │ ├── wmtheme_linux.c
│ │ │ ├── wmtheme_nosupport.c
│ │ │ └── wmtheme_windows.c
│ │ └── zpool/
│ │ ├── libzfs_simplified.h
│ │ ├── zpool.c
│ │ └── zpool.h
│ ├── fastfetch.c
│ ├── fastfetch.h
│ ├── fastfetch_config.h.in
│ ├── fastfetch_datatext.h.in
│ ├── flashfetch.c
│ ├── logo/
│ │ ├── ascii/
│ │ │ ├── adelie.txt
│ │ │ ├── aeon.txt
│ │ │ ├── aeros.txt
│ │ │ ├── aerynos.txt
│ │ │ ├── afterglow.txt
│ │ │ ├── aix.txt
│ │ │ ├── almalinux.txt
│ │ │ ├── alpine.txt
│ │ │ ├── alpine2.txt
│ │ │ ├── alpine2_small.txt
│ │ │ ├── alpine3_small.txt
│ │ │ ├── alpine_small.txt
│ │ │ ├── alter.txt
│ │ │ ├── altlinux.txt
│ │ │ ├── amazon.txt
│ │ │ ├── amazon_linux.txt
│ │ │ ├── amiga.txt
│ │ │ ├── amogos.txt
│ │ │ ├── anarchy.txt
│ │ │ ├── android.txt
│ │ │ ├── android_small.txt
│ │ │ ├── anduinos.txt
│ │ │ ├── antergos.txt
│ │ │ ├── antix.txt
│ │ │ ├── anushos.txt
│ │ │ ├── aoscos.txt
│ │ │ ├── aoscos_old.txt
│ │ │ ├── aoscosretro.txt
│ │ │ ├── aoscosretro_small.txt
│ │ │ ├── aperture.txt
│ │ │ ├── apricity.txt
│ │ │ ├── arch.txt
│ │ │ ├── arch2.txt
│ │ │ ├── arch3.txt
│ │ │ ├── arch_old.txt
│ │ │ ├── arch_small.txt
│ │ │ ├── archbox.txt
│ │ │ ├── archcraft.txt
│ │ │ ├── archcraft2.txt
│ │ │ ├── archlabs.txt
│ │ │ ├── archstrike.txt
│ │ │ ├── arco.txt
│ │ │ ├── arco_small.txt
│ │ │ ├── arkane.txt
│ │ │ ├── armbian.txt
│ │ │ ├── armbian2.txt
│ │ │ ├── arselinux.txt
│ │ │ ├── artix.txt
│ │ │ ├── artix2.txt
│ │ │ ├── artix2_small.txt
│ │ │ ├── artix_small.txt
│ │ │ ├── arya.txt
│ │ │ ├── asahi.txt
│ │ │ ├── asahi2.txt
│ │ │ ├── aster.txt
│ │ │ ├── asteroidos.txt
│ │ │ ├── astos.txt
│ │ │ ├── astra_linux.txt
│ │ │ ├── athenaos.txt
│ │ │ ├── athenaos_old.txt
│ │ │ ├── aurora.txt
│ │ │ ├── axos.txt
│ │ │ ├── azos.txt
│ │ │ ├── bedrock.txt
│ │ │ ├── bedrock_small.txt
│ │ │ ├── biglinux.txt
│ │ │ ├── bitrig.txt
│ │ │ ├── blackarch.txt
│ │ │ ├── blackmesa.txt
│ │ │ ├── blackpanther.txt
│ │ │ ├── blag.txt
│ │ │ ├── blankon.txt
│ │ │ ├── bluelight.txt
│ │ │ ├── bodhi.txt
│ │ │ ├── bonsai.txt
│ │ │ ├── bredos.txt
│ │ │ ├── bsd.txt
│ │ │ ├── bunsenlabs.txt
│ │ │ ├── cachyos.txt
│ │ │ ├── cachyos_small.txt
│ │ │ ├── calculate.txt
│ │ │ ├── calinixos.txt
│ │ │ ├── calinixos_small.txt
│ │ │ ├── carbs.txt
│ │ │ ├── cbl_mariner.txt
│ │ │ ├── celos.txt
│ │ │ ├── center.txt
│ │ │ ├── centos.txt
│ │ │ ├── centos_small.txt
│ │ │ ├── cereus.txt
│ │ │ ├── chakra.txt
│ │ │ ├── chaletos.txt
│ │ │ ├── chapeau.txt
│ │ │ ├── chimera_linux.txt
│ │ │ ├── chonkysealos.txt
│ │ │ ├── chrom.txt
│ │ │ ├── cleanjaro.txt
│ │ │ ├── cleanjaro_small.txt
│ │ │ ├── clear_linux.txt
│ │ │ ├── clearos.txt
│ │ │ ├── clover.txt
│ │ │ ├── cobalt.txt
│ │ │ ├── codex.txt
│ │ │ ├── condres.txt
│ │ │ ├── cosmic.txt
│ │ │ ├── crux.txt
│ │ │ ├── crux_small.txt
│ │ │ ├── crystal.txt
│ │ │ ├── cucumber.txt
│ │ │ ├── cuerdos.txt
│ │ │ ├── cutefishos.txt
│ │ │ ├── cuteos.txt
│ │ │ ├── cyberos.txt
│ │ │ ├── cycledream.txt
│ │ │ ├── dahlia.txt
│ │ │ ├── darkos.txt
│ │ │ ├── debian.txt
│ │ │ ├── debian_small.txt
│ │ │ ├── deepin.txt
│ │ │ ├── desaos.txt
│ │ │ ├── devuan.txt
│ │ │ ├── devuan_small.txt
│ │ │ ├── dietpi.txt
│ │ │ ├── dracos.txt
│ │ │ ├── dragonfly.txt
│ │ │ ├── dragonfly_old.txt
│ │ │ ├── dragonfly_small.txt
│ │ │ ├── drauger.txt
│ │ │ ├── droidian.txt
│ │ │ ├── elbrus.txt
│ │ │ ├── elementary.txt
│ │ │ ├── elementary_small.txt
│ │ │ ├── elive.txt
│ │ │ ├── emmabuntus.txt
│ │ │ ├── emperoros.txt
│ │ │ ├── encryptos.txt
│ │ │ ├── endeavouros.txt
│ │ │ ├── endeavouros_small.txt
│ │ │ ├── endless.txt
│ │ │ ├── enso.txt
│ │ │ ├── eshanizedos.txt
│ │ │ ├── eurolinux.txt
│ │ │ ├── evolutionos.txt
│ │ │ ├── evolutionos_old.txt
│ │ │ ├── evolutionos_small.txt
│ │ │ ├── eweos.txt
│ │ │ ├── exherbo.txt
│ │ │ ├── exodia_predator.txt
│ │ │ ├── fastfetch.txt
│ │ │ ├── fedora.txt
│ │ │ ├── fedora2_small.txt
│ │ │ ├── fedora_coreos.txt
│ │ │ ├── fedora_kinoite.txt
│ │ │ ├── fedora_old.txt
│ │ │ ├── fedora_sericea.txt
│ │ │ ├── fedora_silverblue.txt
│ │ │ ├── fedora_small.txt
│ │ │ ├── femboyos.txt
│ │ │ ├── feren.txt
│ │ │ ├── filotimo.txt
│ │ │ ├── finnix.txt
│ │ │ ├── floflis.txt
│ │ │ ├── freebsd.txt
│ │ │ ├── freebsd_small.txt
│ │ │ ├── freemint.txt
│ │ │ ├── frugalware.txt
│ │ │ ├── funtoo.txt
│ │ │ ├── furreto.txt
│ │ │ ├── galliumos.txt
│ │ │ ├── garuda.txt
│ │ │ ├── garuda_dragon.txt
│ │ │ ├── garuda_small.txt
│ │ │ ├── gentoo.txt
│ │ │ ├── gentoo_small.txt
│ │ │ ├── ghostbsd.txt
│ │ │ ├── ghostfreak.txt
│ │ │ ├── glaucus.txt
│ │ │ ├── gnewsense.txt
│ │ │ ├── gnome.txt
│ │ │ ├── gnu.txt
│ │ │ ├── gobolinux.txt
│ │ │ ├── goldendoglinux.txt
│ │ │ ├── grapheneos.txt
│ │ │ ├── grombyang.txt
│ │ │ ├── guix.txt
│ │ │ ├── guix_small.txt
│ │ │ ├── gxde.txt
│ │ │ ├── haiku.txt
│ │ │ ├── haiku2.txt
│ │ │ ├── haiku_small.txt
│ │ │ ├── hamonikr.txt
│ │ │ ├── hardclanz.txt
│ │ │ ├── harmonyos.txt
│ │ │ ├── hash.txt
│ │ │ ├── hce.txt
│ │ │ ├── heliumos.txt
│ │ │ ├── huayra.txt
│ │ │ ├── hybrid.txt
│ │ │ ├── hydroos.txt
│ │ │ ├── hyperbola.txt
│ │ │ ├── hyperbola_small.txt
│ │ │ ├── hypros.txt
│ │ │ ├── iglunix.txt
│ │ │ ├── instantos.txt
│ │ │ ├── interix.txt
│ │ │ ├── irix.txt
│ │ │ ├── ironclad.txt
│ │ │ ├── itc.txt
│ │ │ ├── januslinux.txt
│ │ │ ├── kaisen.txt
│ │ │ ├── kali.txt
│ │ │ ├── kali_small.txt
│ │ │ ├── kalpa_desktop.txt
│ │ │ ├── kaos.txt
│ │ │ ├── kdelinux.txt
│ │ │ ├── kdeneon.txt
│ │ │ ├── kernelos.txt
│ │ │ ├── kibojoe.txt
│ │ │ ├── kiss.txt
│ │ │ ├── kiss2.txt
│ │ │ ├── kogaion.txt
│ │ │ ├── korora.txt
│ │ │ ├── krassos.txt
│ │ │ ├── kslinux.txt
│ │ │ ├── kubuntu.txt
│ │ │ ├── kylin.txt
│ │ │ ├── lainos.txt
│ │ │ ├── langitketujuh.txt
│ │ │ ├── laxeros.txt
│ │ │ ├── lede.txt
│ │ │ ├── lfs.txt
│ │ │ ├── libreelec.txt
│ │ │ ├── lilidog.txt
│ │ │ ├── lingmo.txt
│ │ │ ├── linspire.txt
│ │ │ ├── linux.txt
│ │ │ ├── linux_small.txt
│ │ │ ├── linuxlite.txt
│ │ │ ├── linuxlite_small.txt
│ │ │ ├── linuxmint.txt
│ │ │ ├── linuxmint2.txt
│ │ │ ├── linuxmint_old.txt
│ │ │ ├── linuxmint_small.txt
│ │ │ ├── live_raizo.txt
│ │ │ ├── lliurex.txt
│ │ │ ├── lmde.txt
│ │ │ ├── locos.txt
│ │ │ ├── lubuntu.txt
│ │ │ ├── lunar.txt
│ │ │ ├── macaronios.txt
│ │ │ ├── macos.txt
│ │ │ ├── macos2.txt
│ │ │ ├── macos2_small.txt
│ │ │ ├── macos3.txt
│ │ │ ├── macos_small.txt
│ │ │ ├── mageia.txt
│ │ │ ├── mageia_small.txt
│ │ │ ├── magix.txt
│ │ │ ├── magpieos.txt
│ │ │ ├── mainsailos.txt
│ │ │ ├── mainsailos_small.txt
│ │ │ ├── mandriva.txt
│ │ │ ├── manjaro.txt
│ │ │ ├── manjaro_small.txt
│ │ │ ├── massos.txt
│ │ │ ├── matuusos.txt
│ │ │ ├── maui.txt
│ │ │ ├── mauna.txt
│ │ │ ├── meowix.txt
│ │ │ ├── mer.txt
│ │ │ ├── midnightbsd.txt
│ │ │ ├── midos.txt
│ │ │ ├── midos_old.txt
│ │ │ ├── minimal.txt
│ │ │ ├── minix.txt
│ │ │ ├── miracle_linux.txt
│ │ │ ├── mos.txt
│ │ │ ├── msys2.txt
│ │ │ ├── mx.txt
│ │ │ ├── mx2.txt
│ │ │ ├── mx_small.txt
│ │ │ ├── namib.txt
│ │ │ ├── nekos.txt
│ │ │ ├── neptune.txt
│ │ │ ├── netbsd.txt
│ │ │ ├── netbsd2.txt
│ │ │ ├── netbsd_small.txt
│ │ │ ├── nethydra.txt
│ │ │ ├── netrunner.txt
│ │ │ ├── nexalinux.txt
│ │ │ ├── nitrux.txt
│ │ │ ├── nixos.txt
│ │ │ ├── nixos_old.txt
│ │ │ ├── nixos_old_small.txt
│ │ │ ├── nixos_small.txt
│ │ │ ├── nobara.txt
│ │ │ ├── nomadbsd.txt
│ │ │ ├── nuros.txt
│ │ │ ├── nurunner.txt
│ │ │ ├── nutyx.txt
│ │ │ ├── obarun.txt
│ │ │ ├── obrevenge.txt
│ │ │ ├── obsidianos.txt
│ │ │ ├── omnios.txt
│ │ │ ├── openbsd.txt
│ │ │ ├── openbsd_small.txt
│ │ │ ├── openeuler.txt
│ │ │ ├── openindiana.txt
│ │ │ ├── openkylin.txt
│ │ │ ├── openmamba.txt
│ │ │ ├── openmandriva.txt
│ │ │ ├── openstage.txt
│ │ │ ├── opensuse.txt
│ │ │ ├── opensuse_leap.txt
│ │ │ ├── opensuse_leap_old.txt
│ │ │ ├── opensuse_microos.txt
│ │ │ ├── opensuse_slowroll.txt
│ │ │ ├── opensuse_small.txt
│ │ │ ├── opensuse_tumbleweed.txt
│ │ │ ├── opensuse_tumbleweed2.txt
│ │ │ ├── opensuse_tumbleweed_old.txt
│ │ │ ├── opensuse_tumbleweed_small.txt
│ │ │ ├── openwrt.txt
│ │ │ ├── opnsense.txt
│ │ │ ├── oracle.txt
│ │ │ ├── orchid.txt
│ │ │ ├── orchid_small.txt
│ │ │ ├── oreon.txt
│ │ │ ├── os2warp.txt
│ │ │ ├── os_elbrus.txt
│ │ │ ├── osmc.txt
│ │ │ ├── pacbsd.txt
│ │ │ ├── panwah.txt
│ │ │ ├── parabola.txt
│ │ │ ├── parabola_small.txt
│ │ │ ├── parch.txt
│ │ │ ├── pardus.txt
│ │ │ ├── parrot.txt
│ │ │ ├── parsix.txt
│ │ │ ├── pcbsd.txt
│ │ │ ├── pclinuxos.txt
│ │ │ ├── pearos.txt
│ │ │ ├── pengwin.txt
│ │ │ ├── pentoo.txt
│ │ │ ├── peppermint.txt
│ │ │ ├── peropesis.txt
│ │ │ ├── phyos.txt
│ │ │ ├── pikaos.txt
│ │ │ ├── pisi.txt
│ │ │ ├── pnm_linux.txt
│ │ │ ├── pop.txt
│ │ │ ├── pop_small.txt
│ │ │ ├── porteus.txt
│ │ │ ├── postmarketos.txt
│ │ │ ├── postmarketos_small.txt
│ │ │ ├── prismlinux.txt
│ │ │ ├── prismlinux_small.txt
│ │ │ ├── proxmox.txt
│ │ │ ├── puffos.txt
│ │ │ ├── puppy.txt
│ │ │ ├── pureos.txt
│ │ │ ├── pureos_small.txt
│ │ │ ├── q4os.txt
│ │ │ ├── qts.txt
│ │ │ ├── qubes.txt
│ │ │ ├── qubyt.txt
│ │ │ ├── quibian.txt
│ │ │ ├── quirinux.txt
│ │ │ ├── radix.txt
│ │ │ ├── raspbian.txt
│ │ │ ├── raspbian_small.txt
│ │ │ ├── ravynos.txt
│ │ │ ├── rebornos.txt
│ │ │ ├── rebornos_small.txt
│ │ │ ├── redcore.txt
│ │ │ ├── redos.txt
│ │ │ ├── redos_small.txt
│ │ │ ├── redstar.txt
│ │ │ ├── refracta.txt
│ │ │ ├── regata.txt
│ │ │ ├── regolith.txt
│ │ │ ├── rengeos.txt
│ │ │ ├── rhaymos.txt
│ │ │ ├── rhel.txt
│ │ │ ├── rhel_old.txt
│ │ │ ├── rhel_small.txt
│ │ │ ├── rhino.txt
│ │ │ ├── rocky.txt
│ │ │ ├── rocky_small.txt
│ │ │ ├── rosa.txt
│ │ │ ├── sabayon.txt
│ │ │ ├── sabotage.txt
│ │ │ ├── sailfish.txt
│ │ │ ├── salentos.txt
│ │ │ ├── salientos.txt
│ │ │ ├── salix.txt
│ │ │ ├── sambabox.txt
│ │ │ ├── sasanqua.txt
│ │ │ ├── scientific.txt
│ │ │ ├── secureblue.txt
│ │ │ ├── semc.txt
│ │ │ ├── septor.txt
│ │ │ ├── serene.txt
│ │ │ ├── serpent_os.txt
│ │ │ ├── sharklinux.txt
│ │ │ ├── shastraos.txt
│ │ │ ├── shebang.txt
│ │ │ ├── siduction.txt
│ │ │ ├── skiffos.txt
│ │ │ ├── slackel.txt
│ │ │ ├── slackware.txt
│ │ │ ├── slackware_small.txt
│ │ │ ├── sleeperos.txt
│ │ │ ├── sleeperos_small.txt
│ │ │ ├── slitaz.txt
│ │ │ ├── smartos.txt
│ │ │ ├── snigdhaos.txt
│ │ │ ├── soda.txt
│ │ │ ├── solaris.txt
│ │ │ ├── solaris_small.txt
│ │ │ ├── solus.txt
│ │ │ ├── source_mage.txt
│ │ │ ├── sparky.txt
│ │ │ ├── spoinkos.txt
│ │ │ ├── star.txt
│ │ │ ├── steamdeck.txt
│ │ │ ├── steamdeck_small.txt
│ │ │ ├── steamos.txt
│ │ │ ├── stock_linux.txt
│ │ │ ├── sulin.txt
│ │ │ ├── summitos.txt
│ │ │ ├── suse.txt
│ │ │ ├── swagarch.txt
│ │ │ ├── t2.txt
│ │ │ ├── t2_small.txt
│ │ │ ├── tails.txt
│ │ │ ├── tatra.txt
│ │ │ ├── tearch.txt
│ │ │ ├── templeos.txt
│ │ │ ├── tileos.txt
│ │ │ ├── torizoncore.txt
│ │ │ ├── trisquel.txt
│ │ │ ├── truenas_scale.txt
│ │ │ ├── tuxedo_os.txt
│ │ │ ├── twister.txt
│ │ │ ├── ublinux.txt
│ │ │ ├── ublinux_small.txt
│ │ │ ├── ubuntu.txt
│ │ │ ├── ubuntu_budgie.txt
│ │ │ ├── ubuntu_cinnamon.txt
│ │ │ ├── ubuntu_gnome.txt
│ │ │ ├── ubuntu_kylin.txt
│ │ │ ├── ubuntu_mate.txt
│ │ │ ├── ubuntu_old.txt
│ │ │ ├── ubuntu_old2.txt
│ │ │ ├── ubuntu_old2_small.txt
│ │ │ ├── ubuntu_small.txt
│ │ │ ├── ubuntu_studio.txt
│ │ │ ├── ubuntu_sway.txt
│ │ │ ├── ubuntu_touch.txt
│ │ │ ├── ubuntu_unity.txt
│ │ │ ├── ultramarine.txt
│ │ │ ├── ultramarine_small.txt
│ │ │ ├── unifi.txt
│ │ │ ├── univalent.txt
│ │ │ ├── univention.txt
│ │ │ ├── unknown.txt
│ │ │ ├── uos.txt
│ │ │ ├── urukos.txt
│ │ │ ├── uwuntu.txt
│ │ │ ├── valhalla.txt
│ │ │ ├── vanilla.txt
│ │ │ ├── vanilla2.txt
│ │ │ ├── vanilla_small.txt
│ │ │ ├── venom.txt
│ │ │ ├── venom_small.txt
│ │ │ ├── vincentos.txt
│ │ │ ├── vnux.txt
│ │ │ ├── void.txt
│ │ │ ├── void2.txt
│ │ │ ├── void2_small.txt
│ │ │ ├── void_small.txt
│ │ │ ├── vzlinux.txt
│ │ │ ├── wii_linux.txt
│ │ │ ├── windows.txt
│ │ │ ├── windows_11.txt
│ │ │ ├── windows_11_small.txt
│ │ │ ├── windows_2025.txt
│ │ │ ├── windows_8.txt
│ │ │ ├── windows_95.txt
│ │ │ ├── wolfos.txt
│ │ │ ├── xcp_ng.txt
│ │ │ ├── xenia.txt
│ │ │ ├── xenia_old.txt
│ │ │ ├── xeroarch.txt
│ │ │ ├── xferience.txt
│ │ │ ├── xinux.txt
│ │ │ ├── xray_os.txt
│ │ │ ├── xubuntu.txt
│ │ │ ├── yiffos.txt
│ │ │ ├── zorin.txt
│ │ │ ├── zos.txt
│ │ │ └── zraxyl.txt
│ │ ├── builtin.c
│ │ ├── image/
│ │ │ ├── im6.c
│ │ │ ├── im7.c
│ │ │ ├── image.c
│ │ │ └── image.h
│ │ ├── logo.c
│ │ └── logo.h
│ ├── modules/
│ │ ├── battery/
│ │ │ ├── battery.c
│ │ │ ├── battery.h
│ │ │ └── option.h
│ │ ├── bios/
│ │ │ ├── bios.c
│ │ │ ├── bios.h
│ │ │ └── option.h
│ │ ├── bluetooth/
│ │ │ ├── bluetooth.c
│ │ │ ├── bluetooth.h
│ │ │ └── option.h
│ │ ├── bluetoothradio/
│ │ │ ├── bluetoothradio.c
│ │ │ ├── bluetoothradio.h
│ │ │ └── option.h
│ │ ├── board/
│ │ │ ├── board.c
│ │ │ ├── board.h
│ │ │ └── option.h
│ │ ├── bootmgr/
│ │ │ ├── bootmgr.c
│ │ │ ├── bootmgr.h
│ │ │ └── option.h
│ │ ├── break/
│ │ │ ├── break.c
│ │ │ ├── break.h
│ │ │ └── option.h
│ │ ├── brightness/
│ │ │ ├── brightness.c
│ │ │ ├── brightness.h
│ │ │ └── option.h
│ │ ├── btrfs/
│ │ │ ├── btrfs.c
│ │ │ ├── btrfs.h
│ │ │ └── option.h
│ │ ├── camera/
│ │ │ ├── camera.c
│ │ │ ├── camera.h
│ │ │ └── option.h
│ │ ├── chassis/
│ │ │ ├── chassis.c
│ │ │ ├── chassis.h
│ │ │ └── option.h
│ │ ├── colors/
│ │ │ ├── colors.c
│ │ │ ├── colors.h
│ │ │ └── option.h
│ │ ├── command/
│ │ │ ├── command.c
│ │ │ ├── command.h
│ │ │ └── option.h
│ │ ├── cpu/
│ │ │ ├── cpu.c
│ │ │ ├── cpu.h
│ │ │ └── option.h
│ │ ├── cpucache/
│ │ │ ├── cpucache.c
│ │ │ ├── cpucache.h
│ │ │ └── option.h
│ │ ├── cpuusage/
│ │ │ ├── cpuusage.c
│ │ │ ├── cpuusage.h
│ │ │ └── option.h
│ │ ├── cursor/
│ │ │ ├── cursor.c
│ │ │ ├── cursor.h
│ │ │ └── option.h
│ │ ├── custom/
│ │ │ ├── custom.c
│ │ │ ├── custom.h
│ │ │ └── option.h
│ │ ├── datetime/
│ │ │ ├── datetime.c
│ │ │ ├── datetime.h
│ │ │ └── option.h
│ │ ├── de/
│ │ │ ├── de.c
│ │ │ ├── de.h
│ │ │ └── option.h
│ │ ├── disk/
│ │ │ ├── disk.c
│ │ │ ├── disk.h
│ │ │ └── option.h
│ │ ├── diskio/
│ │ │ ├── diskio.c
│ │ │ ├── diskio.h
│ │ │ └── option.h
│ │ ├── display/
│ │ │ ├── display.c
│ │ │ ├── display.h
│ │ │ └── option.h
│ │ ├── dns/
│ │ │ ├── dns.c
│ │ │ ├── dns.h
│ │ │ └── option.h
│ │ ├── editor/
│ │ │ ├── editor.c
│ │ │ ├── editor.h
│ │ │ └── option.h
│ │ ├── font/
│ │ │ ├── font.c
│ │ │ ├── font.h
│ │ │ └── option.h
│ │ ├── gamepad/
│ │ │ ├── gamepad.c
│ │ │ ├── gamepad.h
│ │ │ └── option.h
│ │ ├── gpu/
│ │ │ ├── gpu.c
│ │ │ ├── gpu.h
│ │ │ └── option.h
│ │ ├── host/
│ │ │ ├── host.c
│ │ │ ├── host.h
│ │ │ └── option.h
│ │ ├── icons/
│ │ │ ├── icons.c
│ │ │ ├── icons.h
│ │ │ └── option.h
│ │ ├── initsystem/
│ │ │ ├── initsystem.c
│ │ │ ├── initsystem.h
│ │ │ └── option.h
│ │ ├── kernel/
│ │ │ ├── kernel.c
│ │ │ ├── kernel.h
│ │ │ └── option.h
│ │ ├── keyboard/
│ │ │ ├── keyboard.c
│ │ │ ├── keyboard.h
│ │ │ └── option.h
│ │ ├── lm/
│ │ │ ├── lm.c
│ │ │ ├── lm.h
│ │ │ └── option.h
│ │ ├── loadavg/
│ │ │ ├── loadavg.c
│ │ │ ├── loadavg.h
│ │ │ └── option.h
│ │ ├── locale/
│ │ │ ├── locale.c
│ │ │ ├── locale.h
│ │ │ └── option.h
│ │ ├── localip/
│ │ │ ├── localip.c
│ │ │ ├── localip.h
│ │ │ └── option.h
│ │ ├── logo/
│ │ │ ├── logo.c
│ │ │ ├── logo.h
│ │ │ └── option.h
│ │ ├── media/
│ │ │ ├── media.c
│ │ │ ├── media.h
│ │ │ └── option.h
│ │ ├── memory/
│ │ │ ├── memory.c
│ │ │ ├── memory.h
│ │ │ └── option.h
│ │ ├── modules.c
│ │ ├── modules.h
│ │ ├── monitor/
│ │ │ ├── monitor.c
│ │ │ ├── monitor.h
│ │ │ └── option.h
│ │ ├── mouse/
│ │ │ ├── mouse.c
│ │ │ ├── mouse.h
│ │ │ └── option.h
│ │ ├── netio/
│ │ │ ├── netio.c
│ │ │ ├── netio.h
│ │ │ └── option.h
│ │ ├── opencl/
│ │ │ ├── opencl.c
│ │ │ ├── opencl.h
│ │ │ └── option.h
│ │ ├── opengl/
│ │ │ ├── opengl.c
│ │ │ ├── opengl.h
│ │ │ └── option.h
│ │ ├── options.h
│ │ ├── os/
│ │ │ ├── option.h
│ │ │ ├── os.c
│ │ │ └── os.h
│ │ ├── packages/
│ │ │ ├── option.h
│ │ │ ├── packages.c
│ │ │ └── packages.h
│ │ ├── physicaldisk/
│ │ │ ├── option.h
│ │ │ ├── physicaldisk.c
│ │ │ └── physicaldisk.h
│ │ ├── physicalmemory/
│ │ │ ├── option.h
│ │ │ ├── physicalmemory.c
│ │ │ └── physicalmemory.h
│ │ ├── player/
│ │ │ ├── option.h
│ │ │ ├── player.c
│ │ │ └── player.h
│ │ ├── poweradapter/
│ │ │ ├── option.h
│ │ │ ├── poweradapter.c
│ │ │ └── poweradapter.h
│ │ ├── processes/
│ │ │ ├── option.h
│ │ │ ├── processes.c
│ │ │ └── processes.h
│ │ ├── publicip/
│ │ │ ├── option.h
│ │ │ ├── publicip.c
│ │ │ └── publicip.h
│ │ ├── separator/
│ │ │ ├── option.h
│ │ │ ├── separator.c
│ │ │ └── separator.h
│ │ ├── shell/
│ │ │ ├── option.h
│ │ │ ├── shell.c
│ │ │ └── shell.h
│ │ ├── sound/
│ │ │ ├── option.h
│ │ │ ├── sound.c
│ │ │ └── sound.h
│ │ ├── swap/
│ │ │ ├── option.h
│ │ │ ├── swap.c
│ │ │ └── swap.h
│ │ ├── terminal/
│ │ │ ├── option.h
│ │ │ ├── terminal.c
│ │ │ └── terminal.h
│ │ ├── terminalfont/
│ │ │ ├── option.h
│ │ │ ├── terminalfont.c
│ │ │ └── terminalfont.h
│ │ ├── terminalsize/
│ │ │ ├── option.h
│ │ │ ├── terminalsize.c
│ │ │ └── terminalsize.h
│ │ ├── terminaltheme/
│ │ │ ├── option.h
│ │ │ ├── terminaltheme.c
│ │ │ └── terminaltheme.h
│ │ ├── theme/
│ │ │ ├── option.h
│ │ │ ├── theme.c
│ │ │ └── theme.h
│ │ ├── title/
│ │ │ ├── option.h
│ │ │ ├── title.c
│ │ │ └── title.h
│ │ ├── tpm/
│ │ │ ├── option.h
│ │ │ ├── tpm.c
│ │ │ └── tpm.h
│ │ ├── uptime/
│ │ │ ├── option.h
│ │ │ ├── uptime.c
│ │ │ └── uptime.h
│ │ ├── users/
│ │ │ ├── option.h
│ │ │ ├── users.c
│ │ │ └── users.h
│ │ ├── version/
│ │ │ ├── option.h
│ │ │ ├── version.c
│ │ │ └── version.h
│ │ ├── vulkan/
│ │ │ ├── option.h
│ │ │ ├── vulkan.c
│ │ │ └── vulkan.h
│ │ ├── wallpaper/
│ │ │ ├── option.h
│ │ │ ├── wallpaper.c
│ │ │ └── wallpaper.h
│ │ ├── weather/
│ │ │ ├── option.h
│ │ │ ├── weather.c
│ │ │ └── weather.h
│ │ ├── wifi/
│ │ │ ├── option.h
│ │ │ ├── wifi.c
│ │ │ └── wifi.h
│ │ ├── wm/
│ │ │ ├── option.h
│ │ │ ├── wm.c
│ │ │ └── wm.h
│ │ ├── wmtheme/
│ │ │ ├── option.h
│ │ │ ├── wmtheme.c
│ │ │ └── wmtheme.h
│ │ └── zpool/
│ │ ├── option.h
│ │ ├── zpool.c
│ │ └── zpool.h
│ └── options/
│ ├── display.c
│ ├── display.h
│ ├── general.c
│ ├── general.h
│ ├── logo.c
│ └── logo.h
└── tests/
├── color.c
├── duration.c
├── format.c
├── list.c
├── strbuf.c
├── testlogo-hardcolors.fflogo
└── testlogo-softcolors.fflogo
================================================
FILE CONTENTS
================================================
================================================
FILE: .codespellrc
================================================
[codespell]
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
ignore-words-list = iterm,compiletime,unknwn,pengwin,siduction,master,slave,sur,doas,conexant,ags,bu
================================================
FILE: .editorconfig
================================================
root = true
[*]
end_of_line = lf
indent_style = space
tab_width = 4
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
[*.txt]
insert_final_newline = false
[*.yml]
tab_width = 2
================================================
FILE: .gitattributes
================================================
*.h linguist-language=c
*.c linguist-language=c
================================================
FILE: .github/FUNDING.yml
================================================
github: LinusDierheimer
ko_fi: carterli
custom: https://paypal.me/zhangsongcui
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report_crash.yml
================================================
name: Crash Bug Report
description: If fastfetch crashes or freezes
title: "[BUG] "
labels: ["bug", "crash", "triage"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report! We will try hard to solve the issue.
However since platforms and hardwares vary greatly, it can be hard to find the root cause of an issue.
Providing the following information may help us greatly. Thanks in advance!
- type: checkboxes
attributes:
label: Read the FAQ first
description: Please check if the issue is already covered in the FAQ.
options:
- label: I have checked the FAQ but the issue is not covered
required: true
- type: checkboxes
attributes:
label: Not a known issue
description: Please check if the issue is already known and being worked on.
options:
- label: I have checked the existing issues but the issue is not covered
required: true
- label: My issue is not about crashing on Fedora and KDE 6.6
required: true
- type: markdown
attributes:
value: "### General description of the bug"
- type: textarea
attributes:
label: Description
description: A clear and concise description of what the bug is.
placeholder: I was trying to [...] but [...]
validations:
required: true
- type: input
attributes:
label: Version used
description: Fastfetch version used. Please use the latest version (found in the [releases](https://github.com/fastfetch-cli/fastfetch/releases)) if possible.
placeholder: Result of `fastfetch --version`
validations:
required: true
- type: dropdown
attributes:
label: Bug prevalence
description: How often does the bug occur?
options:
-
- Always
- Sometimes
- Rarely
- Once
- Other
validations:
required: true
- type: dropdown
attributes:
label: Regression
description: Did it work in an older version?
options:
-
- Not sure
- 'Yes'
- 'No'
validations:
required: true
- type: dropdown
attributes:
label: Installation
description: Where did you install fastfetch from?
options:
-
- GitHub Releases
- GitHub Actions (nightly)
- Built from source
- Package manager
validations:
required: true
- type: input
attributes:
label: Package manager
description: Which package manager did you use if applicable?
placeholder: e.g. `apt`, `pacman`, `brew`, `scoop`
- type: markdown
attributes:
value: '### Often helpful information'
- type: textarea
attributes:
label: Screenshots
description: If applicable, add screenshots to help explain your problem.
- type: textarea
attributes:
label: Configuration
description: If applicable, paste your configuration file here.
placeholder: cat ~/.config/fastfetch/config.jsonc
render: jsonc
- type: markdown
attributes:
value: |
Paste the stacktrace here. You may get it with:
```shell
# You may need Ctrl+C to stop the process if it freezes
gdb -q -ex 'set confirm off' -ex run -ex 'bt full' -ex quit --args /path/to/fastfetch
```
If you are able to identify which module crashed, the strace can be helpful too
```shell
strace /path/to/fastfetch --multithreading false -s {MODULE} --pipe
```
If you cannot do the instructions above, please upload the core dump file if available.
- type: textarea
attributes:
label: Stacktrace
description: Paste the stacktrace or core dump file here.
render: text
validations:
required: true
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report_general.yml
================================================
name: General Bug Report
description: If something is not working as expected (wrong output, missing info, etc)
title: "[BUG] "
labels: ["bug", "triage"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report! We will try hard to solve the issue.
However since platforms and hardwares vary greatly, it can be hard to find the root cause of an issue.
Providing the following information may help us greatly. Thanks in advance!
- type: checkboxes
attributes:
label: Read the FAQ first
description: Please check if the issue is already covered in the FAQ.
options:
- label: I have checked the FAQ but the issue is not covered
required: true
- type: markdown
attributes:
value: "### General description of the bug"
- type: textarea
attributes:
label: Description
description: A clear and concise description of what the bug is.
placeholder: I was trying to [...] but [...]
validations:
required: true
- type: input
attributes:
label: Version used
description: Fastfetch version used. Please use the latest version (found in the [releases](https://github.com/fastfetch-cli/fastfetch/releases)) if possible.
placeholder: Result of `fastfetch --version`
validations:
required: true
- type: dropdown
attributes:
label: Bug prevalence
description: How often does the bug occur?
options:
-
- Always
- Sometimes
- Rarely
- Once
- Other
validations:
required: true
- type: dropdown
attributes:
label: Regression
description: Did it work in an older version?
options:
-
- Not sure
- 'Yes'
- 'No'
validations:
required: true
- type: dropdown
attributes:
label: Installation
description: Where did you install fastfetch from?
options:
-
- GitHub Releases
- GitHub Actions (nightly)
- Built from source
- Package manager
validations:
required: true
- type: input
attributes:
label: Package manager
description: Which package manager did you use if applicable?
placeholder: e.g. `apt`, `pacman`, `brew`, `scoop`
- type: markdown
attributes:
value: '### Often helpful information'
- type: textarea
attributes:
label: Screenshots
description: If applicable, add screenshots to help explain your problem.
- type: textarea
attributes:
label: Configuration
description: If applicable, paste your configuration file here.
placeholder: cat ~/.config/fastfetch/config.jsonc
render: jsonc
- type: textarea
attributes:
label: System information
description: Output of `fastfetch -c all.jsonc --stat --format json`
placeholder: |
Note that this output will contain you public IP.
If it is not relevant for the issue, feel free to remove it before uploading.
render: jsonc
validations:
required: true
- type: textarea
attributes:
label: Features built-in
description: Output of `fastfetch --list-features`
render: text
validations:
required: true
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report_logo.yml
================================================
name: Logo Bug Report
description: If my image logo is not displayed correctly
title: "[BUG] "
labels: ["bug", "logo", "triage"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report! We will try hard to solve the issue.
However since platforms and hardwares vary greatly, it can be hard to find the root cause of an issue.
Providing the following information may help us greatly. Thanks in advance!
- type: checkboxes
attributes:
label: Read the FAQ first
description: Please check if the issue is already covered in the FAQ.
options:
- label: I have checked the FAQ but the issue is not covered
required: true
- type: markdown
attributes:
value: "### General description of the bug"
- type: textarea
attributes:
label: Description
description: A clear and concise description of what the bug is.
placeholder: I was trying to [...] but [...]
validations:
required: true
- type: input
attributes:
label: Version used
description: Fastfetch version used. Please use the latest version (found in the [releases](https://github.com/fastfetch-cli/fastfetch/releases)) if possible.
placeholder: Result of `fastfetch --version`
validations:
required: true
- type: dropdown
attributes:
label: Bug prevalence
description: How often does the bug occur?
options:
-
- Always
- Sometimes
- Rarely
- Once
- Other
validations:
required: true
- type: dropdown
attributes:
label: Regression
description: Did it work in an older version?
options:
-
- Not sure
- 'Yes'
- 'No'
validations:
required: true
- type: dropdown
attributes:
label: Installation
description: Where did you install fastfetch from?
options:
-
- GitHub Releases
- GitHub Actions (nightly)
- Built from source
- Package manager
validations:
required: true
- type: input
attributes:
label: Package manager
description: Which package manager did you use if applicable?
placeholder: e.g. `apt`, `pacman`, `brew`, `scoop`
- type: markdown
attributes:
value: '### Often helpful information'
- type: textarea
attributes:
label: Screenshots
description: If applicable, add screenshots to help explain your problem.
- type: textarea
attributes:
label: Configuration
description: If applicable, paste your configuration file here.
placeholder: cat ~/.config/fastfetch/config.jsonc
render: jsonc
- type: markdown
attributes:
value: |
#### If an image or logo didn't show
Please make sure your terminal supports the image protocol you used.
Note that GNOME Terminal doesn't support any image protocols as of now
Some tips:
1. Try `fastfetch --show-errors` to see if there are any errors.
2. Try `fastfetch --logo-width {WIDTH} --logo-height {HEIGHT}`. Some protocols may require a image size being set.
- type: input
attributes:
label: Image protocol
description: The image protocol you used
validations:
required: true
- type: input
attributes:
label: Terminal
description: The terminal you used
validations:
required: true
- type: textarea
attributes:
label: Image tried
description: Upload the image file, or paste the image URL here
validations:
required: true
- type: textarea
attributes:
label: Error message
description: Error message printed by `fastfetch -s none --show-errors`, if any
- type: textarea
attributes:
label: Features built-in
description: Output of `fastfetch --list-features`
render: text
validations:
required: true
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yml
================================================
name: Feature Request
description: Suggest an idea for this project
title: "[FEAT] "
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
Fastfetch is a system information tool. We only accept hardware or system level software feature requests.
For most personal uses, I recommend using `Command` module to detect it yourself, which can be used to grab output from a custom shell script:
```jsonc
// This module shows the git version
{
"modules": [
{
"type": "command",
"key": "Git",
"text": "git version",
"format": "{~12}" // cut the first 12 characters
}
]
}
```
- type: textarea
attributes:
label: Description
description: A clear and concise description of what the feature is.
validations:
required: true
- type: textarea
attributes:
label: Motivation
description: Why do you want this feature? Why doesn't `Command` module suffice for you?
validations:
required: true
- type: textarea
attributes:
label: Additional context
description: Add any other context or screenshots about the feature request here.
================================================
FILE: .github/ISSUE_TEMPLATE/logo_request.yml
================================================
name: Logo Request
description: Request a new ASCII logo for your favorite distro
title: "[LOGO] "
labels: ["logo request"]
body:
- type: markdown
attributes:
value: |
Tip: You can display a logo in fastfetch without adding it to fastfetch's official repo.
For highly customized, personal logos, we recommend keeping them locally.
Please refer to https://github.com/fastfetch-cli/fastfetch/wiki/Migrate-Neofetch-Logo-To-Fastfetch
- type: textarea
attributes:
label: OS
description: Paste the contents of `/etc/os-release` and `/etc/lsb-release` here. If neither file exists, describe how to identify the distro.
placeholder: cat /etc/os-release
validations:
required: true
- type: input
attributes:
label: Distro Website
description: To help prevent spam and verify the request, a distro website is required, and a downloadable ISO must be available on that site.
placeholder: https://example.com
validations:
required: true
- type: textarea
attributes:
label: ASCII Art
description: The ASCII logo should not take up too much space (smaller than 50x20 characters, W x H). Please also include the color codes if they are not available in `os-release`.
placeholder: Paste ASCII art here
validations:
required: true
- type: input
attributes:
label: Original Image URL
description: If the ASCII art is based on an image, please provide a link to the original image file.
placeholder: Image URL from the distro website mentioned above
- type: checkboxes
attributes:
label: Checklist
options:
- label: The ASCII art is smaller than 50x20 characters (W x H).
required: true
- label: The ASCII art includes color codes, or the color codes are available in `os-release`.
required: true
- label: The ASCII art has no internal padding (spaces at the start and/or end of lines).
required: true
================================================
FILE: .github/pull_request_template.md
================================================
## Summary
<!-- Briefly describe what this PR does. -->
## Related issue (required for new logos for new distros)
<!--
If this PR adds a new logo, it MUST be linked to an existing "Logo Request" issue and has the requests fulfilled.
Use one of the following formats so GitHub links it properly:
- Closes #1234
- Fixes #1234
- Resolves #1234
PRs that add logos without an associated Logo Request issue will not be accepted.
-->
Closes #
## Changes
-
## Checklist
- [ ] I have tested my changes locally.
================================================
FILE: .github/stale.yml
================================================
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 60
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- keepalive
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false
================================================
FILE: .github/workflows/ci.yml
================================================
name: CI
on:
- push
- pull_request
env:
CMAKE_BUILD_TYPE: ${{ vars.CMAKE_BUILD_TYPE || 'RelWithDebInfo' }}
jobs:
spellcheck:
runs-on: ubuntu-latest
steps:
- name: checkout repository
uses: actions/checkout@v6
- name: Install codespell
shell: bash
run: |
sudo apt-get update || true
sudo apt-get install -y codespell
- name: Run Spellchecker
run: codespell
no-features-test:
name: No-features-test
runs-on: ubuntu-latest
permissions:
security-events: write
contents: read
steps:
- name: checkout repository
uses: actions/checkout@v6
- name: uname -a
run: uname -a
- name: configure project
run: cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr . -DENABLE_VULKAN=OFF -DENABLE_WAYLAND=OFF -DENABLE_XCB_RANDR=OFF -DENABLE_XCB=OFF -DENABLE_XRANDR=OFF -DENABLE_X11=OFF -DENABLE_DRM=OFF -DENABLE_DRM_AMDGPU=OFF -DENABLE_GIO=OFF -DENABLE_DCONF=OFF -DENABLE_DBUS=OFF -DENABLE_SQLITE3=OFF -DENABLE_RPM=OFF -DENABLE_IMAGEMAGICK7=OFF -DENABLE_IMAGEMAGICK6=OFF -DENABLE_CHAFA=OFF -DENABLE_ZLIB=OFF -DENABLE_EGL=OFF -DENABLE_GLX=OFF -DENABLE_OPENCL=OFF -DENABLE_FREETYPE=OFF -DENABLE_PULSE=OFF -DENABLE_DDCUTIL=OFF -DENABLE_ELF=OFF -DENABLE_DIRECTX_HEADERS=OFF -DENABLE_THREADS=OFF
- name: build project
run: cmake --build . --target package --verbose -j4
- name: list features
run: ./fastfetch --list-features
- name: run fastfetch
run: time ./fastfetch -c presets/ci.jsonc --stat false
- name: run fastfetch --format json
run: time ./fastfetch -c presets/ci.jsonc --format json
- name: run flashfetch
run: time ./flashfetch
- name: print dependencies
run: ldd fastfetch
- name: run tests
run: ctest --output-on-failure
linux-hosts:
name: Linux-${{ matrix.arch }}
runs-on: ${{ matrix.runs-on }}
permissions:
security-events: write
contents: read
strategy:
matrix:
include:
- arch: amd64
runs-on: ubuntu-22.04
- arch: aarch64
runs-on: ubuntu-22.04-arm
outputs:
ffversion: ${{ steps.ffversion.outputs.ffversion }}
steps:
- name: checkout repository
uses: actions/checkout@v6
- name: uname -a
run: uname -a
- name: cat /etc/os-release
run: cat /etc/os-release
- name: cat /proc/cpuinfo
run: cat /proc/cpuinfo
- name: add gcc-13 repo
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 g++-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 directx-headers-dev rpm ninja-build
- name: install linuxbrew packages
run: |
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
/home/linuxbrew/.linuxbrew/bin/brew install imagemagick chafa --ignore-dependencies
- name: Initialize CodeQL
if: matrix.arch == 'amd64'
uses: github/codeql-action/init@v4
with:
languages: c
- name: configure project
run: CC=gcc-13 CXX=g++-13 PKG_CONFIG_PATH=/home/linuxbrew/.linuxbrew/lib/pkgconfig:$PKG_CONFIG_PATH cmake -GNinja -DSET_TWEAK=Off -DBUILD_TESTS=On -DENABLE_EMBEDDED_PCIIDS=On -DENABLE_EMBEDDED_AMDGPUIDS=On -DCMAKE_INSTALL_PREFIX=/usr .
- name: build project
run: cmake --build . --target package --verbose -j4
- name: perform CodeQL analysis
if: matrix.arch == 'amd64'
uses: github/codeql-action/analyze@v4
- name: list features
run: ./fastfetch --list-features
- name: run fastfetch
run: time ./fastfetch -c presets/ci.jsonc --stat false
- name: run fastfetch --format json
run: time ./fastfetch -c presets/ci.jsonc --format json
- name: run flashfetch
run: time ./flashfetch
- name: print dependencies
run: ldd fastfetch
- name: run tests
run: ctest --output-on-failure
- name: get fastfetch version
id: ffversion
run: echo "ffversion=$(./fastfetch --version-raw)" >> $GITHUB_OUTPUT
- name: polyfill glibc
run: |
wget https://github.com/CarterLi/polyfill-glibc/releases/download/v0.0.1/polyfill-glibc-${{ matrix.arch }} -O polyfill-glibc
chmod +x polyfill-glibc
strip fastfetch && ./polyfill-glibc fastfetch --target-glibc=2.17
strip flashfetch && ./polyfill-glibc flashfetch --target-glibc=2.17
echo 'set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}-polyfilled")' >> CPackConfig.cmake
echo 'set(CPACK_PACKAGE_RELOCATABLE OFF)' >> CPackConfig.cmake
echo 'set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.17)")' >> CPackConfig.cmake
echo 'set(CPACK_RPM_SPEC_MORE_DEFINE "%global __os_install_post %{nil}")' >> CPackConfig.cmake
cpack -V
- name: upload artifacts
uses: actions/upload-artifact@v7
with:
name: fastfetch-linux-${{ matrix.arch }}
path: ./fastfetch-*.*
linux-i686:
name: Linux-i686
runs-on: ubuntu-22.04
permissions:
security-events: write
contents: read
steps:
- name: checkout repository
uses: actions/checkout@v6
- name: uname -a
run: uname -a
- name: cat /etc/os-release
run: cat /etc/os-release
- name: cat /proc/cpuinfo
run: cat /proc/cpuinfo
- name: add gcc-13 repo
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 gcc-13-multilib 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 rpm ninja-build
- name: install linuxbrew packages
run: |
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
/home/linuxbrew/.linuxbrew/bin/brew install imagemagick chafa --ignore-dependencies
- name: cmake version
run: cmake --version
- name: configure project
run: CC=gcc-13 PKG_CONFIG_PATH=/home/linuxbrew/.linuxbrew/lib/pkgconfig:$PKG_CONFIG_PATH cmake -DCMAKE_C_FLAGS="-m32 -march=i686 -mtune=i686" -DCMAKE_SYSTEM_PROCESSOR_OVERRIDE=i686 -DCPACK_DEBIAN_PACKAGE_ARCHITECTURE=i386 -GNinja -DSET_TWEAK=Off -DBUILD_TESTS=On -DENABLE_EMBEDDED_PCIIDS=On -DENABLE_EMBEDDED_AMDGPUIDS=On -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_DIRECTX_HEADERS=Off .
- name: build project
run: cmake --build . --target package --verbose -j4
- name: check deb package
run: dpkg -I fastfetch-*.deb
- name: list features
run: ./fastfetch --list-features
- name: run fastfetch
run: time ./fastfetch -c presets/ci.jsonc --stat false
- name: run fastfetch --format json
run: time ./fastfetch -c presets/ci.jsonc --format json
- name: run flashfetch
run: time ./flashfetch
- name: print dependencies
run: ldd fastfetch
- name: run tests
run: ctest --output-on-failure
- name: upload artifacts
uses: actions/upload-artifact@v7
with:
name: fastfetch-linux-i686
path: ./fastfetch-*.*
linux-armv7l:
name: Linux-armv7l
runs-on: ubuntu-24.04
permissions:
security-events: write
contents: read
steps:
- name: checkout repository
uses: actions/checkout@v6
- name: run VM
uses: uraimo/run-on-arch-action@v3
id: runcmd
with:
arch: armv7
distro: ubuntu22.04
githubToken: ${{ github.token }}
run: |
uname -a
apt-get update && apt-get install -y software-properties-common ca-certificates gpg curl
add-apt-repository -y ppa:ubuntu-toolchain-r/test
curl -L https://apt.kitware.com/keys/kitware-archive-latest.asc | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ jammy main' | tee /etc/apt/sources.list.d/kitware.list >/dev/null
echo -e 'Acquire::https::Verify-Peer "false";\nAcquire::https::Verify-Host "false";' >> /etc/apt/apt.conf.d/99ignore-certificates
apt-get update && apt-get install -y cmake make 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 rpm
CC=gcc-13 cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DENABLE_DIRECTX_HEADERS=Off -DCMAKE_INSTALL_PREFIX=/usr .
cmake --build . --target package --verbose -j4
./fastfetch --list-features
time ./fastfetch -c presets/ci.jsonc --stat false
time ./fastfetch -c presets/ci.jsonc --format json
time ./flashfetch
ldd fastfetch
ctest --output-on-failure
- name: upload artifacts
uses: actions/upload-artifact@v7
with:
name: fastfetch-linux-armv7l
path: ./fastfetch-*.*
linux-armv6l:
name: Linux-armv6l
runs-on: ubuntu-24.04
permissions:
security-events: write
contents: read
steps:
- name: checkout repository
uses: actions/checkout@v6
- name: run VM
uses: uraimo/run-on-arch-action@v3
id: runcmd
with:
arch: armv6
distro: bookworm
githubToken: ${{ github.token }}
run: |
uname -a
apt-get update && apt-get install -y wget
apt-get install -y cmake make gcc 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 rpm
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DENABLE_DIRECTX_HEADERS=Off -DCMAKE_INSTALL_PREFIX=/usr .
cmake --build . --target package --verbose -j4
./fastfetch --list-features
time ./fastfetch -c presets/ci.jsonc --stat false
time ./fastfetch -c presets/ci.jsonc --format json
time ./flashfetch
ldd fastfetch
ctest --output-on-failure
- name: upload artifacts
uses: actions/upload-artifact@v7
with:
name: fastfetch-linux-armv6l
path: ./fastfetch-*.*
linux-vms:
name: Linux-${{ matrix.arch }}
runs-on: ubuntu-latest
permissions:
security-events: write
contents: read
strategy:
matrix:
include:
- arch: riscv64
- arch: ppc64le
- arch: s390x
steps:
- name: checkout repository
uses: actions/checkout@v6
- name: run VM
uses: uraimo/run-on-arch-action@v3
id: runcmd
with:
arch: ${{ matrix.arch }}
distro: ubuntu22.04
githubToken: ${{ github.token }}
run: |
uname -a
apt-get update && apt-get install -y software-properties-common
add-apt-repository -y ppa:ubuntu-toolchain-r/test
apt-get update && apt-get install -y cmake make 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 libchafa-dev libelf-dev rpm
CC=gcc-13 cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DENABLE_DIRECTX_HEADERS=Off -DCMAKE_INSTALL_PREFIX=/usr .
cmake --build . --target package --verbose -j4
./fastfetch --list-features
time ./fastfetch -c presets/ci.jsonc --stat false
time ./fastfetch -c presets/ci.jsonc --format json
time ./flashfetch
ldd fastfetch
ctest --output-on-failure
- name: upload artifacts
uses: actions/upload-artifact@v7
with:
name: fastfetch-linux-${{ matrix.arch }}
path: ./fastfetch-*.*
musl-amd64:
name: Musl-amd64
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: setup alpine linux
uses: jirutka/setup-alpine@master
- name: install dependencies
run: |
cat /etc/alpine-release
uname -a
apk add cmake samurai vulkan-loader-dev libxcb-dev libxrandr-dev rpm-dev wayland-dev libdrm-dev dconf-dev imagemagick-dev chafa-dev zlib-dev dbus-dev mesa-dev opencl-dev sqlite-dev networkmanager-dev pulseaudio-dev ddcutil-dev elfutils-dev gcc g++
shell: alpine.sh --root {0}
- name: build
run: |
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr -DIS_MUSL=ON -DENABLE_EMBEDDED_PCIIDS=On -DENABLE_EMBEDDED_AMDGPUIDS=On -GNinja .
cmake --build . --target package --verbose -j4
shell: alpine.sh {0}
- name: run
run: |
./fastfetch --list-features
time ./fastfetch -c presets/ci.jsonc --stat false
time ./fastfetch -c presets/ci.jsonc --format json
time ./flashfetch
ldd fastfetch
ctest --output-on-failure
shell: alpine.sh {0}
- name: upload artifacts
uses: actions/upload-artifact@v7
with:
name: fastfetch-musl-amd64
path: ./fastfetch-*.*
macos-hosts:
name: macOS-${{ matrix.arch }}
runs-on: ${{ matrix.runs-on }}
permissions:
security-events: write
contents: read
strategy:
matrix:
include:
- arch: amd64
runs-on: macos-15-intel
- arch: aarch64
runs-on: macos-latest
steps:
- name: checkout repository
uses: actions/checkout@v6
- name: uname -a
run: uname -a
- name: install required packages
run: |
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install --overwrite vulkan-loader vulkan-headers molten-vk imagemagick chafa
- name: configure project
run: cmake -DSET_TWEAK=Off -DBUILD_TESTS=On .
- name: build project
run: cmake --build . --target package --verbose -j4
- name: list features
run: ./fastfetch --list-features
- name: run fastfetch
run: time ./fastfetch -c presets/ci.jsonc --stat false
- name: run fastfetch --format json
run: time ./fastfetch -c presets/ci.jsonc --format json
- name: run flashfetch
run: time ./flashfetch
- name: print dependencies
run: otool -L fastfetch
- name: run tests
run: ctest --output-on-failure
- name: upload artifacts
uses: actions/upload-artifact@v7
with:
name: fastfetch-macos-${{ matrix.arch }}
path: ./fastfetch-*.*
omnios-amd64:
runs-on: ubuntu-latest
name: OmniOS-amd64
steps:
- name: checkout repository
uses: actions/checkout@v6
- name: run VM
uses: vmactions/omnios-vm@v1
with:
usesh: true
envs: 'CMAKE_BUILD_TYPE'
prepare: |
uname -a
pkg update --accept
pkg install gcc14 cmake git pkg-config glib2 dbus sqlite-3 imagemagick ninja
run: |
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -GNinja .
cmake --build . --verbose -j4
./fastfetch --list-features
time ./fastfetch -c presets/ci.jsonc --stat false
time ./fastfetch -c presets/ci.jsonc --format json
time ./flashfetch
ldd fastfetch
ctest --output-on-failure
echo 'set(CPACK_PACKAGE_FILE_NAME "fastfetch-omnios-amd64")' >> CPackConfig.cmake
cpack -V
- name: upload artifacts
uses: actions/upload-artifact@v7
with:
name: fastfetch-omnios-amd64
path: ./fastfetch-*.*
solaris-amd64:
runs-on: ubuntu-latest
name: Solaris-amd64
steps:
- name: checkout repository
uses: actions/checkout@v6
- name: run VM
uses: vmactions/solaris-vm@v1
with:
usesh: true
envs: 'CMAKE_BUILD_TYPE'
release: "11.4-gcc-14"
prepare: |
uname -a
pkg install cmake git pkg-config glib2 dbus sqlite-3 imagemagick ninja dconf mesa
run: |
export PKG_CONFIG_PATH=/usr/lib/64/pkgconfig
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -GNinja .
cmake --build . --verbose -j4
./fastfetch --list-features
time ./fastfetch -c presets/ci.jsonc --stat false
time ./fastfetch -c presets/ci.jsonc --format json
time ./flashfetch
ldd fastfetch
ctest --output-on-failure
echo 'set(CPACK_PACKAGE_FILE_NAME "fastfetch-solaris-amd64")' >> CPackConfig.cmake
cpack -V
- name: upload artifacts
uses: actions/upload-artifact@v7
with:
name: fastfetch-solaris-amd64
path: ./fastfetch-*.*
freebsd-amd64:
name: FreeBSD-amd64
runs-on: ubuntu-latest
permissions:
security-events: write
contents: read
steps:
- name: checkout repository
uses: actions/checkout@v6
- name: run VM
uses: cross-platform-actions/action@master
with:
operating_system: freebsd
architecture: x86-64
cpu_count: 4
shell: bash
version: '15.0'
environment_variables: 'CMAKE_BUILD_TYPE'
run: |
uname -a
sudo pkg update
sudo pkg install -y cmake git pkgconf binutils wayland vulkan-headers vulkan-loader libxcb libXrandr libX11 libdrm glib dconf dbus sqlite3-tcl egl opencl ocl-icd v4l_compat chafa
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DENABLE_EMBEDDED_PCIIDS=On -DENABLE_EMBEDDED_AMDGPUIDS=On .
cmake --build . --target package --verbose -j4
./fastfetch --list-features
time ./fastfetch -c presets/ci.jsonc --stat false
time ./fastfetch -c presets/ci.jsonc --format json
time ./flashfetch
ldd fastfetch
ctest --output-on-failure
- name: upload artifacts
uses: actions/upload-artifact@v7
with:
name: fastfetch-freebsd-amd64
path: ./fastfetch-*.*
openbsd-amd64:
name: OpenBSD-amd64
runs-on: ubuntu-latest
permissions:
security-events: write
contents: read
steps:
- name: checkout repository
uses: actions/checkout@v6
- name: run VM
uses: cross-platform-actions/action@master
with:
operating_system: openbsd
architecture: x86-64
cpu_count: 4
shell: bash
version: '7.8'
environment_variables: 'CMAKE_BUILD_TYPE'
run: |
uname -a
sudo pkg_add -u
sudo pkg_add -r llvm-21.1.2p0 cmake git pkgconf wayland vulkan-headers vulkan-loader glib2 dconf dbus sqlite3 imagemagick chafa
CC=clang-21 cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DENABLE_EMBEDDED_PCIIDS=On -DENABLE_EMBEDDED_AMDGPUIDS=On .
cmake --build . --target package --verbose -j4
./fastfetch --list-features
time ./fastfetch -c presets/ci.jsonc --stat false
time ./fastfetch -c presets/ci.jsonc --format json
time ./flashfetch
ldd fastfetch
ctest --output-on-failure
- name: upload artifacts
uses: actions/upload-artifact@v7
with:
name: fastfetch-openbsd-amd64
path: ./fastfetch-*.*
netbsd-amd64:
name: NetBSD-amd64
runs-on: ubuntu-latest
permissions:
security-events: write
contents: read
steps:
- name: checkout repository
uses: actions/checkout@v6
- name: run VM
uses: cross-platform-actions/action@master
with:
operating_system: netbsd
architecture: x86-64
cpu_count: 4
shell: bash
version: '10.1'
environment_variables: 'CMAKE_BUILD_TYPE'
run: |
uname -a
sudo pkgin -y install clang cmake git pkgconf wayland vulkan-headers dconf dbus sqlite3 ImageMagick
CC=clang cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DENABLE_EMBEDDED_PCIIDS=On -DENABLE_EMBEDDED_AMDGPUIDS=On .
cmake --build . --target package --verbose -j4
./fastfetch --list-features
time ./fastfetch -c presets/ci.jsonc --stat false
time ./fastfetch -c presets/ci.jsonc --format json
time ./flashfetch
ldd fastfetch
ctest --output-on-failure
- name: upload artifacts
uses: actions/upload-artifact@v7
with:
name: fastfetch-netbsd-amd64
path: ./fastfetch-*.*
dragonfly-amd64:
name: DragonFly-amd64
runs-on: ubuntu-latest
permissions:
security-events: write
contents: read
steps:
- name: checkout repository
uses: actions/checkout@v6
- name: run VM
uses: vmactions/dragonflybsd-vm@v1
with:
usesh: yes
envs: 'CMAKE_BUILD_TYPE'
prepare: |
uname -a
pkg update
pkg install -y llvm cmake git pkgconf binutils wayland vulkan-headers vulkan-loader libxcb libXrandr libX11 libdrm glib dconf dbus sqlite3-tcl egl opencl ocl-icd v4l_compat chafa libelf
run: |
env CC=clang cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DENABLE_EMBEDDED_PCIIDS=On -DENABLE_EMBEDDED_AMDGPUIDS=On .
cmake --build . --target package --verbose -j4
./fastfetch --list-features
time ./fastfetch -c presets/ci.jsonc --stat false
time ./fastfetch -c presets/ci.jsonc --format json
time ./flashfetch
ldd fastfetch
ctest --output-on-failure
- name: upload artifacts
uses: actions/upload-artifact@v7
with:
name: fastfetch-dragonfly-amd64
path: ./fastfetch-*.*
haiku-amd64:
name: Haiku-amd64
runs-on: ubuntu-latest
permissions:
security-events: write
contents: read
steps:
- name: checkout repository
uses: actions/checkout@v6
- name: run VM
uses: cross-platform-actions/action@master
with:
operating_system: haiku
version: 'r1beta5'
architecture: x86-64
cpu_count: 4
shell: bash
environment_variables: 'CMAKE_BUILD_TYPE'
run: |
uname -a
pkgman install -y git dbus_devel mesa_devel libelf_devel imagemagick_devel opencl_headers ocl_icd_devel vulkan_devel zlib_devel chafa_devel cmake gcc make pkgconfig python3.10 || pkgman install -y git dbus_devel mesa_devel libelf_devel imagemagick_devel opencl_headers ocl_icd_devel vulkan_devel zlib_devel chafa_devel cmake gcc make pkgconfig python3.10
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DENABLE_EMBEDDED_PCIIDS=On -DENABLE_EMBEDDED_AMDGPUIDS=On .
cmake --build . --target package --verbose -j4
./fastfetch --list-features
time ./fastfetch -c presets/ci.jsonc --stat false
time ./fastfetch -c presets/ci.jsonc --format json
time ./flashfetch
ctest --output-on-failure
- name: upload artifacts
uses: actions/upload-artifact@v7
with:
name: fastfetch-haiku-amd64
path: ./fastfetch-*.*
windows-hosts:
name: Windows-${{ matrix.arch }}
runs-on: ${{ matrix.runs-on }}
permissions:
security-events: write
contents: read
strategy:
matrix:
include:
- arch: amd64
runs-on: windows-latest
msystem: CLANG64
msystem-lower: clang64
msys-arch: x86_64
- arch: aarch64
runs-on: windows-11-arm
msystem: CLANGARM64
msystem-lower: clangarm64
msys-arch: aarch64
defaults:
run:
shell: msys2 {0}
steps:
- name: checkout repository
uses: actions/checkout@v6
- name: setup-msys2
uses: msys2/setup-msys2@v2
with:
msystem: ${{ matrix.msystem }}
update: true
install: git mingw-w64-clang-${{ matrix.msys-arch }}-7zip mingw-w64-clang-${{ matrix.msys-arch }}-cmake mingw-w64-clang-${{ matrix.msys-arch }}-clang mingw-w64-clang-${{ matrix.msys-arch }}-vulkan-loader mingw-w64-clang-${{ matrix.msys-arch }}-vulkan-headers mingw-w64-clang-${{ matrix.msys-arch }}-opencl-icd mingw-w64-clang-${{ matrix.msys-arch }}-opencl-headers mingw-w64-clang-${{ matrix.msys-arch }}-cppwinrt mingw-w64-clang-${{ matrix.msys-arch }}-imagemagick mingw-w64-clang-${{ matrix.msys-arch }}-chafa
- name: print msys version
run: uname -a
- name: configure project
run: env PKG_CONFIG_PATH=/${{ matrix.msystem-lower }}/lib/pkgconfig/:$PKG_CONFIG_PATH cmake -DSET_TWEAK=Off -DBUILD_TESTS=On .
- name: build project
run: cmake --build . --verbose -j4
- name: copy necessary dlls
run: cp /${{ matrix.msystem-lower }}/bin/{OpenCL,vulkan-1}.dll .
- name: list features
run: ./fastfetch --list-features
- name: run fastfetch
run: time ./fastfetch -c presets/ci.jsonc --stat false
- name: run fastfetch --format json
run: time ./fastfetch -c presets/ci.jsonc --format json
- name: run flashfetch
run: time ./flashfetch
- name: print dependencies
run: ldd fastfetch
- name: run tests
run: ctest --output-on-failure
- if: github.event_name == 'push' && github.repository == 'fastfetch-cli/fastfetch'
id: upload-unsigned-artifact
name: upload artifacts for signing
uses: actions/upload-artifact@v7
with:
name: fastfetch-windows-${{ matrix.arch }}
path: |
*.dll
fastfetch.exe
flashfetch.exe
- if: github.event_name == 'push' && github.repository == 'fastfetch-cli/fastfetch'
name: submit signing request
uses: signpath/github-action-submit-signing-request@v1
with:
api-token: '${{ secrets.SIGNPATH_API_TOKEN }}'
organization-id: '${{ vars.SIGNPATH_ORG_ID }}'
project-slug: 'fastfetch'
signing-policy-slug: ${{ github.ref == 'refs/heads/master' && 'release-signing' || 'test-signing' }}
github-artifact-id: '${{ steps.upload-unsigned-artifact.outputs.artifact-id }}'
wait-for-completion: true
output-artifact-directory: '.'
- name: create zip archive
run: 7z a -tzip -mx9 -bd -y fastfetch-windows-${{ matrix.arch }}.zip LICENSE *.dll fastfetch.exe flashfetch.exe presets
- name: create 7z archive
run: 7z a -t7z -mx9 -bd -y fastfetch-windows-${{ matrix.arch }}.7z LICENSE *.dll fastfetch.exe flashfetch.exe presets
- name: upload true artifacts
uses: actions/upload-artifact@v7
with:
name: fastfetch-windows-${{ matrix.arch }}
path: ./fastfetch-windows-${{ matrix.arch }}.*
overwrite: true
release:
if: github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository == 'fastfetch-cli/fastfetch'
name: Release
runs-on: ubuntu-latest
needs:
- linux-hosts
- linux-i686
- linux-armv7l
- linux-armv6l
- linux-vms
- musl-amd64
- macos-hosts
- freebsd-amd64
- openbsd-amd64
- netbsd-amd64
- dragonfly-amd64
- solaris-amd64
- omnios-amd64
- haiku-amd64
- windows-hosts
permissions:
contents: write
steps:
- name: get latest release version
id: get_version_release
uses: pozetroninc/github-action-get-latest-release@master
with:
repository: ${{ github.repository }}
- name: download artifacts
if: needs.linux-hosts.outputs.ffversion != steps.get_version_release.outputs.release
uses: actions/download-artifact@v8
- name: create release
if: needs.linux-hosts.outputs.ffversion != steps.get_version_release.outputs.release
uses: ncipollo/release-action@v1
with:
tag: ${{ needs.linux-hosts.outputs.ffversion }}
commit: ${{ github.sha }}
artifactErrorsFailBuild: true
artifacts: fastfetch-*/fastfetch-*
body: "Please refer to [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/${{ needs.linux-hosts.outputs.ffversion }}/CHANGELOG.md) for details."
- name: download source tarballs
if: needs.linux-hosts.outputs.ffversion != steps.get_version_release.outputs.release
run: |
for i in 1 2 3 4 5; do curl -L --remote-name-all --output-dir fastfetch-source --create-dirs https://github.com/${{ github.repository }}/archive/refs/tags/${{ needs.linux-hosts.outputs.ffversion }}.{tar.gz,zip} && break || sleep 5; done
ls fastfetch-*/*
- name: generate release notes
if: needs.linux-hosts.outputs.ffversion != steps.get_version_release.outputs.release
run: |
echo "Please refer to [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/${{ needs.linux-hosts.outputs.ffversion }}/CHANGELOG.md) for details." > fastfetch-release-notes.md
echo -e "\n---\n\n<details><summary>SHA256SUMs</summary><br>\n\n\`\`\`" >> fastfetch-release-notes.md
sha256sum fastfetch-*/* >> fastfetch-release-notes.md
echo -e "\`\`\`\n</details>" >> fastfetch-release-notes.md
echo -e "\n<details><summary>SHA512SUMs</summary><br>\n\n\`\`\`" >> fastfetch-release-notes.md
sha512sum fastfetch-*/* >> fastfetch-release-notes.md
echo -e "\`\`\`\n</details>" >> fastfetch-release-notes.md
- name: update release body
if: needs.linux-hosts.outputs.ffversion != steps.get_version_release.outputs.release
uses: ncipollo/release-action@v1
with:
tag: ${{ needs.linux-hosts.outputs.ffversion }}
commit: ${{ github.sha }}
bodyFile: fastfetch-release-notes.md
allowUpdates: true
================================================
FILE: .gitignore
================================================
build/
.vs/
.vscode/
.cache/
.kdev4/
.DS_Store
cscope.*
tags
fastfetch.kdev4
*.user
*.user.*
*.swp
================================================
FILE: CHANGELOG.md
================================================
# 2.60.0
Changes:
* The CMake option `ENABLE_WIN7_COMPAT:BOOLEAN` now defaults to `OFF` and will be removed in v2.61.0, effectively dropping support for Windows 7 in the next release.
* This follows the Windows 7 deprecation notice introduced in v2.57.0.
* `wm.detectPlugin` now defaults to `true` (WM)
Features:
* Adds `{cwd}` for custom title formatting, which displays the current working directory (Title)
* Adds support for detecting the Zed version (#2200, Editor)
* Adds support for detecting `moss` packages (Packages, Linux)
* Adds support for detecting komorebi, FancyWM, and GlazeWM (WM, Windows)
* Adds support for WM plugin version detection on macOS (WM, macOS)
* Adds support for retrieving the executable path on OpenBSD (#2195, OpenBSD)
Bugfixes:
* Fixes a potential segmentation fault caused by dereferencing a negative index (#2198)
* Fixes `tempSensor` parsing so that it accepts only string values (#2202, CPU)
* Fixes an issue that unexpectedly caused fewer devices to be reported (Keyboard, Linux)
* Improves WM detection on LXQt by querying WM settings only when no WM has already been detected (#2199, WM, Linux)
* Fixes memory leaks in DBus connection handling and in the OpenGL EGL context lifecycle
* Fixes niri version detection on Fedora (WM, Linux)
* Includes various internal cleanups and optimizations
Logos:
* Adds `RengeOS` (#2170)
* Adds `Emmabuntüs` (#2207)
* Updates Artix Linux (#2157)
* Updates Linux Mint (#2186)
* Renames `Refracted Devuan` to `Refracta`
* Renames `ExodiaPredator` to `ExodiaOS`
# 2.59.0
Changes:
* Fastfetch no longer relies on the unreliable environment variables `$USER` or `%USERPROFILE%` to determine the current username (Title)
* People who set `$USER` to customize the Fastfetch title should use `{ "type": "title", "format": "your-custom-user-name" }` to achieve the same result.
* Fastfetch no longer tries to probe inaccessible remote disk drives on Windows (Disk, Windows)
* People who have remote drives may use `{ "type": "disk", "hideFolders": "X:\\" }` to ignore problematic ones.
* This change removes some ugly hacks from the codebase and matches the behavior on `*nix`.
Features:
* Adds Oracle Solaris support (#2176, SunOS)
* Adds UID / SID detection (Title)
* In custom format: `{user-id}`
* Switches to native GPU detection on GNU/Hurd and removes the `libpciaccess` dependency (GPU, Hurd)
* Improves memory size detection on macOS (Memory, macOS)
* Avoids relying on `hw.memsize_usable` by default, which may not be available on older macOS versions
* Improves Windows disk detection accuracy and performance (Disk, Windows)
* Adds more ARM CPU parts and removes duplicated cases (CPU, ARM)
Logos:
* Adds 6-color support to the NixOS logo (including the small variant) (#2180)
# 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 issue 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:
* Tiny performance improvements (Windows)
* Improves the reliability of hostname retrieval (Title, Windows)
Bugfixes:
* Fixes potential compilation issues on Linux (#2142, Linux)
* Fixes compilation errors on macOS when building with older SDKs (#2140, macOS)
* Fixes compilation issues when building with `-DENABLE_SYSTEM_YYJSON=ON` (#2143)
Logos:
* Updates PrismLinux and adds a small variant
# 2.57.0
Deprecation notice:
* Support for Windows 7 (and 8.x) is deprecated and will be removed in a future release. Extended support for Windows 7 (and 8.1) ended on January 10, 2023. These versions do not officially support ANSI escape codes (running fastfetch on them requires a third-party terminal such as ConEmu). In addition, Windows 7 lacks some APIs used by fastfetch. Fastfetch currently loads these APIs dynamically at runtime to maintain compatibility, but this adds complexity to the codebase and increases the maintenance burden.
* A CMake flag `ENABLE_WIN7_COMPAT:BOOLEAN` has been introduced (defaults to `ON` for now). If set to `OFF`, Windows 7 compatibility code is excluded, and the resulting binaries will support only Windows 10 (version 1607 and later) and Windows 11.
* The main prebuilt Windows binaries on the Release page (`fastfetch-windows-amd64.*`) are built with `ENABLE_WIN7_COMPAT=OFF`. These are the binaries used by `scoop` and `winget`. Users who need Windows 7 (or 8.x) support can download the `-win7` variant instead.
* ~~The `ENABLE_WIN7_COMPAT` CMake option and the `-win7` variant binaries are planned to be removed in 2.60.0~~.
Features:
* Supports COSMIC DE version detection (DE, Linux)
* Supports niri version detection (#2121, WM, Linux)
* Supports cosmic-term version and terminal font detection (Terminal / TerminalFont, Linux)
* Supports urxvt font detection (TerminalFont, Linux) (#2105)
* Improves xterm font detection by checking `xterm.vt100.faceName` (TerminalFont, Linux)
* Supports Secure Boot detection (Bootmgr, macOS)
* Supports DPI scale factor detection on Windows 7 (Display, Windows)
* Supports xterm 256-color codes in color configuration
* In `display.color`: "`@<color-index>`" (e.g., "`@34`" for color index `34`)
* In `*.format` strings: "`#@<color-index>`" (e.g., "`#@34`" for color index `34`)
* Improves uptime accuracy on Windows 10+ (Uptime, Windows)
* Adds a new module `Logo` to query built-in logo raw data in JSON output (Logo)
* Usage: `fastfetch -s logo -l <logo-name> -j # Supported in JSON format only`
* Supports shell version detection even if the binary has been deleted (#2136, Shell, Linux)
* Overall code refinements and optimizations
Bugfixes:
* Skips local / loopback routes when detecting network interfaces (LocalIP, Linux) (#2127)
* Fixes CPU speed detection on s390x (CPU, Linux) (#2129)
* Fixes GPU detection error handling and supports case-insensitive PCI ID parsing (GPU, Windows)
* Fixes some networking issues and memory leaks (Networking)
* Fixes `exePath` reporting relative paths on macOS (Shell, macOS)
Logos:
* Adds openSUSE Tumbleweed braille logo
* Adds Xinux
* Renames HydraPWK to NetHydra
* Fixes colors of deepin and UOS
* Fixes colors of macOS and variants
# 2.56.1
Features:
* Improves compatibility with KDE Plasma 6.5 (#2093, Display)
* Adds a `tempSensor` option to specify the sensor name used for CPU temperature detection (CPU)
* Example: `{ "type": "cpu", "tempSensor": "hwmon0" /* Use /sys/class/hwmon/hwmon0 for temperature detection */ }`
* Refines Memory usage detection on macOS to match Activity Monitor more closely (Memory, macOS)
* Minor optimizations
Bugfixes:
* Fixes cache line size detection (CPU, macOS)
Logos:
* Removes Opak
* Updates GXDE
# 2.56.0
Features:
* Enhances config file loading. `--config` and `-c` with relative path now also searches paths defined in `fastfetch --list-config-paths` (typically `~/.config/fastfetch/`)
* This allows users to use `fastfetch -c my-config` without needing to specify the full path.
* Adds NUMA node count detection (CPU)
* Exposed via `{numa-nodes}` in custom format
* Supported on Linux, FreeBSD and Windows
* Supports the newest Alacritty config format (#2070, TerminalFont)
* Detects driver specific info for Zhaoxin GPUs (GPU, Linux)
* Detects Android OEM UI for certain OSes (DE, Android)
* Improves users detection on Linux (#2064, Users, Linux)
* Adds systemd fallback when utmp is unavailable
* Fixes resource leaks
* Always reports the newest session info
* Adds kiss package manager support (#2072, Packages, Linux)
* Reports `sshd` if `$SSH_TTY` is not available (Terminal)
* Zpool module rewrite (#2051, Zpool)
* Adds new Zpool properties: allocated, guid, readOnly
* Zpool module now uses runtime lookup for properties to ensure portability
* Adds NetBSD (requires `sudo`) and macOS support
* Adds `splitLines` option for Command module, which splits the output into sub modules, each containing one line of the output (Command)
```
* Command output:
Line 1
Line 2
Line 3
* Old behavior:
Command: Line 1
Line 2
Line 3
* With `"splitLines": true`:
Command 1: Line 1
Command 2: Line 2
Command 3: Line 3
```
Bugfixes:
* Fixes {m,o}ksh version detection on Linux (Shell)
* Fixes Alacritty config parsing for TOML format (#2070, TerminalFont)
* Improves builtin logo printing for piping and buffering (#2065, Logo)
* Uses absolute path when detecting shell and terminal version if available (#2067, TerminalShell)
Logos:
* Updates Codex Linux logo (#2071)
* Adds OS/2 Warp logo (#2062)
* Adds Amiga logo (#2061)
# 2.55.1
Bugfixes:
* Fix parallel command execution breaks randomly (#2056 / #2058, Command)
* Regression from v2.55.0
* Fix `dylib` searching path on macOS (macOS)
* Regression from v2.55.0
* Fix an uninitialized field (#2057, Display)
# 2.55.0
Changes:
* Commands are now executed in parallel by default to improve performance (#2045, Command)
* This behavior can be disabled in the config file with `"parallel": false` if it causes problems with certain scripts
* Folder/filesystem hiding is moved to the detection stage; hidden entries are no longer probed, improving performance (#2043, Disk)
Features:
* Adds `command.parallel` and `command.useStdErr` config options (Command)
* `parallel`: set to `false` to disable parallel execution (see Changes above)
* `useStdErr`: set to `true` to use stderr output instead of stdout
* Adds the command-line flag `--dynamic-interval <interval-in-ms>` to enable dynamic output auto-refresh (#2041)
* Due to internal limitations, some modules do not support dynamic updates (notably Display and Media)
* Adds support for using the current playing media's cover art as a logo source (Media / Logo)
* Usage: `"logo": { "type": "<image-protocol>", "source": "media-cover" }` in JSON config; or `--<image-protocol> media-cover` in command line
* Supports local sources only
* Adds native GPU detection support on OpenBSD and NetBSD (instead of depending on `libpciaccess`) (GPU)
* No functional changes
* Root privileges are required to access PCI config space on OpenBSD (as always)
* Adds GPU detection support on GNU/Hurd (GPU)
* Requires building with `libpciaccess`
* Shows Debian point release on Raspberry Pi OS (#2032, OS, Linux)
* Adds `Brush` shell version detection (Shell)
* Improves Mac family detection via prefix matching (Host)
Bugfixes:
* Ignores `run-parts` during terminal/shell detection (#2048, Terminal / Shell, Linux)
* Fixes fish version detection when `LC_ALL` is set (#2014, Shell, Linux)
* Hides the module when no desktop icons are found (#2023, Icons, Windows)
* Skips auxiliary display controllers to prevent the module from reporting duplicate entries (#2034, GPU, Linux)
* Refines Apple rpath handling; fixes building for the Homebrew version on macOS (#1998, CMake)
Logos:
* Adds Vincent OS and MacaroniOS
# 2.54.0
Windows binaries in Release page are now signed by SignPath.
Changes:
* Moves macOS and Windows design language detection from the DE module to the Theme module
Features:
* Adds `--json` and `-j` command line flags as a shortcut for `--format json`
* Various improvements to the OS module (OS)
* Displays point releases for Debian
* Displays code names for Ubuntu
* Displays build ID for macOS
* Displays code names for Windows (previously shown in the Kernel module)
* Adds basic support for Wine (Windows)
* Adds basic support for hppa and sh architectures (CPU, Linux)
* Improves T-Head SoC name detection from the device tree (#1997, CPU, Linux)
* Supports glob patterns in `Disk.hideFolders` (Disk)
* For example, `/boot/*` will match both `/boot/efi` and `/boot/firmware`
* Adds brightness-level detection for external monitor support on Intel macOS (Brightness, macOS)
* Adds configurable spacing between icon and text in keys
* `display.key.type: "both-N"` where N is `0-4`
* Useful for non-monospaced Nerd Fonts
* Adds detection support for modern Samsung Exynos SoCs (CPU, Android)
* Adds a new CMake option `-DENABLE_WORDEXP=<ON|OFF>` to enable or disable using `wordexp(3)` for acquiring logo file paths (`logo.source`)
* Enabled by default for compatibility
* Disabling this option reverts to using `glob(3)`, which is less functional but more secure
Bugfixes:
* Avoids integer overflow when calculating swap size (#1988, Swap, Windows)
* Trims whitespace from full user name (Title, macOS)
* Fixes default font size for Ghostty (#1986, TerminalFont, Linux)
* Works around an issue that could report impossibly high memory usage in rare cases (#1988, Memory, Linux)
* Fixes incorrect glibc dependency in polyfilled DEB packages (#1983, Linux)
* Fixes corrupted binaries in polyfilled RPM packages (#1990, Linux)
* Fixes crashes on ancient Android kernels (#1993, Disk, Android)
* Fixes incorrect usage of `glob(3)` (OpenBSD)
* Prefers resolutions reported by RandR mode info, fixing incorrect resolutions on XFCE when DPI scaling is enabled (Display, Linux)
* Various code cleanups and minor fixes
Logos:
* Adds secureblue, PrismLinux, EmperorOS and Zraxyl
* Updates T2
# 2.53.0
Changes:
* JSON property `length` in `Separator` module has been renamed to `times` for clarity (Separator)
Features:
* Adds IPv6 type selection (#1459, LocalIP)
* For example: `{ "type": "localip", "showIpv6": "ula" /* Show ULA only */ }`
* Adds more ARM CPU part IDs (CPU, Linux)
* Improves Ghostty font config parsing with fallback font detection (#1967, TerminalFont)
* Replaces statx(2) call with syscall(2) for better compatibility (Disk, Linux)
* Allows array input for disk folder and filesystem options (Disk)
* For example: `{ "type": "disk", "folders": ["/", "/home"] }`
* Adds support for ignoring input devices by name prefix (#1950, Keyboard / Mouse / Gamepad)
* For example: `{ "type": "keyboard", "ignores": ["Apple ", "Corsair "] }`
* Adds support for (B)SSID detection on macOS Tahoe (Wifi, macOS)
* Please don't expect it to work on later macOS versions
* Improves Ubuntu flavor detection (#1975, OS, Linux)
* Refines ARMv8.4-A detection to require LSE2 (CPU, Windows)
* Detects the latest Dimensity & Snapdragon SoC names (CPU, Android)
Bugfixes:
* Handles zero temperature data (#1960, CPU, Windows)
* Fixes `dlopen libzfs.so failed` error on Proxmox 9 (#1973, Zpool, Linux)
Logos:
* Removes Starry Linux
* Adds TempleOS
* Updates ObsidianOS
# 2.52.0
Changes:
* New optional build dependencies on Android
* main: chafa dbus glib imagemagick libelf libxcb libxrandr pulseaudio zlib
* x11: dconf (Optional)
* Dependency on `libxfconf` is removed. XFCE related detection now uses `libdbus` instead (Linux)
* The default format of `Display` module is updated to `{width}x{height} @ {scale-factor}x in {inch}", {refresh-rate} Hz`
* Replaced scaled resolution with scale factor for shorter texts and avoiding potential confusion.
Bugfixes:
* Fixes linking on 32-bit Android (#1939)
* Skips network interfaces without IPs unless MAC address is requested (#1949, LocalIP)
* Fixes unexpected padding when setting `logo.width` with chafa logos (#1947, Logo)
* Regression from v2.51.0
* Improves Wallpaper detection on XFCE4 (Wallpaper, Linux)
* Ignores process `Relay(xxx)` when detecting terminal on WSL2 (Terminal, Linux)
Features:
* Enables X11-related info (i.e., WM/DE) detection on Android (Global, Android)
* This requires many dependencies. See above.
* Adds scale factors detection for X11 (Display, Linux)
* X11 doesn't natively report scale factor as Wayland does. Instead, Fastfetch tries to detect `Xft.dpi` (DPI used by X FreeType for scaling fonts), which is usually set by the WM when DPI scaling is enabled.
* It's not always accurate. For example, XFCE4 has a separate config for text scaling, which is unaffected by the global DPI scaling setting.
* Adds `display.fraction.trailingZeros: [always|never]` option for fraction formatting
* The default value of `display.fraction.ndigits` is changed from `-1` (unlimited) to `2` for usability.
* Used for displaying scale factor in Display module mentioned above, alongside other places for printing raw fraction numbers.
* Informs users that module-specific CLI options are no longer supported and provide guidance for transitioning to JSON config
* Adds CPU name detection support for IA64 (CPU, Linux)
* Support Btrfs allocation profile detection (#1941, Btrfs, Linux)
# 2.51.1
Bugfixes:
* Fix building on macOS 14 or older; no functional changes (CPU, macOS)
# 2.51.0
Changes:
* Fastfetch now requires [yyjson 0.12](https://github.com/ibireme/yyjson/releases/tag/0.12.0) to build when using `-DENABLE_SYSTEM_YYJSON=ON`.
* The Disk module no longer shows hyperlink mountpoints by default, which cause issues on some real consoles (Disk)
* Instead, the custom key for the Disk module now supports `{mountpoint-link}` and `{name-link}` to show hyperlinks for mountpoints and names. For example, `{ "type": "disk", "key": "Disk ({mountpoint-link})" }` can be used to restore the old behavior.
Features:
* Adds `succeeded` module condition to JSONC config. When set to `false`, the module will only run if the last module failed (#1908)
* Useful for displaying fallback placeholders when a module fails. For example:
```jsonc
{
"host",
// If fastfetch fails to detect host info, display "DIY PC" instead
{
"type": "custom",
"condition": {
"succeeded": false
},
"key": "Host",
"format": "DIY PC"
}
}
```
* By upgrading to yyjson 0.12, fastfetch now adds [JSON5](https://json5.org/) format support for configuration files (#1907)
* [JSON5](https://json5.org/) is a superset of JSONC that allows unquoted keys, single quotes, multi-line strings, etc., and is fully compatible with JSONC and strict JSON.
* To use JSON5, simply name your config file with a `.json5` extension. The `.jsonc` extension is still supported and used as the default extension for better IDE syntax highlighting support.
* Fastfetch has been ported to [`GNU/Hurd`](https://www.gnu.org/software/hurd/) (#1895)
* Thanks to the efforts of @yelninei!
* Built-in logos now honor `logo.width` (#1905)
* When its value is larger than the actual logo width, the logo will be padded with spaces to the right
* Adds Trinity DE version detection (#1917, DE, Linux)
* Adds formatted free and available disk size fields (#1929, Disk)
* `{size-free}`: free size of the disk
* `{size-available}`: available size of the disk
* See [askubuntu.com](https://askubuntu.com/questions/249387/df-h-used-space-avail-free-space-is-less-than-the-total-size-of-home) for the difference between free and available size
* Adds [x86_64 micro-architecture level](https://en.wikipedia.org/wiki/X86-64#Microarchitecture_levels) detection (#1928, CPU)
* Useful when installing software that requires or is optimized for specific CPU features. E.g., [CachyOS](https://wiki.cachyos.org/features/optimized_repos/)
* Exposed via `{march}` in custom format
* Adds [Aarch64 micro-architecture level](https://en.wikipedia.org/wiki/AArch64#Profiles) detection (CPU)
* Supported on Linux (including Android), macOS and Windows
* This is not fully accurate because there are many optional features across different levels, and not all levels are detectable.
* Exposed via `{march}` in custom format.
* Adds shepherd detection support (InitSystem, Linux)
Bugfixes:
* Refines GPU detection logic to correctly handle virtual devices (#1920, GPU, Windows)
* Fixes possible default route detection failure when the route table is very large (#1919, LocalIP, Linux)
* Fastfetch now correctly parses `hwdata/pci.ids` files alongside `pciids/pci.ids` on FreeBSD when detecting GPU names (#1924, GPU, FreeBSD)
* Fixes twin WM detection (#1917, WM, Linux)
* Various fixes for Android support
* Corrects WM name for Android (WM, Android)
* Fixes battery temperature detection when running in ADB (Battery, Android)
* Adds CPU and GPU temperature detection support (CPU, Android)
Logos:
* Adds AerynOS
# 2.50.2
Bugfixes:
* Fixes linglong package detection V2 (#1903, Packages, Linux)
* Fixes building with `-DENABLE_SYSTEM_YYJSON=ON` (#1904)
* Fixes `showMac` does not honor `defaultRouteOnly` (#1902, LocalIP, Linux)
* Fixes failing to acquire default route on Linux in certain cases (#1902, LocalIP, Linux)
# 2.50.1
Bugfixes:
* Fixes percentage bar not displaying correctly in certain cases
* Fixes linglong package detection on Debian 13 (#1899, Packages, Linux)
# 2.50.0
Changes:
* Keys in JSON configuration files are now case-sensitive, as stated in v2.49.0.
* This is a breaking change, but it should not affect most users as long as your config file passes JSON schema validation.
* All module config flags have been removed, as stated in v2.49.0.
* To configure modules via the command line, use: `echo '{"modules": [{"type":"custom","format":"Hello Fastfetch!"}]}' | fastfetch -c -`.
* The percent bar config `display.bar.*` options have been replaced with a more organized, nested object structure.
* `display.bar.charElapsed` has been renamed to `display.bar.char.elapsed`.
* `display.bar.charTotal` has been renamed to `display.bar.char.total`.
* `display.bar.borderLeft` has been renamed to `display.bar.border.left`.
* `display.bar.borderRight` has been renamed to `display.bar.border.right`.
* The undocumented flag `--load-config` has been removed.
* Use `--config` or `-c` instead.
* Flashfetch, a simplified fastfetch variant that used a hardcoded module list with direct function calls to reduce startup overhead, has been changed to a version that aims to match neofetch's behavior as closely as possible, for demonstration purposes.
* Flashfetch is intended to be built from source (like [st](https://st.suckless.org/)). We do not provide prebuilt binaries in distributions.
Features:
* Added support for reading JSON config from stdin using `--config -` or `-c -`.
* Added `display.bar.border.{leftElapsed,rightElapsed}` for using the border as part of the bar content. (#1875)
* `display.bar.border: null` has been added as a shorthand to disable bar borders.
* Added `display.bar.color.{elapsed,total,border}` to customize the color of the elapsed, total, and border sections of the percent bar.
* `display.bar.color: null` has been added as a shorthand to disable bar colors.
* Improved Bedrock Linux detection (#1881, OS / Disk, Linux)
* Added the command flag `--gen-config-full`, which generates a JSON config file containing all optional module options.
* Improved the default IP address display when `localip.showAllIPs` is not set (LocalIP)
* For IPv4, the preferred source address (if detected) is shown.
* For IPv6, the first GUA or ULA that is not deprecated or temporary is shown.
* Added support for interface speed detection on SunOS (LocalIP, SunOS)
* Added detection support for Xlibre (#1888, WM, Linux)
* Improved the accuracy of color detection (Cursor, macOS)
* Improved the proformance of `Nix` package manager detection on macOS by porting optimizations form Linux port (#1893, Packages, macOS)
Bugfixes:
* Fixed custom object inheriting a key from the previous custom object if the key is blank (#1477)
* Fixed a possible segfault when parsing color strings in the JSON config (#1878)
* Fixed GPU driver detection when DRM is used (GPU, FreeBSD)
* Fixed default route detection on DragonFly BSD (LocalIP, DFBSD)
* Fixed lliurex detection (#1882, OS, Linux)
* Fixed compatibility with `-ffast-math` (#1894)
* Fixed physical GPU sometimes being ignored (#1896, GPU, Windows)
Logos:
* Added ObsidianOS (#1890)
# 2.49.0
Deprecation Notice:
* In fastfetch v2, the JSONC configuration format has been introduced, while command line configuration flags are kept for compatibility. Although they have the same effects, they use two different code paths, and as the number of flags grows, the codebase is becoming increasingly difficult to maintain.
* Removal of module config flags is planned for **v2.50.0**, which will also fix a long-standing issue #1477.
* Removal of most other config flags is also planned for later versions.
* Keys of JSON configuration files will be all case-sensitive. Currently they are inconsistent. Planned for **v2.50.0**.
Changes:
* Due to more restrictive permissions in macOS Tahoe, SSID detection on macOS 26+ requires root privileges. `<redacted>` will be displayed otherwise.
Features:
* Improve `nouveau` driver support for `--gpu-driver-specific` (GPU, Linux)
* VRAM size detection
* GPU temperature detection
* Core count detection (when available)
* Improve Scoop package manager detection (Packages, Windows)
* Support [`scoop-global`](https://github.com/ScoopInstaller/Install?tab=readme-ov-file#advanced-installation)
* Read Scoop's config file to find the installation path of Scoop
* Improve ARM SoC detection (CPU, Android)
* Make SoC detection more lenient. Higher chance to match at the cost of accuracy.
* Add more Snapdragon SoC names
* Support labwc WM version detection, used for XFCE4 on Wayland (WM, Linux)
* Improve accuracy of GPU temperature detection for Intel dedicated GPUs on Windows (GPU, Windows)
* Parse unicode escaped strings generated by qt5ct (#1864, Font, Linux)
* Add `--{duration,percent,size,freq,temp}-space-before-unit [always|never]` options to add a space before the unit when printing duration, percent, size, frequency and temperature values
* Add `--duration-abbreviation` to abbreviate duration values in custom format
* For example: `1 day, 2 hours, 3 mins` will be displayed as `1d 2h 3m`
* Add `--percent-width` to pad the percent value with spaces to a fixed width
* For example: `--percent-width 3` will display ` 50%` instead of `50%`; useful for aligning percent values in custom format
Bugfixes:
* Improve accuracy of Flatpak count detection (#1856, Packages, Linux)
* Remove qi package manager support (#1858, Packages, Linux)
* Fix LocalIP module on Windows (LocalIP, Windows)
* Fix default route detection when multiple network interfaces are connected
* Fix link speed calculation
* Fix interface status when the interface is up but not connected (Wifi, Linux)
* Fix variable names in custom format (#1861)
* `full-path` to `path` (Editor)
* `session` to `session-name` (Users)
* `name` to `project-name` (Version)
* Fix wrong /s assignment in custom format (#1871, DiskIO)
Logos:
* Add `Aeon`
* Remove `Evolinx`
# 2.48.1
Features:
* Add support for detecting Openbox WM version (WM, Linux)
* Improve reliability of child process spawning on Windows (Windows)
* Add a new option `--packages-combined`, which combines related package managers into single counts (#1851, Packages)
* For example: if you have both `flatpak-system` and `flatpak-user` packages installed, they will be combined into a single `flatpak` count with `--packages-combined` enabled.
* Add `modules[n].condition` to conditionally enable modules on different platforms
* Useful when sharing configuration files across platforms
* For example:
```jsonc
{
"type": "custom",
"format": "This string will be printed on Intel macOS only",
"condition": {
"system": "macOS", // Can be an array, optional
"arch": "x86_64" // Can be an array, optional too
}
}
```
Bugfixes:
* Revert the change of `posix_spawn` in v2.48.0 for Android and OpenBSD (Android / OpenBSD)
* Fix completion for Android 7 (Required by Termux)
# 2.48.0
Features:
* Add support for detecting Fedora variants (#1830, OS, Linux)
* Currently supported variants: CoreOS, Kinoite, Sericea, Silverblue
* Optimize GPU detection on Windows when `--gpu-driver-specific` is not used (GPU, Windows)
* Improve accuracy of GPU type detection. Previously it was guessed based on the dedicated vmem size, which causes issues on newer AMD integrated GPUs such as 9000 HX and AI 9 HX series. Supported on Windows 8.1 or later.
* Add support for generic frequency detection of GPU 3D engine on Windows 11 22H2 or later.
* Improve performance. GPU temperature detection is significantly improved when `--gpu-driver-specific` is not used.
* Improve performance and security when spawning child processes by replacing `fork-exec` with `posix_spawn` (*nix)
* Improve accuracy of sound device detection on macOS (Sound, macOS)
* Trim leading and trailing whitespaces in disk serial numbers (PhysicalDisk)
* Add `/etc/profiles/per-user` detection for Nix user packages (#1782, Packages, Linux)
* Introduce `years` (whole years as integer), `days-of-year` (days since the last anniversary) and `years-fraction` (years as fraction, e.g. 1.5 means 1 year and 6 months) formatting placeholder to `Disk` (since disk creation), `Users` (since user login) and `Uptime` (since system boot) modules
* For example: `fastfetch -s disk --disk-key 'OS Installation' --disk-format '{years} years {days-of-year} days'`
* Add `--fraction-ndigits` option to specify the number of digits after the decimal point when displaying ordinary fractional values
* Typically used with `{years-fraction}` above
* This option does not affect percentage values, sizes, etc, which are controlled by individual options.
Bugfixes:
* Fix compilation issues when not using `-DBINARY_LINK_TYPE=dlopen`
* Regression from v2.47.0
* Note: this option was added for debugging purposes only and is not recommended for production use
* Replace `MTLDevice::hasUnifiedMemory` with `MTLDevice::location` for GPU type Detection (GPU, macOS)
* This should resolve the issue where discrete GPUs were detected as integrated GPUs on Intel MacBooks with multi-GPU configurations.
* Prevent text files from being loaded as image files (#1843, Logo)
Logos:
* Add Minimal System
* Add AxOS
* Rename Ada to Xray OS
# 2.47.0
Features:
* Various improvements for Solaris / OpenIndiana support
* Support BIOS (UEFI or legacy) type detection (BIOS)
* Support physical disk detection (PhysicalDisk)
* Remove leading `-` from login shells (Shell)
* Improve GPU detection performance (GPU)
* Drop `libpciaccess` dependency
* Use native API to detect sound devices (Sound)
* Drop `PulseAudio` dependency
* Improve DietPi OS and Raspberry Pi OS detection (#1816, OS, Linux)
* Force reporting version 26 on macOS Tahoe (OS, macOS)
* Append version string to Ubuntu variants (OS, Linux)
* Improve performance of media detection for macOS 15.4+ (Media, macOS)
* Increase `PROC_FILE_BUFFSIZ` to avoid possible short reads (Linux)
* Fix potential bugs in `DiskIO`, `NetIO` and `CPUUsage` modules
* Improve accuracy of CPU usage calculations by including interrupt and softirq times (CPUUsage, Linux / *BSD)
* Ignore `init` and `systemd` processes when detecting terminals (Terminal, Linux)
* Improve accuracy of CPU usage detection on Windows 10+ with perflib, which matches values reported by Task Manager (CPUUsage, Windows)
Bugfixes:
* Fix `pci.ids` file location (#1819, GPU, OpenBSD)
* Fix compiling on FreeBSD when `libdrm` support is disabled (#1820, GPU, FreeBSD)
Logos:
* Improve visibility on white-background terminals for some logos by replacing white with the default foreground color
* According to Wikipedia, the default foreground color is implementation-defined. It's usually black for white themes and white for dark themes. However, some terminals, notably Konsole with the default theme, use a different color, which may cause issues with some logos.
* Add Xubuntu
# 2.46.0
Features:
* Support Rio terminal font detection (#1789, TerminalFont, Linux)
* Support GPU detection by DRM on FreeBSD (GPU, FreeBSD)
* Enable by `--gpu-detection-method auto`
* Require proper DRM drivers installed and loaded
* Support PowerPC CPU detection on NetBSD (#1802, CPU, NetBSD)
* Support Aerospace WM detection (#1796, WM, macOS)
* Improve Raspberry Pi OS for RPI5 detection (#1773, OS, Linux)
* Support Linux Binary Compatibility detection on FreeBSD (#1786, Host, Linux)
* Use `board-id` as board name if available (Board, macOS)
* Intel only
* Support shared VRAM usage detection for AMD GPUs (GPU, Linux)
* Use `perflib.h` instead of `pdh.h` for CPU temperature querying to get rid of `pdh.dll` dependency (#1787, CPU, Windows)
* Support GPU info detection for old ATI radeon driver (#1810, GPU, Linux)
* Add macOS 26 Tahoe support (macOS)
* Report macOS 26 code name (OS)
* Report Liquid Glass DE on macOS 26+ (DE)
* Detect Metal 4 support (GPU)
Bugfixes:
* Fix packages counting by ignoring hidden folders (Packages, OpenBSD)
* Fix Hyprland version detection (WM, FreeBSD)
* Don't show `Please insert a disk into drive D:` error dialogs (#1805, Disk, Windows)
* Hide `/boot/firmware` by default (Disk, Linux)
Logos:
* Rename Hydra Framework to HydraPwk (#1812)
* Add AnushOS (#1806)
* Add HarmonyOS (#1804)
* Add GhostFreak (#1801)
* Add TrueNAS Scale (#1795)
* Add Fedora2_small (#1785)
* Add xenia_old; update colors of xenia (#1797)
* Improve colors of bedrock_small (#1790)
* Add Kalpa Desktop (#1807)
# 2.45.0
Features:
* Support OnePlus marketing name detection (#1768, Host, Android)
* Recognize additional GPU vendors (GPU, Linux)
* Support CTWM, FVWM and I3 window manager version detection (WM)
* Support KDE version detection on *BSD (DE, FreeBSD)
* Support `"logo": { "type": "command-raw" }` to run a command and display its output as logo (#1780, Logo)
* Useful for displaying custom logos generated by other programs such as `pokeget`: `{ "type": "command-raw", "source": "pokeget random --hide-name" }`
* Supported in JSONC config file only. `pokeget random --hide-name | fastfetch --file-raw -` should be used in shell.
* Acquire SMBIOS information on DragonFly BSD from `/dev/mem`; legacy BIOS only (PhysicalMemory, DragonFly)
* Support swap usage detection on DragonFly BSD (Swap, DragonFly)
* Support `--swap-separate` to display detailed swap devices on separate lines (Swap)
Bugfixes
* Fix MacBook Air model name (#1779, Host, macOS)
* Don't ignore sshfs mountpoints (#1776, Disk, Linux / FreeBSD)
* Fix dnf package count detection (#1777, Packages, Linux)
Logos:
* Add Starry Linux (#1771)
* Add rhel_small (#1774)
* Update color palette of voidlinux (#1775)
* Add void2
* Update Xenia Linux (#1783)
# 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:
* Support physical core count and package count detection on Solaris (CPU, SunOS)
* Improve physical core count detection on FreeBSD (CPU, FreeBSD)
* Add option to hide unknown GPUs (GPU)
* Detect VRAM type of AMD GPUs on Linux (GPU, Linux)
* Support playing media detection on macOS 15.4 (#1737, Media, macOS)
* Whether it works on newer versions is unknown
* Detect player name for Windows UMP apps (Media, Windows)
Bugfixes:
* Fix disk usage detection on 32-bit Linux (#1734, Disk, Linux)
* Fix compiling on Asahi Linux (GPU, Linux)
* Fix duplicated playback status (Media, Linux)
* Don't show 255 in custom format when muted on macOS (#1750, Sound, macOS)
* Remove shared memory detection for AMD GPUs, which doesn't work as expected (GPU, Windows)
Logos:
* new AthenaOS
* add Hydra Framework
# 2.42.0
Changes:
* Normalize the module name `Bios` to `BIOS` (#1721)
* No configuration file changes are required because fastfetch parses module names case-insensitively.
Bugfixes:
* Disable disk type detection for virtual disks (PhysicalDisk, Linux, #1669)
* Fix incorrect CPU temperature reporting (CPU, OpenBSD)
* Fix setting `logo.chafa.symbols` in JSON configuration (Logo, #1709)
* Fix non-normalized time display (Uptime, #1720)
* Miscellaneous minor fixes
Features:
* Add CPU temperature detection support (CPU, SunOS)
* Improve CPU frequency detection (CPU, NetBSD)
* Add Wi-Fi detection support (Wifi, NetBSD)
* Add Webcam detection support (Camera, OpenBSD)
* Requires root privileges
Logos:
* Remove GoralixOS logo (#1699)
* Add Aurora logo (#1700)
* Add Codex Linux logo (#1701)
# 2.41.0
Changes:
* Due to [the deprecation](https://github.com/actions/runner-images/issues/11101), Linux x86_64 binaries are now built with Ubuntu 22.04 (Glibc 2.35, Debian 12)
* You can always build fastfetch yourself on your own. Please don't report bugs related to this change.
Features:
* Support physical core count detection on non-x86 platforms (CPU, Linux / FreeBSD)
* Support CPU frequency detection on PPC64 (CPU, FreeBSD)
* Support soar packages count detection (Packages, Linux)
* Support `~` path expanding on Windows (Logo, Windows)
* Support retrieving full user name (Title)
* Exposed with `--title-format '{full-user-name}'`
* Improve CPU (thermal zone) temperature detection on Windows (CPU, Windows)
* Administrator privileges are no longer needed
* Support base Wifi info detection on OpenBSD (Wifi, OpenBSD)
* To be tested
* Support GPU temperature detection for Intel dGPU on Linux (GPU, Linux)
* To be tested
* Add new ARM CPU part numbers (CPU, Linux)
* Add base implementation of Bluetooth device detection (Bluetooth, NetBSD, #1690)
* Some small improvements
Logo:
* Add anduinos
* Add 2 more Alpine logos
# 2.40.4
Bugfixes:
* Fix loading presets config on Windows (Windows, #1682)
* Regression of v2.40.0
* Remove the prefix `v` of Hyprland version on Arch Linux (WM, Linux)
# 2.40.3
Bugfixes:
* Fix loading example configs from presets directory (#1672)
* Regression of v2.40.2
* Mark kitty image protocol support for warp terminal on macOS too (Logo)
# 2.40.2
Changes:
* Since v2.40.0, we've been loading config files from the directory where the fastfetch binary is located. However, this approach may lead to loading unexpected files. For example, `fastfetch -c groups` would attempt to load `/usr/bin/groups`. Therefore, we now enforce the `.jsonc` extension when loading config files. Examples:
1. `-c filename`: loads `filename.jsonc`
2. `-c filename.jsonc`: loads `filename.jsonc`
3. `-c filename.json`: loads `filename.json` and enforces strict JSON syntax (no comments or trailing commas)
4. `-c filename.ext`: loads `filename.ext.jsonc` (`.jsonc` extension is enforced)
Features:
* Mark kitty image protocol support for warp terminal (Logo)
* Documentation improvements
# 2.40.1
Bugfixes:
* Fix compiling error on old intel platform (TPM, macOS)
* Fix `--file-raw -` no longer working (Logo, #1659)
* Regression of v2.40.0
# 2.40.0
Changes:
* In `key-format` of `LocalIP` module, `{name}` has been renamed to `{ifname}` for consistency (LocalIP, #1639)
Features:
* Support Warp Terminal font detection (TerminalFont, Windows)
* Support more AMD GPU information using ADL SDK, including memory type detection (GPU, Windows)
* Support Intel dGPU memory type detection (GPU, Windows)
* Support Nvidia VMEM type detection via NVAPI (GPU, Windows, #993)
* Support Boot manager detection for OpenBSD and NetBSD (Bootmgr, OpenBSD / NetBSD)
* Use `SystemConfiguration` for DNS entries detection (DNS, macOS)
* Add `systemd-resolved` support for DNS module (DNS, Linux, #1646)
* Improve performance and accuracy of Wifi detection on FreeBSD using ioctl (Wifi, FreeBSD)
* Support remaining time reporting for batteries on NetBSD (Battery, NetBSD)
* Add new Mac models support (Host, macOS)
* Load config from fastfetch binary path with `--config` option (#1649)
* Support TPM detection on macOS (TPM, macOS)
* Support IPv6 client address report (Users, Linux / Windows)
* Support default route detection for IPv6 (LocalIP, Linux)
* Round seconds to the nearest minute to match the behavior of `uptime` command (Uptime)
Bugfixes:
* Fix `outputColor` not working when `length` is set in Separator module (#1644)
* Fix CPU detection on PowerPC platforms (#1640, CPU, Linux)
* Fix battery manufacture date detection (Battery, macOS)
* Fix battery critical state detection (Battery, Linux)
* Fix Warp Terminal PID detection (Terminal, macOS)
* Remove disk creation time detection support on SunOS as ctim is file status change timestamp, not creation time (Disk, SunOS)
* Fall back to KDGKBINFO if `usbhid` fails (Keyboard, FreeBSD)
* Fix multiple paging file support (Swap, Windows)
* Fix memleaks, code smells in multiple modules
* Fix boot time calculation on NetBSD (Uptime, NetBSD)
* Temporarily fix Hyprland version detection (WM, Linux, #1657)
Logo:
* Fix opensuse-tumbleweed_small (#1636)
* Change WiiLinuxNgx to more generic name with aliases Wii-Linux and WiiLinux (#1633)
* Change name of Xray-OS to Ada (#1651)
* Change Nexa Linux logo (#1653)
# 2.39.1
Bugfixes:
* Fix a regression that PublicIP detection fails randomly (PublicIP, #1629)
# 2.39.0
Changes:
* OSMesa backend for OpenGL detection is removed (#1618)
* Fastfetch no longer tries to use the private framework `Apple80211` to acquire SSID for Wifi module, which is only useful for macOS Sonoma (Wifi, macOS)
Features:
* Improve accuracy of HDR support on Windows 11 24H2 (Display, Windows)
* Improve performance of SSID detection on macOS Sequoia (Wifi, macOS, #1597)
* Support warp terminal version detection on Windows (Terminal, Windows)
* Support default route detection on OpenBSD & DragonFly BSD (LocalIP, OpenBSD / DragonFly)
* Improve bash completion script
* Improve performance of networking (PublicIP / Weather)
* Support pkgsrc package manager detection on Linux (Packages, Linux)
Logo:
* Add Common Torizon OS
* Change FoxOS to WolfOS
* Add Bredos
* Add NetBSD2
# 2.38.0
Bugfixes:
* Fix empty battery slots handling (Battery, Haiku, #1575)
* Fix `{day-pretty}` output in custom format (DateTime, Windows)
* Fix VanillaOS detection (OS, Linux)
* Fix secure boot testing (Bootmgr, Linux, #1584)
* Fix the SI unit "kB" in help message (#1589)
* Fix segfault on macOS 10.15 when using the binary downloaded from Github Releases (Camera, macOS, #1594)
Features:
* Support Chassis module in macOS (Chassis, macOS)
* Allow customize key format with kernel name and distro name (OS)
* Add missing `{icon}` in custom key format (Battery)
* Add missing `{mountpoint}` and `{mount-from}` in custom output format (Disk, #1577)
* Support percentage num & bar in custom format (GPU, #1583)
* Support `pisi` package manager detection (Packages, Linux)
* Support termite terminal font detection (TerminalFont, Linux)
* Report monitor type in Brightness module (Brightness)
Logo:
* Add `opensuse-tumbleweed_small`
* Add `Bedrock_small`
* Add `fastfetch`
* Remove some unnecessary distro names
# 2.37.0
Changes:
* Option `--escape-bedrock` is removed. The function is always enabled now.
Features:
* Support for Haiku is greatly improved (Haiku)
* CPU, GPU, Disk, Sound, Terminal, Terminal Font, Init System, Battery, Mouse, Keyboard, NetIO, CPU Usage, Physical Disk and OpenGL should work on Haiku now
* SMBIOS related modules (Host, Bios, Board, Chassis, Physical Memory) should work in platforms with legacy BIOS system.
* Support for Gamepad and Bluetooth are WIP.
* Some bugs are found and fixed.
* Remove `python-requests` dependency in `scripts/gen-*.py`.
* Add cmake option `-DENABLE_EMBEDDED_AMDGPUIDS=BOOL` (disabled by default)
* If enabled, fastfetch will embed the newest [`amdgpu.ids`](https://gitlab.freedesktop.org/mesa/drm/-/blob/main/data/amdgpu.ids?ref_type=heads) file into fastfetch binary.
* Weather module now honors `display.temp.unit` option (#1560, Weather)
* Support Physical Memory module in NetBSD (PhysicalMemory, NetBSD)
* Requires root permission
* Improve non-intel CPU detection in NetBSD (#1573, CPU, NetBSD)
Bugfixes:
* Fix building in macOS 10.13 (GPU, macOS)
* Properly round percent values when detecting volume (#1558, Sound)
* Fix Physical Memory module doesn't work in `--format json` mode
* Add some missing variable inits (GPU, Linux)
* Fix `--localip-default-route-only false` not working with `--gen-config` (#1570, LocalIP)
Logo:
* Update Rosa linux
* Add Haiku2
# 2.36.1
Changes:
* To use [the native arm64 runner of Github Action](https://github.blog/changelog/2025-01-16-linux-arm64-hosted-runners-now-available-for-free-in-public-repositories-public-preview/), Linux aarch64 binary is built with Ubuntu 22.04 (Glibc 2.35, Debian 12).
Bugfixes:
* Chimera Linux logo is now displayed correctly (#1554, Logo)
* Regression of 2.36.0
* Fix building on Haiku
Logo:
* Fix ALT Linux
# 2.36.0
Bugfixes:
* Trim leading slash for login shells (Shell, OpenBSD)
* Prefer SOC name if available over CPU name (CPU, Linux)
Features:
* Use kernel API to detect sound devices (Sound, NetBSD)
* Use sndio for sound server detection on OpenBSD (Sound, OpenBSD)
* Add minimal implementation for Haiku (#1538, Haiku)
* Support CPU & GPU temperature detection for M4x (CPU / GPU, macOS)
* Support VMEM size detection for old Nvidia cards (GPU, Linux)
* Use [recommendedMaxWorkingSetSize](https://developer.apple.com/documentation/metal/mtldevice/recommendedmaxworkingsetsize) as total GPU mem size (GPU, macOS)
* Support Physical core count and CPU package count detection for loongarch (CPU, Linux)
* Split ID_LIKE when used for distro matching (#1540, Logo)
* Capitalize `{type}`'s first letter in custom format (#1543, Display)
* Support model name detection for s390x (CPU, Linux)
* Support more Armbian variants detection (#1547, OS, Linux)
* Support the syntax of `{$ENV_VAR}` in custom format, which will be replaced by the value of the environment variable `ENV_VAR` (#1541)
* This is another way to pass 3rd-party data to fastfetch besides `Custom` module.
* Improve performance of Tilix version detection (Terminal, Linux)
Logo:
* Update arch_old
* Add Nexa Linux
* Add filotimo
* Update some distro names
# 2.35.0
Bugfixes:
* Suppress output of EGL again (#1513, GPU, Linux)
* Regression of 2.34.0
Features:
* Show SOC name reported in `cpuinfo` if available (#1510, CPU, Linux)
* Change package manager name of NetBSD from `pkg` to `pkgsrc` (#1515, Packages, NetBSD)
* Detect SOC name on RISCV (#1519, CPU, Linux)
* Report marketing name of new QS8Es (CPU, Android)
* Acquire acquire more os info from lsb-release if missing from os-release (#1521)
* CMake: add option `-DCUSTOM_LSB_RELEASE_PATH` to specify the path of `lsb-release` file
* `-DCUSTOM_OS_RELEASE_PATH` has been supported since `v2.11.4`
* Report more SOC names on Android (CPU, Android)
* Support duration printing in custom format (Disk / Users)
* For example:
```jsonc
{
"modules": [
{
"key": "OS Installation Date", // No longer need to write bash scripts
"type": "disk",
"folders": "/", // Different OSes may need to specify different folders
"format": "{create-time:10} [{days} days]" // Reports the creation date of the root folder
}
]
}
```
Logo:
* Add Arch_old
* Update key color of NetBSD_small
* Fix OpenBSD and many other ascii logos (#1522)
# 2.34.1
An early release to fix KDE Plasma 6.3 compatibility. Hopefully it can be accepted by package managers before KDE 6.3 is officially released.
To package managers: if you find fastfetch bugs, it's highly appreciated if you can report them to the upstream, so that all users can benefit from the fix, instead of maintaining out-of-tree patches. Thanks!
Features:
* Report vendor name when detecting GPUs by OpenGL
* Note: the vendor name is actually the creator of the OpenGL driver (such as `Mesa`) and may not be the same as the GPU vendor.
Bugfixes:
* Fix Ghostty termfont detection (#1495, TerminalFont, macOS)
* Fix compatibility with KDE Plasma 6.3 (#1504, Display, Linux)
* Make memory usage detection logic consistent with other systems (Memory, OpenBSD / NetBSD)
* Report media file name if media title is not available (Media)
* Fix max frequency detection for CPUs with both performance and efficiency cores (CPU, FreeBSD)
Logo:
* Add HeliumOS
* Add Oreon
* Update SnigdhaOS
# 2.34.0
Changes:
* We now print distro pretty name if available (OS)
* This is a long requested feature. However, it may break some distros. File a bug with the content of `/etc/os-release` if it breaks your distro.
Bugfixes:
* Fix thunderbolt version of new MBPs (#1465, Host, macOS)
* Fix backlight name detection on FreeBSD (Brightness, FreeBSD)
* Fix Terminal detection when running fastfetch in `pk-command-not-found` (#1467, Terminal, Linux)
* Relax detection of terminals in NixOS (#1479, Terminal, Linux)
* Should fix konsole, ghostty and maybe others
* Fix core count output in multi-package platforms (CPU)
* Don't suppress the output of `preRun` (#1489)
* Fix battery percentage detection (Battery, NetBSD)
Features:
* Support ghostty terminal font detection (TerminalFont, Linux / macOS)
* Support `kitty-icat` image protocol, which uses `kitten icat` to generate image data
* Pros: support tmux; support gif animations; good performance
* Cons: due to the limitation of `kitten icat`, we need to clear the screen before displaying the image logo
* Support WM version detection (WM)
* In Linux, Hyprland & sway are supported currently
* Improve performance when stdout is redirected (TerminalSize)
* Report thermal zone temp if CPU temp is not available (CPU, Linux)
* Report sound server (Pipewire or PulseAudio) if available (#1454, Sound, Linux)
* Enable OpenGL & OpenCL detection on Android (OpenGL / OpenCL, Android)
* Detect & report MediaTek Dimensity 9000+ SOC name (CPU, Android)
* Support appman (am-user) package manager detection (Packages, Linux)
Logo:
* Add Lubuntu
* Update Xray_os
* Add SnigdhaOS
* Add Rhino Linux
# 2.33.0
Changes:
* Introduce a new CMake flag `-DBUILD_FLASHFETCH=OFF` to disable building flashfetch binaries
* Package managers are encouraged to enable it. See <https://github.com/fastfetch-cli/fastfetch/discussions/627> for detail
Bugfixes:
* Fix interconnect type detection (#1453, PhysicalDisk, Linux)
* Regression of v2.28
* Don't report `proot` as terminal (Terminal, Android)
* Remove a debug output (DiskIO, OpenBSD)
* Fix media detection for some players (#1461, Media, Linux)
* Regression of v2.32
Features:
* Use `$POWERSHELL_VERSION` as PowerShell version if available (Shell, Windows)
* Fetching Windows PowerShell version can be very slow. Add `$env:POWERSHELL_VERSION = $PSVersionTable.PSVersion.ToString()` in `$PROFILE` before running `fastfetch` to improve the performance of `Shell` module
* Add support for ubuntu-based armbian detection (#1447, OS, Linux)
* Improve performance of Bluetooth detection (Bluetooth)
* We no longer report disconnected bluetooth devices in `--format json` when `--bluetooth-show-disconnected` isn't specified
* Support brightness level detection for builtin displays (Brightness, OpenBSD / NetBSD)
* Requires root permission on OpenBSD
* Support battery level detection (Battery, OpenBSD / NetBSD)
* Support CPU temperature detection in NetBSD (CPU, NetBSD)
* Hard code path of `libvulkan.so` for Android
* So that users don't need to install the vulkan-loader wrapper of termux
Logo:
* Add NurOS
* Add GoralixOS
# 2.32.1
A hotfix for OpenBSD. No changes to other platforms.
Bugfixes:
* Fix package count detection on OpenBSD (Packages, OpenBSD)
# 2.32.0
Bugfixes:
* Fix `pci.ids` file location on OpenBSD (GPU, OpenBSD)
* It's normally unused because enumerating PCI devices on OpenBSD requires root privileges
* Fix bssid formatting (Wifi, Linux)
* Fix Linux Lite distro detection (#1434, OS, Linux)
* Suppress XE driver warnings from Mesa (#1435, OpenGL, Linux)
* Fix format parameter name (#1443, Version)
* Don't report useless information when Wifi is disabled (Wifi, FreeBSD)
* Currently there are issues when the SSID contains whitespaces. More fixes are expected in the future.
* Always use physical size reported by X11 server to avoid inconsistent results (#1444, Display, Linux)
Features:
* Randomly select one if the logo source expands to multiple files (#1426, Logo)
* Report mac product name when running Linux in MacBook (Host, Linux / FreeBSD)
* Use screen size reported in DTD if make sense (Display)
* Detect Virtualized Apple Silicon CPUs (CPU, Linux)
* Add detection support for fvwm and ctwm (WM, OpenBSD / NetBSD)
* Add Armbian-unofficial detection (OS, Linux)
* Prefer surfaceless display when connect EGL (OpenGL)
* Improve accuracy of WM detection on FreeBSD (WM, FreeBSD)
* Add ratpoison window manager (WM, Linux)
Logo:
* Update Linux Lite
* Add Serpent OS
* Add Ultramarine Small
* Update Debian
# 2.31.0
Bugfixes:
* Improve performance of media detection; fix musikcube detection (Media, Linux)
* After the change, `general.processingTimeout` will also control the timeout of dbus remote calls
* Fix invalid variable names (#1408, Users)
* Change physical size detection to use basic display parameters (#1406)
* Fix possible sigfaults when detecting displays (#1393)
* Fix Nvidia card type detection
* Fix wl-restart parsing (#1422, WM, Linux)
* Fix syntax error in completion file (#1421)
* Fix hunging when using `ssh-agent` as command text (#1418, Command, macOS)
Features:
* Remove support of xcb & xlib and xrandr extension is always required (Display)
* Support preferred resolution & refresh rate detection
* On macOS there is no preferred resolution reported and maximum available resolution is reported instead.
* `--display-format {preferred-width}x{preferred-height}@{preferred-refresh-rate}`
* Report scale factor in custom format (Display)
* `--display-format {scale-factor}`
* Detect current Wi-Fi channel and maximum frequency (Wifi)
* Report processor package count (#1413, CPU)
* Remove duplicate whitespaces in CPU name
* Support sakura terminal version & font detection (Terminal / TerminalFont, Linux)
Logo:
* Fix LMDE
* Update MidOS
* Add Windows Server 2025
# 2.30.1
Bugfixes:
* Fix the destination where `fastfetch.1` is generated (#1403)
# 2.30.0
Changes:
* Percent: bar type must be enabled in `percent.type` before using percent bar in custom format
Features:
* Port to MidnightBSD; add mport package manager support
* Support bluetooth battery detection for macOS and Windows (Bluetooth, macOS / Windows)
* Support M4 model detection (Host, macOS)
* Support CPU temperature detection on OpenBSD (CPU, OpenBSD)
* Display Android icon in Android devices (OS, Android)
* Support qi package manager detection (Packages, Linux)
* Detect WM / DE by enumerating running processes (WM / DE, NetBSD)
* Generate manual pages from `help.json` (Doc)
* Detect marketing name of vivo smartphone (Host, Android)
* Add txDrops detection if supported (NetIO, *BSD)
* Support tilix version detection (Terminal, Linux)
* Support percent type config in module level. Example:
```jsonc
{
"type": "memory",
"percent": {
"green": 20, // [0%, 20%) will be displayed in green
"yellow": 40, // [20, 40) will be displayed in yellow and [40, 100] will be displayed in red
"type": [ // Display percent value in monochrome bar, same as 10
"bar",
"bar-monochrome"
]
}
}
```
Bugfixes:
* Don't display `()` in key if display name is not available (Display)
* Fix & normalize bluetooth mac address detection (Bluetooth, macOS / Windows)
* Don't print index in multi-battery devices (Battery)
* Fix segfault in macOS (#1388, macOS)
* Fix `CFStringGetCString() failed` errors (#1394, Media, macOS)
* Fix CPU frequency detection on Apple M4 (#1394, CPU, macOS)
* Fix exe path detection on macOS (Shell / Terminal, macOS)
* Fix logo fails to load from symlinked files on macOS (#1395, Logo, macOS)
* Fix 32-bit truncation (NetIO, macOS)
Logos:
* Fix Lilidog
* Add MidnightBSD
* Add Unifi
* Add Cosmic DE
* Update openSUSE Tumbleweed
# 2.29.0
Changes:
* Due to [the upstream removal of MSYS2 CLANG32 environment](https://www.msys2.org/news/#2024-09-23-starting-to-drop-the-clang32-environment), we dropped fastfetch-windows-i686 support. v2.27.1 was the last version supporting it.
* Note: fastfetch built with MSVCRT has known bug that DateTime module doesn't work because of its bad support of [strftime](https://en.cppreference.com/w/c/chrono/strftime). Don't use it.
Features:
* Port to NetBSD and DragonFly BSD
* Fastfetch now supports all major BSD variants
* Support DiskIO, NetIO, GPU and Users module on OpenBSD
* Report SD8E SOC name (CPU, Android)
* On Windows, try loading dlls from current exe path (Windows)
* Fix Media module when installed with winget
Bugfixes:
* Fix the VIM version detection on Ubuntu (Editor, Linux)
* Improve performance of OS version detection on Proxmox (#1370, OS, Linux)
Logo:
* Update OpenSuse Tumbleweed
* Add XCP-ng
* Add SummitOS
* Add Lilidog
* Update PikaOS
* Update OpenSUSE Leap
* Update aperture
# 2.28.0
Features:
* Add new module `Mouse` and `Keyboard` which display connected mice and keyboards
* Support remaining time detection (Battery)
* Report if AC is connected (Battery, Linux)
* Report platform API used for display detection for debugging (Display)
* Report Wine version when running in Wine (Kernel, Windows)
* Add option `waitTime` in modules `CPUUsage`, `DiskIO` and `NetIO`
Bugfixes:
* Fix used memory size detection (Memory, OpenBSD)
* Don't report invalid fragmentation percentage when fails to detect it (Zpool)
* Fix unexpected errors when running fastfetch in parallel (#1346, Windows)
* Don't report obviously invalid temperature values (PhysicalDisk, Linux)
Logos:
* Add eweOS
* Add MidOS
* Update XeroArch
# 2.27.1
Bugfixes:
* Fix invalid display name detection on GNOME, wayland (Display, Linux)
# 2.27.0
Changes:
* We now print `"` instead of `″` when displaying diagonal length in inches, so that the character can be correctly displayed in Linux console (Display)
* All detection code of `monitor` module is merged into `display` module. Now `monitor` just prints the same information as `display` with different format. Notably:
* The resolution reported by `monitor` module is now current resolution instead of native / maximum resolution. PPI is calculated based on current resolution too.
* The refresh rate reported by `monitor` module is the current refresh rate.
Features:
* Add basic, highly experimental support of OpenBSD (OpenBSD)
* Improve support for Raspberry pi (CPU / GPU, Linux)
* Detect SOC name, instead of displaying components used in the SOC, if available (CPU, Linux)
* Add option `--brightness-compact` to display multiple brightness values in one line (Brightness)
* Add `day-pretty` (#1305, DateTime)
* Support network interface adapter flag detection (#1315, LocalIP)
* Enable it with `--localip-show-flags`
Bugfixes:
* Remove trailing newline in GPU name for Raspberry pi (#1303, GPU, Linux)
* Fix a possible buffer overflow (GPU, Linux)
* Fix CPU temp incorrectly reported as 0 celsius (#1308, CPU, Linux)
* Correctly report `TPM device is not found` error (#1314, TPM, Windows)
* Fix errors when triggering shell completion with python3 uninstalled (#1310)
* To package managers: as shell completion scripts of fastfetch use python3, it should be added as an optional dependency of fastfetch
* Fix possible crashes when detecting term font of kitty (#1321, TerminalFont, Linux)
Logos:
* Add XeroArch
* Add ValhallaOS
# 2.26.1
Features:
* Allow to disable pacstall packager detection in CMake
Bugfixes:
* Fix uninitialized variables (GPU, Windows)
# 2.26.0
Changes:
* To be consistent to other platforms, CPU frequency detection on Linux no longer checks `bios_limit`
Features:
* Detect GPU index (#1267, GPU)
* Count Flatpak runtime packages (#1085, Packages, Linux)
* Support pacstall package manager (Packages, Linux)
* Support CU core count, max frequency, VMEM usage detection for AMD cards on Linux (GPU, Linux)
* Requires `--gpu-driver-specific`
* Support EU core count, VMEM size detection Intel cards on Linux (GPU, Linux)
* Requires `--gpu-driver-specific`. VMEM usage detection requires root permissions.
* Add new module `TPM` to print TPM (Trusted Platform Module) version if available (TPM)
* Support GPU driver version detection (GPU, macOS)
* Add new CMake option `-DENABLE_EMBEDDED_PCIIDS=ON`.
* If enabled, fastfetch will download the newest [`pci.ids`](https://pci-ids.ucw.cz/) file, [transform it into C code](https://github.com/fastfetch-cli/fastfetch/blob/dev/scripts/gen-pciids.py) and compile it into fastfetch binaries.
Bugfixes:
* Fix font size detecton of foot terminal (#1276, TerminalFont, Linux)
* Ignore `su` and `sudo` when detecting terminal (#1283, Terminal, Linux)
* Always print inches in integer (Display)
* Fix Wifi connection protocol detection on macOS Sequoia (Wifi, macOS)
* Fix hanging when font name is long when detecting kitty term font (#1289, TerminalFont)
* Detect all enabled or connected connectors (#1301, Display, Linux)
Logos:
* Add FoxOS
* Add GXDE OS
# 2.25.0
Features:
* Moore Threads GPU add support to query number of cores (#1259, GPU)
* Cache detection result based on last modification time (Packages)
* Add cmake options to disable certain package managers at compile time
* Package managers are encouraged to disable some package managers by passing `-DPACKAGES_DISABLE_` when running `cmake`. For example, when building for Arch Linux, `-DPACKAGES_DISABLE_APK=ON -DPACKAGES_DISABLE_DPKG=ON -DPACKAGES_DISABLE_RPM=ON ...` should be specified.
* See all available options by [running `cmake -L | grep PACKAGES_DISABLE_`](https://github.com/fastfetch-cli/fastfetch/blob/dev/CMakeLists.txt#L91)
* This option does NOT remove the detection code. It just disables the detection at runtime. One can still use `--packages-disabled ""` to enable all package managers.
* Add new option `--show-localip-{speed,mtu}` (LocalIP)
* Add new module `Btrfs`, which prints all mounted Btrfs volumes, like `Zpool` module (#1262, Linux)
* Improve Wifi module support for macOS Sequoia (Wifi, macOS)
* Currently it uses `system_profiler` which costs about 2 seconds on my MBP. I suggest disabling it for now until a better solution is found.
Bugfixes:
* Fix invalid CPU temperature detection on FreeBSD (#1260, CPU, FreeBSD)
* Remove `showPeCoreCount` support on FreeBSD (#1260, CPU, FreeBSD)
* Don't use Wifi speed as Ethernet speed (LocalIP, FreeBSD)
* Fix compiling with old linux headers (Camera, Linux)
* Fix detecting public ipv6 address (PublicIP, Windows)
Logo:
* Fix parrot logo detection
* Rename TorizonCore to Torizon OS
# 2.24.0
Changes:
* Support of `--lib-XXX` is removed
* If fastfetch fails to load some `.so` `.dylib` libraries, `LD_LIBRARY_PATH` should be used.
Features:
* Support sixel image protocol on Windows (Logo, Windows)
* Requires imagemagick7 to be installed. MSYS2 is recommended.
* Improve terminal query on Windows (Windows)
* TerminalSize, TerminalTheme
* Detect more ARM microarchitectures and SOC names (CPU, Linux)
* Detect the number of online cores (CPU, FreeBSD)
* Support board name detection for Asahi Linux (Board, Linux)
* Add new option `--command-param` to customize the parameters when running shell
* Support syntax of sub string in `--<module>-format`: `{variable~startIndex,endIndex}`
* See `fastfetch -h format` for detail
Bugfixes:
* Fix tests building when system yyjson is used (#1244)
* Fix dinit detection; support dinit version detection (#1245, InitSystem, Linux)
* Fix signal quality, refresh rate and maybe others in custom format (#1241)
* Fix boot time calculation (#1249, Uptime, Linux)
* Fix custom format for boolean values
* `{?false-value}This should not print{?}{?true-value}This should print{?}` will print `This should print`
* Fix possible hanging when running fastfetch in screen 5.0 (TerminalTheme, macOS)
Logos:
* Add Lliurex
# 2.23.0
Features:
* Support unity version detection (DE, Linux)
* Print model name in Battery keys if available (Battery)
* Add module `Zpool`
* Improve performance (Shell / Terminal, Linux)
* Support syntax of padded strings in `--<module>-format`. `{variable<padlength}` and `{variable>padlength}` are supported.
* If pad length is greater than the length of the variable, the variable will be padded with spaces.
* `fastfetch -l none -s command --command-text 'echo 12345' --command-format 'output({1<20})'` prints `Command: output(12345 )`
* `fastfetch -l none -s command --command-text 'echo 12345' --command-format 'output({1>20})'` prints `Command: output( 12345)`
* If pad length is less than the length of the variable, the variable will be truncated.
Bugfixes:
* Fix broken `--list-presets`
* Update zsh completion script
* Don't print `*` if `defaultRouteOnly` is set (NetIO)
* Fix Camera module incorrectly disabled on FreeBSD (Camera, FreeBSD)
* Fix hanging on screen 5.0 (Terminal)
* Improve image logo support on Windows (Logo, Windows)
Logos:
* Update AmogOS
* Add Magix
* Make ubuntu logo colorable
* Add Steam Deck Logo
* add Huawei Cloud EulerOS
# 2.22.0
Features:
* Small performance improvements (Terminal, Editor)
* Improve arm32 and loongarch support (CPU, Linux)
* Ignore the parent process if env `$FFTS_IGNORE_PARENT` is set to `1` (Shell)
* Add code name of Apple M4 (CPU, Linux)
* Add ethernet speed rate detection support (LocalIP)
* Add zsh completion script
* Add Linglong package manager detection support (Packages, Linux)
Bugfixes:
* Fix building on macOS 10.14
* Fix tmux in linux TTY (Colors)
* Fix hang in WSL when custom format is used (Disk, Linux)
* Fix `/proc/loadavg` parsing (Loadavg, Linux)
* Disable use of `LC_NUMERIC` locale settings to fix parsing of decimal numbers
* Fix possible segfault (DiskIO, Linux)
* Honor `preciseRefreshRate` in custom format (Display)
Logos:
* Add Lingmo OS
* Add Sleeper OS
# 2.21.3
Bugfixes:
* Fix bad Intel Arc GPU name detection, which was supposed to be fixed in the last version but the change was reverted accidentally (#1177, GPU, Linux)
* Fix arm32 CPU name detection no longer work. Regression of 2.21.2 (CPU, Linux)
# 2.21.2
Features:
* Support `--stat <num_in_ms>` to display long running modules in yellow or red
Bugfixes:
* Fix bad Intel Arc GPU name and type detection (GPU, Linux)
* Fix uninited struct fields (GPU, Linux)
* Skip cpu model smbios detection on ARM platforms (CPU, Linux)
* Always use `CurrentControlSet` instead of `ControlSet001` when querying registry (Windows)
* Fix NVIDIA GPUs are missing in GPU detection sometimes (GPU, Windows)
* Fixing detection of `pthread_timedjoin_np` (Linux)
Logos:
* Add HyprOS
* Add GoldenDog Linux
# 2.21.1
Hotfix for a regression that breaks WM detection when running `startx` from TTY (Regression from 2.21.0, #1172 / #1162)
Changes:
* On Linux, FreeBSD and SunOS, a new recommended dependency `libelf` is introduced to extract strings in ELF binary, used for
* st term font detection when the term font is compiled directly into the binary
* fast path of systemd version detection
Features:
* Improve performance of
* kitty version detection (Terminal, Linux)
* st term font detection (TerminalFont, Linux)
* systemd version detection (InitSystem, Linux)
Bugfixes:
* Fix building error without `linux/wireless.h` (Wifi, Linux)
* Fix wrong GPU max frequency on Asahi Linux (GPU, Linux)
* Don't rely `$XDG_SESSION_TYPE` for detecting wm protocol (#1172 / #1162, WM, Linux)
* Fix light color doesn't work on Linux console (Colors, Linux)
* `LC_ALL`, if set, overrides every other locale-related environment variable (Locale)
* Increase timeout of DBus calls (Linux)
Logos:
* Add vanilla_small and vanilla2
* Add LFS (Linux From Scratch)
# 2.21.0
Changes:
* We no longer use `libnm` for Wifi detection on Linux. Instead, we use `libdbus` to communicate with NetworkManager directly
* To package managers: libnm dependency should be removed
Features:
* Add module `BluetoothRadio` that prints bluetooth radios installed on the system
* Don't confuse with module `Bluetooth` which lists connected bluetooth devices
* Detect more information when `--gpu-driver-specific` is used (GPU)
* Detect which type of nvidia driver (open source or proprietary) is used (GPU, Linux)
* `--gpu-driver-specific` adds supports for Moore Threads GPU (#1142, GPU, Linux / Windows)
* Use SetupAPI for detecting GPUs to support GPU detection when running fastfetch as a Windows Service (GPU, Windows)
* See https://github.com/gpustack/gpustack/pull/97#issuecomment-2264699787 for detail
* Detect playback status (Media, Linux)
Bugfixes:
* Don't try to connect display server in tty mode (Linux, #1110)
* Improve ssh detection
* Fix max frequency printing in custom format (CPU)
* Fix displaying random characters when detecting kitty term font (#1136 / #1145, TerminalFont, Linux)
* Make sure to detect all physical memory devices (#1137)
* Don't detect `wl-restart` as WM (#1135, WM, Linux)
* Use PCI bus ID to match Nvidia cards; fix multi-GPU detection (GPU)
* Ignore invalid GPU (#1066, GPU, macOS)
* Print error when invalid color code is found (#1138)
* Fix invalid refresh rate detection on old macOS versions (Display, macOS)
* Fix disk size detection on 32-bit systems (Disk, BSD)
* Don't ignore disabled GPUs (#1140, GPU, Linux)
* Fix GPU type detection on FreeBSD (GPU, FreeBSD)
* Remove shell version detection for unknown shells (#1144, Shell)
* Don't detect hyfetch as shell on NixOS (Shell, NixOS)
Logos:
* Update EndeavourOS_small
* Add QTS
# 2.20.0
This release fixes regression of `2.19.0` on M1 MacBook Air. It also introduces a new option `--key-type icon` to display predefined icons in keys (requires newest nerd font). See `fastfetch -h key-type` for detail.
Changes:
* JSON option `display.keyWidth` has been renamed to `display.key.width`
* Previously: `{ "display": { "keyWidth": 3 } }`
* Now: `{ "display": { "key": { "width": 3 } } }`
* Windows Terminal font detection **in WSL** has been removed due to [issue #1113](https://github.com/fastfetch-cli/fastfetch/issues/1113)
Features:
* Add option `display.key.type: <enum>` to print icons in keys
* Supported value `string`, `icon` and `both`. Default to `string` (don't display icons)
* Example: `{ "display": { "key": { "type": "icon" } } }`
* Add option `display.key.paddingLeft: <num>` to print left padding (whitespaces) in keys
* Example: `{ "display": { "key": { "paddingLeft": 2 } } }`
* Add option `modules.keyIcon` to set icon for specified module
* Example: `{ "modules": { "type": "command", "keyIcon": "🔑" } }`
* Report system mono font name for Terminator if used (TerminalFont, Linux)
* Don't require logo height to be set when using `--logo-position right`
* Report Snapdragon SOC marketing name for newer Android phones (CPU, Android)
* Detect MTK SOC part name (CPU, Android)
Bugfixes:
* Don't wake up suspended GPUs when using `--ds-force-drm` (Display, Linux)
* Fix printing editor type in JSON result (Editor)
* Fix `--logo-padding-*` not working correctly (#1121, Logo)
* Fix possible segfault when detecting GPU frequency (#1121, macOS, GPU)
# 2.19.1
Bugfixes
* Fix frequency value printing when using custom format (#1111, CPU / GPU)
* Fix display detection for XiaoMi Android phone (Display, Android)
Features:
* Display if HDR mode is enabled for screens (Display)
* Supported in Windows and Linux (KDE) correctly
# 2.19.0
Changes:
* JSON option `modules.cpu.freqNdigits` has been renamed and moved to `display.freq.ndigits`
* Previously: `{ "modules": { "type": "cpu", "freqNdigits": 2 } }`
* Now: `{ "display": { "freq": { "ndigits": 2 } } }`
* This option now affects GPU frequency too
* By default, frequencies are displayed in *GHz*. Set `display.freq.ndigits` to `-1` to display them in *MHz*
* JSON option `display.binaryPrefix` has been moved to `display.size.binaryPrefix`
* Previously: `{ "display": { "binaryPrefix": "IEC" } }`
* Now: `{ "display": { "size": { "binaryPrefix": "IEC" } } }`
Features:
* Print physical diagonal length if supported (Display)
* Detect display type in X11 mode (Display)
* Assume displays connected via DisplayPort are external monitors (Display, Linux)
* Support GPU frequency detection for Intel XE driver (GPU, Linux)
* Detect init system on Android (InitSystem, Android)
* Use background to display color blocks (Colors)
* To fix weird vertical black lines in some terminals and match the behavior of neofetch (#1094)
* Can be reverted to old behavior with `--colors-symbol block`
* Support Zed terminal version detection (Terminal)
* Improve wezterm font detection (TerminalFont)
* Add option `--separator-length`
* Support GPU frequency detection for Apple Silicon (GPU, macOS)
* Detect maximum refresh rate (#1101, Monitor)
* Detect if HDR mode is supported and enabled (Windows, Display / Monitor)
* Support physical monitor info detection for FreeBSD and SunOS (Monitor)
* Support defining constant strings in JSON config file, which can be used to dedupe formattion strings
```jsonc
{
"display": {
"constants": [
"Hello", // {$1}
"world" // {$2}
]
},
"modules": [
{
"type": "custom",
"format": "{$1} {$2}!" // print "Hello world!"
},
{
"type": "custom",
"format": "{$2} {$1}" // print "world Hello"
}
]
}
```
Bugfixes:
* Fix some presets
* Better detection for XTerm terminal fonts (#1095, TerminalFont, Linux)
* Remove debug output (#1097, Windows)
* Fix flag `--gpu-hide-type` doesn't work (#1098, GPU)
* Fix wrong date on Raspbian 10 (#1108, DateTime, Linux)
* Use `brightness` instead of `actuall_brightness` when detecting current brightness level (Brightness, Linux)
* Ref: https://bugzilla.kernel.org/show_bug.cgi?id=203905
* Fix buffer overflow with long font family names when detecting kitty term font (TerminalFont)
* Fix some typos
Logos:
* Update void_small
* Add ALT Linux
# 2.18.1
Fix a regression introduced in v2.18.0
Changes:
* `--ts-version` has been renamed to `--detect-version`
* `general.detectVersion` in JSON config file
Bugfixes:
* Fix and improve GPU driver detection (#1084, GPU, Linux)
# 2.18.0
Changes:
* `yyjson 0.10.0` is required
* Fastfetch no longer prints `*` (which means it's the default route) if `defaultRouteOnly` is set (LocalIP)
Bugfixes:
* Fix some memory leaks
* Fix compatibility with old Python versions
* Don't detect frequency for AMD cards (GPU, Linux)
* Fix possible hang with discrete AMD cards (#1077)
* Don't print colors in `--pipe` mode (Separator)
* Don't print `(null)` in property `locator` (PhysicalMemory)
* Ignore disabled PCI devices (GPU)
* Fix flag `--opengl-library` doesn't work (OpenGL)
Features:
* Detect revision of USB drives (#1048, Disk)
* Support fractional scale factor detection (Display, Linux)
* Support primary display detection for KDE and GNOME (Display, Linux)
* Support percent bar in custom formatting
* Print signal quality by default (Wifi)
* Detect used OpenGL library version (OpenGL)
* Support detecting OpenGL version by `EGL` (ANGLE) on Windows (OpenGL)
Logos:
* Add Arkane Linux
* Add Opak
# 2.17.2
Changes:
* Flatpak package count no longer takes runtime packages into account (Packages, Linux)
Bugfixes:
* Fix formattion with multiple batteries (Battery)
* Fix incorrect size value for large memory sticks (PhysicalMemory)
* Fix spelling of `Qt` and `LXQt`
* Fix building on SunOS if imagemagick support is enabled (Logo, SunOS)
* Fix typos
Features:
* Support Ptyxis terminal version and font detection (Terminal / TerminalFont, Linux)
* Improve Cinnamon version detection (DE)
* Support `cinnamon-wayland` (WMTheme)
* `--ts-version false` will disable editor version detection (Editor)
# 2.17.1
Hotfix for a regression that breaks Qt font detection
Bugfixes:
* Don't generate and install `libffwinrt.dll.a` on MinGW (Windows)
* Fix building on Windows when imagemagick support is enabled (Logo, Windows)
* Don't print GPU frequency with `--gpu-temp` for Nvidia cards (#1052, GPU)
* `--gpu-driver-specific` needs to be specified
* Print formatted size when `--gpu-format` is used (#1052, GPU)
* Ignore QVariant format; fix unreadable Qt font (#1053, Theme, Linux)
* Fix segfaults with `--show-errors` and an invalid module (#1055)
# 2.17.0
Changes:
* CMake option `ENABLE_PROPRIETARY_GPU_DRIVER_API` is removed. The GPU driver APIs are now enabled by default.
* The option was introduced to reduce the license concerns. Since all non MIT proprietary code has been rewritten manually from scratch, it is no longer necessary.
* See <https://github.com/fastfetch-cli/fastfetch/issues/533#issuecomment-2122830958> for detail
* Option `--logo-separate true` is changed to `--logo-position top` for better readability
* Builtin ascii logos can be positioned on the right side now with`--logo-position right`
Features:
* Add support for `--gpu-detection-method opencl` which uses OpenCL to detect GPUs.
* Support detecting CPU cache size by using SMBIOS as fallback (CPUCache)
* Support GPU detection (SunOS)
* Support GPU type detection with AMD GPU driver (GPU, Windows)
* Add fast path of version and font detection for kitty (Terminal / TerminalFont)
* Make sure `stdin` and `stdout` are TTYs when querying terminal
* So modules like `TerminalSize` should work when `stdin` or `stdout` is redirected
* Support argument truncation in `--<module>-format` (#1043)
* See `fastfetch --help format` for detail
* Improve Qt theme detection (#1047, Theme, Linux)
* Add new JSON config option `general.preRun`, which is executed before fastfetch prints output.
* It can be used to generate a temp logo file. For example
```jsonc
{
"general": {
"preRun": "kitten icat --align=left /path/to/image > /tmp/logo.kitty"
},
"logo": {
"source": "/tmp/logo.kitty",
"type": "raw"
}
}
```
Bugfixes:
* Fix invalid path (#1031, LM, Linux)
* Fix VMEM detection for Nvidia GPU (requires `--gpu-driver-specific`) (GPU)
* Fix AMD `--gpu-driver-specific` for AMD cards (#1032, GPU, Windows)
* Use Coordinated Universal Time rather than timezone-varying local date (#1046)
Logo:
* Fix colors of Asahi Linux
# 2.16.0
This release added basic support for SunOS (Solaris, illumos). The binaries provided in the release lack a few useful features (such as Display detection). People who use SunOS should consider building fastfetch themselves.
Changes:
* Fastfetch now prefers `/etc/os-release` over `/etc/lsb-release` when detecting distro info.
* This may break some distros (notably some debian based distros). File a bug with the content of `os-release` and `lsb-release` if it breaks your distro.
Features:
* Support Media detection in Windows (Media / Player, Windows)
* Requires Windows 10 and later
* Add new option `--users-myself-only` to display current login user only (Users)
* Add code name of macOS Sequoia (OS, macOS)
* Add new module `DNS` to show active DNS servers (DNS)
* Add new option `--loadavg-compact`. Defaults to true (Loadavg)
* Use `--loadavg-compact false` to display load averages in different lines
* Detect MTU size (LocalIP)
* Support version detection of pluma, which is the default editor of OpenIndiana (Editor)
* Print used OGL library, eg EGL, GLX or OSMesa (OpenGL)
Bugfixes:
* Report error if cache size is unavailable (CPUCache, Android)
* Trim white spaces in device name (Sound, Linux, #1005)
* Fix `display.bar.border{Left,Right}` doesn't work in JSON config files (Config)
* Fix invalid call to `realpath(3)` (Platform, Linux)
* Fix result calculation (CPUUsage, FreeBSD)
Logos:
* Add Mauna
* Add Tuxdeo
* Add Manjaro ARM
* Add RedOS
* Add Arch3
# 2.15.0
Changes:
* `--bar-border <?bool>` has been changed to `--bar-border-left <string>` and `--bar-border-right <string>`, which are used for customizing the style of bar border.
* `--bar-border-left '' --bar-border-right ''` can be used to disable the border
Features:
* Add ability to skip installing license with INSTALL_LICENSE option (CMake)
* Make it possible to shorten the theme and icons output (Theme / Icons)
* Support `-l '?'` to show a question mark
* Add new module `CPUCache` to display CPU cache sizes (CPUCache)
* In `--<module>-format`, `{#keys}` and `{#title}` can be used to reference the color of keys and title
* Improve speed of Guix package detection (Packages, Linux)
* Assume wm plugins are daemon processes to improve performance (WM, macOS)
Bugfixes:
* Remove shebangs from completions (#980)
* Fix while chars not visible in terminal of light theme (Logo)
* Normalize bright colors to fix color display in Apple Terminal (#991, Colors)
* Correctly capitalize GNOME (#997, DE, Linux)
* Fix segfault on system using turkish language (#995, InitSystem, Linux)
* Fix kubuntu detection (#1000, OS, Linux)
* Don't display duplicate entries (OS, Linux)
# 2.14.0
Features:
* Support monochrome bar type (#960)
* Support editor version detection on Windows (Editor, Windows)
* Apply default color palettes in `--file` and `--data` (Logo)
* Print all presets in `--list-presets` for better Windows support (Windows)
* Support for guix package manager detection (Packages, Linux)
* Support named variable placeholders in custom module formattion string (#796)
* `--title-format '{user-name-colored}{at-symbol-colored}{host-name-colored}'` is now equivalent to `--title-format '{6}{7}{8}'`
* Support named color placeholders in custom module formattion string
* `--<module>-format '{#red}'` is now equivalent to `--<module>-format '{#31}'`
* `'{#red}'` or `'{#31}'` is preferred over `\u001b[31m` because is more readable and `--pipe` aware (will be ignored in pipe mode)
* Supported in `Custom` module too
* See `fastfetch -h format` for detail
* Add new module `InitSystem`, which detects the name of init system
* i.e. process name of pid1. `init`, `systemd`, etc
* Add option `--color-separator` to set the color of key-value separators
* Support Guix package manager count (#792, Packages, Linux)
* Improve python based shell detection (#977, Shell, macOS)
* Print error reason when vulkan init fails (Vulkan)
Bugfixes:
* Don't detect `.conf` files in `--list-config-paths`
* Don't try to detect terminals in MSYS shell with process backtracing (Windows)
* Fix `outputColor` doesn't work if module keys are disabled
Logos:
* Add Cereus Linux
* Re-add special handling of Loc-OS
# 2.13.2
Another hotfix release :(
Bugfixes:
* Remove DRM driver version detection feature, which caused a performance regression for nouveau drivers (#956, Display, Linux)
* Fix compatibility for old python versions. Regression of `2.13.0`
* Don't use `*-unknown` as display name for Wayland protocol (Display, Linux)
Features:
* Add new module `Editor` which prints information of the default editor, i.e. $VISUAL or $EDITOR (#430, Editor)
Logos:
* Added CuerdOS
* Remove special handling of Loc-OS
# 2.13.1
Fix a regression introduced in v2.13.0
Bugfixes:
* Fix CPU frequency not displayed if `bios_limit` is not available (CPU, Linux)
Features:
* Add `--cpu-show-pe-core-count` to detect and display core count for performance / efficiency cores (CPU, FreeBSD)
# 2.13.0
Changes:
* Option `--gpu-force-vulkan <?bool>` has been changed to `--gpu-detection-method <enum>`
* Use `--gpu-detection-method vulkan` to get the old behavior
* See `fastfetch -h gpu-detection-method` for detail
* In Linux, BIOS limited CPU frequency is printed by default to match the behavior of neofetch (CPU, Linux, #947)
Features:
* Add new module `Bootmgr` which prints information of stage 2 bootloader (grub, system-boot, etc)
* Requires root permission to work on Windows and FreeBSD
* Requires booting in UEFI mode
* Add package manager lpkg and lpkg-build support (Packages, Linux)
* Improve macOS 10.13 compatibility (macOS)
* Detect core count for performance / efficiency cores (CPU)
* Test it with `fastfetch -s cpu --cpu-format '{9}'`
* Support min / max frequency and physical core count detection in FreeBSD, if kernel supports it (CPU, FreeBSD)
* Detect DRM driver version if DRM detection method is used (GPU, Linux)
Bugfixes:
* Don't detect `clifm` and `valgrind` as a terminal (Terminal, Linux)
* Improve stability (PhysicalMemory, FreeBSD)
* Fix bssid & status detection (Wifi, FreeBSD)
* Ensure createTime is correctly initialized (Disk, FreeBSD / macOS)
* Fix `--cpu-freq-ndigits` not working if `--cpu-format` is used
* Fix `nix-user` package count detection (Packages, Linux)
* Fix some memory leaks
Logos:
* Fix Manjaro logo not displayed
* Add SpoinkOS
* Add Loc-OS
* Add Furreto Linux
* Fix TorizonCore logo colors
* Fix KDE neon logo not displayed
# 2.12.0
Changes:
* The long deprecated flag based config files are removed.
* They can still be used with `xargs fastfetch < /path/to/config.conf`
* `--gen-config` can be used to migrate them to json based config files
* The long deprecated options `--set` and `--set-keyless` are removed.
* `Kernel` module now prints kernel name by default
Features:
* Support `st` terminal font detection for font configuration compiled in `st` binary (TerminalFont, Linux)
* Add option `--color-output` to change output color of all modules except `Title`, `Separator`
* `display.color.output` in JSONC config file
* Add option `--<module>-output-color` to change output color of one specified module, which overrides the global option `--color-output`
* Add option `--publicip-ipv6` to print IPv6 address (PublicIP)
* Add new module `Loadavg` to print load averages (Loadavg)
* Add new module `PhysicalMemory` to print information of physical memory devices (PhysicalMemory)
* Requires root permission to work on Linux and FreeBSD
* Support specifying `--logo-width` only for `--kitty-direct` and `--iterm` (Logo)
* Add option `--localip-show-all-ips` to show all IPs assigned to the same interface (LocalIP)
* Default to `false`
* Improve compatibility with `(*term)` (#909, Terminal, macOS)
* Support GPU core count and frequency detection for Asahi Linux (GPU, Linux)
Bugfixes:
* Rename option `--temperature-unit` to `--temp-unit` as documented in help messages
* Fix alternate logo doesn't work with `{ "type": "builtin" }` (#914, Logo)
Logos:
* Fix DahliaOS detection
* Add openSUSE Slowroll
* Add macOS3
* Add Quirinux
# 2.11.5
Bugfix:
* Fix logo printing for OpenMandriva (#896)
* Remove `--os-file` in help messages
# 2.11.4
Changes:
* Fastfetch will print a colorless ascii logo in `--pipe` mode for better `lolcat` compatibility. `fastfetch | lolcat` should work and no `--pipe false` needed.
* Previously the logo would be disabled in `--pipe` mode.
* Use `--pipe -l none` to get the old beheavior
* `--os-file` was removed and CMake option `-DCUSTOM_OS_RELEASE_PATH=/path/to/os-release` was introduced for configuring at compile time by package managers if needed. This option should not used in most cases.
Bugfixes:
* Fix possible out-of-bound memory access (#868)
* Fix Apple Terminal detection (#878, macOS, Terminal)
* Fix deprecation warning for macOS 14.0 hopefully (#860, macOS, Camera)
* Fix memory leaks when passing informative options (#888)
* Fix JSON config `size.ndigits` doesn't work
Features:
* Enable `--pipe` mode if environment variable `$NO_COLOR` is set
* Support Armbian and Proxmox distro detection (OS, Linux)
Logo:
* Add Armbian
# 2.11.3
Hotfix for nix (https://github.com/NixOS/nixpkgs/issues/308849#issuecomment-2093962376)
Features:
* Add cmake option `CUSTOM_AMDGPU_IDS_PATH` for specifying custom path of `amdgpu.ids`
Bugfixes:
* Fix hanging when detecting disconnected network drive (Disk, Windows)
* Ensure line ending is printed when printing image logo errors (Logo)
* Revert image logo limitation change in 2.11.2; allow image logo in SSH session and tmux again (#861, Logo)
* Fix doubled output in custom formation (PhysicalDisk, Windows)
# 2.11.2
Hotfix for Debian 11
Changes:
* Error messages when trying to print image logo will only be printed with `--show-errors`
* When generating JSON output, fastfetch will generate an empty array when no result is detected, instead of an error.
Bugfixes:
* Fix segfault in Debian 11 and some old kernels. Regression introduced in 2.11.0 (#845, GPU, Linux)
* Don't try detecting version of raw `sh` shell (#849, Shell, Linux)
* Trim `\r` on Windows
Features:
* Check xdg state home for nix user packages (#837, Packages, Linux)
* Disable image logos in ssh and tmux sessions (#839)
* Support MX Linux distro detection (#847, OS, Linux)
Logo:
* Add KernelOS
* Fix name of DraugerOS
* Add missing `FF_LOGO_LINE_TYPE_SMALL_BIT` flags
* Add MX2
# 2.11.1
Hotfix for Android
Bugfixes:
* Fix uninitialized variables which can cause crashes (#760 #838, Battery, Android)
* Don't detect hyfetch as shell when used as backend of [hyfetch](https://github.com/hykilpikonna/hyfetch)
* Fix incorrect information in man page (#828)
Features:
* Support sorcery package manager detection (Packages, Linux)
* Make `--custom-format` optional (Custom)
* Make `/` an alias of `C:\` for `--disk-folders` (Disk, Windows)
* Build for Linux armv7
Logo:
* Fix colors of Source Mage logo
# 2.11.0
Changes:
* Default `hideCursor` to false. It doesn't make much difference but makes user's terminal unusable if fastfetch is not exited correctly.
* Linux amd64 binaries are built with Ubuntu 20.04 again (#808)
Bugfixes:
* Fix swap usage detection in x86-32 build (Windows, Swap)
* Fix minimum cmake version support (#810)
* Fix wifi detection on platforms that don't use NetworkManager (#811, Wifi, Linux)
* Fix NixOS wrapped process name (#814, Terminal, Linux)
* Fix GPU type detection for AMD cards (#816, GPU, Linux)
* Silence system deprecation warnings (#822, Camera, macOS)
Features:
* Add basic support DE detection support for UKUI (DE, Linux)
* Support printing total number of nix / flatpak / brew packages (Packages)
* See `fastfetch -h packages-format` for detail
* Better max CPU frequency detection support with `CPUID / 16H` instruction (CPU, Windows)
* This requires Intel Core I Gen 6 or newer, and with `Virtual Machine Platform` Windows feature disabled. X86 only.
* Improve performance of nix packages detection (Packages, Linux)
* Make config specified in JSONC overridable by command line flags
* Note this change only make global config overridable; module configs are still not
* Suggest increasing `--processing-timeout` when child process timeouts
* Only detect folders that specified by `--disk-folders`
* Previously `--disk-folders` only omits unmatched disks from output
* This option can be used to improve detection performance by ignoring slow network drives
# 2.10.2
Bugfixes:
* Fix a regression that detect x11 as wayland (#805, WM, Linux)
# 2.10.1
Bugfixes:
* Fix build with `-DENABLE_DBUS=OFF` (Linux)
# 2.10.0
Changes:
* We now always detect max frequency of GPUs for consistent, instead of current frequency
Features:
* Improve display detection for wlroots based WMs. Fastfetch now correctly reports fractional scale factors in hyprland (Display, Linux)
* Improve GPU detection on Linux (GPU, Linux)
* Support GPU memory usage detection for AMD GPUs
* Support GPU frequency detection for Intel GPUs
* Improve performance of GNOME version detection (DE, Linux)
* Improve performance of kitty version detection (Terminal, Linux)
* Detect refresh rate when using `--ds-force-drm sysfs-only` (Display, Linux)
* Add option `--ts-version` to disable terminal and shell version detection. Mainly for benchmarking purposes
* Improve performance of detecting WSL version (Host, Linux)
Bugfixes:
* Correctly detect `/bin/sh` as current shell if it's used as default shell (#798, Shell, Linux)
* Work around an issue which CPU module reports incorrect CPU frequency that is too high (#800, CPU, Linux)
* Don't print ANSI escape codes in `--pipe` mode
# 2.9.2
Changes:
* To make use of the newly introduced `yyjson` flag `YYJSON_WRITE_NEWLINE_AT_END`, fastfetch now requires `yyjson` 0.9.0 or later
Features:
* Always add a final new-line when generating JSON output
* Detect partition create time, which can be used as OS installation time (Disk)
* Print time string when generating JSON result instead of UNIX epoch time number, which is more human-readable
Bugfixes:
* Fix a memory leak
* Better portable mode detection of Windows Terminal (TerminalFont, Windows)
* Fix parsing of option `--packages-disabled` (Packages)
* Don't use command `time` as a shell (Shell)
Logos:
* Add openSUSE MicroOS
* Fix color of AOSC OS
# 2.9.1
Features:
* Support weston-terminal (missed commit in v2.9.0) (TerminalFont, Linux)
* Support hyprcursor detection (#776, Cursor, Linux)
Bugfixes:
* Fix `fastfetch --gen-config` raises SIGSEGV when `~/.config/fastfetch` doesn't exist. Regression of `2.9.0` (#778)
# 2.9.0
Features:
* Support Lxterminal version detection (Terminal, Linux)
* Support weston-terminal version detection (Terminal, Linux)
* Support `am` package manager detection (#771, Packages, Linux)
* Support network prefix length detection for IPv6 (LocalIP)
* Display all IPs when multiple IPs are assigned to the same interface (LocalIP)
* Add option `--localip-show-prefix-len` to show network prefix length for both IPv4 and IPv6. Defaults to `true` (LocalIP)
Bugfixes:
* Fix network prefix length detection when the value is greater than 24 (#773, LocalIP, Linux)
* For xfce4-terminal, use system mono font if no config file is found (TerminalFont, Linux)
# 2.8.10
Bugfixes:
* Don't display 0.00 GHz (CPU, FreeBSD)
* Don't detect manufactor of Qualcomm as ARM (CPU, Android)
* Ignore `chezmoi` (Terminal, Linux)
* Trim trailing possible whitespaces (PublicIP)
* Fix detection compatibility for KDE 6 (Font, Linux)
* Always use Metal API to detect vmem size (GPU, macOS)
Features:
* Improve stability; print more useful error message; avoid misuse (PublicIP / Weather)
* Use MS-DOS device name as mountFrom result, instead of useless GUID volume name (Windows, Disk)
* Some adjustments to Terminal detection (Terminal, Windows)
* Don't pretty print CMD
* Print conhost as Windows Console
* Don't detect `wininit` as Terminal
Logo:
* Fix color of Arco Linux
# 2.8.9
Bugfixes:
* Don't detect `SessionLeader` as terminal, actually (Terminal, Linux)
* Fix blurry chafa result when specifying both width and height (#757, Logo)
Features:
* Support new MacBook Air (Host, macOS)
* Distinguish min frequency and base frequency (CPU)
Logo:
* Fix proxmox
# 2.8.8
Bugfixes:
* Fix old fish version compatibility (#744)
* Fix truncated texts in `--help format` (#745)
* Fix old vulkan-header and libdrm library compatibility (#748, Linux)
* Fix possible segfaults in `--help *-format` (#749)
* Fix invalid resolution detection when using libdrm (Linux, Display)
* Fix segfault when `/sys/devices/system/cpu/cpufreq/` doesn't exist (#750, CPU, Linux)
* Don't detect `SessionLeader` as terminal (Terminal, Linux)
* Fix detection of client IP (Users, Linux)
# 2.8.7
Bugfixes:
* Fix max CPU frequency detection for some cases (CPU, Linux)
* Fix some memory leaks
* Fix ddcutil 2.1 compatibility (Brightness, Linux)
* Workaround `permission denied` error when reading `/proc/uptime` (Uptime, Android)
Features:
* Support zellij version detection (Linux, Terminal)
Logo:
* Fix PostMarketOS
# 2.8.6
Changes:
* Due to newly introduced configs, JSONC option `{ "temperatureUnit": "C" }` has been changed to `{ "temp": { "unit": "C" } }`
Bugfixes:
* Fix incorrect GPU name detection for Intel iGPU on Linux (#736, GPU, Linux)
Features:
* Support additional temperature formatting options (#737)
* `{ "temp": { "ndigits": 1 } }`
* `{ "temp": { "color": { "green": "green", "yellow": "yellow", "red": "red" } } }`
* Support specifying custom `pci.ids` path for Linux (GPU, Linux)
* Support warp-linux terminal version & terminal font detection (Terminal, Linux)
# 2.8.5
Bugfixes:
* Fix uninitialized variables
# 2.8.4
Bugfixes:
* Fix segfault if we fail to find `Vendor ID` in `lscpu` (#718, CPU, Linux)
* Fix multi-device bcachefs filesystem compatibility (#731, Disk, Linux)
Features:
* Support portable Windows Terminal settings (#720, Terminal, Windows)
* Support `--color-block-width` and `--color-block-range` (#721, Colors)
* Support `--diskio-detect-total` to show total bytes read/written (DiskIO)
* Support `--netio-detect-total` to show total bytes received/sent (NetIO)
* Support `--packages-disabled` to disable specified package manager (#729, Packages)
* Support `--display-order` to sort multiple displays in a specific order (Display)
* Support `--display-compact-type original-with-refresh-rate` to show refresh rates in compact (oneline) mode (Display)
# 2.8.3
Bugfixes:
* Fix GPU name detection for AMD graphic cards (GPU, Linux / FreeBSD)
# 2.8.2
Changes:
* The linux binaries are now built with glibc 2.35, which means they no longer support Debian 11 and Ubuntu 20.04. Users using these distros may download the artifacts `fastfetch-linux-old` from GitHub Actions.
Features:
* Rewrite GPU module, drop libpci dependency (GPU, Linux)
* Detect marketing name of Apple Silicon CPUs for asahi linux (CPU, Linux)
* Add new module `Camera`, which prints the name and resolution of connected cameras
Bugfixes:
* Fix compatibility with packages installed by flatpak (Terminal, Linux)
* Don't show an empty battery if no battery is detected (macOS, Battery)
* Don't show `not connected` if no power adapter is found (macOS / Linux, PowerAdapter)
* Make format of battery status be consistent with other platforms (Linux, Battery)
Logo:
* Print Asahi logo in asahi linux (Logo, Linux)
* Add Asahi2, z/OS, Tatra, PikaOS
# 2.7.1
Features:
* Config presets in app folder now work with symlinks
Bugfixes:
* Fix a possible segfault when detecting terminal (Terminal, Linux)
# 2.7.0
Features:
* Add new module `TerminalTheme`, which prints the foreground and background color of the current terminal window. Currently doesn't work on Windows.
* Allow command substitution when expanding paths. For example, now it's possible to use `"source": "$(ls ~/path/to/images/*.png | shuf -n 1)"` in JSONC config file to randomly choose an image to display. (#698)
* Use native methods instead of pciutils to detect GPUs in FreeBSD. (GPU, FreeBSD)
Bugfixes:
* Fix text formatting (Wifi, Linux)
* Fix terminal detection in some cases (Terminal)
* Remove trailing `\0` in JSON results (FreeBSD)
* Fix uninitialized variables (GPU, Linux)
* Fix a possible segfault (OpenCL)
Logo:
* Add ASCII logos for fedora immutable variants (#700)
# 2.6.3
Bugfixes:
* Fix module not working (Bluetooth)
# 2.6.2
Bugfixes:
* Fix building for GCC in Windows (Windows)
# 2.6.1
Features:
* Improve xonsh shell detection (Shell)
* Support colored percentage values (Bluetooth / Gamepad / Sound)
* Add `--<module>-percent-[green|yellow]` options to specify threshold of percentage colors
* eg. `--disk-percent-green 20 --disk-percent-yellow 50` will show green if disk usage is less than 20%, yellow if disk usage is less then 50%, and red otherwise.
* Add `--percent-color-[green|yellow|red]` options to specify color of different percent value states.
* eg. `--percent-color-green blue` will show blue color if percent value falls in green state.
* Improve Intel macbook support (macOS)
Bugfixes:
* Fix segfault in CPU module when running in aarch64 machine without `lscpu` installed (CPU, Linux)
* Don't use `login` as terminal process (Terminal, Linux)
* Silence warnings when building in 32bit machines.
* Create sub folders when writing config file (#690)
* Improve user specific locale detection; fix locale detection in Windows 7 (Locale)
* Fix GPU type detection (GPU, macOS)
# 2.6.0
Changes:
* Remove support of option `--battery-dir`. We detect a lot of things in `/sys/class/*` and only module `Battery` supports specifying a custom directory for some reason, which is weird.
* Remove `--chassis-use-wmi` which is no longer used.
Features:
* Add `ENABLE_PROPRIETARY_GPU_DRIVER_API` cmake option to disable using of proprietary GPU driver APIs (GPU)
* Support wallpaper detection for macOS Sonoma (Wallpaper, macOS)
* Support power adapter detection for Asahi Linux (PowerAdapter, Linux)
* Support battery serial number and manufacturer date detection (Battery)
* Support host serial number and UUID detection (Host)
* Support battery level detection for gamepads where possible (Gamepad)
* Support maximum CPU clock detection. Previously base clock was printed (CPU, Windows)
* Support manufacture date and serial number detection for physical monitors (Monitor)
* Support ash (default shell of BusyBox) version detection (Shell, Linux)
* Sound module in FreeBSD now uses native `ioctl`s. Pulseaudio dependency is no longer used.
* Locale module in Windows now prints the same format as in Linux and other posix systems.
Bugfixes:
* Fix overall memory leaks (macOS)
* Remove trailing `\0` in JSON results (FreeBSD)
* Fix physical monitor detection with Nvidia drivers (Monitor, Linux)
* Don't print llvmpipe in vulkan module (Vulkan)
* Fix system yyjson usage in `fastfetch.c`. Previously embedded `3rdparty/yyjson/yyjson.h` was used in `fastfetch.c` even if `ENABLE_SYSTEM_YYJSON` was set (CMake)
* Fix locale module printing unexpected results in specific environments (Locale)
* Fix battery temperature detection in Windows. Note only smart batteries report temperatures but few laptops uses smart battery (Battery, Windows)
* Print device name if no backlight name is available, so we don't print empty parentheses (Brightness, FreeBSD)
# 2.5.0
Changes:
* `--gpu-use-nvml` has been renamed to `--gpu-driver-specific` due to using of `IGCL` and `AGS`
* We now detect external partitions more conservatively in Linux. USB partitions will not be detected as external always ( eg. The Linux kernel itself is installed in a USB drive )
Features:
* Support more authentication type detection for macOS Sonoma (Wifi, macOS)
* Default preset names to `.jsonc`. For example, `fastfetch -c all` will load `presets/all.jsonc` (#666)
* Use Intel Graphics Control Library (IGCL) to detect more GPU information. Windows only (GPU, Windows)
* Improve support of Asahi Linux (Brightness / CPU / GPU / Disk, Linux)
* Support more properties of physical disks (PhysicalDisk)
* Support SSD temperature detection with `--physicaldisk-temp` (PhysicalDisk)
* Support partition label detection (Disk, FreeBSD)
* Support platform specific graphic API version detection (GPU, macOS / Windows)
Bugfixes:
* Fix Windows partition detection for WSL2 (Linux, Disk)
* Fix Btrfs subvolumes being detected as external partitions some times (Linux, Disk)
* Fix battery cycle counts in some places (Battery)
* Fix CodeWhisperer compatibility (#676, Terminal, macOS)
# 2.4.0
**We are deprecating flags based config files (will be removed in v3.0.0). We suggest you migrate to json based config files.** One may use `-c /path/to/config.conf --gen-config` to migrate existing flag based config files.
Changes:
* All flag based presets are removed
Features:
* Improve performance of detecting rpm and pkg package count (Packages, Linux / FreeBSD)
* Support Apple M3X temperature detection (CPU / GPU, macOS)
* `--ds-force-drm` support a new option `sysfs-only`
* Improve xfce4 version detection
* Detect WM and DE by enumerating running processes (WM / DE, FreeBSD)
* Add a new module `Physical Disk`, which detects product name, full size, serial number and so on.
Bugfixes:
* Fix crashes sometimes when `--logo-padding-top` is not set (Logo)
* Fix memory usage counting algorithm (Memory, macOS)
* Fix the behavior of `--no-buffer` in Windows
* Fix possible segfault in some devices (Display, Linux)
* Fix segfaults on first use of new images with Sixel flag (Image)
Logo:
* Remove unnecessary escaping for Adelie logo
* Add EshanizedOS
# 2.3.4
Bugfixes:
* Fix `--help` doesn't work when built without python
Features:
* Use `MemAvailable` if available (Memory, Linux)
* Improve performance of detecting dpkg package count (Packages, Linux)
# 2.3.3
Bugfixes:
* Fix `--help` doesn't work in Windows and some other platforms
# 2.3.2
Bugfixes:
* Fix fish completion script, and install the script correctly
Logo:
* Fix Xray-OS logo name
# 2.3.1
Bugfixes:
* Fix man page install location
# 2.3.0
**We are deprecating flags based config files (will be removed in v3.0.0). We suggest you migrate to json based config files.**
Config related changes:
* The deprecated flag `--gen-config conf` is removed
* Flag `--gen-config` now does the same thing as `--migrate-config`, which can be used as config migration and default config file generation. Flag `--migrate-config` is removed
* Fastfetch now searches for config files in the order of `fastfetch --list-config-paths`, and won't load other config if one is found.
* The undocumented flag `--load-user-config` is removed. As an alternative, `--config none` can be used to disable loading config files.
* `--config` (previously named `--load-config`) is now supported for command line arguments only. If specified, other config files won't be loaded, which works like other programs.
* Config files will always be loaded before other command line flags being parsed. That is to say, command line flags will always override options defined in config files.
* the value of GPUType `integrated` contained a typo and was fixed. Existing config files may need to be updated.
Features:
* Support Oils and elvish shell version detection (Shell)
* Support Windows Server Core (Windows)
* Better ddcutil 2.x compatibility (Brightness, Linux)
* Add completion support for fish (natively) and nushell (via [carapace-bin](https://github.com/rsteube/carapace-bin))
* Support nix in macOS (Packages, macOS)
* Print module description for `--list-modules`
* Support `alacritty.toml` (TerminalFont)
* Support board detection on macOS. It simplily prints machine model identifier as for now (Board, macOS)
* Add general method to query product name (Host, macOS)
* Use `libdrm` as a better fall back for detecting displays, which correctly detects current mode; supports refresh rate detection and maybe also faster than using `/sys/class/drm` (Display, Linux)
* Support physical disk size detection (DiskIO)
* Support physical disk name and type detection (DiskIO, FreeBSD)
Bugfixes:
* End `va_list` before returning (@VoltrexKeyva)
* Don't use background color when printing blocks (Color)
* Fix lots of typos
* Fix compatibility with Linux containers (Linux)
* Don't report disabled monitors when using DRM (Linux)
* Fix bad performance in some cases when using X11 (Display, Linux)
* Fix some memory leaks
* Fix used swap space detection (Swap, FreeBSD)
* Don't leak fds to child processes (Linux)
* Fix possible issues when reading procfs (Linux, @apocelipes)
Logos:
* Add Adelie, Ironclad
* Update parch
# 2.2.3
Features:
* Update the latest mac models (Host, macOS)
Bugfixes:
* Fix local ips detection on Android. Regression from `2.0.0` (LocalIP, Android)
* Fix terminal detection on NixOS (Terminal)
# 2.2.2
Changes:
* `--percent-type` now defaults to 9 (colored percentage numbers)
* `fastfetch` now prints LocalIp module by default
Features:
* LocalIP module now prints netmask in CIDR format for IPv4 (LocalIP)
* Bios module now detects system firmware type (Bios)
* Improve detection of `Battery`
* Detect cycle count on supported platforms
* Detect temperature on Linux when supported
* Status detection on macOS has been adjusted to be consistent with other platforms
* Linux binaries are built with imagemagick7 support
Bugfixes:
* Fix uninitialized variables (#609)
* Fix spelling of `--preserve-aspect-ratio` (#614)
Logos:
* Update NixOS_small
# 2.2.1
Hotfix release for #606
Bugfixes:
* Fix broken presets due to the breaking changes introduced in 2.2.0
Features:
* Pretty print `fastfetch --help`
# 2.2.0
This release introduces a new option `--migrate-config`, which migrates old flag based config file to new JSONC format
Changes:
* `--pipe` and `--stat` are moved from `general` options to `display` options. This affects cjson configuration.
* Display keys `percent*` and `size*` in JSON config are restructured. e.g. `{ "sizeNdigits": 1 }` is now `{ "size": { "ndigits": 1 } }`
* With the introduction of `--migrate-config`, the old flag based config file is deprecated, and will be removed in 3.0.0 (next major version)
* Support of `--gen-config conf` is deprecated accordingly, and will be removed in 2.3.0 (next minor version)
* The global flag `--allow-slow-operations` is split into some explicit flags in different modules
* `--packages-winget`: control whether `winget` packages count should be detected. Note it's a very slow operation, please enable it with caution.
* `--chassis-use-wmi`: control whether `WMI` query should be used to detect chassis type, which detects more information, but slower. This flag only affects `--chassis-format` and `--format json`.
* `--battery-use-setup-api`: control whether `SetupAPI` should be used on Windows to detect battery info, which supports multi batteries, but slower.
* `--wm-detect-plugin`: control whether WM plugins should be detected. Note it's implemented with global processes enumeration and can report false results.
* `--de-slow-version-detection`: control DE version should be detected with slow operations. It's usually not necessary and only provided as a backup.
* `--localip-default-route-only` and `--netio-default-route-only` defaults to true to avoid large number of results
Features:
* Quirks for MIPS platforms (CPU, Linux)
* Use devicetree path for OBP hosts (Host, Linux)
* Detect `tmux: server` as tmux (Terminal, Linux)
* Support urxvt version detection (Terminal, Linux)
* Support st version detection (Terminal, Linux)
* Support st terminal font detection (TerminalFont, Linux)
* Support xfce4-terminal 1.1.0+ terminal font detection (TerminalFont, Linux)
* Add option `--migrate-config <?target-file-path>`
* Support Nvidia GPU temp and cuda core count detection via nvml. Use `--gpu-use-nvml` to enable it (GPU)
* Try supporting Wifi authentication type detection in macOS Sonoma. Please file a feature request if you get `to be supported (num)` with result of `/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | grep auth` (Wifi, macOS)
Bugfixes:
* Better GPU memory and type detection (GPU, Windows)
* Don't print display type twice (Display)
* Detect BSSID instead of Wifi MAC address to align with other platforms (Wifi, macOS)
* Remove support of used GPU memory detection, which is not reliable and only supported with `--gpu-force-vulkan`. (GPU)
* Fix flag `--brightness-ddcci-sleep` (Brightness, Linux)
* Fix hanging if a child process prints to both stdout and stderr (Linux)
Logos:
* Add Black Mesa
* Add cycledream
* Add Evolinx
* Add azos
* Add Interix
# 2.1.2
Bugfixes:
* Fix icon detection on Windows. It shows enabled system icons in desktop (`This PC`, `Recycle Bin`, etc) (Icon, Windows)
* Fix compatibility with ddcutil 2.0 (Brightness, Linux)
* Fix a compile warning (CPUUsage, FreeBSD)
# 2.1.1
Features:
* Support opkg (Packages, Linux)
* Support GNOME Console terminal version and font detection (Terminal, Linux)
* Add `--cpu-freq-ndigits` to set number of digits for CPU frequency (CPU)
* New module to detect physical disk I/O usage (DiskIO)
* Add `--cpuusage-separate` to display CPU usage per CPU logical core
* Add `--brightness-ddcci-sleep` to set the sleep times (in ms) when sending DDC/CI requests (Brightness, #580)
Bugfixes:
* Fix possible crashes on Windows 7 (Disk, Windows)
* Fix possible crashes caused by uninitialized strings (Users, Windows)
* Improve support of `--help *-format` and several bugs are found and fixed
* Don't incorrectly print `No active sound devices found` when using a non-controllable sound device (Sound, macOS)
* Fix implementation processes counting (Processes, Linux)
* Work around a issue that SSID cannot be detected on macOS Sonoma (Wifi, macOS)
Logo:
* Add Chimera Linux
* Add EndeavourSmall
* Add Xenia
* Add MainsailOS
* Fix phyOS
# 2.1.0
This release introduces a new output format: JSON result
Changes:
* Users module detects and prints user login time by default. Specifying `--users-compact` to disable it
* Fastfetch now requires yyjson 0.8.0 or later, which is embedded in fastfetch source tree. If you build fastfetch with `-DENABLE_SYSTEM_YYJSON` cmake option, you must upgrade your yyjson package
* Reduced information supported by `--terminal-format`, `--shell-format`
* Some config presets (`devinfo` and `verbose`) are obsolete and removed. They are barely maintained and can be replaced with `--format json` now.
* Custom strings in `--module-key` and `--module-format` are no longer trimmed.
* `/boot` is hidden by default (FreeBSD, Disk)
Features:
* Add `--format json`, which prints system information as JSON format
* Add fast path for xfce4 version detection (DE, FreeBSD)
* Support contour terminal version and font detection (Terminal / TerminalFont)
* Support `kitty-direct` / `iterm` without specifying logo width / height. Note: in this case, the entre screen will be cleared.
* Support new flag `--logo-separate`. If true, print modules at bottom of the logo
* Support Apple Silicon CPU frequency detection (CPU, macOS)
* Support user login time detection (Users)
* Support winget package manager detection, guarded behind `--allow-slow-operations` (Packages, Windows)
* Print monitor type (built-in or external) (Display)
* Support full GPU detection in WSL (Linux, GPU)
* Add `--module-key " "` as a special case for hiding keys
* Support `--title-format`. See `fastfetch --help title-format` for detail
* Support `--colors-key` (Colors)
* Add `-c` as a shortcut of `--load-config`. Note it was used as the shortcut of `--color` before 2.0.5
* Support Windows Service Pack version detection (Kernel, Windows)
* Support Debian point releases detection (OS, Linux)
* Add new module `NetIO` which prints network throughput (usage) of specified interface. Note this module costs about 1 second to finish.
* Use `lscpu` to detect CPU name for ARM CPUs (CPU, Linux)
Bugfixes:
* Fix fastfetch hanging in specific environment (#561)
* Fix short read when reading from stdin (Logo)
* Fix `poll() timeout or failed` error when image is very large (Logo)
* Fix Termux Monet terminal version detection (Terminal)
* Fix zpool volumes detection (Disk, Linux)
* Fix external volumes detection (Disk, Linux)
* Fix snap package number detection on systems other than Ubuntu (Packages, Linux)
* Fix dpkg / apt package number detection (Packages, Linux)
* Fix bluetooth mac address detection (Bluetooth, Windows)
Logo:
* Add Afterglow
* Add Elbrus
* Update EvolutionOS
* Update AOSC OS
* Update Ubuntu_old
* Update Windows 11_small
* Add Amazon Linux
* Add LainOS
* Fix colors of Slackware
# 2.0.5
Bugfixes:
* Fix segfault when using libxrandr (#544, Display, Linux)
* Don't print 0px (#544, Cursor)
Features:
* Add option `--disk-use-available` (#543)
* Add option `--disk-show-readonly`
# 2.0.4
Bugfixes:
* Fix building on 32-bit FreeBSD (Memory, FreeBSD)
* Fix `--file-raw` doesn't work (Logo)
Features:
* Trait `-` as an alias for `/dev/stdin`. Available for `--file`, `--file-raw` and `--raw` (Logo)
# 2.0.3
Bugfixes:
* Fix typo in config parsing for --color-title (#534)
* Fix percent formatting for `--*-format` (#535)
* Fix loading presets for homebrew (macOS)
Features:
* Add option `--percent-ndigits`
* Add command flag `--config` as an alias of `--load-config`
* Windows packages now include presets (Windows)
# 2.0.2
Bugfixes:
* Workaround [a compiler bug of GCC](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85282) (Windows)
* Fix presets not detected by file name (#529)
Logo:
* Add Tuxedo OS
# 2.0.1
First stable release of Fastfetch V2
Changes:
* Unescape strings only when parsing `.conf` files
* Previously: `$ NO_CONFIG=1 fastfetch --os-key \\\\ -s os -l none` prints `\: *`. Note the backslashes are unescaped twice (once by shell and once by fastfetch).
* Now: `$ NO_CONFIG=1 fastfetch --os-key \\\\ -s os -l none` prints `\\: *`
* Remove option shortcut `-c` (alias of `--color`), which is more commonly used as alias of `--config`
* Rename `--recache` to `--logo-recache` (which is used for regenerate image logo cache). Remove option shortcut `-r` (alias of `--recache`).
* Detecting brightness of external displays with DDC/CI is no longer guarded behind `--allow-slow-operations` (Brightness)
Features:
* Add `--key-width` for aligning the left edge of values, supported both for global `--key-width` and specific module `--module-key-width`
* Add `--bar-char-elapsed`, `--bar-char-total`, `--bar-width` and `--bar-border` options
* Add CMake option `ENABLE_SYSTEM_YYJSON`, which allow building fastfetch with system-provided yyjson (for package managers)
* Add new module `Version`, which prints fastfetch version (like `fastfetch --version`)
Bugfixes:
* Fix label detection. Use `--disk-key 'Disk ({2})'` to display it (Disk, Linux)
* Fix some module options were not inited
* Fix terminal version and font detection on NixOS (Terminal, Linux)
# 2.0.0-beta
Fastfetch v2 introduces a new configuration file format: JSON config. Please refer to <https://github.com/fastfetch-cli/fastfetch/wiki/Configuration> for details.
Changes:
* Drop the dependency of cJSON. We now use [yyjson](https://ibireme.github.io/yyjson/doc/doxygen/html/index.html) to parse JSON documents.
* Remove `--shell-version` and `--terminal-version`. They are always enabled (Terminal / Shell)
* Remove `--*-error-format`, which seems to be useless
* Remove `--display-detect-name`. Display name is always detected, and will be printed if multiple displays are detected
* Deprecate `--set` and `--set-keyless`; they may be removed in future releases. Use JSON config with Custom module instead
* Remove the special handling of Command module (it can be set once in the triditional `config.conf`). Use JSON config with Command module instead
* Change `--wm-theme-*` to `--wmtheme-*`. Affect `key` and `format` (WMTheme)
* Change `--terminal-font-*` to `--terminalfont-*`. Affect `key` and `format` (TerminalFont)
* Module `Command` uses `/bin/sh` as the default shell on systems other than Windows (Command)
* Fix M2 CPU temperature detection (CPU, macOS)
* Detect monitor name when available, instead of using DRM connector name (Display / Brightness, Linux)
Features:
* FreeBSD support is improved greatly, and actually tested in a physical machine
* Add `--no-buffer` option for easier debugging. CMake option `ENABLE_BUFFER` is removed and always enabled.
* Support `--*-key-color` option to change the key color of specified module
* Support `--colors-symbol` and `--colors-padding-left` (Colors)
* Add LM (Login Manager) module. Currently requires systemd installed (thus Linux only)
* Add `--wmi-timeout` option (Windows)
* Add `--logo-type small` to search for small logos
* Support detecting brightness of external displays with DDC/CI (guard behind `--allow-slow-operations`) (Brightness)
* Add option `--size-ndigits` and `--size-max-prefix` (#494)
* Add option `--processing-timeout` to the timeout when waiting for child processes.
* Public IP module prints the IP location if `--publicip-url` is not set (PublicIP)
* Add option `--localip-default-route-only` (LocalIP)
* Add option `--weather-location` (Weather)
* Support iTerm non-ascii font detection (Terminal, macOS)
* Add option `--title-color-user`, `--title-color-at` and `--title-color-host` (Title)
* Add Exherbo logo and package manager count (Packages, Linux, #503)
* Add module `Terminal Size` which prints the number of terminal width and height in characters and pixels
* Add new option `--temperature-unit`
* Better CPU and Host detection for Android (Android)
* Support yakuake terminal version & font detection (Terminal, Linux)
* Add new option `--bright-color` which can be used to disable the default bright color of keys, title and ASCII logo.
* Add module `Monitor` which prints physical parameters (native resolutions and dimensions) of connected monitors
* Support path with environment variables for `--logo-source` and `--load-config`.
Bugfixes:
* Fix possible hanging (TerminalFont, #493)
* Fix heap-buffer-overflow reading (DisplayServer, Linux)
* Fix false errors when built without libnm support (Wifi, Linux)
* Properly detect CPU on POWER (CPU, Linux)
* Fix compatibility with Fig (Terminal, macOS)
* Fix option `--title-fqdn` doesn't work (Title)
* Fix used spaces calculation (Disk, Linux / BSD / macOS, #508)
* Fix `--brightness-format` (Brightness)
* Fix specifying `--set-keyless` with the same key second time won't override the value set before (#517)
* Fix specifying `--color` second time won't clear the value set before (#517)
Logo:
* Change the special handling of `kitty` protocol with `.png` image file to a new image protocol `kitty-direct`. This is the fastest image protocol because fastfetch doesn't need to pre-encode the image to base64 or something and the image content doesn't need to be transmitted via tty. Note:
1. Although konsole was said to support `kitty` image protocol, it doesn't support `kitty-direct`
2. wezterm support more image formats other than `.png` (tested with `.jpg` and `.webp`)
* Port all logos supported by neo(wo)fetch. Fastfetch now has 350 builtin logos in total.
# 1.12.2
Features:
* Support terminator terminal version detection (Linux, Terminal)
* Support `pkgtool` package manager detection (Linux, Packages)
* Support `Far` shell version detection (Windows, Shell)
Bugfixes:
* Fix ConEmu terminal detection in some special cases (Windows, Terminal, #488)
* Fix incorrect Host on M2 Mac Studio with M2 Max CPU (macOS, Host, #490)
# 1.12.1
Bugfixes:
* Fix compiling error on Apple Slicon (Bios, macOS)
# 1.12.0
This release backports some changes from dev branch, and fixes 2 crashing issues
Features:
* Support KDE / LXQt / MATE / Cinnamon wallpaper detection (Wallpaper, Linux)
* Support QTerminal version & terminal font detection
* Support MATE Terminal version & terminal font detection
* Set `--pipe true` automatically if stdout is not a tty
* Detect new macs released on WWDC 2023 (macOS, Host)
* Count cached memory as free memory (FreeBSD, Memory)
* Support sound detection (FreeBSD, Sound)
Bugfixes:
* Fix DE detection on Windows 8.1 (Windows, DE)
* Fix `--logo-padding-left` doesn't work when `--logo-padding-top` is set (Logo)
* Fix KDE version detection on Fedora (DE)
* Include limits.h when needed (Linux, #472)
* Fix Windows drives detection in WSL (Linux, Disk)
* Fix CPU temp detection (FreeBSD, CPU)
* Fix disk detection (Android, Disk)
* Fix GNOME Terminal version and font detection (FreeBSD, TerminalFont)
* Fix crash on newer wayland desktops (Linux, Display, #477)
* Fix vendor detection for Intel GPU (macOS, GPU)
* Fix possible crashes on Windows Server (Windows, GPU, #484)
Logo:
* Add bsd, freebsd_small, ghostbsd
* Make Windows 11 logo colorable
# 1.11.3
Bugfixes:
* Fix a segfault bug, regression of `1.11.1` (Linux, wmtheme, #467)
# 1.11.2
This release should be the last version of fastfetch 1.x (if no serious bugs found, hopefully)
Features:
* Support display name, type, rotation detection on Wayland (Linux, Display)
* Print more useful display name instead of intel_backlight (Linux, Brightness)
* Icons module supports Windows (Windows, Icons)
* Add Wallpaper module which shows the current wallpaper image path
* Add mac address detection `--localip-show-mac` (LocalIP, #451)
Bugfixes:
* Fix GNOME version detection on Fedora (DE)
* Fix Windows drives detection in WSL (Disk)
Changes:
* In order to make Icons module consistent between different platforms, `--icons-format` no longer supports individual GTK / Qt icon params.
* `--theme-format` no longer supports individual GTK / plasma theme params.
* `--local-ip-*` and `--public-ip-*` have been changed to `--localip-*` and `--publicip-*`
* `--localip-compact-type` is no longer supported. Fastfetch now display IPs as `--localip-compat-type multiline` by default, with `--local-compact true` can be set as an alias of `--localip-compact-type oneline`
* `--localip-v6first` is no longer supported.
# 1.11.1
Features:
* Support xonsh detection (TerminalShell)
* Support Tabby version / terminal font detection (TerminalFont)
Bugfixes:
* Fix name of Pro Controller (Gamepad, Windows)
* Fix compile error with imagemagick enabled (Windows)
* Fix copy-and-paste errors (Gamepad)
* Flatpak: Fix user package count
* Flatpak: Count runtime packages too (#441)
* Fix flatpak package count (#441)
* Don't print white color blocks with `--pipe` (#450)
* Fix iTerm being detected as iTermServer-* sometimes
* Fix sound device volume being incorrectly detected as muted sometimes (Sound)
* Fix memleaks reported by LeakSanitizer (Linux)
* Fix potential memory corruption bug in unicode.c (Windows)
Logo:
* Update Windows 11 ASCII logo to look more visually consistent (#445)
* Add another font color index to arch icon (#446)
* Add SteamOS
* Add macOS small / small2
# 1.11.0
Features:
* Support linuxbrew (Packages, Linux)
* Support foot terminal (#431, Linux)
* Support cursor size detection on Windows (Cursor, Windows)
* Support cursor detection on macOS (Cursor, macOS)
* Support display name, display type and decimal refresh rate detection (Display, macOS / Windows)
* Support `--display-compact-type` to display multiple resolutions in one line (Display)
* Support flatpak-user (Packages, Linux, #436)
* Support `--gpu-force-vulkan` to force using vulkan to detect GPUs, which support video memory usage detection with `--allow-slow-operations` (GPU)
Bugfixes:
* Fix date time format
* Fix compiling with musl (Wifi, Linux, #429)
* Don't exit if libpci is failed to init (GPU, Linux, #433)
* Names of most well-known gamepads are correctly printed instead of `Wireless Controller` on Windows
Logo:
* Small update for nobara logo (#435, @regulargvy13)
# 1.10.3
Bugfixes:
* Fix uninitialized variables (GPU, Windows)
* Fix compiling errors (Windows)
Improvements:
* Improve performance (WmTheme amd Font, Windows and macOS)
* Enable nonblocking public-ip / weather detection (Android)
# 1.10.2
Bugfixes:
* Handle `kAudioObjectPropertyElementMain` for macOS **SDK** < 12 (#425, @nandahkrishna)
* Add missing `NULL` for `ffProcessAppendStdOut` (#421)
# 1.10.1
New release for debugging #421
# 1.10.0
Notable Changes:
* With the support of Win32 platform, original Windows 64bit artifact file is renamed to Win64 to avoid possible confusion
Features:
* Bluetooth module
* Sound module
* Gamepad module
* Support colored percentage numbers output (#409)
* Support `--localip-compact-type` option (#408)
* Terminator terminal font detection (@Zerogiven, #415)
* Windows 32bit compatibility
* Support global configuration in MSYS2 environment (Windows)
* Support GPU driver version detection on Windows 11
* Support scaled resolution detection for wayland (Linux)
Bugfixes:
* Fix build with older libnm versions
* Fix a rare case that fails to detect terminal
* Fix Muffin detection (@Zerogiven, #411)
* Fix IPv6 detection (Windows)
* Fix scoop package count detection when scoop is installed in non-default path (Windows, #417)
* Fix UB reported by clang
* Honor $SCOOP when detecting scoop packages (#417)
Other:
* Simplified wmtheme output format (Windows)
* Improved GPU detection performance on Windows 11
* Latest Mac model identifier support (macOS)
# 1.9.1
Bugfixes:
* Fix builds on s390x (@jonathanspw, #402)
* Fix zero refresh rate on some monitors (macOS)
* Fix default formatting of Wifi module
# 1.9.0
Notable Changes:
* fastfetch no longer creates a sample config file silently. Use `--gen-config` to generate one.
* fastfetch now search for user config file in the order of `fastfetch --list-config-paths`
* Unknown disks are hidden by default.
* `Resolution` module is renamed to `Display`. (#393)
Features:
* `--logo-padding-top` option (@CarterLi, #372)
* Raw image file as logo support (@CarterLi)
* Look for config files in `$APPDATA` ([RoamingAppData](https://superuser.com/questions/21458/why-are-there-directories-called-local-locallow-and-roaming-under-users-user#answer-21462)) (Windows)
* Look for config files in `~/Library/Preferences` (macOS)
* Add `--list-config-paths` option which list search paths of config files
* Add `--list-data-paths` option which list search paths for presets and logos
* Add `Brightness` module support
* Add `Battery` module support for FreeBSD
* Add `--disk-show-unknown` option for Disk module
* Add `--disk-show-subvolumes` option for Disk module
* Add `--gpu-hide-integrated` option (#379)
* Add `--gpu-hide-discrete` option (#379)
* Detect terminal version when available
* Support `WezTerm` terminal font detection (requires [`wezterm` executable](https://wezfurlong.org/wezterm/cli/general.html) being available)
* Add `--shell-version` and `--terminal-version` options to disable shell / terminal version detection
* 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)
* Detect pacman package count inside MSYS2 environment (Windows)
* Add Wifi / Battery module support for Android
* Disk name support for Linux
Logos:
* Raspbian (@IamNoRobot, #373)
Bugfixes:
* `--logo-type` now does accept `iterm` too (@CarterLi, #374)
* Fix mintty terminal font detection (Windows)
* Fix bug that line buffering doesn't work properly (Windows)
* Fix rpm package count detection (Linux)
* Fix cpu temp detection (Linux)
Other:
* Fixed a Typo in iterm error message (@jessebot, #376)
* Don't try to load config file in `/etc` (Windows)
# 1.8.2
Bugfixes:
* Fix memleaks Users module (Windows)
* Fix shell detection when installed with scoop (Windows)
* Don't use libcJSON as wlanapi's dll name (Windows)
* Align artifact names to other platforms (Windows)
# 1.8.1
Notable Changes:
* `Song` was used as an alias to `Media` module. It's removed to avoid confusion. All song related flags (`--song-key`, etc) should change to media (`--media-key`, etc). (@CarterLi)
Bugfixes:
* Mountpoint paths on linux get decoded correctly (#364)
* Color parsing once again works (@IanManske, #365)
* Using a custom key with a placeholder for the local ip module now does work correctly if multiple interfaces are present (#368)
# 1.8.0
This release introduces Windows support! Fastfetch now fully support all major desktop OSes (Linux, macOS, Windows and FreeBSD)
Notable Changes:
* Bios / Board / Chassis modules are split against Host module for performance reasons
* Caching is removed. Option `--nocache` is removed accordingly
Features:
* Windows (7 and newer) is officially and fully supported
* FreeBSD support is improved greatly (Bios, Cpu Temp, Cpu Usage, Disk, Host, Processes, Swap, Terminal / Shell, Uptime)
* Adds a new flag `--stat`, which prints time usage for individual modules
* Adds Wifi module which supports Windows and macOS
* Adds data source option for logo printing
* Detects Homebrew Cellar and Cask separately
* Detects WSL version
* Detects disk based on mount point
* Exposes more chafa configs
* Improves performance for Cpu Usage, Public IP, Weather modules
* Improves performance for Kitty image protocol when both image width / height specified
* Improves performance for large file loading
* Improves performance for macOS WM and Host detection
* Improves shell and terminal detection on macOS
* Supports Deepin Terminal terminal font
* Supports GPU detection on Android
* Supports Kitty Terminal terminal font
* Supports bar output for percentage values
* Supports Bios module on macOS
* Supports eopkg package manager detection
* Supports iTerm image logo protocol
* Supports image logo printing on macOS
* Supports tcsh version detection
* Vulkan module on macOS no longer requires vulkan-loader to work
Logos:
* Alpine
* CRUX
* EndeavourOS
* Enso
* Garuda small
* Nobara
* OpenMandriva
* Parabola GNU/Linux-libre
* Rocky
* Rosa
* Solus
* Univalent
* Vanilla OS
Bugfixes:
* Fixes disk size detection on 32bit Linux (#337)
* Fixes cpu freq detection in WSL
* Fixes internal bug of FFstrbuf
* Fixes some memory leaks
* Fixes segfault if 0 is given as argument index
* Lots of code refactors
# 1.7.5
Fixes a crash on linux that could happen when getting zsh version (#285)
# 1.7.4
The last element in the default structure (currently the color blocks) is now printed again (#283)
# 1.7.3
A lot of small improvements for MacOS & BSD platforms.
Features:
* BSD is now officially supported (#228)
* MacPorts package manager support (@SladeGetz, #234)
* Battery support for MacOS (@CarterLi, #235)
* Processes, swap & terminal font support for MacOS(@CarterLi, #237)
* Media support for MacOS (@CarterLi, #242)
* Player support for MacOS (@CarterLi, #245)
* WM theme support for MacOS (@CarterLi, #246)
* CPU usage support for MacOS (@CarterLi, #247)
* Power Adapter module (@CarterLi, #249)
* Windows terminal font for WSL (@CarterLi, #254)
* Temps & Font support for MacOS (@CarterLi, #258)
* Terminal font support for Termux (@CarterLi, #263)
* Weather module (@CarterLi, #266)
Logos
* Crystal linux (@AloneER0, #239)
* FreeBSD (@draumaz, #244)
* New Ubuntu (@AloneER0, #259)
Bugfixes:
* Don't segfault in GPU code on Intel Macs (@CarterLi, #236)
* Don't use hardcoded size units in presets (@dr460nf1r3, #255)
* Don't crash with some format strings (#252)
* --logo none keeps key color now (#264)
# 1.7.2
Fixes the bash completions
# 1.7.1
This release brings a lot of bug fixes and improvements for MacOS. Big thanks to @CarterLi for the help on this!
Features:
* The color of the title and the keys can now be configured individually, using `--color-keys` and `--color-title` respectively. Some distros have different defaults now, similar to neofetch
* Swap module, similar to the Memory module, but for swap. Add `Swap` to your structure to enable it (#225)
Logos:
* Slackware (#227)
Bugfixes:
* Used disk space is now calculated much more accurately
* On Linux, GPU names are no longer truncated, if they are longer than 32 characters (#224)
* On Linux, NVIDIA GPUs once again have a proper name
* On M1 platforms, showing the GPU name no longer crashes the program (#222)
* Brew package count does now work on M1 platforms too
* The Vulkan module now does work on MacOS too
* The OpenGL and OpenCL modules now work on MacOS too (@CarterLi, #226)
* The LocalIp module now works on MacOS too (@CarterLi, #232)
* Detecting custom WMs on MacOS does now work
Other:
* GitHub actions now builds a dmg file for MacOS, as you can see in the release page
# 1.7.0
This release brings support for MacOS!
The basics things are working, but it is far from feature parity with Linux.
I developed this in a VM, so bugs on real hardware are likely.
If you have a Mac and no idea what to do with your free time, i am very happy to accept pull requests / work on issues.
A lot of things were changed under the hood to make this possible, which should bring better performance and stability on all platforms.
Besides that, the following things have changed:
Features:
* The binary prefix used can now be configured, and is used consistently across all modules. Set `--binary-prefix` to `iec` (default), `si` or `jedec`.
* AMD GPUs now have a much better name, if the file `/usr/share/libdrm/amdgpu.ids` exists. For example my dedicated GPU, which was displayed as `AMD/ATI Radeon RX 5600 OEM/5600 XT / 5700/5700 XT`, is now `AMD Radeon RX 5600M`.
Logos:
* MacOS
* CachyOS small (@sirlucjan, #220)
* MSYS2 (#219)
Bugfixes:
* the `--file` option, which can be used to display the contents of a file as the logo, is now working again.
# 1.6.5
Fixes parsing quoted values in config files
# 1.6.4
Releasing this, so fedora can package fastfetch. Thanks to @jonathanspw for doing that!
Features:
* --set-keyless option (#215)
* Replace `\n`, `\t`, `\e` and `\\` in user provided strings, just like c would do it (#215)
* APK (Alpine Package Keeper) support (@mxkrsv, #216)
Logos:
* Alma Linux (@jonathanspw, #214)
Bugfixes:
* replace deprecated gethostbyname call with getaddrinfo (#217)
# 1.6.3
Fixes installing presets in their own directory (@ceamac, #212)
# 1.6.2
Releasing this, so void linux can package fastfetch.
Logos:
* Rosa linux (#206)
* KISS linux (@draumaz, #207)
* LangitKetujuh (@hervyqa, #208)
Bugfixes:
* Using musl as libc does work now (#210)
* XBPS packages are once again printed (#209)
* configured target dirs are applied to install directories too
* empty XDG_* env vars don't cause a crash anymore
# 1.6.1
Fixes build on android (#205)
# 1.6.0
Features:
* Detect Qt on more DEs than just KDE Plasma. The [Plasma] category was therefore renamed to [Qt]
* Alacritty font detection
* Load `/etc/fastfetch/config.conf` before user config
* Disk: print one decimal point if size < 100GB
* `--title-fqdn` option, to print fully qualified domain name instead of host name in title
Logos:
* updated old NixOS logo
Bugfixes:
* Correctly detect GTK on DEs that store their settings in dconf
* Correctly detect NixOS packages
* Mutter WM detected once again
* Show full NixOS version in OS output
* Don't segfault if an invalid structure is given
* WSL doesn't output GPU anymore, as the name is always meaningless
================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.12.0) # target_link_libraries with OBJECT libs & project homepage url
project(fastfetch
VERSION 2.60.0
LANGUAGES C
DESCRIPTION "Fast neofetch-like system information tool"
HOMEPAGE_URL "https://github.com/fastfetch-cli/fastfetch"
)
set(PROJECT_LICENSE "MIT license")
if(DEFINED CMAKE_SYSTEM_PROCESSOR_OVERRIDE) # Used by github actions for i686 build
set(CMAKE_SYSTEM_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR_OVERRIDE} CACHE INTERNAL "")
endif()
string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" CMAKE_SYSTEM_PROCESSOR)
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
set(CMAKE_SYSTEM_PROCESSOR "amd64")
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
set(CMAKE_SYSTEM_PROCESSOR "aarch64")
endif()
message(STATUS "Build for system processor: ${CMAKE_SYSTEM_PROCESSOR}")
###################
# Target Platform #
###################
if(ANDROID)
set(LINUX FALSE)
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
set(LINUX TRUE CACHE BOOL "..." FORCE) # LINUX means GNU/Linux, not just the kernel
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD")
set(FreeBSD TRUE CACHE BOOL "..." FORCE)
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD")
set(OpenBSD TRUE CACHE BOOL "..." FORCE)
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "MidnightBSD")
set(FreeBSD TRUE CACHE BOOL "..." FORCE)
set(MidnightBSD TRUE CACHE BOOL "..." FORCE)
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "NetBSD")
set(NetBSD TRUE CACHE BOOL "..." FORCE)
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "DragonFly")
set(FreeBSD TRUE CACHE BOOL "..." FORCE)
set(DragonFly TRUE CACHE BOOL "..." FORCE)
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS")
set(SunOS TRUE CACHE BOOL "..." FORCE)
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Haiku")
set(Haiku TRUE CACHE BOOL "..." FORCE)
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "GNU")
set(GNU TRUE CACHE BOOL "..." FORCE)
elseif(NOT APPLE AND NOT WIN32)
message(FATAL_ERROR "Unsupported platform: ${CMAKE_SYSTEM_NAME}")
endif()
#############################
# Compile time dependencies #
#############################
set(THREADS_PREFER_PTHREAD_FLAG NOT WIN32)
find_package(Threads)
find_package(PkgConfig)
if(NOT PKG_CONFIG_FOUND)
message(WARNING "pkg-config not found, library detection might be limited")
endif()
include(CheckIncludeFile)
#####################
# Configure options #
#####################
include(CMakeDependentOption)
cmake_dependent_option(ENABLE_VULKAN "Enable vulkan" ON "LINUX OR APPLE OR FreeBSD OR OpenBSD OR NetBSD OR WIN32 OR ANDROID OR SunOS OR Haiku OR GNU" OFF)
cmake_dependent_option(ENABLE_WAYLAND "Enable wayland-client" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR GNU" OFF)
cmake_dependent_option(ENABLE_XCB_RANDR "Enable xcb-randr" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR ANDROID OR SunOS OR GNU" OFF)
cmake_dependent_option(ENABLE_XRANDR "Enable xrandr" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR ANDROID OR SunOS OR GNU" OFF)
cmake_dependent_option(ENABLE_DRM "Enable libdrm" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR SunOS OR GNU" OFF)
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_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)
cmake_dependent_option(ENABLE_IMAGEMAGICK7 "Enable imagemagick 7" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR APPLE OR ANDROID OR WIN32 OR SunOS OR Haiku OR GNU" OFF)
cmake_dependent_option(ENABLE_IMAGEMAGICK6 "Enable imagemagick 6" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR APPLE OR SunOS OR GNU" OFF)
cmake_dependent_option(ENABLE_CHAFA "Enable chafa" ON "ENABLE_IMAGEMAGICK6 OR ENABLE_IMAGEMAGICK7" OFF)
cmake_dependent_option(ENABLE_EGL "Enable egl" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR ANDROID OR WIN32 OR SunOS OR Haiku OR GNU" OFF)
cmake_dependent_option(ENABLE_GLX "Enable glx" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR ANDROID OR SunOS OR GNU" OFF)
cmake_dependent_option(ENABLE_OPENCL "Enable opencl" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR WIN32 OR ANDROID OR SunOS OR Haiku OR GNU" OFF)
cmake_dependent_option(ENABLE_FREETYPE "Enable freetype" ON "ANDROID" OFF)
cmake_dependent_option(ENABLE_PULSE "Enable pulse" ON "LINUX OR ANDROID OR GNU" OFF)
cmake_dependent_option(ENABLE_DDCUTIL "Enable ddcutil" ON "LINUX" OFF)
cmake_dependent_option(ENABLE_DIRECTX_HEADERS "Enable DirectX headers for WSL" ON "LINUX" OFF)
cmake_dependent_option(ENABLE_ELF "Enable libelf" ON "LINUX OR ANDROID OR DragonFly OR Haiku OR GNU" OFF)
cmake_dependent_option(ENABLE_THREADS "Enable multithreading" ON "Threads_FOUND" OFF)
option(ENABLE_ZLIB "Enable zlib" ON)
option(ENABLE_SYSTEM_YYJSON "Use system provided (instead of fastfetch embedded) yyjson library" OFF)
option(ENABLE_ASAN "Build fastfetch with ASAN (address sanitizer)" OFF)
option(ENABLE_LTO "Enable link-time optimization in release mode if supported" ON)
option(BUILD_FLASHFETCH "Build flashfetch" ON) # Also build the flashfetch binary
option(BUILD_TESTS "Build tests" OFF) # Also create test executables
option(SET_TWEAK "Add tweak to project version" ON) # This is set to off by github actions for release builds
option(IS_MUSL "Build with musl libc" OFF) # Used by Github Actions
option(INSTALL_LICENSE "Install license into /usr/share/licenses" ON)
option(ENABLE_EMBEDDED_PCIIDS "Embed pci.ids into fastfetch, requires `python`" OFF)
option(ENABLE_EMBEDDED_AMDGPUIDS "Embed amdgpu.ids into fastfetch, requires `python`" OFF)
option(ENABLE_WORDEXP "Enable using of wordexp(3) if available, instead of glob(3)" ON)
option(ENABLE_LIBZFS "Enable libzfs" ON)
if(WIN32 AND NOT CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
option(ENABLE_WIN81_COMPAT "Enable legacy Windows compatibility (Windows 8.1 and later; Windows 7 unsupported)" ON)
endif()
if(APPLE)
option(ENABLE_APPLE_MEMSIZE_USABLE "Use usable memory size as total memory size in Memory module, to match other systems" OFF)
endif()
set(BINARY_LINK_TYPE_OPTIONS dlopen dynamic static)
set(BINARY_LINK_TYPE dlopen CACHE STRING "How to link fastfetch")
set_property(CACHE BINARY_LINK_TYPE PROPERTY STRINGS ${BINARY_LINK_TYPE_OPTIONS})
if(NOT BINARY_LINK_TYPE IN_LIST BINARY_LINK_TYPE_OPTIONS)
message(FATAL_ERROR "BINARY_LINK_TYPE must be one of ${BINARY_LINK_TYPE_OPTIONS}")
endif()
set(PACKAGE_MANAGERS AM APK BREW CHOCO DPKG EMERGE EOPKG FLATPAK GUIX LINGLONG LPKG LPKGBUILD MACPORTS NIX OPKG PACMAN PACSTALL PALUDIS PISI PKG PKGTOOL RPM SCOOP SNAP SOAR SORCERY WINGET XBPS)
foreach(package_manager ${PACKAGE_MANAGERS})
if(package_manager STREQUAL "WINGET")
option(PACKAGES_DISABLE_${package_manager} "Disable ${package_manager} package manager detection by default" ON)
else()
option(PACKAGES_DISABLE_${package_manager} "Disable ${package_manager} package manager detection by default" OFF)
endif()
endforeach()
if (LINUX)
set(CUSTOM_PCI_IDS_PATH "" CACHE STRING "Custom path to file pci.ids, defaults to `/usr/share/hwdata/pci.ids`")
set(CUSTOM_AMDGPU_IDS_PATH "" CACHE STRING "Custom path to file amdgpu.ids, defaults to `/usr/share/libdrm/amdgpu.ids`")
set(CUSTOM_OS_RELEASE_PATH "" CACHE STRING "Custom path to file os-release, defaults to `/etc/os-release`")
endif()
####################
# Compiler options #
####################
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE RelWithDebInfo)
endif()
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
if(ENABLE_THREADS)
if(CMAKE_USE_WIN32_THREADS_INIT)
message(STATUS "Threads type: Win32 thread")
elseif(CMAKE_USE_PTHREADS_INIT)
message(STATUS "Threads type: pthread")
endif()
else()
message(STATUS "Threads type: disabled")
endif()
set(WARNING_FLAGS "-Wall -Wextra -Wconversion -Werror=uninitialized -Werror=return-type -Werror=vla")
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_FLAGS} -Werror=incompatible-pointer-types -Werror=implicit-function-declaration -Werror=int-conversion")
if(WIN32 OR Haiku OR ENABLE_DIRECTX_HEADERS)
enable_language(CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WARNING_FLAGS}")
endif()
if(WIN32)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--tsaware -Wl,--build-id")
if(ENABLE_WIN81_COMPAT)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--subsystem,console,--major-os-version,6,--minor-os-version,3")
else()
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--subsystem,console,--major-os-version,10,--minor-os-version,0")
endif()
elseif(APPLE AND CMAKE_C_COMPILER_ID MATCHES "Clang")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fobjc-arc")
endif()
set(FASTFETCH_FLAGS_DEBUG "-fno-omit-frame-pointer")
if(ENABLE_ASAN)
message(STATUS "Address sanitizer enabled (DEBUG only)")
set(FASTFETCH_FLAGS_DEBUG "${FASTFETCH_FLAGS_DEBUG} -fsanitize=address")
endif()
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${FASTFETCH_FLAGS_DEBUG}")
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${FASTFETCH_FLAGS_DEBUG} -fstack-protector-all -fno-delete-null-pointer-checks")
if(NOT WIN32)
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -rdynamic")
endif()
if(ENABLE_LTO AND NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
message(STATUS "Enabling LTO")
include(CheckIPOSupported)
check_ipo_supported(RESULT IPO_SUPPORTED)
if(IPO_SUPPORTED)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
endif()
endif()
#######################
# Target FS structure #
#######################
if(NOT TARGET_DIR_ROOT)
if(NOT ANDROID)
set(TARGET_DIR_ROOT "")
else()
set(TARGET_DIR_ROOT "/data/data/com.termux/files/usr")
endif()
endif()
if(NOT TARGET_DIR_USR)
if(NOT ANDROID)
set(TARGET_DIR_USR "${TARGET_DIR_ROOT}/usr")
else()
set(TARGET_DIR_USR "${TARGET_DIR_ROOT}")
endif()
endif()
if(NOT TARGET_DIR_HOME)
if(APPLE)
set(TARGET_DIR_HOME "${TARGET_DIR_ROOT}/Users")
elseif(ANDROID)
set(TARGET_DIR_HOME "/data/data/com.termux/files/home")
else()
set(TARGET_DIR_HOME "${TARGET_DIR_ROOT}/home")
endif()
endif()
if(NOT TARGET_DIR_ETC)
set(TARGET_DIR_ETC "${TARGET_DIR_ROOT}/etc")
endif()
message(STATUS "Target dirs: ROOT=\"${TARGET_DIR_ROOT}\" USR=\"${TARGET_DIR_USR}\" HOME=\"${TARGET_DIR_HOME}\" ETC=\"${TARGET_DIR_ETC}\"")
#https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT.html
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "${TARGET_DIR_USR}" CACHE PATH "..." FORCE)
endif()
if(NOT CMAKE_INSTALL_SYSCONFDIR)
set(CMAKE_INSTALL_SYSCONFDIR "${TARGET_DIR_ETC}" CACHE PATH "..." FORCE)
endif()
#################
# Tweak version #
#################
if (SET_TW
gitextract_aqn42s14/
├── .codespellrc
├── .editorconfig
├── .gitattributes
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report_crash.yml
│ │ ├── bug_report_general.yml
│ │ ├── bug_report_logo.yml
│ │ ├── feature_request.yml
│ │ └── logo_request.yml
│ ├── pull_request_template.md
│ ├── stale.yml
│ └── workflows/
│ └── ci.yml
├── .gitignore
├── CHANGELOG.md
├── CMakeLists.txt
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README-cn.md
├── README.md
├── completions/
│ ├── fastfetch.bash
│ ├── fastfetch.fish
│ └── fastfetch.zsh
├── debian/
│ ├── changelog.tpl
│ ├── compat
│ ├── control
│ ├── copyright
│ ├── publish.sh
│ ├── rules
│ └── watch
├── doc/
│ ├── fastfetch.1.in
│ └── json_schema.json
├── presets/
│ ├── all.jsonc
│ ├── archey.jsonc
│ ├── ci.jsonc
│ ├── examples/
│ │ ├── 10.jsonc
│ │ ├── 11.jsonc
│ │ ├── 12.jsonc
│ │ ├── 13.jsonc
│ │ ├── 14.jsonc
│ │ ├── 15.jsonc
│ │ ├── 16.jsonc
│ │ ├── 17.jsonc
│ │ ├── 18.jsonc
│ │ ├── 19.jsonc
│ │ ├── 2.jsonc
│ │ ├── 20.jsonc
│ │ ├── 21.jsonc
│ │ ├── 22.jsonc
│ │ ├── 23.jsonc
│ │ ├── 24.jsonc
│ │ ├── 25.jsonc
│ │ ├── 26.jsonc
│ │ ├── 27.jsonc
│ │ ├── 28.jsonc
│ │ ├── 29.jsonc
│ │ ├── 3.jsonc
│ │ ├── 30.jsonc
│ │ ├── 31.jsonc
│ │ ├── 32.jsonc
│ │ ├── 4.jsonc
│ │ ├── 5.jsonc
│ │ ├── 6.jsonc
│ │ ├── 7.jsonc
│ │ ├── 8.jsonc
│ │ └── 9.jsonc
│ ├── neofetch.jsonc
│ ├── paleofetch.jsonc
│ └── screenfetch.jsonc
├── run.sh
├── scripts/
│ ├── gen-amdgpuids.py
│ ├── gen-man.py
│ └── gen-pciids.py
├── src/
│ ├── 3rdparty/
│ │ ├── display-library/
│ │ │ ├── adl_defines.h
│ │ │ ├── adl_sdk.h
│ │ │ ├── adl_structures.h
│ │ │ └── repo.json
│ │ ├── widecharwidth/
│ │ │ ├── repo.json
│ │ │ └── widechar_width_c.h
│ │ └── yyjson/
│ │ ├── repo.json
│ │ ├── yyjson.c
│ │ └── yyjson.h
│ ├── common/
│ │ ├── FFPlatform.h
│ │ ├── FFcheckmacros.h
│ │ ├── FFlist.h
│ │ ├── FFstrbuf.h
│ │ ├── apple/
│ │ │ ├── Info.plist.in
│ │ │ ├── cf_helpers.c
│ │ │ ├── cf_helpers.h
│ │ │ ├── osascript.h
│ │ │ ├── osascript.m
│ │ │ ├── smc_temps.c
│ │ │ └── smc_temps.h
│ │ ├── argType.h
│ │ ├── arrayUtils.h
│ │ ├── base64.h
│ │ ├── binary.h
│ │ ├── color.h
│ │ ├── commandoption.h
│ │ ├── dbus.h
│ │ ├── debug.h
│ │ ├── duration.h
│ │ ├── edidHelper.h
│ │ ├── ffdata.h
│ │ ├── font.h
│ │ ├── format.h
│ │ ├── frequency.h
│ │ ├── haiku/
│ │ │ ├── version.cpp
│ │ │ └── version.h
│ │ ├── impl/
│ │ │ ├── FFPlatform.c
│ │ │ ├── FFPlatform_private.h
│ │ │ ├── FFPlatform_unix.c
│ │ │ ├── FFPlatform_windows.c
│ │ │ ├── FFlist.c
│ │ │ ├── FFstrbuf.c
│ │ │ ├── base64.c
│ │ │ ├── binary_apple.c
│ │ │ ├── binary_linux.c
│ │ │ ├── binary_windows.c
│ │ │ ├── commandoption.c
│ │ │ ├── dbus.c
│ │ │ ├── debug_windows.c
│ │ │ ├── duration.c
│ │ │ ├── edidHelper.c
│ │ │ ├── font.c
│ │ │ ├── format.c
│ │ │ ├── frequency.c
│ │ │ ├── init.c
│ │ │ ├── io_unix.c
│ │ │ ├── io_windows.c
│ │ │ ├── jsonconfig.c
│ │ │ ├── kmod_apple.c
│ │ │ ├── kmod_bsd.c
│ │ │ ├── kmod_linux.c
│ │ │ ├── kmod_nbsd.c
│ │ │ ├── kmod_nosupport.c
│ │ │ ├── kmod_sunos.c
│ │ │ ├── kmod_windows.c
│ │ │ ├── library.c
│ │ │ ├── memrchr.c
│ │ │ ├── netif.c
│ │ │ ├── netif_apple.c
│ │ │ ├── netif_bsd.c
│ │ │ ├── netif_gnu.c
│ │ │ ├── netif_haiku.c
│ │ │ ├── netif_linux.c
│ │ │ ├── netif_windows.c
│ │ │ ├── networking_common.c
│ │ │ ├── networking_linux.c
│ │ │ ├── networking_windows.c
│ │ │ ├── option.c
│ │ │ ├── parsing.c
│ │ │ ├── path.c
│ │ │ ├── percent.c
│ │ │ ├── printing.c
│ │ │ ├── processing_linux.c
│ │ │ ├── processing_windows.c
│ │ │ ├── properties.c
│ │ │ ├── settings.c
│ │ │ ├── size.c
│ │ │ ├── smbiosHelper.c
│ │ │ ├── sysctl.c
│ │ │ ├── temps.c
│ │ │ ├── time.c
│ │ │ └── wcwidth.c
│ │ ├── init.h
│ │ ├── io.h
│ │ ├── jsonconfig.h
│ │ ├── kmod.h
│ │ ├── library.h
│ │ ├── mallocHelper.h
│ │ ├── memrchr.h
│ │ ├── netif.h
│ │ ├── networking.h
│ │ ├── option.h
│ │ ├── parsing.h
│ │ ├── path.h
│ │ ├── percent.h
│ │ ├── printing.h
│ │ ├── processing.h
│ │ ├── properties.h
│ │ ├── settings.h
│ │ ├── size.h
│ │ ├── smbiosHelper.h
│ │ ├── stringUtils.h
│ │ ├── sysctl.h
│ │ ├── temps.h
│ │ ├── textModifier.h
│ │ ├── thread.h
│ │ ├── time.h
│ │ ├── unused.h
│ │ ├── wcwidth.h
│ │ └── windows/
│ │ ├── c-logo.sh
│ │ ├── com.cpp
│ │ ├── com.hpp
│ │ ├── getline.c
│ │ ├── getline.h
│ │ ├── manifest.xml
│ │ ├── nt.h
│ │ ├── perflib_.h
│ │ ├── registry.c
│ │ ├── registry.h
│ │ ├── unicode.c
│ │ ├── unicode.h
│ │ ├── unicode.hpp
│ │ ├── util.hpp
│ │ ├── variant.cpp
│ │ ├── variant.hpp
│ │ ├── version.c
│ │ ├── version.h
│ │ ├── version.rc
│ │ ├── wmi.cpp
│ │ └── wmi.hpp
│ ├── data/
│ │ ├── help.json
│ │ └── structure.txt
│ ├── detection/
│ │ ├── battery/
│ │ │ ├── battery.h
│ │ │ ├── battery_android.c
│ │ │ ├── battery_apple.c
│ │ │ ├── battery_bsd.c
│ │ │ ├── battery_haiku.c
│ │ │ ├── battery_linux.c
│ │ │ ├── battery_nbsd.c
│ │ │ ├── battery_nosupport.c
│ │ │ ├── battery_obsd.c
│ │ │ └── battery_windows.c
│ │ ├── bios/
│ │ │ ├── bios.h
│ │ │ ├── bios_android.c
│ │ │ ├── bios_apple.c
│ │ │ ├── bios_bsd.c
│ │ │ ├── bios_linux.c
│ │ │ ├── bios_nbsd.c
│ │ │ ├── bios_nosupport.c
│ │ │ └── bios_windows.c
│ │ ├── bluetooth/
│ │ │ ├── bluetooth.h
│ │ │ ├── bluetooth_apple.m
│ │ │ ├── bluetooth_bsd.c
│ │ │ ├── bluetooth_haiku.cpp
│ │ │ ├── bluetooth_linux.c
│ │ │ ├── bluetooth_nosupport.c
│ │ │ ├── bluetooth_windows.c
│ │ │ └── bluetooth_windows.cpp
│ │ ├── bluetoothradio/
│ │ │ ├── bluetoothradio.c
│ │ │ ├── bluetoothradio.h
│ │ │ ├── bluetoothradio_apple.m
│ │ │ ├── bluetoothradio_linux.c
│ │ │ ├── bluetoothradio_nosupport.c
│ │ │ └── bluetoothradio_windows.c
│ │ ├── board/
│ │ │ ├── board.h
│ │ │ ├── board_android.c
│ │ │ ├── board_apple.c
│ │ │ ├── board_bsd.c
│ │ │ ├── board_linux.c
│ │ │ ├── board_nbsd.c
│ │ │ ├── board_nosupport.c
│ │ │ └── board_windows.c
│ │ ├── bootmgr/
│ │ │ ├── bootmgr.c
│ │ │ ├── bootmgr.h
│ │ │ ├── bootmgr_apple.c
│ │ │ ├── bootmgr_bsd.c
│ │ │ ├── bootmgr_linux.c
│ │ │ ├── bootmgr_nosupport.c
│ │ │ ├── bootmgr_windows.c
│ │ │ └── efi_helper.h
│ │ ├── brightness/
│ │ │ ├── brightness.h
│ │ │ ├── brightness_apple.c
│ │ │ ├── brightness_bsd.c
│ │ │ ├── brightness_linux.c
│ │ │ ├── brightness_nbsd.c
│ │ │ ├── brightness_nosupport.c
│ │ │ ├── brightness_obsd.c
│ │ │ └── brightness_windows.cpp
│ │ ├── btrfs/
│ │ │ ├── btrfs.h
│ │ │ ├── btrfs_linux.c
│ │ │ └── btrfs_nosupport.c
│ │ ├── camera/
│ │ │ ├── camera.h
│ │ │ ├── camera_android.c
│ │ │ ├── camera_apple.m
│ │ │ ├── camera_linux.c
│ │ │ ├── camera_nosupport.c
│ │ │ └── camera_windows.cpp
│ │ ├── chassis/
│ │ │ ├── chassis.c
│ │ │ ├── chassis.h
│ │ │ ├── chassis_apple.c
│ │ │ ├── chassis_bsd.c
│ │ │ ├── chassis_linux.c
│ │ │ ├── chassis_nbsd.c
│ │ │ ├── chassis_nosupport.c
│ │ │ └── chassis_windows.c
│ │ ├── command/
│ │ │ ├── command.c
│ │ │ └── command.h
│ │ ├── cpu/
│ │ │ ├── cpu.c
│ │ │ ├── cpu.h
│ │ │ ├── cpu_apple.c
│ │ │ ├── cpu_arm.h
│ │ │ ├── cpu_bsd.c
│ │ │ ├── cpu_haiku.c
│ │ │ ├── cpu_linux.c
│ │ │ ├── cpu_nbsd.c
│ │ │ ├── cpu_nosupport.c
│ │ │ ├── cpu_obsd.c
│ │ │ ├── cpu_sunos.c
│ │ │ └── cpu_windows.c
│ │ ├── cpucache/
│ │ │ ├── cpucache.h
│ │ │ ├── cpucache_apple.c
│ │ │ ├── cpucache_linux.c
│ │ │ ├── cpucache_nosupport.c
│ │ │ ├── cpucache_shared.c
│ │ │ └── cpucache_windows.c
│ │ ├── cpuusage/
│ │ │ ├── cpuusage.c
│ │ │ ├── cpuusage.h
│ │ │ ├── cpuusage_apple.c
│ │ │ ├── cpuusage_bsd.c
│ │ │ ├── cpuusage_haiku.c
│ │ │ ├── cpuusage_linux.c
│ │ │ ├── cpuusage_nosupport.c
│ │ │ ├── cpuusage_sunos.c
│ │ │ └── cpuusage_windows.c
│ │ ├── cursor/
│ │ │ ├── cursor.h
│ │ │ ├── cursor_apple.m
│ │ │ ├── cursor_linux.c
│ │ │ ├── cursor_nosupport.c
│ │ │ └── cursor_windows.c
│ │ ├── de/
│ │ │ ├── de.h
│ │ │ ├── de_linux.c
│ │ │ └── de_nosupport.c
│ │ ├── disk/
│ │ │ ├── disk.c
│ │ │ ├── disk.h
│ │ │ ├── disk_bsd.c
│ │ │ ├── disk_haiku.cpp
│ │ │ ├── disk_linux.c
│ │ │ ├── disk_nosupport.c
│ │ │ ├── disk_sunos.c
│ │ │ └── disk_windows.c
│ │ ├── diskio/
│ │ │ ├── diskio.c
│ │ │ ├── diskio.h
│ │ │ ├── diskio_apple.c
│ │ │ ├── diskio_bsd.c
│ │ │ ├── diskio_linux.c
│ │ │ ├── diskio_nbsd.c
│ │ │ ├── diskio_nosupport.c
│ │ │ ├── diskio_obsd.c
│ │ │ ├── diskio_sunos.c
│ │ │ └── diskio_windows.c
│ │ ├── displayserver/
│ │ │ ├── displayserver.c
│ │ │ ├── displayserver.h
│ │ │ ├── displayserver_android.c
│ │ │ ├── displayserver_apple.c
│ │ │ ├── displayserver_haiku.cpp
│ │ │ ├── displayserver_windows.c
│ │ │ └── linux/
│ │ │ ├── common.c
│ │ │ ├── displayserver_linux.c
│ │ │ ├── displayserver_linux.h
│ │ │ ├── drm.c
│ │ │ ├── wayland/
│ │ │ │ ├── global-output.c
│ │ │ │ ├── kde-output-device-v2-client-protocol.h
│ │ │ │ ├── kde-output-device-v2-protocol.c
│ │ │ │ ├── kde-output-order-v1-client-protocol.h
│ │ │ │ ├── kde-output-order-v1-protocol.c
│ │ │ │ ├── kde-output.c
│ │ │ │ ├── wayland.c
│ │ │ │ ├── wayland.h
│ │ │ │ ├── wlr-output-management-unstable-v1-client-protocol.h
│ │ │ │ ├── wlr-output-management-unstable-v1-protocol.c
│ │ │ │ ├── xdg-output-unstable-v1-client-protocol.h
│ │ │ │ ├── xdg-output-unstable-v1-protocol.c
│ │ │ │ └── zwlr-output.c
│ │ │ ├── wmde.c
│ │ │ ├── xcb.c
│ │ │ └── xlib.c
│ │ ├── dns/
│ │ │ ├── dns.h
│ │ │ ├── dns_apple.c
│ │ │ ├── dns_linux.c
│ │ │ └── dns_windows.c
│ │ ├── editor/
│ │ │ ├── editor.c
│ │ │ └── editor.h
│ │ ├── font/
│ │ │ ├── font.c
│ │ │ ├── font.h
│ │ │ ├── font_apple.m
│ │ │ ├── font_haiku.cpp
│ │ │ ├── font_linux.c
│ │ │ ├── font_nosupport.c
│ │ │ └── font_windows.c
│ │ ├── gamepad/
│ │ │ ├── gamepad.h
│ │ │ ├── gamepad_apple.c
│ │ │ ├── gamepad_bsd.c
│ │ │ ├── gamepad_haiku.cpp
│ │ │ ├── gamepad_linux.c
│ │ │ ├── gamepad_nosupport.c
│ │ │ └── gamepad_windows.c
│ │ ├── gpu/
│ │ │ ├── adl.h
│ │ │ ├── asahi_drm.h
│ │ │ ├── gpu.c
│ │ │ ├── gpu.h
│ │ │ ├── gpu_amd.c
│ │ │ ├── gpu_android.c
│ │ │ ├── gpu_apple.c
│ │ │ ├── gpu_apple.m
│ │ │ ├── gpu_bsd.c
│ │ │ ├── gpu_driver_specific.h
│ │ │ ├── gpu_drm.c
│ │ │ ├── gpu_gnu.c
│ │ │ ├── gpu_haiku.c
│ │ │ ├── gpu_intel.c
│ │ │ ├── gpu_linux.c
│ │ │ ├── gpu_mthreads.c
│ │ │ ├── gpu_nbsd.c
│ │ │ ├── gpu_nosupport.c
│ │ │ ├── gpu_nvidia.c
│ │ │ ├── gpu_obsd.c
│ │ │ ├── gpu_pci.c
│ │ │ ├── gpu_sunos.c
│ │ │ ├── gpu_windows.c
│ │ │ ├── gpu_wsl.cpp
│ │ │ ├── igcl.h
│ │ │ ├── intel_drm.h
│ │ │ ├── mtml.h
│ │ │ ├── nvapi.h
│ │ │ └── nvml.h
│ │ ├── gtk_qt/
│ │ │ ├── gtk.c
│ │ │ ├── gtk_qt.h
│ │ │ └── qt.c
│ │ ├── host/
│ │ │ ├── host.h
│ │ │ ├── host_android.c
│ │ │ ├── host_apple.c
│ │ │ ├── host_bsd.c
│ │ │ ├── host_linux.c
│ │ │ ├── host_mac.c
│ │ │ ├── host_nbsd.c
│ │ │ ├── host_nosupport.c
│ │ │ ├── host_obsd.c
│ │ │ └── host_windows.c
│ │ ├── icons/
│ │ │ ├── icons.h
│ │ │ ├── icons_linux.c
│ │ │ ├── icons_nosupport.c
│ │ │ └── icons_windows.c
│ │ ├── initsystem/
│ │ │ ├── initsystem.h
│ │ │ ├── initsystem_haiku.c
│ │ │ ├── initsystem_linux.c
│ │ │ └── initsystem_nosupport.c
│ │ ├── keyboard/
│ │ │ ├── keyboard.h
│ │ │ ├── keyboard_apple.c
│ │ │ ├── keyboard_bsd.c
│ │ │ ├── keyboard_haiku.cpp
│ │ │ ├── keyboard_linux.c
│ │ │ ├── keyboard_nosupport.c
│ │ │ └── keyboard_windows.c
│ │ ├── libc/
│ │ │ ├── libc.h
│ │ │ ├── libc_android.c
│ │ │ ├── libc_apple.c
│ │ │ ├── libc_bsd.c
│ │ │ ├── libc_linux.c
│ │ │ ├── libc_nosupport.c
│ │ │ └── libc_windows.cpp
│ │ ├── lm/
│ │ │ ├── lm.h
│ │ │ ├── lm_linux.c
│ │ │ └── lm_nosupport.c
│ │ ├── loadavg/
│ │ │ ├── loadavg.h
│ │ │ ├── loadavg_bsd.c
│ │ │ ├── loadavg_linux.c
│ │ │ ├── loadavg_nosupport.c
│ │ │ └── loadavg_sunos.c
│ │ ├── locale/
│ │ │ ├── locale.h
│ │ │ ├── locale_linux.c
│ │ │ └── locale_windows.c
│ │ ├── localip/
│ │ │ ├── localip.h
│ │ │ ├── localip_linux.c
│ │ │ └── localip_windows.c
│ │ ├── media/
│ │ │ ├── media.c
│ │ │ ├── media.h
│ │ │ ├── media_apple.m
│ │ │ ├── media_linux.c
│ │ │ ├── media_nosupport.c
│ │ │ ├── media_windows.c
│ │ │ ├── media_windows.dll.cpp
│ │ │ └── media_windows.dll.h
│ │ ├── memory/
│ │ │ ├── memory.h
│ │ │ ├── memory_apple.c
│ │ │ ├── memory_bsd.c
│ │ │ ├── memory_haiku.c
│ │ │ ├── memory_linux.c
│ │ │ ├── memory_nbsd.c
│ │ │ ├── memory_nosupport.c
│ │ │ ├── memory_obsd.c
│ │ │ ├── memory_sunos.c
│ │ │ └── memory_windows.c
│ │ ├── mouse/
│ │ │ ├── mouse.h
│ │ │ ├── mouse_apple.c
│ │ │ ├── mouse_bsd.c
│ │ │ ├── mouse_haiku.cpp
│ │ │ ├── mouse_linux.c
│ │ │ ├── mouse_nosupport.c
│ │ │ └── mouse_windows.c
│ │ ├── netio/
│ │ │ ├── netio.c
│ │ │ ├── netio.h
│ │ │ ├── netio_apple.c
│ │ │ ├── netio_bsd.c
│ │ │ ├── netio_haiku.cpp
│ │ │ ├── netio_linux.c
│ │ │ ├── netio_nosupport.c
│ │ │ ├── netio_sunos.c
│ │ │ └── netio_windows.c
│ │ ├── opencl/
│ │ │ ├── opencl.c
│ │ │ └── opencl.h
│ │ ├── opengl/
│ │ │ ├── opengl.h
│ │ │ ├── opengl_apple.c
│ │ │ ├── opengl_haiku.cpp
│ │ │ ├── opengl_linux.c
│ │ │ ├── opengl_shared.c
│ │ │ └── opengl_windows.c
│ │ ├── os/
│ │ │ ├── os.c
│ │ │ ├── os.h
│ │ │ ├── os_android.c
│ │ │ ├── os_apple.m
│ │ │ ├── os_haiku.c
│ │ │ ├── os_linux.c
│ │ │ ├── os_nbsd.c
│ │ │ ├── os_obsd.c
│ │ │ ├── os_sunos.c
│ │ │ └── os_windows.c
│ │ ├── packages/
│ │ │ ├── packages.c
│ │ │ ├── packages.h
│ │ │ ├── packages_apple.c
│ │ │ ├── packages_bsd.c
│ │ │ ├── packages_haiku.c
│ │ │ ├── packages_linux.c
│ │ │ ├── packages_nbsd.c
│ │ │ ├── packages_nix.c
│ │ │ ├── packages_nosupport.c
│ │ │ ├── packages_obsd.c
│ │ │ ├── packages_sunos.c
│ │ │ └── packages_windows.c
│ │ ├── physicaldisk/
│ │ │ ├── physicaldisk.h
│ │ │ ├── physicaldisk_apple.c
│ │ │ ├── physicaldisk_bsd.c
│ │ │ ├── physicaldisk_haiku.c
│ │ │ ├── physicaldisk_linux.c
│ │ │ ├── physicaldisk_nosupport.c
│ │ │ ├── physicaldisk_sunos.c
│ │ │ └── physicaldisk_windows.c
│ │ ├── physicalmemory/
│ │ │ ├── physicalmemory.c
│ │ │ ├── physicalmemory.h
│ │ │ ├── physicalmemory_apple.m
│ │ │ ├── physicalmemory_linux.c
│ │ │ └── physicalmemory_nosupport.c
│ │ ├── poweradapter/
│ │ │ ├── poweradapter.h
│ │ │ ├── poweradapter_apple.c
│ │ │ ├── poweradapter_linux.c
│ │ │ └── poweradapter_nosupport.c
│ │ ├── processes/
│ │ │ ├── processes.h
│ │ │ ├── processes_bsd.c
│ │ │ ├── processes_haiku.c
│ │ │ ├── processes_linux.c
│ │ │ ├── processes_nbsd.c
│ │ │ ├── processes_nosupport.c
│ │ │ ├── processes_obsd.c
│ │ │ └── processes_windows.c
│ │ ├── publicip/
│ │ │ ├── publicip.c
│ │ │ └── publicip.h
│ │ ├── sound/
│ │ │ ├── audio_oss_sunos.h
│ │ │ ├── sound.h
│ │ │ ├── sound_apple.c
│ │ │ ├── sound_bsd.c
│ │ │ ├── sound_haiku.cpp
│ │ │ ├── sound_linux.c
│ │ │ ├── sound_nbsd.c
│ │ │ ├── sound_nosupport.c
│ │ │ ├── sound_obsd.c
│ │ │ ├── sound_sunos.c
│ │ │ └── sound_windows.cpp
│ │ ├── swap/
│ │ │ ├── swap.h
│ │ │ ├── swap_apple.c
│ │ │ ├── swap_bsd.c
│ │ │ ├── swap_haiku.c
│ │ │ ├── swap_linux.c
│ │ │ ├── swap_nosupport.c
│ │ │ ├── swap_obsd.c
│ │ │ ├── swap_sunos.c
│ │ │ └── swap_windows.c
│ │ ├── terminalfont/
│ │ │ ├── terminalfont.c
│ │ │ ├── terminalfont.h
│ │ │ ├── terminalfont_android.c
│ │ │ ├── terminalfont_apple.m
│ │ │ ├── terminalfont_linux.c
│ │ │ └── terminalfont_windows.c
│ │ ├── terminalshell/
│ │ │ ├── terminalshell.c
│ │ │ ├── terminalshell.h
│ │ │ ├── terminalshell_linux.c
│ │ │ └── terminalshell_windows.c
│ │ ├── terminalsize/
│ │ │ ├── terminalsize.h
│ │ │ ├── terminalsize_linux.c
│ │ │ └── terminalsize_windows.c
│ │ ├── terminaltheme/
│ │ │ ├── terminaltheme.c
│ │ │ └── terminaltheme.h
│ │ ├── theme/
│ │ │ ├── theme.h
│ │ │ ├── theme_apple.c
│ │ │ ├── theme_linux.c
│ │ │ ├── theme_nosupport.c
│ │ │ └── theme_windows.c
│ │ ├── tpm/
│ │ │ ├── tpm.h
│ │ │ ├── tpm_apple.c
│ │ │ ├── tpm_bsd.c
│ │ │ ├── tpm_linux.c
│ │ │ ├── tpm_nosupport.c
│ │ │ └── tpm_windows.c
│ │ ├── uptime/
│ │ │ ├── uptime.h
│ │ │ ├── uptime_bsd.c
│ │ │ ├── uptime_haiku.c
│ │ │ ├── uptime_linux.c
│ │ │ ├── uptime_sunos.c
│ │ │ └── uptime_windows.c
│ │ ├── users/
│ │ │ ├── users.h
│ │ │ ├── users_linux.c
│ │ │ ├── users_nosupport.c
│ │ │ ├── users_obsd.c
│ │ │ └── users_windows.c
│ │ ├── version/
│ │ │ ├── version.c
│ │ │ └── version.h
│ │ ├── vulkan/
│ │ │ ├── vulkan.c
│ │ │ └── vulkan.h
│ │ ├── wallpaper/
│ │ │ ├── wallpaper.h
│ │ │ ├── wallpaper_apple.m
│ │ │ ├── wallpaper_linux.c
│ │ │ ├── wallpaper_nosupport.c
│ │ │ └── wallpaper_windows.c
│ │ ├── weather/
│ │ │ ├── weather.c
│ │ │ └── weather.h
│ │ ├── wifi/
│ │ │ ├── wifi.h
│ │ │ ├── wifi_android.c
│ │ │ ├── wifi_apple.m
│ │ │ ├── wifi_bsd.c
│ │ │ ├── wifi_linux.c
│ │ │ ├── wifi_nbsd.c
│ │ │ ├── wifi_nosupport.c
│ │ │ ├── wifi_obsd.c
│ │ │ └── wifi_windows.c
│ │ ├── wm/
│ │ │ ├── wm.h
│ │ │ ├── wm_apple.m
│ │ │ ├── wm_linux.c
│ │ │ ├── wm_nosupport.c
│ │ │ └── wm_windows.c
│ │ ├── wmtheme/
│ │ │ ├── wmtheme.h
│ │ │ ├── wmtheme_apple.m
│ │ │ ├── wmtheme_linux.c
│ │ │ ├── wmtheme_nosupport.c
│ │ │ └── wmtheme_windows.c
│ │ └── zpool/
│ │ ├── libzfs_simplified.h
│ │ ├── zpool.c
│ │ └── zpool.h
│ ├── fastfetch.c
│ ├── fastfetch.h
│ ├── fastfetch_config.h.in
│ ├── fastfetch_datatext.h.in
│ ├── flashfetch.c
│ ├── logo/
│ │ ├── ascii/
│ │ │ ├── adelie.txt
│ │ │ ├── aeon.txt
│ │ │ ├── aeros.txt
│ │ │ ├── aerynos.txt
│ │ │ ├── afterglow.txt
│ │ │ ├── aix.txt
│ │ │ ├── almalinux.txt
│ │ │ ├── alpine.txt
│ │ │ ├── alpine2.txt
│ │ │ ├── alpine2_small.txt
│ │ │ ├── alpine3_small.txt
│ │ │ ├── alpine_small.txt
│ │ │ ├── alter.txt
│ │ │ ├── altlinux.txt
│ │ │ ├── amazon.txt
│ │ │ ├── amazon_linux.txt
│ │ │ ├── amiga.txt
│ │ │ ├── amogos.txt
│ │ │ ├── anarchy.txt
│ │ │ ├── android.txt
│ │ │ ├── android_small.txt
│ │ │ ├── anduinos.txt
│ │ │ ├── antergos.txt
│ │ │ ├── antix.txt
│ │ │ ├── anushos.txt
│ │ │ ├── aoscos.txt
│ │ │ ├── aoscos_old.txt
│ │ │ ├── aoscosretro.txt
│ │ │ ├── aoscosretro_small.txt
│ │ │ ├── aperture.txt
│ │ │ ├── apricity.txt
│ │ │ ├── arch.txt
│ │ │ ├── arch2.txt
│ │ │ ├── arch3.txt
│ │ │ ├── arch_old.txt
│ │ │ ├── arch_small.txt
│ │ │ ├── archbox.txt
│ │ │ ├── archcraft.txt
│ │ │ ├── archcraft2.txt
│ │ │ ├── archlabs.txt
│ │ │ ├── archstrike.txt
│ │ │ ├── arco.txt
│ │ │ ├── arco_small.txt
│ │ │ ├── arkane.txt
│ │ │ ├── armbian.txt
│ │ │ ├── armbian2.txt
│ │ │ ├── arselinux.txt
│ │ │ ├── artix.txt
│ │ │ ├── artix2.txt
│ │ │ ├── artix2_small.txt
│ │ │ ├── artix_small.txt
│ │ │ ├── arya.txt
│ │ │ ├── asahi.txt
│ │ │ ├── asahi2.txt
│ │ │ ├── aster.txt
│ │ │ ├── asteroidos.txt
│ │ │ ├── astos.txt
│ │ │ ├── astra_linux.txt
│ │ │ ├── athenaos.txt
│ │ │ ├── athenaos_old.txt
│ │ │ ├── aurora.txt
│ │ │ ├── axos.txt
│ │ │ ├── azos.txt
│ │ │ ├── bedrock.txt
│ │ │ ├── bedrock_small.txt
│ │ │ ├── biglinux.txt
│ │ │ ├── bitrig.txt
│ │ │ ├── blackarch.txt
│ │ │ ├── blackmesa.txt
│ │ │ ├── blackpanther.txt
│ │ │ ├── blag.txt
│ │ │ ├── blankon.txt
│ │ │ ├── bluelight.txt
│ │ │ ├── bodhi.txt
│ │ │ ├── bonsai.txt
│ │ │ ├── bredos.txt
│ │ │ ├── bsd.txt
│ │ │ ├── bunsenlabs.txt
│ │ │ ├── cachyos.txt
│ │ │ ├── cachyos_small.txt
│ │ │ ├── calculate.txt
│ │ │ ├── calinixos.txt
│ │ │ ├── calinixos_small.txt
│ │ │ ├── carbs.txt
│ │ │ ├── cbl_mariner.txt
│ │ │ ├── celos.txt
│ │ │ ├── center.txt
│ │ │ ├── centos.txt
│ │ │ ├── centos_small.txt
│ │ │ ├── cereus.txt
│ │ │ ├── chakra.txt
│ │ │ ├── chaletos.txt
│ │ │ ├── chapeau.txt
│ │ │ ├── chimera_linux.txt
│ │ │ ├── chonkysealos.txt
│ │ │ ├── chrom.txt
│ │ │ ├── cleanjaro.txt
│ │ │ ├── cleanjaro_small.txt
│ │ │ ├── clear_linux.txt
│ │ │ ├── clearos.txt
│ │ │ ├── clover.txt
│ │ │ ├── cobalt.txt
│ │ │ ├── codex.txt
│ │ │ ├── condres.txt
│ │ │ ├── cosmic.txt
│ │ │ ├── crux.txt
│ │ │ ├── crux_small.txt
│ │ │ ├── crystal.txt
│ │ │ ├── cucumber.txt
│ │ │ ├── cuerdos.txt
│ │ │ ├── cutefishos.txt
│ │ │ ├── cuteos.txt
│ │ │ ├── cyberos.txt
│ │ │ ├── cycledream.txt
│ │ │ ├── dahlia.txt
│ │ │ ├── darkos.txt
│ │ │ ├── debian.txt
│ │ │ ├── debian_small.txt
│ │ │ ├── deepin.txt
│ │ │ ├── desaos.txt
│ │ │ ├── devuan.txt
│ │ │ ├── devuan_small.txt
│ │ │ ├── dietpi.txt
│ │ │ ├── dracos.txt
│ │ │ ├── dragonfly.txt
│ │ │ ├── dragonfly_old.txt
│ │ │ ├── dragonfly_small.txt
│ │ │ ├── drauger.txt
│ │ │ ├── droidian.txt
│ │ │ ├── elbrus.txt
│ │ │ ├── elementary.txt
│ │ │ ├── elementary_small.txt
│ │ │ ├── elive.txt
│ │ │ ├── emmabuntus.txt
│ │ │ ├── emperoros.txt
│ │ │ ├── encryptos.txt
│ │ │ ├── endeavouros.txt
│ │ │ ├── endeavouros_small.txt
│ │ │ ├── endless.txt
│ │ │ ├── enso.txt
│ │ │ ├── eshanizedos.txt
│ │ │ ├── eurolinux.txt
│ │ │ ├── evolutionos.txt
│ │ │ ├── evolutionos_old.txt
│ │ │ ├── evolutionos_small.txt
│ │ │ ├── eweos.txt
│ │ │ ├── exherbo.txt
│ │ │ ├── exodia_predator.txt
│ │ │ ├── fastfetch.txt
│ │ │ ├── fedora.txt
│ │ │ ├── fedora2_small.txt
│ │ │ ├── fedora_coreos.txt
│ │ │ ├── fedora_kinoite.txt
│ │ │ ├── fedora_old.txt
│ │ │ ├── fedora_sericea.txt
│ │ │ ├── fedora_silverblue.txt
│ │ │ ├── fedora_small.txt
│ │ │ ├── femboyos.txt
│ │ │ ├── feren.txt
│ │ │ ├── filotimo.txt
│ │ │ ├── finnix.txt
│ │ │ ├── floflis.txt
│ │ │ ├── freebsd.txt
│ │ │ ├── freebsd_small.txt
│ │ │ ├── freemint.txt
│ │ │ ├── frugalware.txt
│ │ │ ├── funtoo.txt
│ │ │ ├── furreto.txt
│ │ │ ├── galliumos.txt
│ │ │ ├── garuda.txt
│ │ │ ├── garuda_dragon.txt
│ │ │ ├── garuda_small.txt
│ │ │ ├── gentoo.txt
│ │ │ ├── gentoo_small.txt
│ │ │ ├── ghostbsd.txt
│ │ │ ├── ghostfreak.txt
│ │ │ ├── glaucus.txt
│ │ │ ├── gnewsense.txt
│ │ │ ├── gnome.txt
│ │ │ ├── gnu.txt
│ │ │ ├── gobolinux.txt
│ │ │ ├── goldendoglinux.txt
│ │ │ ├── grapheneos.txt
│ │ │ ├── grombyang.txt
│ │ │ ├── guix.txt
│ │ │ ├── guix_small.txt
│ │ │ ├── gxde.txt
│ │ │ ├── haiku.txt
│ │ │ ├── haiku2.txt
│ │ │ ├── haiku_small.txt
│ │ │ ├── hamonikr.txt
│ │ │ ├── hardclanz.txt
│ │ │ ├── harmonyos.txt
│ │ │ ├── hash.txt
│ │ │ ├── hce.txt
│ │ │ ├── heliumos.txt
│ │ │ ├── huayra.txt
│ │ │ ├── hybrid.txt
│ │ │ ├── hydroos.txt
│ │ │ ├── hyperbola.txt
│ │ │ ├── hyperbola_small.txt
│ │ │ ├── hypros.txt
│ │ │ ├── iglunix.txt
│ │ │ ├── instantos.txt
│ │ │ ├── interix.txt
│ │ │ ├── irix.txt
│ │ │ ├── ironclad.txt
│ │ │ ├── itc.txt
│ │ │ ├── januslinux.txt
│ │ │ ├── kaisen.txt
│ │ │ ├── kali.txt
│ │ │ ├── kali_small.txt
│ │ │ ├── kalpa_desktop.txt
│ │ │ ├── kaos.txt
│ │ │ ├── kdelinux.txt
│ │ │ ├── kdeneon.txt
│ │ │ ├── kernelos.txt
│ │ │ ├── kibojoe.txt
│ │ │ ├── kiss.txt
│ │ │ ├── kiss2.txt
│ │ │ ├── kogaion.txt
│ │ │ ├── korora.txt
│ │ │ ├── krassos.txt
│ │ │ ├── kslinux.txt
│ │ │ ├── kubuntu.txt
│ │ │ ├── kylin.txt
│ │ │ ├── lainos.txt
│ │ │ ├── langitketujuh.txt
│ │ │ ├── laxeros.txt
│ │ │ ├── lede.txt
│ │ │ ├── lfs.txt
│ │ │ ├── libreelec.txt
│ │ │ ├── lilidog.txt
│ │ │ ├── lingmo.txt
│ │ │ ├── linspire.txt
│ │ │ ├── linux.txt
│ │ │ ├── linux_small.txt
│ │ │ ├── linuxlite.txt
│ │ │ ├── linuxlite_small.txt
│ │ │ ├── linuxmint.txt
│ │ │ ├── linuxmint2.txt
│ │ │ ├── linuxmint_old.txt
│ │ │ ├── linuxmint_small.txt
│ │ │ ├── live_raizo.txt
│ │ │ ├── lliurex.txt
│ │ │ ├── lmde.txt
│ │ │ ├── locos.txt
│ │ │ ├── lubuntu.txt
│ │ │ ├── lunar.txt
│ │ │ ├── macaronios.txt
│ │ │ ├── macos.txt
│ │ │ ├── macos2.txt
│ │ │ ├── macos2_small.txt
│ │ │ ├── macos3.txt
│ │ │ ├── macos_small.txt
│ │ │ ├── mageia.txt
│ │ │ ├── mageia_small.txt
│ │ │ ├── magix.txt
│ │ │ ├── magpieos.txt
│ │ │ ├── mainsailos.txt
│ │ │ ├── mainsailos_small.txt
│ │ │ ├── mandriva.txt
│ │ │ ├── manjaro.txt
│ │ │ ├── manjaro_small.txt
│ │ │ ├── massos.txt
│ │ │ ├── matuusos.txt
│ │ │ ├── maui.txt
│ │ │ ├── mauna.txt
│ │ │ ├── meowix.txt
│ │ │ ├── mer.txt
│ │ │ ├── midnightbsd.txt
│ │ │ ├── midos.txt
│ │ │ ├── midos_old.txt
│ │ │ ├── minimal.txt
│ │ │ ├── minix.txt
│ │ │ ├── miracle_linux.txt
│ │ │ ├── mos.txt
│ │ │ ├── msys2.txt
│ │ │ ├── mx.txt
│ │ │ ├── mx2.txt
│ │ │ ├── mx_small.txt
│ │ │ ├── namib.txt
│ │ │ ├── nekos.txt
│ │ │ ├── neptune.txt
│ │ │ ├── netbsd.txt
│ │ │ ├── netbsd2.txt
│ │ │ ├── netbsd_small.txt
│ │ │ ├── nethydra.txt
│ │ │ ├── netrunner.txt
│ │ │ ├── nexalinux.txt
│ │ │ ├── nitrux.txt
│ │ │ ├── nixos.txt
│ │ │ ├── nixos_old.txt
│ │ │ ├── nixos_old_small.txt
│ │ │ ├── nixos_small.txt
│ │ │ ├── nobara.txt
│ │ │ ├── nomadbsd.txt
│ │ │ ├── nuros.txt
│ │ │ ├── nurunner.txt
│ │ │ ├── nutyx.txt
│ │ │ ├── obarun.txt
│ │ │ ├── obrevenge.txt
│ │ │ ├── obsidianos.txt
│ │ │ ├── omnios.txt
│ │ │ ├── openbsd.txt
│ │ │ ├── openbsd_small.txt
│ │ │ ├── openeuler.txt
│ │ │ ├── openindiana.txt
│ │ │ ├── openkylin.txt
│ │ │ ├── openmamba.txt
│ │ │ ├── openmandriva.txt
│ │ │ ├── openstage.txt
│ │ │ ├── opensuse.txt
│ │ │ ├── opensuse_leap.txt
│ │ │ ├── opensuse_leap_old.txt
│ │ │ ├── opensuse_microos.txt
│ │ │ ├── opensuse_slowroll.txt
│ │ │ ├── opensuse_small.txt
│ │ │ ├── opensuse_tumbleweed.txt
│ │ │ ├── opensuse_tumbleweed2.txt
│ │ │ ├── opensuse_tumbleweed_old.txt
│ │ │ ├── opensuse_tumbleweed_small.txt
│ │ │ ├── openwrt.txt
│ │ │ ├── opnsense.txt
│ │ │ ├── oracle.txt
│ │ │ ├── orchid.txt
│ │ │ ├── orchid_small.txt
│ │ │ ├── oreon.txt
│ │ │ ├── os2warp.txt
│ │ │ ├── os_elbrus.txt
│ │ │ ├── osmc.txt
│ │ │ ├── pacbsd.txt
│ │ │ ├── panwah.txt
│ │ │ ├── parabola.txt
│ │ │ ├── parabola_small.txt
│ │ │ ├── parch.txt
│ │ │ ├── pardus.txt
│ │ │ ├── parrot.txt
│ │ │ ├── parsix.txt
│ │ │ ├── pcbsd.txt
│ │ │ ├── pclinuxos.txt
│ │ │ ├── pearos.txt
│ │ │ ├── pengwin.txt
│ │ │ ├── pentoo.txt
│ │ │ ├── peppermint.txt
│ │ │ ├── peropesis.txt
│ │ │ ├── phyos.txt
│ │ │ ├── pikaos.txt
│ │ │ ├── pisi.txt
│ │ │ ├── pnm_linux.txt
│ │ │ ├── pop.txt
│ │ │ ├── pop_small.txt
│ │ │ ├── porteus.txt
│ │ │ ├── postmarketos.txt
│ │ │ ├── postmarketos_small.txt
│ │ │ ├── prismlinux.txt
│ │ │ ├── prismlinux_small.txt
│ │ │ ├── proxmox.txt
│ │ │ ├── puffos.txt
│ │ │ ├── puppy.txt
│ │ │ ├── pureos.txt
│ │ │ ├── pureos_small.txt
│ │ │ ├── q4os.txt
│ │ │ ├── qts.txt
│ │ │ ├── qubes.txt
│ │ │ ├── qubyt.txt
│ │ │ ├── quibian.txt
│ │ │ ├── quirinux.txt
│ │ │ ├── radix.txt
│ │ │ ├── raspbian.txt
│ │ │ ├── raspbian_small.txt
│ │ │ ├── ravynos.txt
│ │ │ ├── rebornos.txt
│ │ │ ├── rebornos_small.txt
│ │ │ ├── redcore.txt
│ │ │ ├── redos.txt
│ │ │ ├── redos_small.txt
│ │ │ ├── redstar.txt
│ │ │ ├── refracta.txt
│ │ │ ├── regata.txt
│ │ │ ├── regolith.txt
│ │ │ ├── rengeos.txt
│ │ │ ├── rhaymos.txt
│ │ │ ├── rhel.txt
│ │ │ ├── rhel_old.txt
│ │ │ ├── rhel_small.txt
│ │ │ ├── rhino.txt
│ │ │ ├── rocky.txt
│ │ │ ├── rocky_small.txt
│ │ │ ├── rosa.txt
│ │ │ ├── sabayon.txt
│ │ │ ├── sabotage.txt
│ │ │ ├── sailfish.txt
│ │ │ ├── salentos.txt
│ │ │ ├── salientos.txt
│ │ │ ├── salix.txt
│ │ │ ├── sambabox.txt
│ │ │ ├── sasanqua.txt
│ │ │ ├── scientific.txt
│ │ │ ├── secureblue.txt
│ │ │ ├── semc.txt
│ │ │ ├── septor.txt
│ │ │ ├── serene.txt
│ │ │ ├── serpent_os.txt
│ │ │ ├── sharklinux.txt
│ │ │ ├── shastraos.txt
│ │ │ ├── shebang.txt
│ │ │ ├── siduction.txt
│ │ │ ├── skiffos.txt
│ │ │ ├── slackel.txt
│ │ │ ├── slackware.txt
│ │ │ ├── slackware_small.txt
│ │ │ ├── sleeperos.txt
│ │ │ ├── sleeperos_small.txt
│ │ │ ├── slitaz.txt
│ │ │ ├── smartos.txt
│ │ │ ├── snigdhaos.txt
│ │ │ ├── soda.txt
│ │ │ ├── solaris.txt
│ │ │ ├── solaris_small.txt
│ │ │ ├── solus.txt
│ │ │ ├── source_mage.txt
│ │ │ ├── sparky.txt
│ │ │ ├── spoinkos.txt
│ │ │ ├── star.txt
│ │ │ ├── steamdeck.txt
│ │ │ ├── steamdeck_small.txt
│ │ │ ├── steamos.txt
│ │ │ ├── stock_linux.txt
│ │ │ ├── sulin.txt
│ │ │ ├── summitos.txt
│ │ │ ├── suse.txt
│ │ │ ├── swagarch.txt
│ │ │ ├── t2.txt
│ │ │ ├── t2_small.txt
│ │ │ ├── tails.txt
│ │ │ ├── tatra.txt
│ │ │ ├── tearch.txt
│ │ │ ├── templeos.txt
│ │ │ ├── tileos.txt
│ │ │ ├── torizoncore.txt
│ │ │ ├── trisquel.txt
│ │ │ ├── truenas_scale.txt
│ │ │ ├── tuxedo_os.txt
│ │ │ ├── twister.txt
│ │ │ ├── ublinux.txt
│ │ │ ├── ublinux_small.txt
│ │ │ ├── ubuntu.txt
│ │ │ ├── ubuntu_budgie.txt
│ │ │ ├── ubuntu_cinnamon.txt
│ │ │ ├── ubuntu_gnome.txt
│ │ │ ├── ubuntu_kylin.txt
│ │ │ ├── ubuntu_mate.txt
│ │ │ ├── ubuntu_old.txt
│ │ │ ├── ubuntu_old2.txt
│ │ │ ├── ubuntu_old2_small.txt
│ │ │ ├── ubuntu_small.txt
│ │ │ ├── ubuntu_studio.txt
│ │ │ ├── ubuntu_sway.txt
│ │ │ ├── ubuntu_touch.txt
│ │ │ ├── ubuntu_unity.txt
│ │ │ ├── ultramarine.txt
│ │ │ ├── ultramarine_small.txt
│ │ │ ├── unifi.txt
│ │ │ ├── univalent.txt
│ │ │ ├── univention.txt
│ │ │ ├── unknown.txt
│ │ │ ├── uos.txt
│ │ │ ├── urukos.txt
│ │ │ ├── uwuntu.txt
│ │ │ ├── valhalla.txt
│ │ │ ├── vanilla.txt
│ │ │ ├── vanilla2.txt
│ │ │ ├── vanilla_small.txt
│ │ │ ├── venom.txt
│ │ │ ├── venom_small.txt
│ │ │ ├── vincentos.txt
│ │ │ ├── vnux.txt
│ │ │ ├── void.txt
│ │ │ ├── void2.txt
│ │ │ ├── void2_small.txt
│ │ │ ├── void_small.txt
│ │ │ ├── vzlinux.txt
│ │ │ ├── wii_linux.txt
│ │ │ ├── windows.txt
│ │ │ ├── windows_11.txt
│ │ │ ├── windows_11_small.txt
│ │ │ ├── windows_2025.txt
│ │ │ ├── windows_8.txt
│ │ │ ├── windows_95.txt
│ │ │ ├── wolfos.txt
│ │ │ ├── xcp_ng.txt
│ │ │ ├── xenia.txt
│ │ │ ├── xenia_old.txt
│ │ │ ├── xeroarch.txt
│ │ │ ├── xferience.txt
│ │ │ ├── xinux.txt
│ │ │ ├── xray_os.txt
│ │ │ ├── xubuntu.txt
│ │ │ ├── yiffos.txt
│ │ │ ├── zorin.txt
│ │ │ ├── zos.txt
│ │ │ └── zraxyl.txt
│ │ ├── builtin.c
│ │ ├── image/
│ │ │ ├── im6.c
│ │ │ ├── im7.c
│ │ │ ├── image.c
│ │ │ └── image.h
│ │ ├── logo.c
│ │ └── logo.h
│ ├── modules/
│ │ ├── battery/
│ │ │ ├── battery.c
│ │ │ ├── battery.h
│ │ │ └── option.h
│ │ ├── bios/
│ │ │ ├── bios.c
│ │ │ ├── bios.h
│ │ │ └── option.h
│ │ ├── bluetooth/
│ │ │ ├── bluetooth.c
│ │ │ ├── bluetooth.h
│ │ │ └── option.h
│ │ ├── bluetoothradio/
│ │ │ ├── bluetoothradio.c
│ │ │ ├── bluetoothradio.h
│ │ │ └── option.h
│ │ ├── board/
│ │ │ ├── board.c
│ │ │ ├── board.h
│ │ │ └── option.h
│ │ ├── bootmgr/
│ │ │ ├── bootmgr.c
│ │ │ ├── bootmgr.h
│ │ │ └── option.h
│ │ ├── break/
│ │ │ ├── break.c
│ │ │ ├── break.h
│ │ │ └── option.h
│ │ ├── brightness/
│ │ │ ├── brightness.c
│ │ │ ├── brightness.h
│ │ │ └── option.h
│ │ ├── btrfs/
│ │ │ ├── btrfs.c
│ │ │ ├── btrfs.h
│ │ │ └── option.h
│ │ ├── camera/
│ │ │ ├── camera.c
│ │ │ ├── camera.h
│ │ │ └── option.h
│ │ ├── chassis/
│ │ │ ├── chassis.c
│ │ │ ├── chassis.h
│ │ │ └── option.h
│ │ ├── colors/
│ │ │ ├── colors.c
│ │ │ ├── colors.h
│ │ │ └── option.h
│ │ ├── command/
│ │ │ ├── command.c
│ │ │ ├── command.h
│ │ │ └── option.h
│ │ ├── cpu/
│ │ │ ├── cpu.c
│ │ │ ├── cpu.h
│ │ │ └── option.h
│ │ ├── cpucache/
│ │ │ ├── cpucache.c
│ │ │ ├── cpucache.h
│ │ │ └── option.h
│ │ ├── cpuusage/
│ │ │ ├── cpuusage.c
│ │ │ ├── cpuusage.h
│ │ │ └── option.h
│ │ ├── cursor/
│ │ │ ├── cursor.c
│ │ │ ├── cursor.h
│ │ │ └── option.h
│ │ ├── custom/
│ │ │ ├── custom.c
│ │ │ ├── custom.h
│ │ │ └── option.h
│ │ ├── datetime/
│ │ │ ├── datetime.c
│ │ │ ├── datetime.h
│ │ │ └── option.h
│ │ ├── de/
│ │ │ ├── de.c
│ │ │ ├── de.h
│ │ │ └── option.h
│ │ ├── disk/
│ │ │ ├── disk.c
│ │ │ ├── disk.h
│ │ │ └── option.h
│ │ ├── diskio/
│ │ │ ├── diskio.c
│ │ │ ├── diskio.h
│ │ │ └── option.h
│ │ ├── display/
│ │ │ ├── display.c
│ │ │ ├── display.h
│ │ │ └── option.h
│ │ ├── dns/
│ │ │ ├── dns.c
│ │ │ ├── dns.h
│ │ │ └── option.h
│ │ ├── editor/
│ │ │ ├── editor.c
│ │ │ ├── editor.h
│ │ │ └── option.h
│ │ ├── font/
│ │ │ ├── font.c
│ │ │ ├── font.h
│ │ │ └── option.h
│ │ ├── gamepad/
│ │ │ ├── gamepad.c
│ │ │ ├── gamepad.h
│ │ │ └── option.h
│ │ ├── gpu/
│ │ │ ├── gpu.c
│ │ │ ├── gpu.h
│ │ │ └── option.h
│ │ ├── host/
│ │ │ ├── host.c
│ │ │ ├── host.h
│ │ │ └── option.h
│ │ ├── icons/
│ │ │ ├── icons.c
│ │ │ ├── icons.h
│ │ │ └── option.h
│ │ ├── initsystem/
│ │ │ ├── initsystem.c
│ │ │ ├── initsystem.h
│ │ │ └── option.h
│ │ ├── kernel/
│ │ │ ├── kernel.c
│ │ │ ├── kernel.h
│ │ │ └── option.h
│ │ ├── keyboard/
│ │ │ ├── keyboard.c
│ │ │ ├── keyboard.h
│ │ │ └── option.h
│ │ ├── lm/
│ │ │ ├── lm.c
│ │ │ ├── lm.h
│ │ │ └── option.h
│ │ ├── loadavg/
│ │ │ ├── loadavg.c
│ │ │ ├── loadavg.h
│ │ │ └── option.h
│ │ ├── locale/
│ │ │ ├── locale.c
│ │ │ ├── locale.h
│ │ │ └── option.h
│ │ ├── localip/
│ │ │ ├── localip.c
│ │ │ ├── localip.h
│ │ │ └── option.h
│ │ ├── logo/
│ │ │ ├── logo.c
│ │ │ ├── logo.h
│ │ │ └── option.h
│ │ ├── media/
│ │ │ ├── media.c
│ │ │ ├── media.h
│ │ │ └── option.h
│ │ ├── memory/
│ │ │ ├── memory.c
│ │ │ ├── memory.h
│ │ │ └── option.h
│ │ ├── modules.c
│ │ ├── modules.h
│ │ ├── monitor/
│ │ │ ├── monitor.c
│ │ │ ├── monitor.h
│ │ │ └── option.h
│ │ ├── mouse/
│ │ │ ├── mouse.c
│ │ │ ├── mouse.h
│ │ │ └── option.h
│ │ ├── netio/
│ │ │ ├── netio.c
│ │ │ ├── netio.h
│ │ │ └── option.h
│ │ ├── opencl/
│ │ │ ├── opencl.c
│ │ │ ├── opencl.h
│ │ │ └── option.h
│ │ ├── opengl/
│ │ │ ├── opengl.c
│ │ │ ├── opengl.h
│ │ │ └── option.h
│ │ ├── options.h
│ │ ├── os/
│ │ │ ├── option.h
│ │ │ ├── os.c
│ │ │ └── os.h
│ │ ├── packages/
│ │ │ ├── option.h
│ │ │ ├── packages.c
│ │ │ └── packages.h
│ │ ├── physicaldisk/
│ │ │ ├── option.h
│ │ │ ├── physicaldisk.c
│ │ │ └── physicaldisk.h
│ │ ├── physicalmemory/
│ │ │ ├── option.h
│ │ │ ├── physicalmemory.c
│ │ │ └── physicalmemory.h
│ │ ├── player/
│ │ │ ├── option.h
│ │ │ ├── player.c
│ │ │ └── player.h
│ │ ├── poweradapter/
│ │ │ ├── option.h
│ │ │ ├── poweradapter.c
│ │ │ └── poweradapter.h
│ │ ├── processes/
│ │ │ ├── option.h
│ │ │ ├── processes.c
│ │ │ └── processes.h
│ │ ├── publicip/
│ │ │ ├── option.h
│ │ │ ├── publicip.c
│ │ │ └── publicip.h
│ │ ├── separator/
│ │ │ ├── option.h
│ │ │ ├── separator.c
│ │ │ └── separator.h
│ │ ├── shell/
│ │ │ ├── option.h
│ │ │ ├── shell.c
│ │ │ └── shell.h
│ │ ├── sound/
│ │ │ ├── option.h
│ │ │ ├── sound.c
│ │ │ └── sound.h
│ │ ├── swap/
│ │ │ ├── option.h
│ │ │ ├── swap.c
│ │ │ └── swap.h
│ │ ├── terminal/
│ │ │ ├── option.h
│ │ │ ├── terminal.c
│ │ │ └── terminal.h
│ │ ├── terminalfont/
│ │ │ ├── option.h
│ │ │ ├── terminalfont.c
│ │ │ └── terminalfont.h
│ │ ├── terminalsize/
│ │ │ ├── option.h
│ │ │ ├── terminalsize.c
│ │ │ └── terminalsize.h
│ │ ├── terminaltheme/
│ │ │ ├── option.h
│ │ │ ├── terminaltheme.c
│ │ │ └── terminaltheme.h
│ │ ├── theme/
│ │ │ ├── option.h
│ │ │ ├── theme.c
│ │ │ └── theme.h
│ │ ├── title/
│ │ │ ├── option.h
│ │ │ ├── title.c
│ │ │ └── title.h
│ │ ├── tpm/
│ │ │ ├── option.h
│ │ │ ├── tpm.c
│ │ │ └── tpm.h
│ │ ├── uptime/
│ │ │ ├── option.h
│ │ │ ├── uptime.c
│ │ │ └── uptime.h
│ │ ├── users/
│ │ │ ├── option.h
│ │ │ ├── users.c
│ │ │ └── users.h
│ │ ├── version/
│ │ │ ├── option.h
│ │ │ ├── version.c
│ │ │ └── version.h
│ │ ├── vulkan/
│ │ │ ├── option.h
│ │ │ ├── vulkan.c
│ │ │ └── vulkan.h
│ │ ├── wallpaper/
│ │ │ ├── option.h
│ │ │ ├── wallpaper.c
│ │ │ └── wallpaper.h
│ │ ├── weather/
│ │ │ ├── option.h
│ │ │ ├── weather.c
│ │ │ └── weather.h
│ │ ├── wifi/
│ │ │ ├── option.h
│ │ │ ├── wifi.c
│ │ │ └── wifi.h
│ │ ├── wm/
│ │ │ ├── option.h
│ │ │ ├── wm.c
│ │ │ └── wm.h
│ │ ├── wmtheme/
│ │ │ ├── option.h
│ │ │ ├── wmtheme.c
│ │ │ └── wmtheme.h
│ │ └── zpool/
│ │ ├── option.h
│ │ ├── zpool.c
│ │ └── zpool.h
│ └── options/
│ ├── display.c
│ ├── display.h
│ ├── general.c
│ ├── general.h
│ ├── logo.c
│ └── logo.h
└── tests/
├── color.c
├── duration.c
├── format.c
├── list.c
├── strbuf.c
├── testlogo-hardcolors.fflogo
└── testlogo-softcolors.fflogo
Showing preview only (321K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3314 symbols across 536 files)
FILE: scripts/gen-amdgpuids.py
function main (line 5) | def main(amdgpu_ids_path: str):
FILE: scripts/gen-man.py
function main (line 183) | def main():
FILE: scripts/gen-pciids.py
class PciDeviceModel (line 5) | class PciDeviceModel:
method __init__ (line 6) | def __init__(self, id: int, name: str):
class PciVendorModel (line 10) | class PciVendorModel:
method __init__ (line 11) | def __init__(self, id: int, name: str):
function main (line 16) | def main(keep_vendor_list: set, pci_ids_path: str):
FILE: src/3rdparty/display-library/adl_defines.h
type ADLThreadingModel (line 872) | typedef enum ADLThreadingModel
type ADLPurposeCode (line 882) | enum ADLPurposeCode
type ADLAngle (line 896) | enum ADLAngle
type ADLOrientationDataType (line 907) | enum ADLOrientationDataType
type ADLPanningMode (line 916) | enum ADLPanningMode
type ADLLARGEDESKTOPTYPE (line 926) | enum ADLLARGEDESKTOPTYPE
type ADLPlatForm (line 936) | enum ADLPlatForm
type ADLGraphicCoreGeneration (line 945) | enum ADLGraphicCoreGeneration
type SLS_ImageCropType (line 1276) | typedef enum SLS_ImageCropType {
type DceSettingsType (line 1283) | typedef enum DceSettingsType {
type DpLinkRate (line 1290) | typedef enum DpLinkRate {
type ADLPXScheme (line 1325) | typedef enum ADLPXScheme
type PXScheme (line 1333) | typedef enum PXScheme
type ApplicationListType (line 1351) | enum ApplicationListType
type ADLProfilePropertyType (line 1361) | typedef enum ADLProfilePropertyType
type ADL_VIRTUALDISPLAY_TYPE (line 1373) | typedef enum ADL_VIRTUALDISPLAY_TYPE
type ADLMultiChannelSplitStateFlag (line 1635) | enum ADLMultiChannelSplitStateFlag
type ADLSampleRate (line 1646) | enum ADLSampleRate
type ADLODNControlType (line 1761) | enum ADLODNControlType
type ADLODNDPMMaskType (line 1769) | enum ADLODNDPMMaskType
type ADLODNFeatureControl (line 1777) | enum ADLODNFeatureControl
type ADLODNExtFeatureControl (line 1801) | enum ADLODNExtFeatureControl
type ADLODNExtSettingId (line 1813) | enum ADLODNExtSettingId
type ADLOD8FeatureControl (line 1836) | enum ADLOD8FeatureControl
type ADLOD8SettingId (line 1867) | typedef enum ADLOD8SettingId
type ADLSensorType (line 1929) | typedef enum ADLSensorType
type ADL_THROTTLE_NOTIFICATION (line 2010) | typedef enum ADL_THROTTLE_NOTIFICATION
type ADL_PMLOG_SENSORS (line 2017) | typedef enum ADL_PMLOG_SENSORS
type ADL_D3DKMT_HANDLE (line 2401) | typedef unsigned int ADL_D3DKMT_HANDLE;
type ADL_RAS_ERROR_INJECTION_MODE (line 2410) | typedef enum ADL_RAS_ERROR_INJECTION_MODE
type ADL_RAS_BLOCK_ID (line 2417) | typedef enum ADL_RAS_BLOCK_ID
type ADL_MEM_SUB_BLOCK_ID (line 2435) | typedef enum ADL_MEM_SUB_BLOCK_ID
type ADL_RAS_ERROR_TYPE (line 2441) | typedef enum _ADL_RAS_ERROR_TYPE
type ADL_RAS_INJECTION_METHOD (line 2461) | typedef enum ADL_RAS_INJECTION_METHOD
type ADL_DRIVER_EVENT_TYPE (line 2470) | typedef enum ADL_DRIVER_EVENT_TYPE
type ADL_UIFEATURES_GROUP (line 2479) | typedef enum ADL_UIFEATURES_GROUP
type ADL_RADEON_USB_LED_BAR_CONTROLS (line 2527) | typedef enum ADL_RADEON_USB_LED_BAR_CONTROLS
type RadeonLEDBARSupportedControl (line 2550) | typedef unsigned int RadeonLEDBARSupportedControl;
type ADL_RADEON_USB_LED_CONTROL_CONFIGS (line 2561) | typedef enum ADL_RADEON_USB_LED_CONTROL_CONFIGS
type RadeonLEDBARSupportedConfig (line 2578) | typedef unsigned int RadeonLEDBARSupportedConfig;
type ADL_USER_SETTINGS (line 2581) | typedef enum ADL_USER_SETTINGS
FILE: src/3rdparty/display-library/adl_structures.h
type AdapterInfo (line 42) | typedef struct AdapterInfo
type XScreenInfo (line 106) | typedef struct XScreenInfo
type ADLAdapterCaps (line 121) | typedef struct ADLAdapterCaps
type ADLMemoryInfo2 (line 146) | typedef struct ADLMemoryInfo2
type ADLMemoryInfo3 (line 170) | typedef struct ADLMemoryInfo3
type ADLMemoryInfoX4 (line 196) | typedef struct ADLMemoryInfoX4
type ADLvRamVendors (line 223) | enum ADLvRamVendors
type ADLGcnInfo (line 246) | typedef struct ADLGcnInfo
type ADLVirtualSegmentSettingsOutput (line 261) | typedef struct ADLVirtualSegmentSettingsOutput
type ADLChipSetInfo (line 281) | typedef struct ADLChipSetInfo
type ADLMemoryInfo (line 298) | typedef struct ADLMemoryInfo
type ADLMemoryRequired (line 315) | typedef struct ADLMemoryRequired
type ADLMemoryDisplayFeatures (line 329) | typedef struct ADLMemoryDisplayFeatures
type ADLDDCInfo (line 342) | typedef struct ADLDDCInfo
type ADLDDCInfo2 (line 377) | typedef struct ADLDDCInfo2
type ADLGamma (line 468) | typedef struct ADLGamma
type ADLCustomMode (line 484) | typedef struct ADLCustomMode
type ADLGetClocksOUT (line 506) | typedef struct ADLGetClocksOUT
type ADLDisplayConfig (line 527) | typedef struct ADLDisplayConfig
type ADLDisplayID (line 551) | typedef struct ADLDisplayID
type ADLDisplayInfo (line 580) | typedef struct ADLDisplayInfo
type ADLDisplayDPMSTInfo (line 619) | typedef struct ADLDisplayDPMSTInfo
type ADLDisplayMode (line 648) | typedef struct ADLDisplayMode
type ADLDetailedTiming (line 666) | typedef struct ADLDetailedTiming
type ADLDisplayModeInfo (line 708) | typedef struct ADLDisplayModeInfo
type ADLDisplayProperty (line 730) | typedef struct ADLDisplayProperty
type ADLClockInfo (line 753) | typedef struct ADLClockInfo
type ADLI2C (line 768) | typedef struct ADLI2C
type ADLDisplayEDIDData (line 795) | typedef struct ADLDisplayEDIDData
type ADLControllerOverlayInput (line 819) | typedef struct ADLControllerOverlayInput
type ADLAdjustmentinfo (line 838) | typedef struct ADLAdjustmentinfo
type ADLControllerOverlayInfo (line 857) | typedef struct ADLControllerOverlayInfo
type ADLGLSyncModuleID (line 874) | typedef struct ADLGLSyncModuleID
type ADLGLSyncPortCaps (line 893) | typedef struct ADLGLSyncPortCaps
type ADLGLSyncGenlockConfig (line 909) | typedef struct ADLGLSyncGenlockConfig
type ADLGlSyncPortInfo (line 937) | typedef struct ADLGlSyncPortInfo
type ADLGlSyncPortControl (line 961) | typedef struct ADLGlSyncPortControl
type ADLGlSyncMode (line 979) | typedef struct ADLGlSyncMode
type ADLGlSyncMode2 (line 997) | typedef struct ADLGlSyncMode2
type ADLInfoPacket (line 1016) | typedef struct ADLInfoPacket
type ADLAVIInfoPacket (line 1032) | typedef struct ADLAVIInfoPacket //Valid user defined data/
type ADLODClockSetting (line 1049) | typedef struct ADLODClockSetting
type ADLAdapterODClockInfo (line 1072) | typedef struct ADLAdapterODClockInfo
type ADLAdapterODClockConfig (line 1091) | typedef struct ADLAdapterODClockConfig
type ADLPMActivity (line 1110) | typedef struct ADLPMActivity
type ADLThermalControllerInfo (line 1141) | typedef struct ADLThermalControllerInfo
type ADLTemperature (line 1160) | typedef struct ADLTemperature
type ADLFanSpeedInfo (line 1175) | typedef struct ADLFanSpeedInfo
type ADLFanSpeedValue (line 1198) | typedef struct ADLFanSpeedValue
type ADLODParameterRange (line 1217) | typedef struct ADLODParameterRange
type ADLODParameters (line 1234) | typedef struct ADLODParameters
type ADLODPerformanceLevel (line 1261) | typedef struct ADLODPerformanceLevel
type ADLODPerformanceLevels (line 1278) | typedef struct ADLODPerformanceLevels
type ADLCrossfireComb (line 1294) | typedef struct ADLCrossfireComb
type ADLCrossfireInfo (line 1309) | typedef struct ADLCrossfireInfo
type ADLBiosInfo (line 1326) | typedef struct ADLBiosInfo
type ADLAdapterLocation (line 1340) | typedef struct ADLAdapterLocation
type ADLVersionsInfo (line 1356) | typedef struct ADLVersionsInfo
type ADLVersionsInfoX2 (line 1372) | typedef struct ADLVersionsInfoX2
type ADLMVPUCaps (line 1391) | typedef struct ADLMVPUCaps
type ADLMVPUStatus (line 1412) | typedef struct ADLMVPUStatus
type ADLActivatableSource (line 1433) | typedef struct ADLActivatableSource
type ADLMode (line 1454) | typedef struct ADLMode
type ADLDisplayTarget (line 1488) | typedef struct ADLDisplayTarget
type ADLBezelTransientMode (line 1509) | typedef struct tagADLBezelTransientMode
type ADLAdapterDisplayCap (line 1544) | typedef struct ADLAdapterDisplayCap
type ADLDisplayMap (line 1562) | typedef struct ADLDisplayMap
type ADLPossibleMap (line 1590) | typedef struct ADLPossibleMap
type ADLPossibleMapping (line 1612) | typedef struct ADLPossibleMapping
type ADLPossibleMapResult (line 1626) | typedef struct ADLPossibleMapResult
type ADLSLSGrid (line 1642) | typedef struct ADLSLSGrid
type ADLSLSMap (line 1669) | typedef struct ADLSLSMap
type ADLSLSOffset (line 1723) | typedef struct ADLSLSOffset
type ADLSLSMode (line 1762) | typedef struct ADLSLSMode
type ADLPossibleSLSMap (line 1789) | typedef struct ADLPossibleSLSMap
type ADLSLSTarget (line 1814) | typedef struct ADLSLSTarget
type ADLBezelOffsetSteppingSize (line 1847) | typedef struct ADLBezelOffsetSteppingSize
type ADLSLSTargetOverlap (line 1874) | typedef struct ADLSLSOverlappedMode
type ADLPXConfigCaps (line 1890) | typedef struct ADLPXConfigCaps
type ADLPxType (line 1909) | typedef enum ADLPxType
type ADLApplicationData (line 1929) | typedef struct ADLApplicationData
type ADLApplicationDataX2 (line 1947) | typedef struct ADLApplicationDataX2
type ADLApplicationDataX3 (line 1965) | typedef struct ADLApplicationDataX3
type PropertyRecord (line 1985) | typedef struct PropertyRecord
type ADLApplicationProfile (line 2003) | typedef struct ADLApplicationProfile
type ADLPowerControlInfo (line 2017) | typedef struct ADLPowerControlInfo
type ADLControllerMode (line 2033) | typedef struct ADLControllerMode
type ADLDisplayIdentifier (line 2071) | typedef struct ADLDisplayIdentifier
type ADLOD6ParameterRange (line 2092) | typedef struct ADLOD6ParameterRange
type ADLOD6Capabilities (line 2108) | typedef struct ADLOD6Capabilities
type ADLOD6PerformanceLevel (line 2141) | typedef struct ADLOD6PerformanceLevel
type ADLOD6StateInfo (line 2157) | typedef struct ADLOD6StateInfo
type ADLOD6CurrentStatus (line 2180) | typedef struct ADLOD6CurrentStatus
type ADLOD6ThermalControllerCaps (line 2210) | typedef struct ADLOD6ThermalControllerCaps
type ADLOD6FanSpeedInfo (line 2236) | typedef struct ADLOD6FanSpeedInfo
type ADLOD6FanSpeedValue (line 2257) | typedef struct ADLOD6FanSpeedValue
type ADLOD6PowerControlInfo (line 2278) | typedef struct ADLOD6PowerControlInfo
type ADLOD6VoltageControlInfo (line 2301) | typedef struct ADLOD6VoltageControlInfo
type ADLECCData (line 2322) | typedef struct ADLECCData
type ADLDisplayModeX2 (line 2352) | typedef struct ADLDisplayModeX2
type ADLAppProcessState (line 2366) | typedef enum ADLAppProcessState
type ADLAppInterceptionListType (line 2377) | typedef enum ADLAppInterceptionListType
type ADLAppInterceptionInfo (line 2384) | typedef struct ADLAppInterceptionInfo
type ADL_AP_DATABASE (line 2392) | typedef enum ADL_AP_DATABASE // same as _SHARED_AP_DATABASE in "inc/shar...
type ADLAppInterceptionInfoX2 (line 2399) | typedef struct ADLAppInterceptionInfoX2
type ADLAppInterceptionInfoX3 (line 2409) | typedef struct ADLAppInterceptionInfoX3
type ADLPropertyRecordCreate (line 2426) | typedef struct ADLPropertyRecordCreate
type ADLApplicationRecord (line 2442) | typedef struct ADLApplicationRecord
type ADLOD6CapabilitiesEx (line 2468) | typedef struct ADLOD6CapabilitiesEx
type ADLOD6StateEx (line 2496) | typedef struct ADLOD6StateEx
type ADLOD6MaxClockAdjust (line 2516) | typedef struct ADLOD6MaxClockAdjust
type ADLConnectorInfo (line 2537) | typedef struct ADLConnectorInfo
type ADLBracketSlotInfo (line 2559) | typedef struct ADLBracketSlotInfo
type ADLMSTRad (line 2575) | typedef struct ADLMSTRad
type ADLDevicePort (line 2589) | typedef struct ADLDevicePort
type ADLSupportedConnections (line 2603) | typedef struct ADLSupportedConnections
type ADLConnectionState (line 2617) | typedef struct ADLConnectionState
type ADLConnectionProperties (line 2633) | typedef struct ADLConnectionProperties
type ADLConnectionData (line 2655) | typedef struct ADLConnectionData
type ADLAdapterCapsX2 (line 2677) | typedef struct ADLAdapterCapsX2
type ADL_ERROR_RECORD_SEVERITY (line 2697) | typedef enum ADL_ERROR_RECORD_SEVERITY
type ADL_ECC_EDC_FLAG (line 2705) | typedef union _ADL_ECC_EDC_FLAG
type ADLErrorRecord (line 2721) | typedef struct ADLErrorRecord
type ADL_EDC_BLOCK_ID (line 2745) | typedef enum ADL_EDC_BLOCK_ID
type ADL_ERROR_INJECTION_MODE (line 2757) | typedef enum ADL_ERROR_INJECTION_MODE
type ADL_ERROR_PATTERN (line 2764) | typedef union _ADL_ERROR_PATTERN
type ADL_ERROR_INJECTION_DATA (line 2777) | typedef struct ADL_ERROR_INJECTION_DATA
type ADLErrorInjection (line 2789) | typedef struct ADLErrorInjection
type ADLErrorInjectionX2 (line 2795) | typedef struct ADLErrorInjectionX2
type ADLFreeSyncCap (line 2809) | typedef struct ADLFreeSyncCap
type ADLDceSettings (line 2831) | typedef struct ADLDceSettings
type ADLGraphicCoreInfo (line 2863) | typedef struct ADLGraphicCoreInfo
type ADLODNParameterRange (line 2900) | typedef struct ADLODNParameterRange
type ADLODNCapabilities (line 2920) | typedef struct ADLODNCapabilities
type ADLODNCapabilitiesX2 (line 2958) | typedef struct ADLODNCapabilitiesX2
type ADLODNPerformanceLevel (line 3004) | typedef struct ADLODNPerformanceLevel
type ADLODNPerformanceLevels (line 3021) | typedef struct ADLODNPerformanceLevels
type ADLODNFanControl (line 3039) | typedef struct ADLODNFanControl
type ADLODNPowerLimitSetting (line 3058) | typedef struct ADLODNPowerLimitSetting
type ADLODNPerformanceStatus (line 3065) | typedef struct ADLODNPerformanceStatus
type ADLODNPerformanceLevelX2 (line 3093) | typedef struct ADLODNPerformanceLevelX2
type ADLODNPerformanceLevelsX2 (line 3112) | typedef struct ADLODNPerformanceLevelsX2
type ADLODNCurrentPowerType (line 3123) | typedef enum ADLODNCurrentPowerType
type ADLODNCurrentPowerParameters (line 3132) | typedef struct ADLODNCurrentPowerParameters
type ADLODNExtSingleInitSetting (line 3140) | typedef struct ADLODNExtSingleInitSetting
type ADLOD8SingleInitSetting (line 3150) | typedef struct ADLOD8SingleInitSetting
type ADLOD8InitSetting (line 3164) | typedef struct ADLOD8InitSetting
type ADLOD8CurrentSetting (line 3177) | typedef struct ADLOD8CurrentSetting
type ADLOD8SingleSetSetting (line 3190) | typedef struct ADLOD8SingleSetSetting
type ADLOD8SetSetting (line 3197) | typedef struct ADLOD8SetSetting
type ADLSingleSensorData (line 3209) | typedef struct ADLSingleSensorData
type ADLPMLogDataOutput (line 3215) | typedef struct ADLPMLogDataOutput
type ADLPPLogSettings (line 3228) | typedef struct ADLPPLogSettings
type ADLFPSSettingsOutput (line 3247) | typedef struct ADLFPSSettingsOutput
type ADLFPSSettingsInput (line 3275) | typedef struct ADLFPSSettingsInput
type ADLPMLogSupportInfo (line 3297) | typedef struct ADLPMLogSupportInfo
type ADLPMLogStartInput (line 3311) | typedef struct ADLPMLogStartInput
type ADLPMLogData (line 3321) | typedef struct ADLPMLogData
type ADLPMLogStartOutput (line 3341) | typedef struct ADLPMLogStartOutput
type ADLPMLogSensorLimits (line 3359) | typedef struct ADLPMLogSensorLimits
type ADLRASGetErrorCountsInput (line 3371) | typedef struct ADLRASGetErrorCountsInput
type ADLRASGetErrorCountsOutput (line 3383) | typedef struct ADLRASGetErrorCountsOutput
type ADLRASGetErrorCounts (line 3397) | typedef struct ADLRASGetErrorCounts
type ADLRASResetErrorCountsInput (line 3412) | typedef struct ADLRASResetErrorCountsInput
type ADLRASResetErrorCountsOutput (line 3424) | typedef struct ADLRASResetErrorCountsOutput
type ADLRASResetErrorCounts (line 3436) | typedef struct ADLRASResetErrorCounts
type ADLRASErrorInjectonInput (line 3451) | typedef struct ADLRASErrorInjectonInput
type ADLRASErrorInjectionOutput (line 3468) | typedef struct ADLRASErrorInjectionOutput
type ADLRASErrorInjection (line 3481) | typedef struct ADLRASErrorInjection
type ADLSGApplicationInfo (line 3495) | typedef struct ADLSGApplicationInfo
type ADLPreFlipPostProcessingLUTAlgorithm (line 3521) | enum ADLPreFlipPostProcessingLUTAlgorithm
type ADLPreFlipPostProcessingInfo (line 3528) | typedef struct ADLPreFlipPostProcessingInfo
type ADL_ERROR_REASON (line 3542) | typedef struct ADL_ERROR_REASON
type ADL_ERROR_REASON2 (line 3550) | typedef struct ADL_ERROR_REASON2
type ADL_DELAG_NOTFICATION_REASON (line 3565) | typedef struct ADL_DELAG_NOTFICATION_REASON
type ADL_DELAG_SETTINGS (line 3578) | typedef struct ADL_DELAG_SETTINGS
type ADL_BOOST_NOTFICATION_REASON (line 3594) | typedef struct ADL_BOOST_NOTFICATION_REASON
type ADL_BOOST_SETTINGS (line 3607) | typedef struct ADL_BOOST_SETTINGS
type ADL_PROVSR_NOTFICATION_REASON (line 3624) | typedef struct ADL_PROVSR_NOTFICATION_REASON
type ADL_PROVSR_SETTINGS (line 3636) | typedef struct ADL_PROVSR_SETTINGS
type ADL_IMAGE_BOOST_NOTFICATION_REASON (line 3648) | typedef struct ADL_IMAGE_BOOST_NOTFICATION_REASON
type ADL_IMAGE_BOOST_SETTINGS (line 3660) | typedef struct ADL_IMAGE_BOOST_SETTINGS
type ADL_RIS_NOTFICATION_REASON (line 3674) | typedef struct ADL_RIS_NOTFICATION_REASON
type ADL_RIS_SETTINGS (line 3686) | typedef struct ADL_RIS_SETTINGS
type ADL_CHILL_NOTFICATION_REASON (line 3701) | typedef struct ADL_CHILL_NOTFICATION_REASON
type ADL_CHILL_SETTINGS (line 3715) | typedef struct ADL_CHILL_SETTINGS
type ADL_DRIVERUPSCALE_NOTFICATION_REASON (line 3732) | typedef struct ADL_DRIVERUPSCALE_NOTFICATION_REASON
type ADL_DRIVERUPSCALE_SETTINGS (line 3744) | typedef struct ADL_DRIVERUPSCALE_SETTINGS
type ADL_RADEON_LED_COLOR_CONFIG (line 3756) | typedef struct ADL_RADEON_LED_COLOR_CONFIG
type ADL_RADEON_LED_PATTERN_CONFIG_GENERIC (line 3769) | typedef struct ADL_RADEON_LED_PATTERN_CONFIG_GENERIC
type ADL_RADEON_LED_CUSTOM_GRID_LED_CONFIG (line 3786) | typedef struct ADL_RADEON_LED_CUSTOM_LED_CONFIG
type ADL_RADEON_LED_PATTERN_CONFIG (line 3798) | typedef struct ADL_RADEON_LED_PATTERN_CONFIG
type AdapterInfoX2 (line 3818) | typedef struct AdapterInfoX2
type ADLGamutReference (line 3863) | typedef struct ADLGamutReference
type ADLGamutInfo (line 3876) | typedef struct ADLGamutInfo
type ADLPoint (line 3892) | typedef struct ADLPoint
type ADLGamutCoordinates (line 3906) | typedef struct ADLGamutCoordinates
type ADLGamutData (line 3922) | typedef struct ADLGamutData
type ADLDetailedTimingX2 (line 3954) | typedef struct ADLDetailedTimingX2
type ADLDisplayModeInfoX2 (line 3996) | typedef struct ADLDisplayModeInfoX2
type ADLI2CLargePayload (line 4019) | typedef struct ADLI2CLargePayload
type ADLFeatureName (line 4048) | typedef struct ADLFeatureName
type ADLFeatureCaps (line 4058) | typedef struct ADLFeatureCaps
type ADLFeatureValues (line 4126) | typedef struct ADLFeatureValues
type ADLHDCPSettings (line 4153) | typedef struct ADLHDCPSettings
type ADLMantleAppInfo (line 4169) | typedef struct ADLMantleAppInfo
type ADLSDIData (line 4204) | typedef struct ADLSDIData
type ADL_FRTCPRO_Settings (line 4219) | typedef struct ADL_FRTCPRO_Settings
type ADL_FRTCPRO_CHANGED_REASON (line 4235) | typedef struct ADL_FRTCPRO_CHANGED_REASON
type ADL_DL_DISPLAY_MODE (line 4247) | typedef struct ADL_DL_DISPLAY_MODE
type ADLDCESupport (line 4262) | typedef union _ADLDCESupport
type ADLSmartShiftSettings (line 4279) | typedef struct ADLSmartShiftSettings
FILE: src/3rdparty/widecharwidth/widechar_width_c.h
type widechar_range (line 44) | struct widechar_range {
type widechar_range (line 50) | struct widechar_range
type widechar_range (line 55) | struct widechar_range
type widechar_range (line 62) | struct widechar_range
type widechar_range (line 90) | struct widechar_range
type widechar_range (line 421) | struct widechar_range
type widechar_range (line 427) | struct widechar_range
type widechar_range (line 505) | struct widechar_range
type widechar_range (line 688) | struct widechar_range
type widechar_range (line 1448) | struct widechar_range
type widechar_range (line 1470) | struct widechar_range
function widechar_in_table (line 1539) | static inline bool widechar_in_table(const struct widechar_range* arr, s...
function widechar_wcwidth (line 1566) | int widechar_wcwidth(uint32_t c) {
FILE: src/3rdparty/yyjson/yyjson.c
function yyjson_version (line 58) | uint32_t yyjson_version(void) {
type f32 (line 528) | typedef float f32;
type f64 (line 529) | typedef double f64;
type i8 (line 530) | typedef int8_t i8;
type u8 (line 531) | typedef uint8_t u8;
type i16 (line 532) | typedef int16_t i16;
type u16 (line 533) | typedef uint16_t u16;
type i32 (line 534) | typedef int32_t i32;
type u32 (line 535) | typedef uint32_t u32;
type i64 (line 536) | typedef int64_t i64;
type u64 (line 537) | typedef uint64_t u64;
type usize (line 538) | typedef size_t usize;
type __int128 (line 542) | __extension__ typedef __int128 i128;
type u128 (line 543) | __extension__ typedef unsigned __int128 u128;
type v16 (line 547) | typedef struct v16 { char c[2]; } v16;
type v32 (line 548) | typedef struct v32 { char c[4]; } v32;
type v64 (line 549) | typedef struct v64 { char c[8]; } v64;
type v16_uni (line 552) | typedef union v16_uni { v16 v; u16 u; } v16_uni;
type v32_uni (line 553) | typedef union v32_uni { v32 v; u32 u; } v32_uni;
type v64_uni (line 554) | typedef union v64_uni { v64 v; u64 u; } v64_uni;
function static_inline (line 567) | static_inline void byte_copy_2(void *dst, const void *src) {
function static_inline (line 576) | static_inline void byte_copy_4(void *dst, const void *src) {
function static_inline (line 585) | static_inline void byte_copy_8(void *dst, const void *src) {
function static_inline (line 594) | static_inline void byte_copy_16(void *dst, const void *src) {
function static_inline (line 603) | static_inline void byte_move_2(void *dst, const void *src) {
function static_inline (line 616) | static_inline void byte_move_4(void *dst, const void *src) {
function static_inline (line 629) | static_inline void byte_move_8(void *dst, const void *src) {
function static_inline (line 642) | static_inline void byte_move_16(void *dst, const void *src) {
function static_inline (line 659) | static_inline void byte_move_forward(void *dst, void *src, usize n) {
function static_inline (line 669) | static_inline bool byte_match_2(void *buf, const char *pat) {
function static_inline (line 682) | static_inline bool byte_match_4(void *buf, const char *pat) {
function static_inline (line 697) | static_inline u16 byte_load_2(const void *src) {
function static_inline (line 709) | static_inline u32 byte_load_3(const void *src) {
function static_inline (line 725) | static_inline u32 byte_load_4(const void *src) {
function static_inline (line 873) | static_inline bool char_is_space(u8 c) {
function static_inline (line 878) | static_inline bool char_is_space_ext(u8 c) {
function static_inline (line 883) | static_inline bool char_is_num(u8 c) {
function static_inline (line 888) | static_inline bool char_is_ascii_skip(u8 c) {
function static_inline (line 893) | static_inline bool char_is_ascii_skip_sq(u8 c) {
function static_inline (line 898) | static_inline bool char_is_trivia(u8 c) {
function static_inline (line 903) | static_inline bool char_is_eol(u8 c) {
function static_inline (line 908) | static_inline bool char_is_eol_ext(u8 c) {
function static_inline (line 913) | static_inline bool char_is_id_start(u8 c) {
function static_inline (line 918) | static_inline bool char_is_id_next(u8 c) {
function static_inline (line 923) | static_inline bool char_is_id_ascii(u8 c) {
function static_inline (line 928) | static_inline bool char_is_sign(u8 d) {
function static_inline (line 933) | static_inline bool char_is_nonzero(u8 d) {
function static_inline (line 938) | static_inline bool char_is_digit(u8 d) {
function static_inline (line 943) | static_inline bool char_is_exp(u8 d) {
function static_inline (line 948) | static_inline bool char_is_fp(u8 d) {
function static_inline (line 953) | static_inline bool char_is_digit_or_fp(u8 d) {
function static_inline (line 959) | static_inline bool char_is_ctn(u8 c) {
function static_inline (line 964) | static_inline u8 char_to_lower(u8 c) {
function static_inline (line 969) | static_inline bool is_utf8_bom(const u8 *cur) {
function static_inline (line 974) | static_inline bool is_utf16_bom(const u8 *cur) {
function static_inline (line 980) | static_inline bool is_utf32_bom(const u8 *cur) {
function static_inline (line 986) | static_inline usize ext_eol_len(const u8 *cur) {
function static_inline (line 993) | static_inline usize ext_space_len(const u8 *cur) {
function static_inline (line 1060) | static_inline bool hex_load_4(const u8 *src, u16 *dst) {
function static_inline (line 1072) | static_inline bool hex_load_2(const u8 *src, u8 *dst) {
function static_inline (line 1080) | static_inline bool char_is_hex(u8 c) {
function static_inline (line 1906) | static_inline void pow10_table_get_sig(i32 exp10, u64 *hi, u64 *lo) {
function static_inline (line 1915) | static_inline void pow10_table_get_exp(i32 exp10, i32 *exp2) {
function static_inline (line 1930) | static_inline f64 f64_from_bits(u64 u) {
function static_inline (line 1937) | static_inline u64 f64_to_bits(f64 f) {
function static_inline (line 1944) | static_inline u32 f32_to_bits(f32 f) {
function static_inline (line 1951) | static_inline u64 f64_bits_inf(bool sign) {
function static_inline (line 1962) | static_inline u64 f64_bits_nan(bool sign) {
function static_inline (line 1976) | __attribute__((__no_sanitize_undefined__))
function static_inline (line 1983) | static_inline u32 u64_lz_bits(u64 v) {
function static_inline (line 2016) | static_inline u32 u64_tz_bits(u64 v) {
function static_inline (line 2044) | static_inline void u128_mul(u64 a, u64 b, u64 *hi, u64 *lo) {
function static_inline (line 2067) | static_inline void u128_mul_add(u64 a, u64 b, u64 c, u64 *hi, u64 *lo) {
function static_inline (line 2097) | static_inline FILE *fopen_safe(const char *path, const char *mode) {
function static_inline (line 2107) | static_inline FILE *fopen_readonly(const char *path) {
function static_inline (line 2111) | static_inline FILE *fopen_writeonly(const char *path) {
function static_inline (line 2115) | static_inline usize fread_safe(void *buf, usize size, FILE *file) {
function static_inline (line 2131) | static_inline bool size_add_is_overflow(usize size, usize add) {
function static_inline (line 2136) | static_inline bool size_is_pow2(usize size) {
function static_inline (line 2141) | static_inline usize size_align_up(usize size, usize align) {
function static_inline (line 2150) | static_inline usize size_align_down(usize size, usize align) {
function static_inline (line 2159) | static_inline void *mem_align_up(void *mem, usize align) {
function default_free (line 2182) | static void default_free(void *ctx, void *ptr) {
function null_free (line 2206) | static void null_free(void *ctx, void *ptr) {
type pool_chunk (line 2223) | typedef struct pool_chunk {
type pool_ctx (line 2230) | typedef struct pool_ctx {
function static_inline (line 2237) | static_inline void pool_size_align(usize *size) {
function pool_free (line 2273) | static void pool_free(void *ctx_ptr, void *ptr) {
function yyjson_alc_pool_init (line 2346) | bool yyjson_alc_pool_init(yyjson_alc *alc, void *buf, usize size) {
type dyn_chunk (line 2382) | typedef struct dyn_chunk {
type dyn_ctx (line 2389) | typedef struct {
function static_inline (line 2395) | static_inline bool dyn_size_align(usize *size) {
function static_inline (line 2404) | static_inline void dyn_chunk_list_remove(dyn_chunk *list, dyn_chunk *chu...
function static_inline (line 2417) | static_inline void dyn_chunk_list_add(dyn_chunk *list, dyn_chunk *chunk) {
function dyn_free (line 2479) | static void dyn_free(void *ctx_ptr, void *ptr) {
function yyjson_alc (line 2494) | yyjson_alc *yyjson_alc_dyn_new(void) {
function yyjson_alc_dyn_free (line 2508) | void yyjson_alc_dyn_free(yyjson_alc *alc) {
function static_inline (line 2532) | static_inline void unsafe_yyjson_str_pool_release(yyjson_str_pool *pool,
function static_inline (line 2542) | static_inline void unsafe_yyjson_val_pool_release(yyjson_val_pool *pool,
function unsafe_yyjson_str_pool_grow (line 2552) | bool unsafe_yyjson_str_pool_grow(yyjson_str_pool *pool,
function unsafe_yyjson_val_pool_grow (line 2579) | bool unsafe_yyjson_val_pool_grow(yyjson_val_pool *pool,
function yyjson_mut_doc_set_str_pool_size (line 2606) | bool yyjson_mut_doc_set_str_pool_size(yyjson_mut_doc *doc, size_t len) {
function yyjson_mut_doc_set_val_pool_size (line 2613) | bool yyjson_mut_doc_set_val_pool_size(yyjson_mut_doc *doc, size_t count) {
function yyjson_mut_doc_free (line 2620) | void yyjson_mut_doc_free(yyjson_mut_doc *doc) {
function yyjson_mut_doc (line 2630) | yyjson_mut_doc *yyjson_mut_doc_new(const yyjson_alc *alc) {
function yyjson_mut_doc (line 2645) | yyjson_mut_doc *yyjson_doc_mut_copy(yyjson_doc *doc, const yyjson_alc *a...
function yyjson_mut_doc (line 2661) | yyjson_mut_doc *yyjson_mut_doc_mut_copy(yyjson_mut_doc *doc,
function yyjson_mut_val (line 2680) | yyjson_mut_val *yyjson_val_mut_copy(yyjson_mut_doc *m_doc,
function yyjson_mut_val (line 2746) | static yyjson_mut_val *unsafe_yyjson_mut_val_mut_copy(yyjson_mut_doc *m_...
function yyjson_mut_val (line 2792) | yyjson_mut_val *yyjson_mut_val_mut_copy(yyjson_mut_doc *doc,
function yyjson_mut_stat (line 2799) | static void yyjson_mut_stat(yyjson_mut_val *val,
function usize (line 2824) | static usize yyjson_imut_copy(yyjson_val **val_ptr, char **buf_ptr,
function yyjson_doc (line 2864) | yyjson_doc *yyjson_mut_doc_imut_copy(yyjson_mut_doc *mdoc,
function yyjson_doc (line 2870) | yyjson_doc *yyjson_mut_val_imut_copy(yyjson_mut_val *mval,
function static_inline (line 2911) | static_inline bool unsafe_yyjson_num_equals(void *lhs, void *rhs) {
function static_inline (line 2926) | static_inline bool unsafe_yyjson_str_equals(void *lhs, void *rhs) {
function unsafe_yyjson_equals (line 2933) | bool unsafe_yyjson_equals(yyjson_val *lhs, yyjson_val *rhs) {
function unsafe_yyjson_mut_equals (line 2988) | bool unsafe_yyjson_mut_equals(yyjson_mut_val *lhs, yyjson_mut_val *rhs) {
function yyjson_locate_pos (line 3043) | bool yyjson_locate_pos(const char *str, size_t len, size_t pos,
function static_inline (line 3088) | static_inline bool has_rflag(yyjson_read_flag flg, yyjson_read_flag chk,
function static_inline (line 3104) | static_inline bool read_true(u8 **ptr, yyjson_val *val) {
function static_inline (line 3115) | static_inline bool read_false(u8 **ptr, yyjson_val *val) {
function static_inline (line 3126) | static_inline bool read_null(u8 **ptr, yyjson_val *val) {
function static_inline (line 3137) | static_inline bool read_inf(u8 **ptr, u8 **pre,
function static_inline (line 3176) | static_inline bool read_nan(u8 **ptr, u8 **pre,
function static_inline (line 3204) | static_inline bool read_inf_or_nan(u8 **ptr, u8 **pre,
function static_noinline (line 3212) | static_noinline bool read_num_raw(u8 **ptr, u8 **pre, yyjson_read_flag flg,
function static_noinline (line 3296) | static_noinline bool read_num_hex(u8 **ptr, u8 **pre, yyjson_read_flag flg,
function static_noinline (line 3356) | static_noinline bool skip_trivia(u8 **ptr, u8 *eof, yyjson_read_flag flg) {
function is_truncated_utf8 (line 3409) | static bool is_truncated_utf8(u8 *cur, u8 *eof) {
function is_truncated_str (line 3449) | static bool is_truncated_str(u8 *cur, u8 *eof, const char *str,
function static_noinline (line 3466) | static_noinline bool is_truncated_end(u8 *hdr, u8 *cur, u8 *eof,
type bigint (line 3572) | typedef struct bigint {
function static_inline (line 3582) | static_inline void bigint_add_u64(bigint *big, u64 val) {
function static_inline (line 3603) | static_inline void bigint_mul_u64(bigint *big, u64 val) {
function static_inline (line 3622) | static_inline void bigint_mul_pow2(bigint *big, u32 exp) {
function static_inline (line 3650) | static_inline void bigint_mul_pow10(bigint *big, i32 exp) {
function static_inline (line 3663) | static_inline i32 bigint_cmp(bigint *a, bigint *b) {
function static_inline (line 3681) | static_inline void bigint_set_u64(bigint *big, u64 val) {
function static_noinline (line 3687) | static_noinline void bigint_set_buf(bigint *big, u64 sig, i32 *exp,
type diy_fp (line 3745) | typedef struct diy_fp {
function static_inline (line 3753) | static_inline diy_fp diy_fp_get_cached_pow10(i32 exp10) {
function static_inline (line 3763) | static_inline diy_fp diy_fp_mul(diy_fp fp, diy_fp fp2) {
function static_inline (line 3772) | static_inline u64 diy_fp_to_ieee_raw(diy_fp fp) {
function static_inline (line 3816) | static_inline bool read_num(u8 **ptr, u8 **pre, yyjson_read_flag flg,
function static_inline (line 4450) | static_inline bool read_num(u8 **ptr, u8 **pre, yyjson_read_flag flg,
function static_inline (line 4660) | static_inline bool read_uni_esc(u8 **src_ptr, u8 **dst_ptr, const char *...
function static_inline (line 4724) | static_inline bool read_str_opt(u8 quo, u8 **ptr, u8 *eof, yyjson_read_f...
function static_inline (line 5042) | static_inline bool read_str(u8 **ptr, u8 *eof, yyjson_read_flag flg,
function static_inline (line 5047) | static_inline bool read_str_con(u8 **ptr, u8 *eof, yyjson_read_flag flg,
function static_noinline (line 5052) | static_noinline bool read_str_sq(u8 **ptr, u8 *eof, yyjson_read_flag flg,
function static_noinline (line 5058) | static_noinline bool read_str_id(u8 **ptr, u8 *eof, yyjson_read_flag flg,
function static_noinline (line 5210) | static_noinline yyjson_doc *read_root_single(u8 *hdr, u8 *cur, u8 *eof,
function static_inline (line 5314) | static_inline yyjson_doc *read_root_minify(u8 *hdr, u8 *cur, u8 *eof,
function static_inline (line 5718) | static_inline yyjson_doc *read_root_pretty(u8 *hdr, u8 *cur, u8 *eof,
function yyjson_doc (line 6168) | yyjson_doc *yyjson_read_opts(char *dat, usize len,
function yyjson_doc (line 6256) | yyjson_doc *yyjson_read_file(const char *path,
function yyjson_doc (line 6284) | yyjson_doc *yyjson_read_fp(FILE *file,
type yyjson_incr_state (line 6464) | struct yyjson_incr_state {
function yyjson_incr_state (line 6481) | yyjson_incr_state *yyjson_incr_new(char *buf, size_t buf_len,
function yyjson_incr_free (line 6518) | void yyjson_incr_free(yyjson_incr_state *state) {
function yyjson_doc (line 6532) | yyjson_doc *yyjson_incr_read(yyjson_incr_state *state, size_t len,
function static_inline (line 7044) | static_inline bool has_wflag(yyjson_write_flag flg, yyjson_write_flag chk,
function static_inline (line 7094) | static_inline u8 *write_u32_len_8(u32 val, u8 *buf) {
function static_inline (line 7109) | static_inline u8 *write_u32_len_4(u32 val, u8 *buf) {
function static_inline (line 7118) | static_inline u8 *write_u32_len_1_to_8(u32 val, u8 *buf) {
function static_inline (line 7165) | static_inline u8 *write_u32_len_5_to_8(u32 val, u8 *buf) {
function static_inline (line 7197) | static_inline u8 *write_u64(u64 val, u8 *buf) {
function static_inline (line 7247) | static_inline u8 *write_u64_len_1_to_16(u64 val, u8 *buf) {
function static_inline (line 7262) | static_inline u8 *write_u64_len_1_to_17(u64 val, u8 *buf) {
function static_inline (line 7292) | static_inline u8 *write_u32_len_7_to_9_trim(u32 val, u8 *buf) {
function static_inline (line 7335) | static_inline u8 *write_u64_len_16_to_17_trim(u64 val, u8 *buf) {
function static_inline (line 7397) | static_inline u8 *write_f32_exp(i32 exp, u8 *buf) {
function static_inline (line 7408) | static_inline u8 *write_f64_exp(i32 exp, u8 *buf) {
type div_pow10_magic (line 7426) | typedef struct {
function static_inline (line 7457) | static_inline void div_pow10(u64 num, u32 exp, u64 *div, u64 *mod, u64 *...
function static_inline (line 7467) | static_inline u32 u64_round_to_odd(u64 u, u32 cp) {
function static_inline (line 7477) | static_inline u64 u128_round_to_odd(u64 hi, u64 lo, u64 cp) {
function static_inline (line 7486) | static_inline void f32_bin_to_dec(u32 sig_raw, u32 exp_raw,
function static_inline (line 7578) | static_inline void f64_bin_to_dec(u64 sig_raw, u32 exp_raw,
function static_inline (line 7689) | static_inline void f64_bin_to_dec_fast(u64 sig_raw, u32 exp_raw,
function static_inline (line 7720) | static_inline u8 *write_inf_or_nan(u8 *buf, yyjson_write_flag flg,
function static_noinline (line 7748) | static_noinline u8 *write_f32_raw(u8 *buf, u64 raw_f64,
function static_noinline (line 7875) | static_noinline u8 *write_f64_raw(u8 *buf, u64 raw, yyjson_write_flag fl...
function static_noinline (line 8000) | static_noinline u8 *write_f64_raw_fixed(u8 *buf, u64 raw, yyjson_write_f...
function static_noinline (line 8156) | static_noinline u8 *write_fp_reformat(u8 *buf, int len,
function static_noinline (line 8225) | static_noinline u8 *write_f64_raw(u8 *buf, u64 raw, yyjson_write_flag fl...
function static_noinline (line 8237) | static_noinline u8 *write_f32_raw(u8 *buf, u64 raw, yyjson_write_flag fl...
function static_noinline (line 8249) | static_noinline u8 *write_f64_raw_fixed(u8 *buf, u64 raw,
function static_inline (line 8263) | static_inline u8 *write_num(u8 *cur, yyjson_val *val, yyjson_write_flag ...
type u8 (line 8343) | typedef u8 char_enc_type;
function static_inline (line 8579) | static_inline const char_enc_type *get_enc_table_with_flag(
function static_inline (line 8597) | static_inline u8 *write_raw(u8 *cur, const u8 *raw, usize raw_len) {
function static_inline (line 8609) | static_inline u8 *write_str_noesc(u8 *cur, const u8 *str, usize str_len) {
function static_inline (line 8641) | static_inline u8 *write_str(u8 *cur, bool esc, bool inv,
function static_inline (line 8859) | static_inline u8 *write_null(u8 *cur) {
function static_inline (line 8866) | static_inline u8 *write_bool(u8 *cur, bool val) {
function static_inline (line 8879) | static_inline u8 *write_indent(u8 *cur, usize level, usize spaces) {
function write_dat_to_fp (line 8888) | static bool write_dat_to_fp(FILE *fp, u8 *dat, usize len,
function write_dat_to_file (line 8899) | static bool write_dat_to_file(const char *path, u8 *dat, usize len,
type yyjson_write_ctx (line 8930) | typedef struct yyjson_write_ctx {
function static_inline (line 8934) | static_inline void yyjson_write_ctx_set(yyjson_write_ctx *ctx,
function static_inline (line 8939) | static_inline void yyjson_write_ctx_get(yyjson_write_ctx *ctx,
function static_inline (line 8947) | static_inline u8 *yyjson_write_single(yyjson_val *val,
function static_inline (line 9053) | static_inline u8 *yyjson_write_minify(const yyjson_val *root,
function static_inline (line 9234) | static_inline u8 *yyjson_write_pretty(const yyjson_val *root,
function yyjson_val_write_file (line 9483) | bool yyjson_val_write_file(const char *path,
function yyjson_val_write_fp (line 9509) | bool yyjson_val_write_fp(FILE *fp,
function yyjson_write_file (line 9535) | bool yyjson_write_file(const char *path,
function yyjson_write_fp (line 9544) | bool yyjson_write_fp(FILE *fp,
type yyjson_mut_write_ctx (line 9559) | typedef struct yyjson_mut_write_ctx {
function static_inline (line 9564) | static_inline void yyjson_mut_write_ctx_set(yyjson_mut_write_ctx *ctx,
function static_inline (line 9571) | static_inline void yyjson_mut_write_ctx_get(yyjson_mut_write_ctx *ctx,
function static_inline (line 9581) | static_inline usize yyjson_mut_doc_estimated_val_num(
function static_inline (line 9596) | static_inline u8 *yyjson_mut_write_single(yyjson_mut_val *val,
function static_inline (line 9606) | static_inline u8 *yyjson_mut_write_minify(const yyjson_mut_val *root,
function static_inline (line 9793) | static_inline u8 *yyjson_mut_write_pretty(const yyjson_mut_val *root,
function yyjson_mut_val_write_file (line 10068) | bool yyjson_mut_val_write_file(const char *path,
function yyjson_mut_val_write_fp (line 10094) | bool yyjson_mut_val_write_fp(FILE *fp,
function yyjson_mut_write_file (line 10120) | bool yyjson_mut_write_file(const char *path,
function yyjson_mut_write_fp (line 10129) | bool yyjson_mut_write_fp(FILE *fp,
function static_inline (line 10159) | static_inline const char *ptr_next_token(const char **ptr, const char *end,
function static_inline (line 10197) | static_inline bool ptr_token_to_idx(const char *cur, usize len, usize *i...
function static_inline (line 10227) | static_inline bool ptr_token_eq(void *key,
function static_inline (line 10254) | static_inline yyjson_val *ptr_arr_get(yyjson_val *arr, const char *token,
function static_inline (line 10277) | static_inline yyjson_val *ptr_obj_get(yyjson_val *obj, const char *token,
function static_inline (line 10298) | static_inline yyjson_mut_val *ptr_mut_arr_get(yyjson_mut_val *arr,
function static_inline (line 10328) | static_inline yyjson_mut_val *ptr_mut_obj_get(yyjson_mut_val *obj,
function static_inline (line 10354) | static_inline yyjson_mut_val *ptr_new_key(const char *token,
function yyjson_val (line 10391) | yyjson_val *unsafe_yyjson_ptr_getx(yyjson_val *val,
function yyjson_mut_val (line 10415) | yyjson_mut_val *unsafe_yyjson_mut_ptr_getx(
function unsafe_yyjson_mut_ptr_putx (line 10449) | bool unsafe_yyjson_mut_ptr_putx(
function yyjson_mut_val (line 10585) | yyjson_mut_val *unsafe_yyjson_mut_ptr_replacex(
function yyjson_mut_val (line 10606) | yyjson_mut_val *unsafe_yyjson_mut_ptr_removex(
type patch_op (line 10641) | typedef enum patch_op {
function patch_op (line 10651) | static patch_op patch_op_get(yyjson_val *op) {
function yyjson_mut_val (line 10703) | yyjson_mut_val *yyjson_patch(yyjson_mut_doc *doc,
function yyjson_mut_val (line 10824) | yyjson_mut_val *yyjson_mut_patch(yyjson_mut_doc *doc,
function yyjson_mut_val (line 10961) | yyjson_mut_val *yyjson_merge_patch(yyjson_mut_doc *doc,
function yyjson_mut_val (line 11013) | yyjson_mut_val *yyjson_mut_merge_patch(yyjson_mut_doc *doc,
FILE: src/3rdparty/yyjson/yyjson.h
type __INT64_TYPE__ (line 399) | typedef __INT64_TYPE__ int64_t;
type __UINT64_TYPE__ (line 400) | typedef __UINT64_TYPE__ uint64_t;
type __int64 (line 412) | typedef __int64 int64_t;
type yyjson_type (line 519) | typedef uint8_t yyjson_type;
type yyjson_subtype (line 538) | typedef uint8_t yyjson_subtype;
type yyjson_alc (line 586) | typedef struct yyjson_alc {
type yyjson_doc (line 693) | typedef struct yyjson_doc yyjson_doc;
type yyjson_val (line 700) | typedef struct yyjson_val yyjson_val;
type yyjson_mut_doc (line 707) | typedef struct yyjson_mut_doc yyjson_mut_doc;
type yyjson_mut_val (line 714) | typedef struct yyjson_mut_val yyjson_mut_val;
type yyjson_read_flag (line 723) | typedef uint32_t yyjson_read_flag;
type yyjson_read_code (line 831) | typedef uint32_t yyjson_read_code;
type yyjson_read_err (line 879) | typedef struct yyjson_read_err {
function yyjson_api_inline (line 983) | yyjson_api_inline yyjson_doc *yyjson_read(const char *dat,
type yyjson_incr_state (line 996) | typedef struct yyjson_incr_state yyjson_incr_state;
function yyjson_api_inline (line 1090) | yyjson_api_inline size_t yyjson_read_max_memory_usage(size_t len,
function yyjson_api_inline (line 1138) | yyjson_api_inline const char *yyjson_mut_read_number(const char *dat,
type yyjson_write_flag (line 1155) | typedef uint32_t yyjson_write_flag;
type yyjson_write_code (line 1220) | typedef uint32_t yyjson_write_code;
type yyjson_write_err (line 1247) | typedef struct yyjson_write_err {
function yyjson_api_inline (line 1356) | yyjson_api_inline char *yyjson_write(const yyjson_doc *doc,
function yyjson_api_inline (line 1461) | yyjson_api_inline char *yyjson_mut_write(const yyjson_mut_doc *doc,
function yyjson_api_inline (line 1567) | yyjson_api_inline char *yyjson_val_write(const yyjson_val *val,
function yyjson_api_inline (line 1670) | yyjson_api_inline char *yyjson_mut_val_write(const yyjson_mut_val *val,
function yyjson_api_inline (line 1699) | yyjson_api_inline char *yyjson_mut_write_number(const yyjson_mut_val *val,
type yyjson_arr_iter (line 1990) | typedef struct yyjson_arr_iter {
type yyjson_obj_iter (line 2114) | typedef struct yyjson_obj_iter {
type yyjson_mut_arr_iter (line 2711) | typedef struct yyjson_mut_arr_iter {
type yyjson_mut_obj_iter (line 3537) | typedef struct yyjson_mut_obj_iter {
type yyjson_ptr_code (line 4068) | typedef uint32_t yyjson_ptr_code;
type yyjson_ptr_err (line 4092) | typedef struct yyjson_ptr_err {
type yyjson_ptr_ctx (line 4120) | typedef struct yyjson_ptr_ctx {
type yyjson_patch_code (line 4653) | typedef uint32_t yyjson_patch_code;
type yyjson_patch_err (line 4680) | typedef struct yyjson_patch_err {
type yyjson_val_uni (line 4753) | typedef union yyjson_val_uni {
type yyjson_val (line 4765) | struct yyjson_val {
type yyjson_doc (line 4770) | struct yyjson_doc {
function yyjson_api_inline (line 4804) | yyjson_api_inline bool unsafe_yyjson_is_str_noesc(const char *str, size_...
function yyjson_api_inline (line 4841) | yyjson_api_inline double unsafe_yyjson_u64_to_f64(uint64_t num) {
function yyjson_api_inline (line 4854) | yyjson_api_inline yyjson_type unsafe_yyjson_get_type(void *val) {
function yyjson_api_inline (line 4859) | yyjson_api_inline yyjson_subtype unsafe_yyjson_get_subtype(void *val) {
function yyjson_api_inline (line 4864) | yyjson_api_inline uint8_t unsafe_yyjson_get_tag(void *val) {
function yyjson_api_inline (line 4869) | yyjson_api_inline bool unsafe_yyjson_is_raw(void *val) {
function yyjson_api_inline (line 4873) | yyjson_api_inline bool unsafe_yyjson_is_null(void *val) {
function yyjson_api_inline (line 4877) | yyjson_api_inline bool unsafe_yyjson_is_bool(void *val) {
function yyjson_api_inline (line 4881) | yyjson_api_inline bool unsafe_yyjson_is_num(void *val) {
function yyjson_api_inline (line 4885) | yyjson_api_inline bool unsafe_yyjson_is_str(void *val) {
function yyjson_api_inline (line 4889) | yyjson_api_inline bool unsafe_yyjson_is_arr(void *val) {
function yyjson_api_inline (line 4893) | yyjson_api_inline bool unsafe_yyjson_is_obj(void *val) {
function yyjson_api_inline (line 4897) | yyjson_api_inline bool unsafe_yyjson_is_ctn(void *val) {
function yyjson_api_inline (line 4902) | yyjson_api_inline bool unsafe_yyjson_is_uint(void *val) {
function yyjson_api_inline (line 4907) | yyjson_api_inline bool unsafe_yyjson_is_sint(void *val) {
function yyjson_api_inline (line 4912) | yyjson_api_inline bool unsafe_yyjson_is_int(void *val) {
function yyjson_api_inline (line 4918) | yyjson_api_inline bool unsafe_yyjson_is_real(void *val) {
function yyjson_api_inline (line 4923) | yyjson_api_inline bool unsafe_yyjson_is_true(void *val) {
function yyjson_api_inline (line 4928) | yyjson_api_inline bool unsafe_yyjson_is_false(void *val) {
function yyjson_api_inline (line 4933) | yyjson_api_inline bool unsafe_yyjson_arr_is_flat(yyjson_val *val) {
function yyjson_api_inline (line 4939) | yyjson_api_inline const char *unsafe_yyjson_get_raw(void *val) {
function yyjson_api_inline (line 4943) | yyjson_api_inline bool unsafe_yyjson_get_bool(void *val) {
function yyjson_api_inline (line 4948) | yyjson_api_inline uint64_t unsafe_yyjson_get_uint(void *val) {
function yyjson_api_inline (line 4952) | yyjson_api_inline int64_t unsafe_yyjson_get_sint(void *val) {
function yyjson_api_inline (line 4956) | yyjson_api_inline int unsafe_yyjson_get_int(void *val) {
function yyjson_api_inline (line 4960) | yyjson_api_inline double unsafe_yyjson_get_real(void *val) {
function yyjson_api_inline (line 4964) | yyjson_api_inline double unsafe_yyjson_get_num(void *val) {
function yyjson_api_inline (line 4976) | yyjson_api_inline const char *unsafe_yyjson_get_str(void *val) {
function yyjson_api_inline (line 4980) | yyjson_api_inline size_t unsafe_yyjson_get_len(void *val) {
function yyjson_api_inline (line 4984) | yyjson_api_inline yyjson_val *unsafe_yyjson_get_first(yyjson_val *ctn) {
function yyjson_api_inline (line 4988) | yyjson_api_inline yyjson_val *unsafe_yyjson_get_next(yyjson_val *val) {
function yyjson_api_inline (line 4995) | yyjson_api_inline bool unsafe_yyjson_equals_strn(void *val, const char *...
function yyjson_api_inline (line 5001) | yyjson_api_inline bool unsafe_yyjson_equals_str(void *val, const char *s...
function yyjson_api_inline (line 5005) | yyjson_api_inline void unsafe_yyjson_set_type(void *val, yyjson_type type,
function yyjson_api_inline (line 5013) | yyjson_api_inline void unsafe_yyjson_set_len(void *val, size_t len) {
function yyjson_api_inline (line 5019) | yyjson_api_inline void unsafe_yyjson_set_tag(void *val, yyjson_type type,
function yyjson_api_inline (line 5027) | yyjson_api_inline void unsafe_yyjson_inc_len(void *val) {
function yyjson_api_inline (line 5033) | yyjson_api_inline void unsafe_yyjson_set_raw(void *val, const char *raw,
function yyjson_api_inline (line 5039) | yyjson_api_inline void unsafe_yyjson_set_null(void *val) {
function yyjson_api_inline (line 5043) | yyjson_api_inline void unsafe_yyjson_set_bool(void *val, bool num) {
function yyjson_api_inline (line 5048) | yyjson_api_inline void unsafe_yyjson_set_uint(void *val, uint64_t num) {
function yyjson_api_inline (line 5053) | yyjson_api_inline void unsafe_yyjson_set_sint(void *val, int64_t num) {
function yyjson_api_inline (line 5058) | yyjson_api_inline void unsafe_yyjson_set_fp_to_fixed(void *val, int prec) {
function yyjson_api_inline (line 5063) | yyjson_api_inline void unsafe_yyjson_set_fp_to_float(void *val, bool flt) {
function yyjson_api_inline (line 5069) | yyjson_api_inline void unsafe_yyjson_set_float(void *val, float num) {
function yyjson_api_inline (line 5075) | yyjson_api_inline void unsafe_yyjson_set_double(void *val, double num) {
function yyjson_api_inline (line 5080) | yyjson_api_inline void unsafe_yyjson_set_real(void *val, double num) {
function yyjson_api_inline (line 5085) | yyjson_api_inline void unsafe_yyjson_set_str_noesc(void *val, bool noesc) {
function yyjson_api_inline (line 5090) | yyjson_api_inline void unsafe_yyjson_set_strn(void *val, const char *str,
function yyjson_api_inline (line 5096) | yyjson_api_inline void unsafe_yyjson_set_str(void *val, const char *str) {
function yyjson_api_inline (line 5104) | yyjson_api_inline void unsafe_yyjson_set_arr(void *val, size_t size) {
function yyjson_api_inline (line 5108) | yyjson_api_inline void unsafe_yyjson_set_obj(void *val, size_t size) {
function yyjson_api_inline (line 5118) | yyjson_api_inline yyjson_val *yyjson_doc_get_root(yyjson_doc *doc) {
function yyjson_api_inline (line 5122) | yyjson_api_inline size_t yyjson_doc_get_read_size(yyjson_doc *doc) {
function yyjson_api_inline (line 5126) | yyjson_api_inline size_t yyjson_doc_get_val_count(yyjson_doc *doc) {
function yyjson_api_inline (line 5130) | yyjson_api_inline void yyjson_doc_free(yyjson_doc *doc) {
function yyjson_api_inline (line 5145) | yyjson_api_inline bool yyjson_is_raw(yyjson_val *val) {
function yyjson_api_inline (line 5149) | yyjson_api_inline bool yyjson_is_null(yyjson_val *val) {
function yyjson_api_inline (line 5153) | yyjson_api_inline bool yyjson_is_true(yyjson_val *val) {
function yyjson_api_inline (line 5157) | yyjson_api_inline bool yyjson_is_false(yyjson_val *val) {
function yyjson_api_inline (line 5161) | yyjson_api_inline bool yyjson_is_bool(yyjson_val *val) {
function yyjson_api_inline (line 5165) | yyjson_api_inline bool yyjson_is_uint(yyjson_val *val) {
function yyjson_api_inline (line 5169) | yyjson_api_inline bool yyjson_is_sint(yyjson_val *val) {
function yyjson_api_inline (line 5173) | yyjson_api_inline bool yyjson_is_int(yyjson_val *val) {
function yyjson_api_inline (line 5177) | yyjson_api_inline bool yyjson_is_real(yyjson_val *val) {
function yyjson_api_inline (line 5181) | yyjson_api_inline bool yyjson_is_num(yyjson_val *val) {
function yyjson_api_inline (line 5185) | yyjson_api_inline bool yyjson_is_str(yyjson_val *val) {
function yyjson_api_inline (line 5189) | yyjson_api_inline bool yyjson_is_arr(yyjson_val *val) {
function yyjson_api_inline (line 5193) | yyjson_api_inline bool yyjson_is_obj(yyjson_val *val) {
function yyjson_api_inline (line 5197) | yyjson_api_inline bool yyjson_is_ctn(yyjson_val *val) {
function yyjson_api_inline (line 5207) | yyjson_api_inline yyjson_type yyjson_get_type(yyjson_val *val) {
function yyjson_api_inline (line 5211) | yyjson_api_inline yyjson_subtype yyjson_get_subtype(yyjson_val *val) {
function yyjson_api_inline (line 5215) | yyjson_api_inline uint8_t yyjson_get_tag(yyjson_val *val) {
function yyjson_api_inline (line 5219) | yyjson_api_inline const char *yyjson_get_type_desc(yyjson_val *val) {
function yyjson_api_inline (line 5236) | yyjson_api_inline const char *yyjson_get_raw(yyjson_val *val) {
function yyjson_api_inline (line 5240) | yyjson_api_inline bool yyjson_get_bool(yyjson_val *val) {
function yyjson_api_inline (line 5244) | yyjson_api_inline uint64_t yyjson_get_uint(yyjson_val *val) {
function yyjson_api_inline (line 5248) | yyjson_api_inline int64_t yyjson_get_sint(yyjson_val *val) {
function yyjson_api_inline (line 5252) | yyjson_api_inline int yyjson_get_int(yyjson_val *val) {
function yyjson_api_inline (line 5256) | yyjson_api_inline double yyjson_get_real(yyjson_val *val) {
function yyjson_api_inline (line 5260) | yyjson_api_inline double yyjson_get_num(yyjson_val *val) {
function yyjson_api_inline (line 5264) | yyjson_api_inline const char *yyjson_get_str(yyjson_val *val) {
function yyjson_api_inline (line 5268) | yyjson_api_inline size_t yyjson_get_len(yyjson_val *val) {
function yyjson_api_inline (line 5272) | yyjson_api_inline bool yyjson_equals_str(yyjson_val *val, const char *st...
function yyjson_api_inline (line 5280) | yyjson_api_inline bool yyjson_equals_strn(yyjson_val *val, const char *str,
function yyjson_api_inline (line 5291) | yyjson_api_inline bool yyjson_equals(yyjson_val *lhs, yyjson_val *rhs) {
function yyjson_api_inline (line 5296) | yyjson_api_inline bool yyjson_set_raw(yyjson_val *val,
function yyjson_api_inline (line 5303) | yyjson_api_inline bool yyjson_set_null(yyjson_val *val) {
function yyjson_api_inline (line 5309) | yyjson_api_inline bool yyjson_set_bool(yyjson_val *val, bool num) {
function yyjson_api_inline (line 5315) | yyjson_api_inline bool yyjson_set_uint(yyjson_val *val, uint64_t num) {
function yyjson_api_inline (line 5321) | yyjson_api_inline bool yyjson_set_sint(yyjson_val *val, int64_t num) {
function yyjson_api_inline (line 5327) | yyjson_api_inline bool yyjson_set_int(yyjson_val *val, int num) {
function yyjson_api_inline (line 5333) | yyjson_api_inline bool yyjson_set_float(yyjson_val *val, float num) {
function yyjson_api_inline (line 5339) | yyjson_api_inline bool yyjson_set_double(yyjson_val *val, double num) {
function yyjson_api_inline (line 5345) | yyjson_api_inline bool yyjson_set_real(yyjson_val *val, double num) {
function yyjson_api_inline (line 5351) | yyjson_api_inline bool yyjson_set_fp_to_fixed(yyjson_val *val, int prec) {
function yyjson_api_inline (line 5357) | yyjson_api_inline bool yyjson_set_fp_to_float(yyjson_val *val, bool flt) {
function yyjson_api_inline (line 5363) | yyjson_api_inline bool yyjson_set_str(yyjson_val *val, const char *str) {
function yyjson_api_inline (line 5370) | yyjson_api_inline bool yyjson_set_strn(yyjson_val *val,
function yyjson_api_inline (line 5378) | yyjson_api_inline bool yyjson_set_str_noesc(yyjson_val *val, bool noesc) {
function yyjson_api_inline (line 5390) | yyjson_api_inline size_t yyjson_arr_size(yyjson_val *arr) {
function yyjson_api_inline (line 5394) | yyjson_api_inline yyjson_val *yyjson_arr_get(yyjson_val *arr, size_t idx) {
function yyjson_api_inline (line 5409) | yyjson_api_inline yyjson_val *yyjson_arr_get_first(yyjson_val *arr) {
function yyjson_api_inline (line 5418) | yyjson_api_inline yyjson_val *yyjson_arr_get_last(yyjson_val *arr) {
function yyjson_api_inline (line 5440) | yyjson_api_inline bool yyjson_arr_iter_init(yyjson_val *arr,
function yyjson_api_inline (line 5452) | yyjson_api_inline yyjson_arr_iter yyjson_arr_iter_with(yyjson_val *arr) {
function yyjson_api_inline (line 5458) | yyjson_api_inline bool yyjson_arr_iter_has_next(yyjson_arr_iter *iter) {
function yyjson_api_inline (line 5462) | yyjson_api_inline yyjson_val *yyjson_arr_iter_next(yyjson_arr_iter *iter) {
function yyjson_api_inline (line 5479) | yyjson_api_inline size_t yyjson_obj_size(yyjson_val *obj) {
function yyjson_api_inline (line 5483) | yyjson_api_inline yyjson_val *yyjson_obj_get(yyjson_val *obj,
function yyjson_api_inline (line 5488) | yyjson_api_inline yyjson_val *yyjson_obj_getn(yyjson_val *obj,
function yyjson_api_inline (line 5508) | yyjson_api_inline bool yyjson_obj_iter_init(yyjson_val *obj,
function yyjson_api_inline (line 5521) | yyjson_api_inline yyjson_obj_iter yyjson_obj_iter_with(yyjson_val *obj) {
function yyjson_api_inline (line 5527) | yyjson_api_inline bool yyjson_obj_iter_has_next(yyjson_obj_iter *iter) {
function yyjson_api_inline (line 5531) | yyjson_api_inline yyjson_val *yyjson_obj_iter_next(yyjson_obj_iter *iter) {
function yyjson_api_inline (line 5541) | yyjson_api_inline yyjson_val *yyjson_obj_iter_get_val(yyjson_val *key) {
function yyjson_api_inline (line 5545) | yyjson_api_inline yyjson_val *yyjson_obj_iter_get(yyjson_obj_iter *iter,
function yyjson_api_inline (line 5550) | yyjson_api_inline yyjson_val *yyjson_obj_iter_getn(yyjson_obj_iter *iter,
type yyjson_mut_val (line 5590) | struct yyjson_mut_val {
type yyjson_str_chunk (line 5599) | typedef struct yyjson_str_chunk {
type yyjson_str_pool (line 5608) | typedef struct yyjson_str_pool {
type yyjson_val_chunk (line 5620) | typedef struct yyjson_val_chunk {
type yyjson_val_pool (line 5630) | typedef struct yyjson_val_pool {
type yyjson_mut_doc (line 5638) | struct yyjson_mut_doc {
function yyjson_api_inline (line 5656) | yyjson_api_inline char *unsafe_yyjson_mut_str_alc(yyjson_mut_doc *doc,
function yyjson_api_inline (line 5671) | yyjson_api_inline char *unsafe_yyjson_mut_strncpy(yyjson_mut_doc *doc,
function yyjson_api_inline (line 5680) | yyjson_api_inline yyjson_mut_val *unsafe_yyjson_mut_val(yyjson_mut_doc *...
function yyjson_api_inline (line 5701) | yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_get_root(yyjson_mut_doc...
function yyjson_api_inline (line 5705) | yyjson_api_inline void yyjson_mut_doc_set_root(yyjson_mut_doc *doc,
function yyjson_api_inline (line 5716) | yyjson_api_inline bool yyjson_mut_is_raw(yyjson_mut_val *val) {
function yyjson_api_inline (line 5720) | yyjson_api_inline bool yyjson_mut_is_null(yyjson_mut_val *val) {
function yyjson_api_inline (line 5724) | yyjson_api_inline bool yyjson_mut_is_true(yyjson_mut_val *val) {
function yyjson_api_inline (line 5728) | yyjson_api_inline bool yyjson_mut_is_false(yyjson_mut_val *val) {
function yyjson_api_inline (line 5732) | yyjson_api_inline bool yyjson_mut_is_bool(yyjson_mut_val *val) {
function yyjson_api_inline (line 5736) | yyjson_api_inline bool yyjson_mut_is_uint(yyjson_mut_val *val) {
function yyjson_api_inline (line 5740) | yyjson_api_inline bool yyjson_mut_is_sint(yyjson_mut_val *val) {
function yyjson_api_inline (line 5744) | yyjson_api_inline bool yyjson_mut_is_int(yyjson_mut_val *val) {
function yyjson_api_inline (line 5748) | yyjson_api_inline bool yyjson_mut_is_real(yyjson_mut_val *val) {
function yyjson_api_inline (line 5752) | yyjson_api_inline bool yyjson_mut_is_num(yyjson_mut_val *val) {
function yyjson_api_inline (line 5756) | yyjson_api_inline bool yyjson_mut_is_str(yyjson_mut_val *val) {
function yyjson_api_inline (line 5760) | yyjson_api_inline bool yyjson_mut_is_arr(yyjson_mut_val *val) {
function yyjson_api_inline (line 5764) | yyjson_api_inline bool yyjson_mut_is_obj(yyjson_mut_val *val) {
function yyjson_api_inline (line 5768) | yyjson_api_inline bool yyjson_mut_is_ctn(yyjson_mut_val *val) {
function yyjson_api_inline (line 5778) | yyjson_api_inline yyjson_type yyjson_mut_get_type(yyjson_mut_val *val) {
function yyjson_api_inline (line 5782) | yyjson_api_inline yyjson_subtype yyjson_mut_get_subtype(yyjson_mut_val *...
function yyjson_api_inline (line 5786) | yyjson_api_inline uint8_t yyjson_mut_get_tag(yyjson_mut_val *val) {
function yyjson_api_inline (line 5790) | yyjson_api_inline const char *yyjson_mut_get_type_desc(yyjson_mut_val *v...
function yyjson_api_inline (line 5794) | yyjson_api_inline const char *yyjson_mut_get_raw(yyjson_mut_val *val) {
function yyjson_api_inline (line 5798) | yyjson_api_inline bool yyjson_mut_get_bool(yyjson_mut_val *val) {
function yyjson_api_inline (line 5802) | yyjson_api_inline uint64_t yyjson_mut_get_uint(yyjson_mut_val *val) {
function yyjson_api_inline (line 5806) | yyjson_api_inline int64_t yyjson_mut_get_sint(yyjson_mut_val *val) {
function yyjson_api_inline (line 5810) | yyjson_api_inline int yyjson_mut_get_int(yyjson_mut_val *val) {
function yyjson_api_inline (line 5814) | yyjson_api_inline double yyjson_mut_get_real(yyjson_mut_val *val) {
function yyjson_api_inline (line 5818) | yyjson_api_inline double yyjson_mut_get_num(yyjson_mut_val *val) {
function yyjson_api_inline (line 5822) | yyjson_api_inline const char *yyjson_mut_get_str(yyjson_mut_val *val) {
function yyjson_api_inline (line 5826) | yyjson_api_inline size_t yyjson_mut_get_len(yyjson_mut_val *val) {
function yyjson_api_inline (line 5830) | yyjson_api_inline bool yyjson_mut_equals_str(yyjson_mut_val *val,
function yyjson_api_inline (line 5835) | yyjson_api_inline bool yyjson_mut_equals_strn(yyjson_mut_val *val,
function yyjson_api_inline (line 5843) | yyjson_api_inline bool yyjson_mut_equals(yyjson_mut_val *lhs,
function yyjson_api_inline (line 5849) | yyjson_api_inline bool yyjson_mut_set_raw(yyjson_mut_val *val,
function yyjson_api_inline (line 5856) | yyjson_api_inline bool yyjson_mut_set_null(yyjson_mut_val *val) {
function yyjson_api_inline (line 5862) | yyjson_api_inline bool yyjson_mut_set_bool(yyjson_mut_val *val, bool num) {
function yyjson_api_inline (line 5868) | yyjson_api_inline bool yyjson_mut_set_uint(yyjson_mut_val *val, uint64_t...
function yyjson_api_inline (line 5874) | yyjson_api_inline bool yyjson_mut_set_sint(yyjson_mut_val *val, int64_t ...
function yyjson_api_inline (line 5880) | yyjson_api_inline bool yyjson_mut_set_int(yyjson_mut_val *val, int num) {
function yyjson_api_inline (line 5886) | yyjson_api_inline bool yyjson_mut_set_float(yyjson_mut_val *val, float n...
function yyjson_api_inline (line 5892) | yyjson_api_inline bool yyjson_mut_set_double(yyjson_mut_val *val, double...
function yyjson_api_inline (line 5898) | yyjson_api_inline bool yyjson_mut_set_real(yyjson_mut_val *val, double n...
function yyjson_api_inline (line 5904) | yyjson_api_inline bool yyjson_mut_set_fp_to_fixed(yyjson_mut_val *val,
function yyjson_api_inline (line 5911) | yyjson_api_inline bool yyjson_mut_set_fp_to_float(yyjson_mut_val *val,
function yyjson_api_inline (line 5918) | yyjson_api_inline bool yyjson_mut_set_str(yyjson_mut_val *val,
function yyjson_api_inline (line 5925) | yyjson_api_inline bool yyjson_mut_set_strn(yyjson_mut_val *val,
function yyjson_api_inline (line 5932) | yyjson_api_inline bool yyjson_mut_set_str_noesc(yyjson_mut_val *val,
function yyjson_api_inline (line 5939) | yyjson_api_inline bool yyjson_mut_set_arr(yyjson_mut_val *val) {
function yyjson_api_inline (line 5945) | yyjson_api_inline bool yyjson_mut_set_obj(yyjson_mut_val *val) {
function yyjson_api_inline (line 5977) | yyjson_api_inline yyjson_mut_val *yyjson_mut_raw(yyjson_mut_doc *doc,
function yyjson_api_inline (line 5982) | yyjson_api_inline yyjson_mut_val *yyjson_mut_rawn(yyjson_mut_doc *doc,
function yyjson_api_inline (line 5988) | yyjson_api_inline yyjson_mut_val *yyjson_mut_rawcpy(yyjson_mut_doc *doc,
function yyjson_api_inline (line 5998) | yyjson_api_inline yyjson_mut_val *yyjson_mut_rawncpy(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6008) | yyjson_api_inline yyjson_mut_val *yyjson_mut_null(yyjson_mut_doc *doc) {
function yyjson_api_inline (line 6012) | yyjson_api_inline yyjson_mut_val *yyjson_mut_true(yyjson_mut_doc *doc) {
function yyjson_api_inline (line 6016) | yyjson_api_inline yyjson_mut_val *yyjson_mut_false(yyjson_mut_doc *doc) {
function yyjson_api_inline (line 6020) | yyjson_api_inline yyjson_mut_val *yyjson_mut_bool(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6025) | yyjson_api_inline yyjson_mut_val *yyjson_mut_uint(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6030) | yyjson_api_inline yyjson_mut_val *yyjson_mut_sint(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6035) | yyjson_api_inline yyjson_mut_val *yyjson_mut_int(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6040) | yyjson_api_inline yyjson_mut_val *yyjson_mut_float(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6045) | yyjson_api_inline yyjson_mut_val *yyjson_mut_double(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6050) | yyjson_api_inline yyjson_mut_val *yyjson_mut_real(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6055) | yyjson_api_inline yyjson_mut_val *yyjson_mut_str(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6060) | yyjson_api_inline yyjson_mut_val *yyjson_mut_strn(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6066) | yyjson_api_inline yyjson_mut_val *yyjson_mut_strcpy(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6079) | yyjson_api_inline yyjson_mut_val *yyjson_mut_strncpy(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6098) | yyjson_api_inline size_t yyjson_mut_arr_size(yyjson_mut_val *arr) {
function yyjson_api_inline (line 6102) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_get(yyjson_mut_val *arr,
function yyjson_api_inline (line 6112) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_get_first(
function yyjson_api_inline (line 6120) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_get_last(
function yyjson_api_inline (line 6134) | yyjson_api_inline bool yyjson_mut_arr_iter_init(yyjson_mut_val *arr,
function yyjson_api_inline (line 6148) | yyjson_api_inline yyjson_mut_arr_iter yyjson_mut_arr_iter_with(
function yyjson_api_inline (line 6155) | yyjson_api_inline bool yyjson_mut_arr_iter_has_next(yyjson_mut_arr_iter ...
function yyjson_api_inline (line 6159) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_iter_next(
function yyjson_api_inline (line 6171) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_iter_remove(
function yyjson_api_inline (line 6194) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr(yyjson_mut_doc *doc) {
function yyjson_api_inline (line 6226) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_bool(
function yyjson_api_inline (line 6233) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint(
function yyjson_api_inline (line 6238) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint(
function yyjson_api_inline (line 6243) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_real(
function yyjson_api_inline (line 6250) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint8(
function yyjson_api_inline (line 6257) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint16(
function yyjson_api_inline (line 6264) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint32(
function yyjson_api_inline (line 6271) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_sint64(
function yyjson_api_inline (line 6278) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint8(
function yyjson_api_inline (line 6285) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint16(
function yyjson_api_inline (line 6292) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint32(
function yyjson_api_inline (line 6299) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_uint64(
function yyjson_api_inline (line 6306) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_float(
function yyjson_api_inline (line 6313) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_double(
function yyjson_api_inline (line 6320) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_str(
function yyjson_api_inline (line 6328) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_strn(
function yyjson_api_inline (line 6337) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_strcpy(
function yyjson_api_inline (line 6351) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_with_strncpy(
function yyjson_api_inline (line 6374) | yyjson_api_inline bool yyjson_mut_arr_insert(yyjson_mut_val *arr,
function yyjson_api_inline (line 6405) | yyjson_api_inline bool yyjson_mut_arr_append(yyjson_mut_val *arr,
function yyjson_api_inline (line 6424) | yyjson_api_inline bool yyjson_mut_arr_prepend(yyjson_mut_val *arr,
function yyjson_api_inline (line 6443) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_replace(yyjson_mut_val ...
function yyjson_api_inline (line 6471) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_remove(yyjson_mut_val *...
function yyjson_api_inline (line 6495) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_remove_first(
function yyjson_api_inline (line 6514) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_remove_last(
function yyjson_api_inline (line 6536) | yyjson_api_inline bool yyjson_mut_arr_remove_range(yyjson_mut_val *arr,
function yyjson_api_inline (line 6558) | yyjson_api_inline bool yyjson_mut_arr_clear(yyjson_mut_val *arr) {
function yyjson_api_inline (line 6566) | yyjson_api_inline bool yyjson_mut_arr_rotate(yyjson_mut_val *arr,
function yyjson_api_inline (line 6584) | yyjson_api_inline bool yyjson_mut_arr_add_val(yyjson_mut_val *arr,
function yyjson_api_inline (line 6589) | yyjson_api_inline bool yyjson_mut_arr_add_null(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6598) | yyjson_api_inline bool yyjson_mut_arr_add_true(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6607) | yyjson_api_inline bool yyjson_mut_arr_add_false(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6616) | yyjson_api_inline bool yyjson_mut_arr_add_bool(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6626) | yyjson_api_inline bool yyjson_mut_arr_add_uint(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6636) | yyjson_api_inline bool yyjson_mut_arr_add_sint(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6646) | yyjson_api_inline bool yyjson_mut_arr_add_int(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6656) | yyjson_api_inline bool yyjson_mut_arr_add_float(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6666) | yyjson_api_inline bool yyjson_mut_arr_add_double(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6676) | yyjson_api_inline bool yyjson_mut_arr_add_real(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6686) | yyjson_api_inline bool yyjson_mut_arr_add_str(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6696) | yyjson_api_inline bool yyjson_mut_arr_add_strn(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6706) | yyjson_api_inline bool yyjson_mut_arr_add_strcpy(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6716) | yyjson_api_inline bool yyjson_mut_arr_add_strncpy(yyjson_mut_doc *doc,
function yyjson_api_inline (line 6726) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_add_arr(yyjson_mut_doc ...
function yyjson_api_inline (line 6735) | yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_add_obj(yyjson_mut_doc ...
function yyjson_api_inline (line 6750) | yyjson_api_inline size_t yyjson_mut_obj_size(yyjson_mut_val *obj) {
function yyjson_api_inline (line 6754) | yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_get(yyjson_mut_val *obj,
function yyjson_api_inline (line 6759) | yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_getn(yyjson_mut_val *obj,
function yyjson_api_inline (line 6779) | yyjson_api_inline bool yyjson_mut_obj_iter_init(yyjson_mut_val *obj,
function yyjson_api_inline (line 6793) | yyjson_api_inline yyjson_mut_obj_iter yyjson_mut_obj_iter_with(
function yyjson_api_inline (line 6800) | yyjson_api_inline bool yyjson_mut_obj_iter_has_next(yyjson_mut_obj_iter ...
function yyjson_api_inline (line 6804) | yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_next(
function yyjson_api_inline (line 6816) | yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_get_val(
function yyjson_api_inline (line 6821) | yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_remove(
function yyjson_api_inline (line 6838) | yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_get(
function yyjson_api_inline (line 6843) | yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_getn(
function yyjson_api_inline (line 6870) | yyjson_api_inline yyjson_mut_val *yyjson_mut_obj(yyjson_mut_doc *doc) {
function yyjson_api_inline (line 6881) | yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_with_str(yyjson_mut_doc...
function yyjson_api_inline (line 6912) | yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_with_kv(yyjson_mut_doc ...
function yyjson_api_inline (line 6950) | yyjson_api_inline void unsafe_yyjson_mut_obj_add(yyjson_mut_val *obj,
function yyjson_api_inline (line 6967) | yyjson_api_inline yyjson_mut_val *unsafe_yyjson_mut_obj_remove(
function yyjson_api_inline (line 6995) | yyjson_api_inline bool unsafe_yyjson_mut_obj_replace(yyjson_mut_val *obj,
function yyjson_api_inline (line 7017) | yyjson_api_inline void unsafe_yyjson_mut_obj_rotate(yyjson_mut_val *obj,
function yyjson_api_inline (line 7024) | yyjson_api_inline bool yyjson_mut_obj_add(yyjson_mut_val *obj,
function yyjson_api_inline (line 7035) | yyjson_api_inline bool yyjson_mut_obj_put(yyjson_mut_val *obj,
function yyjson_api_inline (line 7061) | yyjson_api_inline bool yyjson_mut_obj_insert(yyjson_mut_val *obj,
function yyjson_api_inline (line 7083) | yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove(yyjson_mut_val *...
function yyjson_api_inline (line 7092) | yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove_key(
function yyjson_api_inline (line 7101) | yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove_keyn(
function yyjson_api_inline (line 7109) | yyjson_api_inline bool yyjson_mut_obj_clear(yyjson_mut_val *obj) {
function yyjson_api_inline (line 7117) | yyjson_api_inline bool yyjson_mut_obj_replace(yyjson_mut_val *obj,
function yyjson_api_inline (line 7127) | yyjson_api_inline bool yyjson_mut_obj_rotate(yyjson_mut_val *obj,
function yyjson_api_inline (line 7162) | yyjson_api_inline bool yyjson_mut_obj_add_null(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7168) | yyjson_api_inline bool yyjson_mut_obj_add_true(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7174) | yyjson_api_inline bool yyjson_mut_obj_add_false(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7180) | yyjson_api_inline bool yyjson_mut_obj_add_bool(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7187) | yyjson_api_inline bool yyjson_mut_obj_add_uint(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7194) | yyjson_api_inline bool yyjson_mut_obj_add_sint(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7201) | yyjson_api_inline bool yyjson_mut_obj_add_int(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7208) | yyjson_api_inline bool yyjson_mut_obj_add_float(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7215) | yyjson_api_inline bool yyjson_mut_obj_add_double(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7222) | yyjson_api_inline bool yyjson_mut_obj_add_real(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7229) | yyjson_api_inline bool yyjson_mut_obj_add_str(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7243) | yyjson_api_inline bool yyjson_mut_obj_add_strn(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7255) | yyjson_api_inline bool yyjson_mut_obj_add_strcpy(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7268) | yyjson_api_inline bool yyjson_mut_obj_add_strncpy(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7281) | yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_add_arr(yyjson_mut_doc ...
function yyjson_api_inline (line 7289) | yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_add_obj(yyjson_mut_doc ...
function yyjson_api_inline (line 7297) | yyjson_api_inline bool yyjson_mut_obj_add_val(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7307) | yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove_str(yyjson_mut_v...
function yyjson_api_inline (line 7312) | yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_remove_strn(
function yyjson_api_inline (line 7330) | yyjson_api_inline bool yyjson_mut_obj_rename_key(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7339) | yyjson_api_inline bool yyjson_mut_obj_rename_keyn(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7411) | yyjson_api_inline yyjson_val *yyjson_doc_ptr_get(yyjson_doc *doc,
function yyjson_api_inline (line 7417) | yyjson_api_inline yyjson_val *yyjson_doc_ptr_getn(yyjson_doc *doc,
function yyjson_api_inline (line 7422) | yyjson_api_inline yyjson_val *yyjson_doc_ptr_getx(yyjson_doc *doc,
function yyjson_api_inline (line 7444) | yyjson_api_inline yyjson_val *yyjson_ptr_get(yyjson_val *val,
function yyjson_api_inline (line 7450) | yyjson_api_inline yyjson_val *yyjson_ptr_getn(yyjson_val *val,
function yyjson_api_inline (line 7455) | yyjson_api_inline yyjson_val *yyjson_ptr_getx(yyjson_val *val,
function yyjson_api_inline (line 7473) | yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_get(yyjson_mut_doc ...
function yyjson_api_inline (line 7479) | yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_getn(yyjson_mut_doc...
function yyjson_api_inline (line 7485) | yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_getx(yyjson_mut_doc...
function yyjson_api_inline (line 7511) | yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_get(yyjson_mut_val *val,
function yyjson_api_inline (line 7517) | yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_getn(yyjson_mut_val *val,
function yyjson_api_inline (line 7523) | yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_getx(yyjson_mut_val *val,
function yyjson_api_inline (line 7545) | yyjson_api_inline bool yyjson_mut_doc_ptr_add(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7552) | yyjson_api_inline bool yyjson_mut_doc_ptr_addn(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7559) | yyjson_api_inline bool yyjson_mut_doc_ptr_addx(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7606) | yyjson_api_inline bool yyjson_mut_ptr_add(yyjson_mut_val *val,
function yyjson_api_inline (line 7614) | yyjson_api_inline bool yyjson_mut_ptr_addn(yyjson_mut_val *val,
function yyjson_api_inline (line 7621) | yyjson_api_inline bool yyjson_mut_ptr_addx(yyjson_mut_val *val,
function yyjson_api_inline (line 7647) | yyjson_api_inline bool yyjson_mut_doc_ptr_set(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7654) | yyjson_api_inline bool yyjson_mut_doc_ptr_setn(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7660) | yyjson_api_inline bool yyjson_mut_doc_ptr_setx(yyjson_mut_doc *doc,
function yyjson_api_inline (line 7710) | yyjson_api_inline bool yyjson_mut_ptr_set(yyjson_mut_val *val,
function yyjson_api_inline (line 7718) | yyjson_api_inline bool yyjson_mut_ptr_setn(yyjson_mut_val *val,
function yyjson_api_inline (line 7725) | yyjson_api_inline bool yyjson_mut_ptr_setx(yyjson_mut_val *val,
function yyjson_api_inline (line 7754) | yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_replace(
function yyjson_api_inline (line 7760) | yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_replacen(
function yyjson_api_inline (line 7765) | yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_replacex(
function yyjson_api_inline (line 7798) | yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_replace(
function yyjson_api_inline (line 7804) | yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_replacen(
function yyjson_api_inline (line 7809) | yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_replacex(
function yyjson_api_inline (line 7831) | yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_remove(
function yyjson_api_inline (line 7837) | yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_removen(
function yyjson_api_inline (line 7842) | yyjson_api_inline yyjson_mut_val *yyjson_mut_doc_ptr_removex(
function yyjson_api_inline (line 7870) | yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_remove(yyjson_mut_val *...
function yyjson_api_inline (line 7876) | yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_removen(yyjson_mut_val ...
function yyjson_api_inline (line 7882) | yyjson_api_inline yyjson_mut_val *yyjson_mut_ptr_removex(yyjson_mut_val ...
function yyjson_api_inline (line 7905) | yyjson_api_inline bool yyjson_ptr_ctx_append(yyjson_ptr_ctx *ctx,
function yyjson_api_inline (line 7959) | yyjson_api_inline bool yyjson_ptr_ctx_replace(yyjson_ptr_ctx *ctx,
function yyjson_api_inline (line 7991) | yyjson_api_inline bool yyjson_ptr_ctx_remove(yyjson_ptr_ctx *ctx) {
function yyjson_api_inline (line 8033) | yyjson_api_inline bool yyjson_ptr_get_bool(
function yyjson_api_inline (line 8048) | yyjson_api_inline bool yyjson_ptr_get_uint(
function yyjson_api_inline (line 8066) | yyjson_api_inline bool yyjson_ptr_get_sint(
function yyjson_api_inline (line 8084) | yyjson_api_inline bool yyjson_ptr_get_real(
function yyjson_api_inline (line 8100) | yyjson_api_inline bool yyjson_ptr_get_num(
function yyjson_api_inline (line 8115) | yyjson_api_inline bool yyjson_ptr_get_str(
function yyjson_val (line 8134) | yyjson_val *yyjson_doc_get_pointer(yyjson_doc *doc,
function yyjson_val (line 8141) | yyjson_val *yyjson_doc_get_pointern(yyjson_doc *doc,
function yyjson_mut_val (line 8149) | yyjson_mut_val *yyjson_mut_doc_get_pointer(
function yyjson_mut_val (line 8156) | yyjson_mut_val *yyjson_mut_doc_get_pointern(
function yyjson_val (line 8163) | yyjson_val *yyjson_get_pointer(yyjson_val *val,
function yyjson_val (line 8170) | yyjson_val *yyjson_get_pointern(yyjson_val *val,
function yyjson_mut_val (line 8178) | yyjson_mut_val *yyjson_mut_get_pointer(yyjson_mut_val *val,
function yyjson_mut_val (line 8185) | yyjson_mut_val *yyjson_mut_get_pointern(yyjson_mut_val *val,
function yyjson_val (line 8193) | yyjson_val *unsafe_yyjson_get_pointer(yyjson_val *val,
function yyjson_mut_val (line 8202) | yyjson_mut_val *unsafe_yyjson_mut_get_pointer(
FILE: src/common/FFPlatform.h
type FFPlatformSysinfo (line 6) | typedef struct FFPlatformSysinfo
type FFPlatform (line 15) | typedef struct FFPlatform
FILE: src/common/FFlist.h
type FFlist (line 12) | typedef struct FFlist
function ffListInit (line 27) | static inline void ffListInit(FFlist* list, uint32_t elementSize)
function ffListInitA (line 36) | static inline void ffListInitA(FFlist* list, uint32_t elementSize, uint3...
function FFlist (line 43) | static inline FFlist ffListCreate(uint32_t elementSize)
function FF_C_NODISCARD (line 56) | FF_C_NODISCARD static inline uint32_t ffListFirstIndexComp(const FFlist*...
function ffListContains (line 67) | static inline bool ffListContains(const FFlist* list, void* compElement,...
function ffListSort (line 72) | static inline void ffListSort(FFlist* list, int(*compar)(const void*, co...
function ffListInitMove (line 78) | static inline void ffListInitMove(FFlist* list, FFlist* src)
function ffListDestroy (line 94) | static inline void ffListDestroy(FFlist* list)
function ffListClear (line 104) | static inline void ffListClear(FFlist* list)
function ffListReserve (line 109) | static inline void ffListReserve(FFlist* list, uint32_t newCapacity)
FILE: src/common/FFstrbuf.h
type FFstrbuf (line 29) | typedef struct FFstrbuf
function ffStrbufGetline (line 129) | static inline bool ffStrbufGetline(char** lineptr, size_t* n, FFstrbuf* ...
function ffStrbufGetlineRestore (line 137) | static inline void ffStrbufGetlineRestore(char** lineptr, size_t* n, FFs...
function FF_C_NODISCARD (line 155) | FF_C_NODISCARD static inline FFstrbuf ffStrbufCreateA(uint32_t allocate)
function ffStrbufInitCopy (line 162) | static inline void ffStrbufInitCopy(FFstrbuf* __restrict strbuf, const F...
function FF_C_NODISCARD (line 173) | FF_C_NODISCARD static inline FFstrbuf ffStrbufCreateCopy(const FFstrbuf*...
function ffStrbufInitMove (line 181) | static inline void ffStrbufInitMove(FFstrbuf* strbuf, FFstrbuf* src)
function FF_C_NODISCARD (line 192) | FF_C_NODISCARD static inline FFstrbuf ffStrbufCreateMove(FFstrbuf* src)
function FF_C_NODISCARD (line 199) | FF_C_NODISCARD static inline FFstrbuf ffStrbufCreateVF(const char* forma...
function ffStrbufInitF (line 207) | static inline void ffStrbufInitF(FFstrbuf* strbuf, const char* format, ...)
function FFstrbuf (line 216) | static inline FFstrbuf ffStrbufCreateF(const char* format, ...)
function ffStrbufInitMoveS (line 228) | static inline void ffStrbufInitMoveS(FFstrbuf* strbuf, char* heapStr)
function ffStrbufDestroy (line 233) | static inline void ffStrbufDestroy(FFstrbuf* strbuf)
function FF_C_NODISCARD (line 241) | FF_C_NODISCARD static inline uint32_t ffStrbufGetFree(const FFstrbuf* st...
function ffStrbufRecalculateLength (line 250) | static inline void ffStrbufRecalculateLength(FFstrbuf* strbuf)
function ffStrbufSetS (line 255) | static inline void ffStrbufSetS(FFstrbuf* strbuf, const char* value)
function ffStrbufSetJsonVal (line 265) | static inline bool ffStrbufSetJsonVal(FFstrbuf* strbuf, yyjson_val* json...
function ffStrbufAppendS (line 279) | static inline void ffStrbufAppendS(FFstrbuf* strbuf, const char* value)
function ffStrbufAppendJsonVal (line 286) | static inline bool ffStrbufAppendJsonVal(FFstrbuf* strbuf, yyjson_val* j...
function ffStrbufInit (line 296) | static inline void ffStrbufInit(FFstrbuf* strbuf)
function FF_C_NODISCARD (line 303) | FF_C_NODISCARD static inline FFstrbuf ffStrbufCreate(void)
function ffStrbufInitStatic (line 310) | static inline void ffStrbufInitStatic(FFstrbuf* strbuf, const char* str)
function FF_C_NODISCARD (line 320) | FF_C_NODISCARD static inline FFstrbuf ffStrbufCreateStatic(const char* str)
function ffStrbufSetStatic (line 327) | static inline void ffStrbufSetStatic(FFstrbuf* strbuf, const char* value)
function ffStrbufInitNS (line 338) | static inline void ffStrbufInitNS(FFstrbuf* strbuf, uint32_t length, con...
function FF_C_NODISCARD (line 344) | FF_C_NODISCARD static inline FFstrbuf ffStrbufCreateNS(uint32_t length, ...
function ffStrbufInitJsonVal (line 351) | static inline bool ffStrbufInitJsonVal(FFstrbuf* strbuf, yyjson_val* jso...
function ffStrbufInitS (line 357) | static inline void ffStrbufInitS(FFstrbuf* strbuf, const char* str)
function FF_C_NODISCARD (line 363) | FF_C_NODISCARD static inline FFstrbuf ffStrbufCreateS(const char* str)
function ffStrbufAppend (line 370) | static inline void ffStrbufAppend(FFstrbuf* __restrict strbuf, const FFs...
function ffStrbufPrepend (line 378) | static inline void ffStrbufPrepend(FFstrbuf* strbuf, FFstrbuf* value)
function ffStrbufPrependS (line 385) | static inline void ffStrbufPrependS(FFstrbuf* strbuf, const char* value)
function FF_C_NODISCARD (line 392) | static inline FF_C_NODISCARD int ffStrbufComp(const FFstrbuf* strbuf, co...
function FF_C_NODISCARD (line 398) | static inline FF_C_NODISCARD bool ffStrbufEqual(const FFstrbuf* strbuf, ...
function FF_C_NODISCARD (line 403) | static inline FF_C_NODISCARD int ffStrbufCompS(const FFstrbuf* strbuf, c...
function FF_C_NODISCARD (line 408) | static inline FF_C_NODISCARD bool ffStrbufEqualS(const FFstrbuf* strbuf,...
function FF_C_NODISCARD (line 413) | static inline FF_C_NODISCARD int ffStrbufIgnCaseCompS(const FFstrbuf* st...
function FF_C_NODISCARD (line 418) | static inline FF_C_NODISCARD bool ffStrbufIgnCaseEqualS(const FFstrbuf* ...
function FF_C_NODISCARD (line 423) | static inline FF_C_NODISCARD int ffStrbufIgnCaseComp(const FFstrbuf* str...
function FF_C_NODISCARD (line 428) | static inline FF_C_NODISCARD bool ffStrbufIgnCaseEqual(const FFstrbuf* s...
function FF_C_NODISCARD (line 433) | static inline FF_C_NODISCARD bool ffStrbufContainC(const FFstrbuf* strbu...
function FF_C_NODISCARD (line 438) | static inline FF_C_NODISCARD bool ffStrbufContainS(const FFstrbuf* strbu...
function FF_C_NODISCARD (line 443) | static inline FF_C_NODISCARD bool ffStrbufContain(const FFstrbuf* strbuf...
function FF_C_NODISCARD (line 448) | static inline FF_C_NODISCARD bool ffStrbufContainIgnCaseS(const FFstrbuf...
function FF_C_NODISCARD (line 453) | static inline FF_C_NODISCARD bool ffStrbufContainIgnCase(const FFstrbuf*...
function FF_C_NODISCARD (line 458) | static inline FF_C_NODISCARD uint32_t ffStrbufFirstIndexC(const FFstrbuf...
function FF_C_NODISCARD (line 463) | static inline FF_C_NODISCARD uint32_t ffStrbufFirstIndex(const FFstrbuf*...
function FF_C_NODISCARD (line 468) | static inline FF_C_NODISCARD uint32_t ffStrbufFirstIndexS(const FFstrbuf...
function FF_C_NODISCARD (line 473) | static inline FF_C_NODISCARD uint32_t ffStrbufLastIndexC(const FFstrbuf*...
function ffStrbufSubstrBeforeFirstC (line 481) | static inline bool ffStrbufSubstrBeforeFirstC(FFstrbuf* strbuf, char c)
function ffStrbufSubstrBeforeLastC (line 486) | static inline bool ffStrbufSubstrBeforeLastC(FFstrbuf* strbuf, char c)
function FF_C_NODISCARD (line 491) | static inline FF_C_NODISCARD bool ffStrbufStartsWithC(const FFstrbuf* st...
function FF_C_NODISCARD (line 496) | static inline FF_C_NODISCARD bool ffStrbufStartsWithSN(const FFstrbuf* s...
function FF_C_NODISCARD (line 504) | static inline FF_C_NODISCARD bool ffStrbufStartsWithS(const FFstrbuf* st...
function FF_C_NODISCARD (line 509) | static inline FF_C_NODISCARD bool ffStrbufStartsWith(const FFstrbuf* str...
function FF_C_NODISCARD (line 514) | static inline FF_C_NODISCARD bool ffStrbufStartsWithIgnCaseNS(const FFst...
function FF_C_NODISCARD (line 521) | static inline FF_C_NODISCARD bool ffStrbufStartsWithIgnCaseS(const FFstr...
function FF_C_NODISCARD (line 526) | static inline FF_C_NODISCARD bool ffStrbufStartsWithIgnCase(const FFstrb...
function FF_C_NODISCARD (line 531) | static inline FF_C_NODISCARD bool ffStrbufEndsWithC(const FFstrbuf* strb...
function FF_C_NODISCARD (line 537) | static inline FF_C_NODISCARD bool ffStrbufEndsWithNS(const FFstrbuf* str...
function FF_C_NODISCARD (line 545) | static inline FF_C_NODISCARD bool ffStrbufEndsWithS(const FFstrbuf* strb...
function FF_C_NODISCARD (line 550) | static inline FF_C_NODISCARD bool ffStrbufEndsWithFn(const FFstrbuf* str...
function FF_C_NODISCARD (line 556) | static inline FF_C_NODISCARD bool ffStrbufEndsWith(const FFstrbuf* strbu...
function FF_C_NODISCARD (line 561) | static inline FF_C_NODISCARD bool ffStrbufEndsWithIgnCaseNS(const FFstrb...
function FF_C_NODISCARD (line 568) | static inline FF_C_NODISCARD bool ffStrbufEndsWithIgnCaseS(const FFstrbu...
function FF_C_NODISCARD (line 573) | static inline FF_C_NODISCARD bool ffStrbufEndsWithIgnCase(const FFstrbuf...
function ffStrbufTrim (line 578) | static inline void ffStrbufTrim(FFstrbuf* strbuf, char c)
function ffStrbufTrimSpace (line 584) | static inline void ffStrbufTrimSpace(FFstrbuf* strbuf)
function ffStrbufMatchSeparatedS (line 590) | static inline bool ffStrbufMatchSeparatedS(const FFstrbuf* strbuf, const...
function ffStrbufMatchSeparated (line 595) | static inline bool ffStrbufMatchSeparated(const FFstrbuf* strbuf, const ...
function ffStrbufMatchSeparatedIgnCaseS (line 600) | static inline bool ffStrbufMatchSeparatedIgnCaseS(const FFstrbuf* strbuf...
function ffStrbufMatchSeparatedIgnCase (line 605) | static inline bool ffStrbufMatchSeparatedIgnCase(const FFstrbuf* strbuf,...
function ffStrbufSeparatedContainS (line 610) | static inline bool ffStrbufSeparatedContainS(const FFstrbuf* strbuf, con...
function ffStrbufSeparatedContain (line 615) | static inline bool ffStrbufSeparatedContain(const FFstrbuf* strbuf, cons...
function ffStrbufSeparatedContainIgnCaseS (line 620) | static inline bool ffStrbufSeparatedContainIgnCaseS(const FFstrbuf* strb...
function ffStrbufSeparatedContainIgnCase (line 625) | static inline bool ffStrbufSeparatedContainIgnCase(const FFstrbuf* strbu...
FILE: src/common/apple/cf_helpers.h
function CFNumberRef (line 20) | static inline CFNumberRef ffCfCreateInt(int value)
function cfReleaseWrapper (line 25) | static inline void cfReleaseWrapper(void* type)
function wrapIoObjectRelease (line 34) | static inline void wrapIoObjectRelease(io_object_t* service)
FILE: src/common/apple/smc_temps.c
type SmcKeyData_vers_t (line 13) | typedef struct
type SmcKeyData_pLimitData_t (line 22) | typedef struct
type SmcKeyData_keyInfo_t (line 31) | typedef struct
type SmcKeyData_t (line 40) | typedef struct
type SmcVal_t (line 55) | typedef struct
function smcStrtoul (line 63) | static uint32_t smcStrtoul(const char *str, int size, int base)
function smcUltostr (line 77) | static void smcUltostr(char *str, uint32_t val)
function detectTemp (line 264) | static bool detectTemp(io_connect_t conn, const char* sensor, double* sum)
type FFTempType (line 293) | enum FFTempType
FILE: src/common/apple/smc_temps.h
type FFTempValue (line 5) | typedef struct FFTempValue
type FFTempType (line 12) | enum FFTempType
type FFTempType (line 34) | enum FFTempType
FILE: src/common/argType.h
type __attribute__ (line 5) | enum __attribute__
FILE: src/common/base64.h
function FFstrbuf (line 6) | static inline FFstrbuf ffBase64EncodeStrbuf(const FFstrbuf* in)
function FFstrbuf (line 16) | static inline FFstrbuf ffBase64DecodeStrbuf(const FFstrbuf* in)
FILE: src/common/dbus.h
type FFDBusLibrary (line 9) | typedef struct FFDBusLibrary
type FFDBusData (line 25) | typedef struct FFDBusData
function DBusMessage (line 42) | static inline DBusMessage* ffDBusGetAllProperties(FFDBusData* dbus, cons...
FILE: src/common/ffdata.h
type __attribute__ (line 5) | enum __attribute__
type FFdata (line 15) | typedef struct FFdata
FILE: src/common/font.h
type FFfont (line 6) | typedef struct FFfont
function ffFontInitCopy (line 24) | static inline void ffFontInitCopy(FFfont* font, const char* name)
FILE: src/common/format.h
type FFformatarg (line 5) | typedef struct FFformatarg
FILE: src/common/haiku/version.cpp
function ffGetFileVersion (line 8) | bool ffGetFileVersion(const char* filePath, FFstrbuf* version)
FILE: src/common/impl/FFPlatform.c
function ffPlatformInit (line 6) | void ffPlatformInit(FFPlatform* platform)
function ffPlatformDestroy (line 40) | void ffPlatformDestroy(FFPlatform* platform)
function ffPlatformPathAddAbsolute (line 71) | void ffPlatformPathAddAbsolute(FFlist* dirs, const char* path)
function ffPlatformPathAddHome (line 82) | void ffPlatformPathAddHome(FFlist* dirs, const FFPlatform* platform, con...
FILE: src/common/impl/FFPlatform_unix.c
function getExePath (line 28) | static void getExePath(FFPlatform* platform)
function platformPathAddEnv (line 159) | static void platformPathAddEnv(FFlist* dirs, const char* env)
function getHomeDir (line 186) | static void getHomeDir(FFPlatform* platform, const struct passwd* pwd)
function getCacheDir (line 193) | static void getCacheDir(FFPlatform* platform)
function getConfigDirs (line 208) | static void getConfigDirs(FFPlatform* platform)
function getDataDirs (line 233) | static void getDataDirs(FFPlatform* platform)
function getUserName (line 261) | static void getUserName(FFPlatform* platform, const struct passwd* pwd)
function getHostName (line 275) | static void getHostName(FFPlatform* platform, const struct utsname* uts)
function getUserShell (line 280) | static void getUserShell(FFPlatform* platform, const struct passwd* pwd)
function getSysinfo (line 289) | static void getSysinfo(FFPlatformSysinfo* info, const struct utsname* uts)
function getCwd (line 310) | static void getCwd(FFPlatform* platform)
function ffPlatformInitImpl (line 320) | void ffPlatformInitImpl(FFPlatform* platform)
FILE: src/common/impl/FFPlatform_windows.c
function getExePath (line 17) | static void getExePath(FFPlatform* platform)
function getHomeDir (line 49) | static void getHomeDir(FFPlatform* platform)
function getCacheDir (line 67) | static void getCacheDir(FFPlatform* platform)
function platformPathAddKnownFolder (line 84) | static void platformPathAddKnownFolder(FFlist* dirs, REFKNOWNFOLDERID fo...
function platformPathAddEnvSuffix (line 98) | static void platformPathAddEnvSuffix(FFlist* dirs, const char* env, cons...
function getConfigDirs (line 118) | static void getConfigDirs(FFPlatform* platform)
function getDataDirs (line 135) | static void getDataDirs(FFPlatform* platform)
function getUserName (line 151) | static void getUserName(FFPlatform* platform)
function getHostName (line 174) | static void getHostName(FFPlatform* platform)
function getUserShell (line 188) | static void getUserShell(FFPlatform* platform)
function getSystemReleaseAndVersion (line 209) | static void getSystemReleaseAndVersion(FFPlatformSysinfo* info)
function getSystemPageSize (line 235) | static void getSystemPageSize(FFPlatformSysinfo* info)
function getSystemArchitecture (line 244) | static void getSystemArchitecture(FFPlatformSysinfo* info)
function getCwd (line 300) | static void getCwd(FFPlatform* platform)
function ffPlatformInitImpl (line 308) | void ffPlatformInitImpl(FFPlatform* platform)
FILE: src/common/impl/FFlist.c
function ffListShift (line 15) | bool ffListShift(FFlist* list, void* result)
function ffListPop (line 26) | bool ffListPop(FFlist* list, void* result)
FILE: src/common/impl/FFstrbuf.c
function ffStrbufInitA (line 10) | void ffStrbufInitA(FFstrbuf* strbuf, uint32_t allocate)
function ffStrbufInitVF (line 21) | void ffStrbufInitVF(FFstrbuf* strbuf, const char* format, va_list argume...
function ffStrbufInitMoveNS (line 34) | void ffStrbufInitMoveNS(FFstrbuf* strbuf, uint32_t length, char* heapStr)
function ffStrbufEnsureFree (line 48) | void ffStrbufEnsureFree(FFstrbuf* strbuf, uint32_t free)
function ffStrbufEnsureFixedLengthFree (line 77) | void ffStrbufEnsureFixedLengthFree(FFstrbuf* strbuf, uint32_t free)
function ffStrbufClear (line 101) | void ffStrbufClear(FFstrbuf* strbuf)
function ffStrbufAppendC (line 113) | void ffStrbufAppendC(FFstrbuf* strbuf, char c)
function ffStrbufAppendNC (line 120) | void ffStrbufAppendNC(FFstrbuf* strbuf, uint32_t num, char c)
function ffStrbufAppendNS (line 130) | void ffStrbufAppendNS(FFstrbuf* strbuf, uint32_t length, const char* value)
function ffStrbufAppendTransformS (line 141) | void ffStrbufAppendTransformS(FFstrbuf* strbuf, const char* value, int(*...
function ffStrbufAppendVF (line 159) | void ffStrbufAppendVF(FFstrbuf* strbuf, const char* format, va_list argu...
function ffStrbufSetF (line 194) | void ffStrbufSetF(FFstrbuf* strbuf, const char* format, ...)
function ffStrbufAppendF (line 212) | void ffStrbufAppendF(FFstrbuf* strbuf, const char* format, ...)
function ffStrbufPrependNS (line 222) | void ffStrbufPrependNS(FFstrbuf* strbuf, uint32_t length, const char* va...
function ffStrbufPrependC (line 233) | void ffStrbufPrependC(FFstrbuf* strbuf, char c)
function ffStrbufSetNS (line 241) | void ffStrbufSetNS(FFstrbuf* strbuf, uint32_t length, const char* value)
function ffStrbufSet (line 266) | void ffStrbufSet(FFstrbuf* strbuf, const FFstrbuf* value)
function ffStrbufTrimLeft (line 290) | void ffStrbufTrimLeft(FFstrbuf* strbuf, char c)
function ffStrbufTrimRight (line 315) | void ffStrbufTrimRight(FFstrbuf* strbuf, char c)
function ffStrbufTrimLeftSpace (line 337) | void ffStrbufTrimLeftSpace(FFstrbuf* strbuf)
function ffStrbufTrimRightSpace (line 362) | void ffStrbufTrimRightSpace(FFstrbuf* strbuf)
function ffStrbufRemoveSubstr (line 384) | bool ffStrbufRemoveSubstr(FFstrbuf* strbuf, uint32_t startIndex, uint32_...
function ffStrbufRemoveS (line 402) | void ffStrbufRemoveS(FFstrbuf* strbuf, const char* str)
function ffStrbufRemoveStrings (line 410) | void ffStrbufRemoveStrings(FFstrbuf* strbuf, uint32_t numStrings, const ...
function ffStrbufNextIndexC (line 416) | uint32_t ffStrbufNextIndexC(const FFstrbuf* strbuf, uint32_t start, char c)
function ffStrbufNextIndexS (line 424) | uint32_t ffStrbufNextIndexS(const FFstrbuf* strbuf, uint32_t start, cons...
function ffStrbufPreviousIndexC (line 432) | uint32_t ffStrbufPreviousIndexC(const FFstrbuf* strbuf, uint32_t start, ...
function ffStrbufReplaceAllC (line 445) | void ffStrbufReplaceAllC(FFstrbuf* strbuf, char find, char replace)
function ffStrbufSubstrBefore (line 463) | bool ffStrbufSubstrBefore(FFstrbuf* strbuf, uint32_t index)
function ffStrbufSubstrAfter (line 481) | bool ffStrbufSubstrAfter(FFstrbuf* strbuf, uint32_t index)
function ffStrbufSubstrAfterFirstC (line 503) | bool ffStrbufSubstrAfterFirstC(FFstrbuf* strbuf, char c)
function ffStrbufSubstrAfterFirstS (line 512) | bool ffStrbufSubstrAfterFirstS(FFstrbuf* strbuf, const char* str)
function ffStrbufSubstrAfterLastC (line 525) | bool ffStrbufSubstrAfterLastC(FFstrbuf* strbuf, char c)
function ffStrbufSubstr (line 535) | bool ffStrbufSubstr(FFstrbuf* strbuf, uint32_t start, uint32_t end)
function ffStrbufCountC (line 555) | uint32_t ffStrbufCountC(const FFstrbuf* strbuf, char c)
function ffStrbufRemoveIgnCaseEndS (line 568) | bool ffStrbufRemoveIgnCaseEndS(FFstrbuf* strbuf, const char* end)
function ffStrbufEnsureEndsWithC (line 580) | bool ffStrbufEnsureEndsWithC(FFstrbuf* strbuf, char c)
function ffStrbufWriteTo (line 589) | void ffStrbufWriteTo(const FFstrbuf* strbuf, FILE* file)
function ffStrbufPutTo (line 594) | void ffStrbufPutTo(const FFstrbuf* strbuf, FILE* file)
function ffStrbufToDouble (line 600) | double ffStrbufToDouble(const FFstrbuf* strbuf, double defaultValue)
function ffStrbufToUInt (line 607) | uint64_t ffStrbufToUInt(const FFstrbuf* strbuf, uint64_t defaultValue)
function ffStrbufToSInt (line 614) | int64_t ffStrbufToSInt(const FFstrbuf* strbuf, int64_t defaultValue)
function ffStrbufAppendSInt (line 621) | void ffStrbufAppendSInt(FFstrbuf* strbuf, int64_t value)
function ffStrbufAppendUInt (line 635) | void ffStrbufAppendUInt(FFstrbuf* strbuf, uint64_t value)
function ffStrbufAppendDouble (line 649) | void ffStrbufAppendDouble(FFstrbuf* strbuf, double value, int8_t precisi...
function ffStrbufUpperCase (line 702) | void ffStrbufUpperCase(FFstrbuf* strbuf)
function ffStrbufLowerCase (line 708) | void ffStrbufLowerCase(FFstrbuf* strbuf)
function ffStrbufInsertNC (line 714) | void ffStrbufInsertNC(FFstrbuf* strbuf, uint32_t index, uint32_t num, ch...
function ffStrbufGetdelim (line 726) | bool ffStrbufGetdelim(char** lineptr, size_t* n, char delimiter, FFstrbu...
function ffStrbufGetdelimRestore (line 758) | void ffStrbufGetdelimRestore(char** lineptr, size_t* n, char delimiter, ...
function ffStrbufRemoveDupWhitespaces (line 772) | bool ffStrbufRemoveDupWhitespaces(FFstrbuf* strbuf)
function ffStrbufMatchSeparatedNS (line 799) | bool ffStrbufMatchSeparatedNS(const FFstrbuf* strbuf, uint32_t compLengt...
function ffStrbufMatchSeparatedIgnCaseNS (line 824) | bool ffStrbufMatchSeparatedIgnCaseNS(const FFstrbuf* strbuf, uint32_t co...
function ffStrbufAppendUtf32CodePoint (line 848) | int ffStrbufAppendUtf32CodePoint(FFstrbuf* strbuf, uint32_t codepoint)
function ffStrbufSeparatedContainNS (line 885) | bool ffStrbufSeparatedContainNS(const FFstrbuf* strbuf, uint32_t compLen...
function ffStrbufSeparatedContainIgnCaseNS (line 902) | bool ffStrbufSeparatedContainIgnCaseNS(const FFstrbuf* strbuf, uint32_t ...
FILE: src/common/impl/base64.c
function ffBase64EncodeRaw (line 4) | void ffBase64EncodeRaw(uint32_t size, const char *str, uint32_t *out_siz...
function init_decode_table (line 42) | void init_decode_table()
function ffBase64DecodeRaw (line 64) | bool ffBase64DecodeRaw(uint32_t size, const char *str, uint32_t *out_siz...
FILE: src/common/impl/binary_apple.c
function readData (line 20) | static inline bool readData(FILE *objFile, void *buf, size_t size, off_t...
function handleMachSection (line 39) | static bool handleMachSection(FILE *objFile, const char *name, off_t off...
type mach_header_64 (line 85) | struct mach_header_64
type mach_header (line 94) | struct mach_header
type load_command (line 103) | struct load_command
type segment_command_64 (line 111) | struct segment_command_64
type section_64 (line 119) | struct section_64
type segment_command (line 129) | struct segment_command
type section (line 137) | struct section
type fat_header (line 168) | struct fat_header
type fat_arch (line 181) | struct fat_arch
type fat_arch_64 (line 191) | struct fat_arch_64
FILE: src/common/impl/binary_linux.c
type FFElfData (line 15) | struct FFElfData {
FILE: src/common/impl/commandoption.c
function ffParseModuleOptions (line 13) | bool ffParseModuleOptions(const char* key, const char* value)
function ffPrepareCommandOption (line 72) | void ffPrepareCommandOption(FFdata* data)
function genJsonConfig (line 130) | static void genJsonConfig(FFdata* data, FFModuleBaseInfo* baseInfo, void...
function genJsonResult (line 160) | static void genJsonResult(FFdata* data, FFModuleBaseInfo* baseInfo, void...
function parseStructureCommand (line 171) | static void parseStructureCommand(
function ffPrintCommandOption (line 199) | void ffPrintCommandOption(FFdata* data)
function ffMigrateCommandOptionToJsonc (line 242) | void ffMigrateCommandOptionToJsonc(FFdata* data)
FILE: src/common/impl/dbus.c
function loadLibSymbols (line 8) | static bool loadLibSymbols(FFDBusLibrary* lib)
function FFDBusLibrary (line 27) | static const FFDBusLibrary* loadLib(void)
function ffDBusDestroyData (line 55) | void ffDBusDestroyData(FFDBusData* data)
function ffDBusGetString (line 64) | bool ffDBusGetString(FFDBusData* dbus, DBusMessageIter* iter, FFstrbuf* ...
function ffDBusGetBool (line 121) | bool ffDBusGetBool(FFDBusData* dbus, DBusMessageIter* iter, bool* result)
function ffDBusGetUint (line 141) | bool ffDBusGetUint(FFDBusData* dbus, DBusMessageIter* iter, uint32_t* re...
function ffDBusGetInt (line 175) | bool ffDBusGetInt(FFDBusData* dbus, DBusMessageIter* iter, int32_t* result)
function DBusMessage (line 223) | DBusMessage* ffDBusGetMethodReply(FFDBusData* dbus, const char* busName,...
function DBusMessage (line 244) | DBusMessage* ffDBusGetProperty(FFDBusData* dbus, const char* busName, co...
function ffDBusGetPropertyString (line 262) | bool ffDBusGetPropertyString(FFDBusData* dbus, const char* busName, cons...
function ffDBusGetPropertyUint (line 282) | bool ffDBusGetPropertyUint(FFDBusData* dbus, const char* busName, const ...
FILE: src/common/impl/duration.c
function ffDurationAppendNum (line 3) | void ffDurationAppendNum(uint64_t totalSeconds, FFstrbuf* result)
FILE: src/common/impl/edidHelper.c
function ffEdidGetPhysicalResolution (line 3) | void ffEdidGetPhysicalResolution(const uint8_t edid[128], uint32_t* widt...
function ffEdidGetPreferredResolutionAndRefreshRate (line 10) | void ffEdidGetPreferredResolutionAndRefreshRate(const uint8_t edid[128],...
function ffEdidGetVendorAndModel (line 29) | void ffEdidGetVendorAndModel(const uint8_t edid[128], FFstrbuf* result)
function ffEdidGetName (line 40) | bool ffEdidGetName(const uint8_t edid[128], FFstrbuf* name)
function ffEdidGetPhysicalSize (line 66) | void ffEdidGetPhysicalSize(const uint8_t edid[128], uint32_t* width, uin...
function ffEdidGetSerialAndManufactureDate (line 89) | void ffEdidGetSerialAndManufactureDate(const uint8_t edid[128], uint32_t...
function ffEdidGetHdrCompatible (line 103) | bool ffEdidGetHdrCompatible(const uint8_t* edid, uint32_t length)
function ffEdidIsValid (line 132) | bool ffEdidIsValid(const uint8_t edid[128], uint32_t length)
FILE: src/common/impl/font.c
function ffFontInit (line 10) | void ffFontInit(FFfont* font)
function strbufAppendNSExcludingC (line 19) | static void strbufAppendNSExcludingC(FFstrbuf* strbuf, uint32_t length, ...
function fontInitPretty (line 35) | static void fontInitPretty(FFfont* font)
function ffFontInitQt (line 67) | void ffFontInitQt(FFfont* font, const char* data)
function fontPangoParseWord (line 104) | static void fontPangoParseWord(const char** data, FFfont* font, FFstrbuf...
function ffFontInitPango (line 178) | void ffFontInitPango(FFfont* font, const char* data)
function ffFontInitValues (line 188) | void ffFontInitValues(FFfont* font, const char* name, const char* size)
function ffFontInitXlfd (line 199) | void ffFontInitXlfd(FFfont* font, const char* xlfd)
function ffFontInitXft (line 289) | void ffFontInitXft(FFfont* font, const char* xft)
function ffFontInitMoveValues (line 479) | void ffFontInitMoveValues(FFfont* font, FFstrbuf* name, FFstrbuf* size, ...
function ffFontInitWithSpace (line 494) | void ffFontInitWithSpace(FFfont* font, const char* rawName)
function ffFontDestroy (line 511) | void ffFontDestroy(FFfont* font)
FILE: src/common/impl/format.c
function ffFormatAppendFormatArg (line 9) | void ffFormatAppendFormatArg(FFstrbuf* buffer, const FFformatarg* format...
function getArgumentIndex (line 69) | static uint32_t getArgumentIndex(const char* placeholderValue, uint32_t ...
function appendInvalidPlaceholder (line 98) | static inline void appendInvalidPlaceholder(FFstrbuf* buffer, const char...
function formatArgSet (line 107) | static inline bool formatArgSet(const FFformatarg* arg)
function ffParseFormatString (line 123) | void ffParseFormatString(FFstrbuf* buffer, const FFstrbuf* formatstr, ui...
FILE: src/common/impl/frequency.c
function ffFreqAppendNum (line 3) | bool ffFreqAppendNum(uint32_t mhz, FFstrbuf* result)
FILE: src/common/impl/init.c
function initState (line 22) | static void initState(FFstate* state)
function defaultConfig (line 41) | static void defaultConfig(void)
function ffInitInstance (line 48) | void ffInitInstance(void)
function resetConsole (line 65) | static void resetConsole(void)
function BOOL (line 82) | BOOL WINAPI consoleHandler(FF_MAYBE_UNUSED DWORD signal)
function exitSignalHandler (line 88) | static void exitSignalHandler(FF_MAYBE_UNUSED int signal)
function ffStart (line 95) | void ffStart(void)
function ffFinish (line 141) | void ffFinish(void)
function destroyConfig (line 146) | static void destroyConfig(void)
function destroyState (line 153) | static void destroyState(void)
function ffDestroyInstance (line 158) | void ffDestroyInstance(void)
function ffListFeatures (line 165) | void ffListFeatures(void)
FILE: src/common/impl/io_unix.c
function createSubfolders (line 22) | static void createSubfolders(const char* fileName)
function ffWriteFileData (line 35) | bool ffWriteFileData(const char* fileName, size_t dataSize, const void* ...
function readWithLength (line 57) | static inline void readWithLength(int fd, FFstrbuf* buffer, uint32_t len...
function readUntilEOF (line 69) | static inline void readUntilEOF(int fd, FFstrbuf* buffer)
function ffAppendFDBuffer (line 84) | bool ffAppendFDBuffer(int fd, FFstrbuf* buffer)
function ffReadFileData (line 100) | ssize_t ffReadFileData(const char* fileName, size_t dataSize, void* data)
function ffReadFileDataRelative (line 109) | ssize_t ffReadFileDataRelative(int dfd, const char* fileName, size_t dat...
function ffAppendFileBuffer (line 118) | bool ffAppendFileBuffer(const char* fileName, FFstrbuf* buffer)
function ffAppendFileBufferRelative (line 127) | bool ffAppendFileBufferRelative(int dfd, const char* fileName, FFstrbuf*...
function ffPathExpandEnv (line 136) | bool ffPathExpandEnv(const char* in, FFstrbuf* out)
type termios (line 181) | struct termios
function restoreTerm (line 182) | void restoreTerm(void)
type termios (line 198) | struct termios
type pollfd (line 209) | struct pollfd
type timeval (line 218) | struct timeval
function ffSuppressIO (line 261) | bool ffSuppressIO(bool suppress)
function listFilesRecursively (line 295) | void listFilesRecursively(uint32_t baseLength, FFstrbuf* folder, uint8_t...
function ffListFilesRecursively (line 359) | void ffListFilesRecursively(const char* path, bool pretty)
function FFNativeFD (line 366) | FFNativeFD ffGetNullFD(void)
function ffRemoveFile (line 375) | bool ffRemoveFile(const char* fileName)
FILE: src/common/impl/io_windows.c
function createSubfolders (line 9) | static bool createSubfolders(wchar_t* fileName)
function ffWriteFileData (line 149) | bool ffWriteFileData(const char* fileName, size_t dataSize, const void* ...
function readWithLength (line 181) | static inline void readWithLength(HANDLE handle, FFstrbuf* buffer, uint3...
function readUntilEOF (line 195) | static inline void readUntilEOF(HANDLE handle, FFstrbuf* buffer)
function ffAppendFDBuffer (line 211) | bool ffAppendFDBuffer(HANDLE handle, FFstrbuf* buffer)
function ffReadFileData (line 228) | ssize_t ffReadFileData(const char* fileName, size_t dataSize, void* data)
function ffAppendFileBuffer (line 237) | bool ffAppendFileBuffer(const char* fileName, FFstrbuf* buffer)
function HANDLE (line 246) | HANDLE openatW(HANDLE dfd, const wchar_t* fileName, uint16_t fileNameLen...
function HANDLE (line 272) | HANDLE openat(HANDLE dfd, const char* fileName, bool directory)
function ffAppendFileBufferRelative (line 290) | bool ffAppendFileBufferRelative(HANDLE dfd, const char* fileName, FFstrb...
function ffReadFileDataRelative (line 299) | ssize_t ffReadFileDataRelative(HANDLE dfd, const char* fileName, size_t ...
function ffPathExpandEnv (line 308) | bool ffPathExpandEnv(const char* in, FFstrbuf* out)
function ffSuppressIO (line 332) | bool ffSuppressIO(bool suppress)
function listFilesRecursively (line 374) | void listFilesRecursively(uint32_t baseLength, FFstrbuf* folder, uint8_t...
function ffListFilesRecursively (line 422) | void ffListFilesRecursively(const char* path, bool pretty)
function FFNativeFD (line 519) | FFNativeFD ffGetNullFD(void)
function ffRemoveFile (line 539) | bool ffRemoveFile(const char* fileName)
FILE: src/common/impl/jsonconfig.c
function ffJsonConfigParseModuleArgs (line 15) | bool ffJsonConfigParseModuleArgs(yyjson_val* key, yyjson_val* val, FFMod...
function ffJsonConfigGenerateModuleArgsConfig (line 53) | void ffJsonConfigGenerateModuleArgsConfig(yyjson_mut_doc* doc, yyjson_mu...
function parseModuleJsonObject (line 104) | static bool parseModuleJsonObject(const char* type, yyjson_val* jsonVal,...
function prepareModuleJsonObject (line 152) | static void prepareModuleJsonObject(const char* type, yyjson_val* module)
function matchesJsonArray (line 214) | static bool matchesJsonArray(const char* str, yyjson_val* val)
function ffPrintJsonConfig (line 336) | void ffPrintJsonConfig(FFdata* data, bool prepare)
FILE: src/common/impl/kmod_apple.c
function ffKmodLoaded (line 6) | bool ffKmodLoaded(const char* modName)
FILE: src/common/impl/kmod_bsd.c
function ffKmodLoaded (line 5) | bool ffKmodLoaded(const char* modName)
FILE: src/common/impl/kmod_linux.c
function ffKmodLoaded (line 4) | bool ffKmodLoaded(const char* modName)
FILE: src/common/impl/kmod_nbsd.c
type FFNbsdModList (line 7) | typedef struct __attribute__((__packed__)) FFNbsdModList
function ffKmodLoaded (line 13) | bool ffKmodLoaded(const char* modName)
FILE: src/common/impl/kmod_nosupport.c
function ffKmodLoaded (line 3) | bool ffKmodLoaded(FF_MAYBE_UNUSED const char* modName)
FILE: src/common/impl/kmod_sunos.c
function ffKmodLoaded (line 7) | bool ffKmodLoaded(const char* modName)
FILE: src/common/impl/kmod_windows.c
function ffKmodLoaded (line 6) | bool ffKmodLoaded(const char* modName)
FILE: src/common/impl/library.c
function if (line 37) | FF_UNUSED(maxVersion)
function dlclose (line 133) | int dlclose(void* handle)
FILE: src/common/impl/netif.c
function FFNetifDefaultRouteResult (line 8) | const FFNetifDefaultRouteResult* ffNetifGetDefaultRouteV4(void)
function FFNetifDefaultRouteResult (line 17) | const FFNetifDefaultRouteResult* ffNetifGetDefaultRouteV6(void)
FILE: src/common/impl/netif_apple.c
type sockaddr (line 23) | struct sockaddr
type rt_msghdr (line 24) | struct rt_msghdr
type sockaddr (line 26) | struct sockaddr
type sockaddr (line 26) | struct sockaddr
type sockaddr_in (line 42) | struct sockaddr_in
type sockaddr_dl (line 45) | struct sockaddr_dl
type sockaddr_in6 (line 48) | struct sockaddr_in6
type sockaddr (line 51) | struct sockaddr
type sockaddr (line 55) | struct sockaddr
type timeval (line 70) | struct timeval
type rt_msghdr (line 78) | struct rt_msghdr
type sockaddr_in (line 79) | struct sockaddr_in
type sockaddr_dl (line 109) | struct sockaddr_dl
type sockaddr_dl (line 109) | struct sockaddr_dl
type sockaddr_in (line 122) | struct sockaddr_in
type sockaddr_in (line 122) | struct sockaddr_in
function ffNetifGetDefaultRouteImplV6 (line 134) | bool ffNetifGetDefaultRouteImplV6(FFNetifDefaultRouteResult* result)
FILE: src/common/impl/netif_bsd.c
type sockaddr (line 30) | struct sockaddr
type rt_msghdr (line 31) | struct rt_msghdr
type sockaddr (line 33) | struct sockaddr
type sockaddr (line 33) | struct sockaddr
type sockaddr (line 41) | struct sockaddr
function ffNetifGetDefaultRouteImplV4 (line 47) | bool ffNetifGetDefaultRouteImplV4(FFNetifDefaultRouteResult* result)
function ffNetifGetDefaultRouteImplV6 (line 89) | bool ffNetifGetDefaultRouteImplV6(FFNetifDefaultRouteResult* result)
FILE: src/common/impl/netif_gnu.c
function ffNetifGetDefaultRouteImplV4 (line 10) | bool ffNetifGetDefaultRouteImplV4(FFNetifDefaultRouteResult* result)
function ffNetifGetDefaultRouteImplV6 (line 30) | bool ffNetifGetDefaultRouteImplV6(FFNetifDefaultRouteResult* result)
FILE: src/common/impl/netif_haiku.c
function ffNetifGetDefaultRouteImplV4 (line 14) | bool ffNetifGetDefaultRouteImplV4(FFNetifDefaultRouteResult* result)
function ffNetifGetDefaultRouteImplV6 (line 66) | bool ffNetifGetDefaultRouteImplV6(FFNetifDefaultRouteResult* result)
FILE: src/common/impl/netif_linux.c
function ffNetifGetDefaultRouteImplV4 (line 10) | bool ffNetifGetDefaultRouteImplV4(FFNetifDefaultRouteResult* result)
function ffNetifGetDefaultRouteImplV6 (line 226) | bool ffNetifGetDefaultRouteImplV6(FFNetifDefaultRouteResult* result)
FILE: src/common/impl/netif_windows.c
function ffNetifGetDefaultRouteImplV4 (line 7) | bool ffNetifGetDefaultRouteImplV4(FFNetifDefaultRouteResult* result)
function ffNetifGetDefaultRouteImplV6 (line 57) | bool ffNetifGetDefaultRouteImplV6(FFNetifDefaultRouteResult* result)
FILE: src/common/impl/networking_common.c
type FFZlibLibrary (line 10) | struct FFZlibLibrary
function guessGzipOutputSize (line 40) | static uint32_t guessGzipOutputSize(const void* data, uint32_t dataSize)
function ffNetworkingDecompressGzip (line 68) | bool ffNetworkingDecompressGzip(FFstrbuf* buffer, char* headerEnd)
FILE: src/common/impl/networking_linux.c
type iovec (line 88) | struct iovec
type addrinfo (line 208) | struct addrinfo
type pollfd (line 389) | struct pollfd
type timeval (line 413) | struct timeval
FILE: src/common/impl/networking_windows.c
type sockaddr_in6 (line 142) | struct sockaddr_in6
type sockaddr_in6 (line 145) | struct sockaddr_in6
type sockaddr_in (line 146) | struct sockaddr_in
type sockaddr_in (line 149) | struct sockaddr_in
FILE: src/common/impl/option.c
function ffOptionParseString (line 31) | void ffOptionParseString(const char* argumentKey, const char* value, FFs...
function ffOptionParseUInt32 (line 42) | uint32_t ffOptionParseUInt32(const char* argumentKey, const char* value)
function ffOptionParseInt32 (line 61) | int32_t ffOptionParseInt32(const char* argumentKey, const char* value)
function ffOptionParseEnum (line 80) | int ffOptionParseEnum(const char* argumentKey, const char* requestedKey,...
function ffOptionParseBoolean (line 98) | bool ffOptionParseBoolean(const char* str)
function ffOptionParseColorNoClear (line 109) | void ffOptionParseColorNoClear(const char* value, FFstrbuf* buffer)
FILE: src/common/impl/parsing.c
function ffParseSemver (line 11) | void ffParseSemver(FFstrbuf* buffer, const FFstrbuf* major, const FFstrb...
function ffVersionCompare (line 36) | int8_t ffVersionCompare(const FFVersion* version1, const FFVersion* vers...
function ffVersionToPretty (line 50) | void ffVersionToPretty(const FFVersion* version, FFstrbuf* pretty)
function ffParseGTK (line 70) | void ffParseGTK(FFstrbuf* buffer, const FFstrbuf* gtk2, const FFstrbuf* ...
FILE: src/common/impl/path.c
function winerr2Errno (line 69) | static inline int winerr2Errno(DWORD err)
function freadlink (line 209) | ssize_t freadlink(HANDLE hFile, char* buf, size_t bufsiz)
function readlink (line 290) | ssize_t readlink(const char* path, char* buf, size_t bufsiz)
FILE: src/common/impl/percent.c
function appendOutputColor (line 9) | static void appendOutputColor(FFstrbuf* buffer, const FFModuleArgs* module)
function ffPercentAppendBar (line 56) | void ffPercentAppendBar(FFstrbuf* buffer, double percent, FFPercentageMo...
function ffPercentAppendNum (line 169) | void ffPercentAppendNum(FFstrbuf* buffer, double percent, FFPercentageMo...
function ffPercentParseCommandOptions (line 222) | bool ffPercentParseCommandOptions(const char* key, const char* subkey, c...
function ffPercentParseJsonObject (line 262) | bool ffPercentParseJsonObject(yyjson_val* key, yyjson_val* value, FFPerc...
function ffPercentGenerateJsonConfig (line 313) | void ffPercentGenerateJsonConfig(yyjson_mut_doc* doc, yyjson_mut_val* mo...
FILE: src/common/impl/printing.c
function ffPrintLogoAndKey (line 6) | void ffPrintLogoAndKey(const char* moduleName, uint8_t moduleIndex, cons...
function ffPrintFormat (line 86) | void ffPrintFormat(const char* moduleName, uint8_t moduleIndex, const FF...
function ffPrintError (line 98) | void ffPrintError(const char* moduleName, uint8_t moduleIndex, const FFM...
function ffPrintColor (line 119) | void ffPrintColor(const FFstrbuf* colorValue)
function ffPrintCharTimes (line 129) | void ffPrintCharTimes(char c, uint32_t times)
FILE: src/common/impl/processing_linux.c
function ffPipe2 (line 46) | static inline int ffPipe2(int* fds, int flags)
type pollfd (line 179) | struct pollfd
function ffProcessGetInfoLinux (line 221) | void ffProcessGetInfoLinux(pid_t pid, FFstrbuf* processName, FFstrbuf* e...
type kinfo_proc (line 524) | struct kinfo_proc
type kinfo_proc (line 552) | struct kinfo_proc
type kinfo_proc2 (line 580) | struct kinfo_proc2
type kinfo_proc (line 623) | struct kinfo_proc
type kinfo_proc (line 623) | struct kinfo_proc
FILE: src/common/impl/processing_windows.c
function argvToCmdline (line 14) | static void argvToCmdline(char* const argv[], FFstrbuf* result)
function ffProcessGetInfoWindows (line 225) | bool ffProcessGetInfoWindows(uint32_t pid, uint32_t* ppid, FFstrbuf* pna...
FILE: src/common/impl/properties.c
function ffParsePropLinePointer (line 12) | bool ffParsePropLinePointer(const char** line, const char* start, FFstrb...
function ffParsePropLines (line 73) | bool ffParsePropLines(const char* lines, const char* start, FFstrbuf* bu...
function ffParsePropFileValues (line 94) | bool ffParsePropFileValues(const char* filename, uint32_t numQueries, FF...
function ffParsePropFileHomeValues (line 139) | bool ffParsePropFileHomeValues(const char* relativeFile, uint32_t numQue...
function ffParsePropFileListValues (line 145) | bool ffParsePropFileListValues(const FFlist* list, const char* relativeF...
FILE: src/common/impl/settings.c
type GVariantGetters (line 12) | typedef struct GVariantGetters
function FFvariant (line 20) | static FFvariant getGVariantValue(GVariant* variant, FFvarianttype type,...
type GSettingsData (line 41) | typedef struct GSettingsData
function GSettingsData (line 56) | static const GSettingsData* getGSettingsData(void)
function FFvariant (line 87) | FFvariant ffSettingsGetGSettings(const char* schemaName, const char* pat...
function FFvariant (line 116) | FFvariant ffSettingsGetGSettings(const char* schemaName, const char* pat...
type DConfData (line 126) | typedef struct DConfData
function DConfData (line 136) | static const DConfData* getDConfData(void)
function FFvariant (line 162) | FFvariant ffSettingsGetDConf(const char* key, FFvarianttype type)
function FFvariant (line 180) | FFvariant ffSettingsGetDConf(const char* key, FFvarianttype type)
function FFvariant (line 187) | FFvariant ffSettingsGetGnome(const char* dconfKey, const char* gsettings...
function FFvariant (line 202) | FFvariant ffSettingsGetXFConf(const char* channelName, const char* prope...
function FFvariant (line 261) | FFvariant ffSettingsGetXFConfFirstMatch(const char* channelName, const c...
function FFvariant (line 333) | FFvariant ffSettingsGetXFConf(const char* channelName, const char* prope...
function FFvariant (line 338) | FFvariant ffSettingsGetXFConfFirstMatch(const char* channelName, const c...
type SQLiteData (line 348) | typedef struct SQLiteData
function SQLiteData (line 362) | static const SQLiteData* getSQLiteData(void)
function ffSettingsGetSQLite3Int (line 387) | int ffSettingsGetSQLite3Int(const char* dbPath, const char* query)
function ffSettingsGetSQLite3String (line 422) | bool ffSettingsGetSQLite3String(const char* dbPath, const char* query, F...
function ffSettingsGetSQLite3Int (line 457) | int ffSettingsGetSQLite3Int(const char* dbPath, const char* query)
function ffSettingsGetSQLite3String (line 462) | bool ffSettingsGetSQLite3String(const char* dbPath, const char* query, F...
function ffSettingsGetAndroidProperty (line 471) | bool ffSettingsGetAndroidProperty(const char* propName, FFstrbuf* result) {
function ffSettingsGetFreeBSDKenv (line 481) | bool ffSettingsGetFreeBSDKenv(const char* propName, FFstrbuf* result)
FILE: src/common/impl/size.c
function appendNum (line 5) | static void appendNum(FFstrbuf* result, uint64_t bytes, uint32_t base, c...
function ffSizeAppendNum (line 26) | void ffSizeAppendNum(uint64_t bytes, FFstrbuf* result)
FILE: src/common/impl/smbiosHelper.c
function ffIsSmbiosValueSet (line 7) | bool ffIsSmbiosValueSet(FFstrbuf* value)
function FFSmbiosHeader (line 40) | const FFSmbiosHeader* ffSmbiosNextEntry(const FFSmbiosHeader* header)
function ffGetSmbiosValue (line 75) | bool ffGetSmbiosValue(const char* devicesPath, const char* classPath, FF...
type FFSmbios20EntryPoint (line 96) | typedef struct FFSmbios20EntryPoint
type FFSmbios30EntryPoint (line 116) | typedef struct FFSmbios30EntryPoint
type FFSmbiosEntryPoint (line 133) | typedef union FFSmbiosEntryPoint
function FFSmbiosHeaderTable (line 139) | const FFSmbiosHeaderTable* ffGetSmbiosHeaderTable()
type FFRawSmbiosData (line 443) | typedef struct FFRawSmbiosData
function FFSmbiosHeaderTable (line 453) | const FFSmbiosHeaderTable* ffGetSmbiosHeaderTable()
FILE: src/common/impl/sysctl.c
function ffSysctlGetInt (line 22) | int ffSysctlGetInt(int mib1, int mib2, int defaultValue)
function ffSysctlGetInt64 (line 31) | int64_t ffSysctlGetInt64(int mib1, int mib2, int64_t defaultValue)
function ffSysctlGetInt (line 56) | int ffSysctlGetInt(const char* propName, int defaultValue)
function ffSysctlGetInt64 (line 65) | int64_t ffSysctlGetInt64(const char* propName, int64_t defaultValue)
FILE: src/common/impl/temps.c
function ffTempsAppendNum (line 6) | void ffTempsAppendNum(double celsius, FFstrbuf* buffer, FFColorRangeConf...
function ffTempsParseCommandOptions (line 67) | bool ffTempsParseCommandOptions(const char* key, const char* subkey, con...
function ffTempsParseJsonObject (line 110) | bool ffTempsParseJsonObject(yyjson_val* key, yyjson_val* value, bool* us...
function ffTempsGenerateJsonConfig (line 164) | void ffTempsGenerateJsonConfig(yyjson_mut_doc* doc, yyjson_mut_val* modu...
FILE: src/common/impl/time.c
type tm (line 16) | struct tm
function FFTimeGetAgeResult (line 48) | FFTimeGetAgeResult ffTimeGetAge(uint64_t birthMs, uint64_t nowMs)
function ffTimeInitQpcMultiplier (line 88) | __attribute__((constructor))
FILE: src/common/impl/wcwidth.c
function mk_wcwidth (line 4) | int mk_wcwidth(uint32_t wc)
FILE: src/common/io.h
type HANDLE (line 11) | typedef HANDLE FFNativeFD;
type FFNativeFD (line 19) | typedef int FFNativeFD;
function FFNativeFD (line 26) | static inline FFNativeFD FFUnixFD2NativeFD(int unixfd)
function ffWriteFDData (line 36) | static inline bool ffWriteFDData(FFNativeFD fd, size_t dataSize, const v...
function ffWriteFDBuffer (line 47) | static inline bool ffWriteFDBuffer(FFNativeFD fd, const FFstrbuf* content)
function ffWriteFileBuffer (line 56) | static inline bool ffWriteFileBuffer(const char* fileName, const FFstrbu...
function ffReadFDData (line 62) | static inline ssize_t ffReadFDData(FFNativeFD fd, size_t dataSize, void*...
function ffReadFDBuffer (line 88) | static inline bool ffReadFDBuffer(FFNativeFD fd, FFstrbuf* buffer)
function ffReadFileBuffer (line 95) | static inline bool ffReadFileBuffer(const char* fileName, FFstrbuf* buffer)
function ffReadFileBufferRelative (line 102) | static inline bool ffReadFileBufferRelative(FFNativeFD dfd, const char* ...
type __attribute__ (line 108) | enum __attribute__
function ffPathExists (line 117) | static inline bool ffPathExists(const char* path, FFPathType pathType)
function ffUnsuppressIO (line 175) | static inline void ffUnsuppressIO(bool* suppressed)
function ffIsValidNativeFD (line 186) | static inline bool ffIsValidNativeFD(FFNativeFD fd)
function wrapClose (line 197) | static inline bool wrapClose(FFNativeFD* pfd)
function wrapFclose (line 215) | static inline bool wrapFclose(FILE** pfile)
function wrapClosedir (line 227) | static inline bool wrapClosedir(DIR** pdir)
function wrapClosedir (line 236) | static inline bool wrapClosedir(HANDLE* pdir)
function ffSearchUserConfigFile (line 248) | static inline bool ffSearchUserConfigFile(const FFlist* configDirs, cons...
FILE: src/common/jsonconfig.h
function yyjson_api_inline (line 9) | yyjson_api_inline yyjson_mut_val* yyjson_mut_strbuf(yyjson_mut_doc *doc,...
function yyjson_api_inline (line 13) | yyjson_api_inline bool yyjson_mut_obj_add_strbuf(yyjson_mut_doc *doc,
function yyjson_api_inline (line 20) | yyjson_api_inline bool yyjson_mut_arr_add_strbuf(yyjson_mut_doc *doc,
FILE: src/common/library.h
function ffLibraryUnload (line 25) | static inline void ffLibraryUnload(void** handle)
FILE: src/common/mallocHelper.h
function ffWrapFree (line 16) | static inline void ffWrapFree(const void* pPtr)
function ffMallocUsableSize (line 26) | static inline size_t ffMallocUsableSize(const void* ptr)
FILE: src/common/netif.h
type FF_NETIF_UNINITIALIZED (line 10) | typedef enum __attribute__((__packed__)) FFNetifDefaultRouteResultStatus {
type FFNetifDefaultRouteResult (line 16) | typedef struct FFNetifDefaultRouteResult {
FILE: src/common/networking.h
type addrinfo (line 10) | struct addrinfo
type FFNetworkingState (line 12) | typedef struct FFNetworkingState {
FILE: src/common/option.h
type yyjson_val (line 5) | struct yyjson_val
type yyjson_mut_doc (line 6) | struct yyjson_mut_doc
type yyjson_mut_val (line 7) | struct yyjson_mut_val
type FFModuleFormatArg (line 9) | typedef struct FFModuleFormatArg
type FFModuleFormatArgList (line 15) | typedef struct FFModuleFormatArgList
type FFModuleBaseInfo (line 24) | typedef struct FFModuleBaseInfo
type __attribute__ (line 42) | enum __attribute__
type FFModuleArgs (line 57) | typedef struct FFModuleArgs
type FFKeyValuePair (line 67) | typedef struct FFKeyValuePair
function ffOptionParseColor (line 80) | static inline void ffOptionParseColor(const char* value, FFstrbuf* buffer)
function ffOptionInitModuleArg (line 86) | static inline void ffOptionInitModuleArg(FFModuleArgs* args, const char*...
function ffOptionDestroyModuleArg (line 96) | static inline void ffOptionDestroyModuleArg(FFModuleArgs* args)
FILE: src/common/parsing.h
type FFVersion (line 7) | typedef struct FFVersion
type FFColorRangeConfig (line 14) | typedef struct FFColorRangeConfig
FILE: src/common/path.h
function ffIsAbsolutePath (line 7) | static inline bool ffIsAbsolutePath(const char* path)
FILE: src/common/percent.h
type __attribute__ (line 7) | enum __attribute__
type FFPercentageModuleConfig (line 19) | typedef struct FFPercentageModuleConfig
type yyjson_val (line 39) | typedef struct yyjson_val yyjson_val;
type yyjson_mut_doc (line 40) | typedef struct yyjson_mut_doc yyjson_mut_doc;
type yyjson_mut_val (line 41) | typedef struct yyjson_mut_val yyjson_mut_val;
FILE: src/common/printing.h
type __attribute__ (line 6) | enum __attribute__
FILE: src/common/processing.h
type FFProcessHandle (line 9) | typedef struct FFProcessHandle {
FILE: src/common/properties.h
type FFpropquery (line 5) | typedef struct FFpropquery
function ffParsePropLine (line 18) | static inline bool ffParsePropLine(const char* line, const char* start, ...
function ffParsePropFile (line 23) | static inline bool ffParsePropFile(const char* filename, const char* sta...
function ffParsePropFileHome (line 28) | static inline bool ffParsePropFileHome(const char* relativeFile, const c...
function ffParsePropFileList (line 33) | static inline bool ffParsePropFileList(const FFlist* list, const char* r...
function ffParsePropFileConfigValues (line 38) | static inline bool ffParsePropFileConfigValues(const char* relativeFile,...
function ffParsePropFileConfig (line 43) | static inline bool ffParsePropFileConfig(const char* relativeFile, const...
function ffParsePropFileDataValues (line 48) | static inline bool ffParsePropFileDataValues(const char* relativeFile, u...
function ffParsePropFileData (line 53) | static inline bool ffParsePropFileData(const char* relativeFile, const c...
FILE: src/common/settings.h
type FF_VARIANT_TYPE_STRING (line 5) | typedef enum __attribute__((__packed__)) FFvarianttype
type FFvariant (line 12) | typedef union FFvariant
FILE: src/common/smbiosHelper.h
function ffCleanUpSmbiosValue (line 6) | static inline void ffCleanUpSmbiosValue(FFstrbuf* value)
type __attribute__ (line 15) | enum __attribute__
type FFSmbiosHeader (line 70) | typedef struct FFSmbiosHeader
type FFSmbiosHeader (line 87) | typedef const FFSmbiosHeader* FFSmbiosHeaderTable[FF_SMBIOS_TYPE_END_OF_...
FILE: src/common/stringUtils.h
function ffStrSet (line 8) | static inline bool ffStrSet(const char* str)
function ffStrStartsWithIgnCase (line 20) | static inline bool ffStrStartsWithIgnCase(const char* str, const char* c...
function ffStrEqualsIgnCase (line 25) | static inline bool ffStrEqualsIgnCase(const char* str, const char* compa...
function ffStrStartsWith (line 30) | static inline bool ffStrStartsWith(const char* str, const char* compareTo)
function ffStrEndsWith (line 35) | static inline bool ffStrEndsWith(const char* str, const char* compareTo)
function ffStrEndsWithIgnCase (line 44) | static inline bool ffStrEndsWithIgnCase(const char* str, const char* com...
function ffStrEquals (line 53) | static inline bool ffStrEquals(const char* str, const char* compareTo)
function ffStrContains (line 58) | static inline bool ffStrContains(const char* str, const char* compareTo)
function ffStrContainsIgnCase (line 63) | static inline bool ffStrContainsIgnCase(const char* str, const char* com...
function ffStrContainsC (line 68) | static inline bool ffStrContainsC(const char* str, char compareTo)
function ffCharIsEnglishAlphabet (line 73) | static inline bool ffCharIsEnglishAlphabet(char c)
function ffCharIsDigit (line 78) | static inline bool ffCharIsDigit(char c)
FILE: src/common/thread.h
type SRWLOCK (line 12) | typedef SRWLOCK FFThreadMutex;
type HANDLE (line 13) | typedef HANDLE FFThreadType;
function ffThreadMutexLock (line 14) | static inline void ffThreadMutexLock(FFThreadMutex* mutex) { AcquireSRWL...
function ffThreadMutexUnlock (line 15) | static inline void ffThreadMutexUnlock(FFThreadMutex* mutex) { ReleaseSR...
function FFThreadType (line 16) | static inline FFThreadType ffThreadCreate(unsigned (__stdcall* func)(voi...
function ffThreadDetach (line 21) | static inline void ffThreadDetach(FFThreadType thread) { NtClose(thread); }
function ffThreadJoin (line 22) | static inline bool ffThreadJoin(FFThreadType thread, uint32_t timeout)
type pthread_t (line 39) | typedef pthread_t FFThreadType;
type os_unfair_lock (line 43) | typedef os_unfair_lock FFThreadMutex;
function ffThreadMutexLock (line 44) | static inline void ffThreadMutexLock(os_unfair_lock* mutex) { os_unfair_...
function ffThreadMutexUnlock (line 45) | static inline void ffThreadMutexUnlock(os_unfair_lock* mutex) { os_unfai...
type pthread_mutex_t (line 48) | typedef pthread_mutex_t FFThreadMutex;
function ffThreadMutexLock (line 49) | static inline void ffThreadMutexLock(FFThreadMutex* mutex) { pthread_mut...
function ffThreadMutexUnlock (line 50) | static inline void ffThreadMutexUnlock(FFThreadMutex* mutex) { pthread_m...
function FFThreadType (line 52) | static inline FFThreadType ffThreadCreate(void* (* func)(void*), void* d...
function ffThreadDetach (line 59) | static inline void ffThreadDetach(FFThreadType thread) { pthread_detach(...
function ffThreadJoin (line 60) | static inline bool ffThreadJoin(FFThreadType thread, FF_MAYBE_UNUSED uin...
type FFThreadMutex (line 85) | typedef char FFThreadMutex;
function ffThreadMutexLock (line 86) | static inline void ffThreadMutexLock(FFThreadMutex* mutex) { FF_UNUSED(m...
function ffThreadMutexUnlock (line 87) | static inline void ffThreadMutexUnlock(FFThreadMutex* mutex) { FF_UNUSED...
FILE: src/common/time.h
function ffTimeGetTick (line 16) | static inline double ffTimeGetTick(void) //In msec
function ffFileTimeToUnixMs (line 33) | static inline uint64_t ffFileTimeToUnixMs(uint64_t value)
function ffTimeGetNow (line 41) | static inline uint64_t ffTimeGetNow(void)
function ffTimeSleep (line 56) | static inline bool ffTimeSleep(uint32_t msec)
type FFTimeGetAgeResult (line 76) | typedef struct FFTimeGetAgeResult
FILE: src/common/unused.h
function ffUnused (line 3) | static inline void ffUnused(int dummy, ...) { (void) dummy; }
FILE: src/common/wcwidth.h
function mk_wcwidth (line 11) | static inline int mk_wcwidth(uint32_t ucs) {
FILE: src/common/windows/com.cpp
function CoUninitializeWrap (line 8) | static void CoUninitializeWrap(void)
FILE: src/common/windows/com.hpp
function ffReleaseComObject (line 9) | static inline void ffReleaseComObject(void* ppUnknown)
FILE: src/common/windows/getline.c
function getline (line 6) | ssize_t getline(char **lineptr, size_t *n, FILE *stream) {
FILE: src/common/windows/nt.h
type PROCESSOR_POWER_INFORMATION (line 19) | typedef struct _PROCESSOR_POWER_INFORMATION {
type UINT (line 43) | typedef UINT D3DKMT_HANDLE;
type D3DKMT_OPENADAPTERFROMLUID (line 45) | typedef struct _D3DKMT_OPENADAPTERFROMLUID
type D3DKMT_CLOSEADAPTER (line 52) | typedef struct _D3DKMT_CLOSEADAPTER
type D3DKMT_ADAPTERTYPE (line 58) | typedef struct _D3DKMT_ADAPTERTYPE
type KMTQUERYADAPTERINFOTYPE (line 84) | typedef enum _KMTQUERYADAPTERINFOTYPE
type D3DKMT_QUERYADAPTERINFO (line 89) | typedef struct _D3DKMT_QUERYADAPTERINFO
type D3DKMT_QUERYSTATISTICS_TYPE (line 98) | typedef enum _D3DKMT_QUERYSTATISTICS_TYPE
type D3DKMT_QUERYSTATISTICS_QUERY_PHYSICAL_ADAPTER (line 103) | typedef struct _D3DKMT_QUERYSTATISTICS_QUERY_PHYSICAL_ADAPTER
type D3DKMT_QUERYSTATISTICS_QUERY_NODE2 (line 107) | typedef struct _D3DKMT_QUERYSTATISTICS_QUERY_NODE2
type D3DKMT_ADAPTER_PERFDATA (line 112) | typedef struct _D3DKMT_ADAPTER_PERFDATA
type D3DKMT_ADAPTER_PERFDATACAPS (line 125) | typedef struct _D3DKMT_ADAPTER_PERFDATACAPS
type D3DKMT_GPUVERSION (line 136) | typedef struct _D3DKMT_GPUVERSION
type D3DKMT_QUERYSTATISTICS_PHYSICAL_ADAPTER_INFORMATION (line 142) | typedef struct _D3DKMT_QUERYSTATISTICS_PHYSICAL_ADAPTER_INFORMATION
type D3DKMT_QUERYSTATISTICS_PROCESS_NODE_INFORMATION (line 148) | typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_NODE_INFORMATION {
type D3DKMT_NODE_PERFDATA (line 151) | typedef struct _D3DKMT_NODE_PERFDATA
type D3DKMT_QUERYSTATISTICS_NODE_INFORMATION (line 164) | typedef struct _D3DKMT_QUERYSTATISTICS_NODE_INFORMATION {
type D3DKMT_QUERYSTATISTICS_RESULT (line 170) | typedef union _D3DKMT_QUERYSTATISTICS_RESULT
type D3DKMT_QUERYSTATISTICS (line 176) | typedef struct _D3DKMT_QUERYSTATISTICS
type DXGK_ENGINE_TYPE (line 199) | typedef enum
type DXGK_NODEMETADATA_FLAGS (line 213) | typedef struct _DXGK_NODEMETADATA_FLAGS
type DXGK_NODEMETADATA (line 230) | typedef struct _DXGK_NODEMETADATA
type D3DKMT_NODEMETADATA (line 238) | typedef struct _D3DKMT_NODEMETADATA
type PROCESS_DEVICEMAP_INFORMATION_EX (line 261) | typedef struct _PROCESS_DEVICEMAP_INFORMATION_EX
type CURDIR (line 282) | typedef struct _CURDIR
type SECTION_IMAGE_INFORMATION (line 293) | typedef struct _SECTION_IMAGE_INFORMATION
type SYSTEM_BOOT_ENVIRONMENT_INFORMATION (line 341) | typedef struct _SYSTEM_BOOT_ENVIRONMENT_INFORMATION
type RTL_PROCESS_MODULE_INFORMATION (line 365) | typedef struct _RTL_PROCESS_MODULE_INFORMATION
type RTL_PROCESS_MODULES (line 379) | typedef struct _RTL_PROCESS_MODULES
type SYSTEM_SECUREBOOT_INFORMATION (line 395) | typedef struct _SYSTEM_SECUREBOOT_INFORMATION
type SYSTEM_FIRMWARE_TABLE_ACTION (line 410) | typedef enum _SYSTEM_FIRMWARE_TABLE_ACTION
type SYSTEM_FIRMWARE_TABLE_INFORMATION (line 417) | typedef struct _SYSTEM_FIRMWARE_TABLE_INFORMATION
type KSYSTEM_TIME (line 431) | typedef struct _KSYSTEM_TIME
type ALTERNATIVE_ARCHITECTURE_TYPE (line 451) | typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE
type KUSER_SHARED_DATA (line 463) | typedef struct _KUSER_SHARED_DATA
function ffKSystemTimeToUInt64 (line 841) | static inline uint64_t ffKSystemTimeToUInt64(const volatile KSYSTEM_TIME...
function ffIsWindows10OrGreater (line 861) | static inline bool ffIsWindows10OrGreater()
function ffIsWindows11OrGreater (line 870) | static inline bool ffIsWindows11OrGreater()
type RTL_DRIVE_LETTER_CURDIR (line 939) | typedef struct _RTL_DRIVE_LETTER_CURDIR
type RTL_USER_PROCESS_PARAMETERS_FULL (line 947) | typedef struct _RTL_USER_PROCESS_PARAMETERS_FULL
type PEB_FULL (line 995) | typedef struct _PEB_FULL
type TEB_FULL (line 1061) | typedef struct _TEB_FULL
function PTEB_FULL (line 1134) | static inline PTEB_FULL ffGetTeb()
function PPEB_FULL (line 1139) | static inline PPEB_FULL ffGetPeb()
type KEY_VALUE_INFORMATION_CLASS (line 1159) | typedef enum _KEY_VALUE_INFORMATION_CLASS
type KEY_VALUE_PARTIAL_INFORMATION (line 1183) | typedef struct _KEY_VALUE_PARTIAL_INFORMATION
type KEY_INFORMATION_CLASS (line 1191) | typedef enum _KEY_INFORMATION_CLASS
type KEY_BASIC_INFORMATION (line 1215) | typedef struct _KEY_BASIC_INFORMATION
type KEY_FULL_INFORMATION (line 1223) | typedef struct _KEY_FULL_INFORMATION
FILE: src/common/windows/perflib_.h
type PERF_INSTANCE_HEADER (line 13) | typedef struct _PERF_INSTANCE_HEADER {
type PERF_COUNTER_IDENTIFIER (line 21) | typedef struct _PERF_COUNTER_IDENTIFIER {
type PERF_DATA_HEADER (line 34) | typedef struct _PERF_DATA_HEADER {
type PerfCounterDataType (line 45) | typedef enum _PerfCounterDataType {
type PERF_COUNTER_HEADER (line 53) | typedef struct _PERF_COUNTER_HEADER {
type PERF_MULTI_INSTANCES (line 66) | typedef struct _PERF_MULTI_INSTANCES {
type PERF_MULTI_COUNTERS (line 73) | typedef struct _PERF_MULTI_COUNTERS {
type PERF_COUNTER_DATA (line 80) | typedef struct _PERF_COUNTER_DATA {
FILE: src/common/windows/registry.c
function HKEY_CASE (line 15) | HKEY_CASE(HKEY_CLASSES_ROOT)
function ffRegOpenSubkeyForRead (line 92) | bool ffRegOpenSubkeyForRead(HANDLE hKey, const wchar_t* subKeyW, HANDLE*...
function processRegValue (line 123) | static bool processRegValue(const FFRegValueArg* arg, const ULONG regTyp...
function ffRegReadValue (line 269) | bool ffRegReadValue(HANDLE hKey, const FFRegValueArg* arg, FFstrbuf* error)
function ffRegReadValues (line 315) | bool ffRegReadValues(HANDLE hKey, uint32_t argc, const FFRegValueArg arg...
function ffRegGetSubKey (line 389) | bool ffRegGetSubKey(HANDLE hKey, uint32_t index, FFstrbuf* result, FFstr...
function ffRegGetNSubKeys (line 410) | bool ffRegGetNSubKeys(HANDLE hKey, uint32_t* result, FFstrbuf* error)
FILE: src/common/windows/registry.h
type FFRegValueArg (line 18) | typedef struct FFRegValueArg
function ffRegOpenKeyForRead (line 32) | static inline bool ffRegOpenKeyForRead(HKEY hRootKey, const wchar_t* sub...
function ffRegReadStrbuf (line 37) | static inline bool ffRegReadStrbuf(HANDLE hKey, const wchar_t* valueName...
function ffRegReadUint (line 45) | static inline bool ffRegReadUint(HANDLE hKey, const wchar_t* valueNameW,...
function ffRegReadUint64 (line 53) | static inline bool ffRegReadUint64(HANDLE hKey, const wchar_t* valueName...
function ffRegReadData (line 61) | static inline bool ffRegReadData(HANDLE hKey, const wchar_t* valueNameW,...
FILE: src/common/windows/unicode.c
function ffStrbufSetNWS (line 5) | void ffStrbufSetNWS(FFstrbuf* result, uint32_t length, const wchar_t* so...
function ffStrbufAppendNWS (line 29) | void ffStrbufAppendNWS(FFstrbuf* result, uint32_t length, const wchar_t*...
FILE: src/common/windows/unicode.h
function ffStrbufSetWS (line 9) | static inline void ffStrbufSetWS(FFstrbuf* result, const wchar_t* source)
function ffStrbufAppendWS (line 15) | static inline void ffStrbufAppendWS(FFstrbuf* result, const wchar_t* sou...
function ffStrbufInitNWS (line 21) | static inline void ffStrbufInitNWS(FFstrbuf* result, uint32_t length, co...
function ffStrbufInitWS (line 27) | static inline void ffStrbufInitWS(FFstrbuf* result, const wchar_t* source)
function FFstrbuf (line 33) | static inline FFstrbuf ffStrbufCreateNWS(uint32_t length, const wchar_t*...
function FFstrbuf (line 40) | static inline FFstrbuf ffStrbufCreateWS(const wchar_t* source)
FILE: src/common/windows/unicode.hpp
function ffStrbufInitWSV (line 11) | static inline void ffStrbufInitWSV(FFstrbuf* result, const std::wstring_...
function FFstrbuf (line 16) | static inline FFstrbuf ffStrbufCreateWSV(const std::wstring_view source)
function ffStrbufSetWSV (line 21) | static inline void ffStrbufSetWSV(FFstrbuf* result, const std::wstring_v...
FILE: src/common/windows/util.hpp
type on_scope_exit (line 7) | struct on_scope_exit {
method on_scope_exit (line 11) | explicit on_scope_exit(Fn &&fn) noexcept
method on_scope_exit (line 13) | on_scope_exit(const on_scope_exit&) = delete;
method on_scope_exit (line 14) | on_scope_exit& operator=(const on_scope_exit&) = delete;
FILE: src/common/windows/variant.hpp
type FFBaseVariant (line 10) | struct FFBaseVariant: TVariant
method hasValue (line 12) | bool hasValue() {
method T (line 20) | T get()
type FFWmiVariant (line 137) | struct FFWmiVariant: FFBaseVariant<VARIANT>
method FFWmiVariant (line 139) | FFWmiVariant(const FFWmiVariant&) = delete;
method FFWmiVariant (line 141) | explicit FFWmiVariant() { VariantInit(this); }
type FFPropVariant (line 147) | struct FFPropVariant: FFBaseVariant<PROPVARIANT>
method FFPropVariant (line 149) | FFPropVariant(const FFPropVariant&) = delete;
method FFPropVariant (line 151) | explicit FFPropVariant() { PropVariantInit(this); }
type bstr_t (line 159) | struct bstr_t
method bstr_t (line 161) | explicit bstr_t(const wchar_t* str) noexcept: _bstr(SysAllocString(str...
FILE: src/common/windows/version.c
function ffGetFileVersion (line 10) | bool ffGetFileVersion(const wchar_t* filePath, const wchar_t* stringName...
FILE: src/common/windows/wmi.hpp
type FFWmiNamespace (line 14) | enum class FFWmiNamespace {
type FFWmiRecord (line 20) | struct FFWmiRecord
method FFWmiRecord (line 24) | explicit FFWmiRecord(IWbemClassObject* obj): obj(obj) {}
method FFWmiRecord (line 25) | FFWmiRecord(const FFWmiRecord&) = delete;
method FFWmiRecord (line 26) | FFWmiRecord(FFWmiRecord&& other) { *this = (FFWmiRecord&&)other; }
method FFWmiRecord (line 29) | FFWmiRecord& operator =(FFWmiRecord&& other) {
method FFWmiVariant (line 40) | FFWmiVariant get(const wchar_t* key) {
type FFWmiQuery (line 47) | struct FFWmiQuery
method FFWmiQuery (line 53) | explicit FFWmiQuery(IEnumWbemClassObject* pEnumerator): pEnumerator(pE...
method FFWmiQuery (line 54) | FFWmiQuery(const FFWmiQuery& other) = delete;
method FFWmiQuery (line 55) | FFWmiQuery(FFWmiQuery&& other) { *this = (FFWmiQuery&&)other; }
method FFWmiQuery (line 59) | FFWmiQuery& operator =(FFWmiQuery&& other) {
method FFWmiRecord (line 66) | FFWmiRecord next() {
FILE: src/detection/battery/battery.h
type FFBatteryResult (line 8) | typedef struct FFBatteryResult
FILE: src/detection/battery/battery_android.c
function wrapYyjsonFree (line 10) | static inline void wrapYyjsonFree(yyjson_doc** doc)
FILE: src/detection/battery/battery_haiku.c
type dirent (line 55) | struct dirent
FILE: src/detection/battery/battery_linux.c
function checkAc (line 11) | static bool checkAc(const char* id, FFstrbuf* tmpBuffer)
function parseBattery (line 24) | static void parseBattery(int dfd, const char* id, FFBatteryOptions* opti...
type dirent (line 171) | struct dirent
FILE: src/detection/battery/battery_obsd.c
type apm_power_info (line 15) | struct apm_power_info
FILE: src/detection/battery/battery_windows.c
type FFSmbiosPortableBattery (line 145) | typedef struct FFSmbiosPortableBattery
FILE: src/detection/bios/bios.h
type FFBiosResult (line 6) | typedef struct FFBiosResult
FILE: src/detection/bios/bios_windows.c
type FFSmbiosBios (line 20) | typedef struct FFSmbiosBios
FILE: src/detection/bluetooth/bluetooth.h
type FFBluetoothResult (line 6) | typedef struct FFBluetoothResult
FILE: src/detection/bluetooth/bluetooth_bsd.c
type bt_devinfo (line 6) | struct bt_devinfo
FILE: src/detection/bluetooth/bluetooth_linux.c
function detectBluetoothValue (line 48) | static bool detectBluetoothValue(FFDBusData* dbus, DBusMessageIter* iter...
function detectBluetoothProperty (line 87) | static void detectBluetoothProperty(FFDBusData* dbus, DBusMessageIter* i...
function FFBluetoothResult (line 123) | static FFBluetoothResult* detectBluetoothObject(FFlist* devices, FFDBusD...
function detectBluetoothRoot (line 164) | static void detectBluetoothRoot(FFlist* devices, FFDBusData* dbus, DBusM...
function connectedDevices (line 216) | static uint32_t connectedDevices(void)
FILE: src/detection/bluetoothradio/bluetoothradio.h
type FFBluetoothRadioResult (line 6) | typedef struct FFBluetoothRadioResult
FILE: src/detection/bluetoothradio/bluetoothradio_linux.c
type dirent (line 120) | struct dirent
FILE: src/detection/bluetoothradio/bluetoothradio_windows.c
type BTH_RADIO_INFO (line 17) | typedef struct _BTH_RADIO_INFO
type BTH_LOCAL_RADIO_INFO (line 33) | typedef struct _BTH_LOCAL_RADIO_INFO
FILE: src/detection/board/board.h
type FFBoardResult (line 6) | typedef struct FFBoardResult
FILE: src/detection/board/board_windows.c
type FFSmbiosBaseboard (line 4) | typedef struct FFSmbiosBaseboard
FILE: src/detection/bootmgr/bootmgr.c
function evBits (line 3) | static inline uint8_t evBits(uint16_t val, uint8_t mask, uint8_t shift)
function ffEfiUcs2ToUtf8 (line 8) | static void ffEfiUcs2ToUtf8(const uint16_t *const chars, FFstrbuf* result)
function ffEfiFillLoadOption (line 28) | bool ffEfiFillLoadOption(const FFEfiLoadOption* efiOption, FFBootmgrResu...
FILE: src/detection/bootmgr/bootmgr.h
type FFBootmgrResult (line 6) | typedef struct FFBootmgrResult
FILE: src/detection/bootmgr/bootmgr_bsd.c
type efi_char (line 15) | typedef uint16_t efi_char;
type efi_var_ioc (line 28) | struct efi_var_ioc
FILE: src/detection/bootmgr/efi_helper.h
type ffEfiDevicePathProtocol (line 4) | typedef struct ffEfiDevicePathProtocol
type FFEfiLoadOption (line 13) | typedef struct FFEfiLoadOption
FILE: src/detection/brightness/brightness.h
type FFBrightnessResult (line 6) | typedef struct FFBrightnessResult
FILE: src/detection/brightness/brightness_apple.c
type CFTypeRef (line 10) | typedef CFTypeRef IOAVServiceRef;
function IOOptionBits (line 126) | static IOOptionBits getSupportedTransactionType(void)
FILE: src/detection/brightness/brightness_bsd.c
type backlight_props (line 25) | struct backlight_props
type backlight_info (line 37) | struct backlight_info
FILE: src/detection/brightness/brightness_linux.c
type dirent (line 25) | struct dirent
FILE: src/detection/brightness/brightness_obsd.c
type wsdisplay_param (line 25) | struct wsdisplay_param
FILE: src/detection/brightness/brightness_windows.cpp
type _MC_VCP_CODE_TYPE (line 19) | enum _MC_VCP_CODE_TYPE {
function hasBuiltinDisplay (line 126) | static bool hasBuiltinDisplay(const FFDisplayServerResult* displayServer)
FILE: src/detection/btrfs/btrfs.h
type FFBtrfsDiskUsage (line 6) | typedef struct FFBtrfsDiskUsage
type FFBtrfsResult (line 15) | typedef struct FFBtrfsResult
FILE: src/detection/btrfs/btrfs_linux.c
type dirent (line 20) | struct dirent
type dirent (line 49) | struct dirent
type dirent (line 124) | struct dirent
FILE: src/detection/camera/camera.h
type FFCameraResult (line 6) | typedef struct FFCameraResult
FILE: src/detection/camera/camera_android.c
function wrapYyjsonFree (line 9) | static inline void wrapYyjsonFree(yyjson_doc** doc)
FILE: src/detection/camera/camera_linux.c
type v4l2_capability (line 33) | struct v4l2_capability
type v4l2_format (line 37) | struct v4l2_format
FILE: src/detection/chassis/chassis.h
type FFChassisResult (line 6) | typedef struct FFChassisResult
FILE: src/detection/chassis/chassis_windows.c
type FFSmbiosSystemEnclosure (line 5) | typedef struct FFSmbiosSystemEnclosure
FILE: src/detection/command/command.c
type FFCommandResultBundle (line 5) | typedef struct FFCommandResultBundle
function ffPrepareCommand (line 33) | bool ffPrepareCommand(FFCommandOptions* options)
FILE: src/detection/cpu/cpu.c
function ffCPUDetectByCpuid (line 68) | void ffCPUDetectByCpuid(FFCPUResult* cpu)
function ffCPUDetectByCpuid (line 137) | void ffCPUDetectByCpuid(FFCPUResult* cpu)
function ffCPUDetectByCpuid (line 273) | void ffCPUDetectByCpuid(FFCPUResult* cpu)
function ffCPUDetectByCpuid (line 413) | void ffCPUDetectByCpuid(FFCPUResult* cpu)
function ffCPUDetectByCpuid (line 492) | void ffCPUDetectByCpuid(FF_MAYBE_UNUSED FFCPUResult* cpu)
function ffCPUDetectByCpuid (line 500) | void ffCPUDetectByCpuid(FF_MAYBE_UNUSED FFCPUResult* cpu)
FILE: src/detection/cpu/cpu.h
type FFCPUCore (line 8) | typedef struct FFCPUCore
type FFCPUResult (line 14) | typedef struct FFCPUResult
FILE: src/detection/cpu/cpu_apple.c
function detectCpuTemp (line 6) | static double detectCpuTemp(const FFCPUOptions* options, const FFstrbuf*...
FILE: src/detection/cpu/cpu_haiku.c
type cpu_platform (line 22) | enum cpu_platform
type cpu_vendor (line 23) | enum cpu_vendor
FILE: src/detection/cpu/cpu_linux.c
function readTempFile (line 17) | static double readTempFile(int dfd, const char* filename, FFstrbuf* buffer)
function parseTZDir (line 29) | static double parseTZDir(int dfd, FFstrbuf* buffer)
function parseHwmonDir (line 45) | static double parseHwmonDir(int dfd, FFstrbuf* buffer)
function detectCPUTemp (line 66) | static double detectCPUTemp(const FFCPUOptions* options)
function detectNumaNodes (line 187) | static void detectNumaNodes(FFCPUResult* cpu)
function detectQualcomm (line 205) | static void detectQualcomm(FFCPUResult* cpu)
function detectMediaTek (line 250) | static void detectMediaTek(FFCPUResult* cpu)
function detectExynos (line 285) | static void detectExynos(FFCPUResult* cpu)
function detectAndroid (line 324) | static void detectAndroid(FFCPUResult* cpu)
function detectArmName (line 363) | static void detectArmName(FFstrbuf* cpuinfo, FFCPUResult* cpu, uint32_t ...
function getFrequency (line 498) | static uint32_t getFrequency(FFstrbuf* basePath, const char* cpuinfoFile...
function getNumCores (line 519) | static uint8_t getNumCores(FFstrbuf* basePath, FFstrbuf* buffer)
function detectFrequency (line 537) | static bool detectFrequency(FFCPUResult* cpu, const FFCPUOptions* options)
function FF_MAYBE_UNUSED (line 589) | FF_MAYBE_UNUSED static uint16_t getPackageCount(FFstrbuf* cpuinfo)
function FF_MAYBE_UNUSED (line 609) | FF_MAYBE_UNUSED static const char* detectCPUX86(const FFCPUOptions* opti...
type dirent (line 649) | struct dirent
function FF_MAYBE_UNUSED (line 715) | FF_MAYBE_UNUSED static void parseIsa(FFstrbuf* cpuIsa)
function FF_MAYBE_UNUSED (line 737) | FF_MAYBE_UNUSED static void detectSocName(FFCPUResult* cpu)
function FF_MAYBE_UNUSED (line 853) | FF_MAYBE_UNUSED static uint16_t getLoongarchPropCount(FFstrbuf* cpuinfo,...
function FF_MAYBE_UNUSED (line 875) | FF_MAYBE_UNUSED static const char* detectCPUOthers(const FFCPUOptions* o...
FILE: src/detection/cpu/cpu_nbsd.c
function freePropDict (line 12) | static void freePropDict(prop_dictionary_t* pdict)
FILE: src/detection/cpu/cpu_obsd.c
type sensordev (line 15) | struct sensordev
type sensordev (line 16) | struct sensordev
type sensor (line 39) | struct sensor
type sensor (line 40) | struct sensor
FILE: src/detection/cpu/cpu_sunos.c
function kstatFreeWrap (line 63) | static inline void kstatFreeWrap(kstat_ctl_t** pkc)
function countTypeId (line 70) | static inline uint16_t countTypeId(kstat_ctl_t* kc, const char* type)
FILE: src/detection/cpu/cpu_windows.c
function ffPerfCloseQueryHandle (line 12) | static inline void ffPerfCloseQueryHandle(HANDLE* phQuery)
type FFPerfQuerySpec (line 23) | struct FFPerfQuerySpec
type FFSmbiosProcessorInfo (line 136) | typedef struct FFSmbiosProcessorInfo
FILE: src/detection/cpucache/cpucache.h
type __attribute__ (line 6) | enum __attribute__
type FFCPUCache (line 14) | typedef struct FFCPUCache
type FFCPUCacheResult (line 22) | typedef struct FFCPUCacheResult
function FFCPUCache (line 29) | static inline FFCPUCache* ffCPUCacheAddItem(FFCPUCacheResult* result, ui...
FILE: src/detection/cpucache/cpucache_linux.c
type dirent (line 70) | struct dirent
type dirent (line 97) | struct dirent
FILE: src/detection/cpucache/cpucache_shared.c
type FFSmbiosCacheInfo (line 5) | typedef struct FFSmbiosCacheInfo
FILE: src/detection/cpuusage/cpuusage.c
function ffPrepareCPUUsage (line 10) | void ffPrepareCPUUsage(void)
FILE: src/detection/cpuusage/cpuusage.h
type FFCpuUsageInfo (line 6) | typedef struct FFCpuUsageInfo {
FILE: src/detection/cpuusage/cpuusage_sunos.c
function kstatFreeWrap (line 7) | static inline void kstatFreeWrap(kstat_ctl_t** pkc)
FILE: src/detection/cpuusage/cpuusage_windows.c
type FFPerfQuerySpec (line 47) | struct FFPerfQuerySpec
FILE: src/detection/cursor/cursor.h
type FFCursorResult (line 6) | typedef struct FFCursorResult
FILE: src/detection/cursor/cursor_linux.c
function detectCursorGTK (line 12) | static bool detectCursorGTK(FFCursorResult* result)
function detectCursorFromConfigFile (line 30) | static void detectCursorFromConfigFile(const char* relativeFilePath, con...
function detectCursorFromXResources (line 48) | static bool detectCursorFromXResources(FFCursorResult* result)
function detectCursorFromEnv (line 58) | static bool detectCursorFromEnv(FFCursorResult* result)
function detectCursorHyprcursor (line 71) | static bool detectCursorHyprcursor(FFCursorResult* result)
function ffDetectCursor (line 84) | void ffDetectCursor(FFCursorResult* result)
FILE: src/detection/cursor/cursor_nosupport.c
function ffDetectCursor (line 3) | void ffDetectCursor(FF_MAYBE_UNUSED FFCursorResult* result)
FILE: src/detection/cursor/cursor_windows.c
function ffDetectCursor (line 6) | void ffDetectCursor(FFCursorResult* result)
FILE: src/detection/de/de_linux.c
function getKDE (line 25) | static void getKDE(FFstrbuf* result, FF_MAYBE_UNUSED FFDEOptions* options)
function getGnome (line 72) | static void getGnome(FFstrbuf* result, FF_MAYBE_UNUSED FFDEOptions* opti...
function getCinnamon (line 87) | static void getCinnamon(FFstrbuf* result, FF_MAYBE_UNUSED FFDEOptions* o...
function getMate (line 105) | static void getMate(FFstrbuf* result, FF_MAYBE_UNUSED FFDEOptions* options)
function getXFCE4 (line 146) | static void getXFCE4(FFstrbuf* result, FF_MAYBE_UNUSED FFDEOptions* opti...
function getLXQt (line 165) | static void getLXQt(FFstrbuf* result, FF_MAYBE_UNUSED FFDEOptions* options)
function getBudgie (line 188) | static void getBudgie(FFstrbuf* result, FF_MAYBE_UNUSED FFDEOptions* opt...
function getUnity (line 193) | static void getUnity(FFstrbuf* result, FF_MAYBE_UNUSED FFDEOptions* opti...
function extractTdeVersion (line 199) | static bool extractTdeVersion(const char* line, uint32_t len, void *user...
FILE: src/detection/disk/disk.c
function compareDisks (line 3) | static int compareDisks(const FFDisk* disk1, const FFDisk* disk2)
function ffDiskMatchesFolderPatterns (line 38) | bool ffDiskMatchesFolderPatterns(FFstrbuf* folders, const char* path, ch...
FILE: src/detection/disk/disk.h
type FFDisk (line 12) | typedef struct FFDisk
FILE: src/detection/disk/disk_bsd.c
type statfs (line 20) | struct statfs
type gmesh (line 26) | struct gmesh
type gclass (line 27) | struct gclass
type ggeom (line 44) | struct ggeom
type gprovider (line 46) | struct gprovider
function detectFsInfo (line 61) | static void detectFsInfo(struct statfs* fs, FFDisk* disk)
type CmnAttrBuf (line 88) | struct CmnAttrBuf {
function detectFsInfo (line 94) | void detectFsInfo(struct statfs* fs, FFDisk* disk)
function detectFsInfo (line 111) | static void detectFsInfo(struct statfs* fs, FFDisk* disk)
type statfs (line 144) | struct statfs
type stat (line 192) | struct stat
FILE: src/detection/disk/disk_linux.c
function isPhysicalDevice (line 24) | static bool isPhysicalDevice(const struct mntent* device)
function detectNameFromPath (line 93) | static void detectNameFromPath(FFDisk* disk, const struct stat* deviceSt...
function detectName (line 122) | static void detectName(FFDisk* disk)
function detectType (line 162) | static void detectType(FF_MAYBE_UNUSED const FFlist* disks, FFDisk* curr...
function isSubvolume (line 174) | static bool isSubvolume(const FFlist* disks, FFDisk* currentDisk)
function isRemovable (line 211) | static bool isRemovable(FFDisk* currentDisk)
function detectType (line 231) | static void detectType(const FFlist* disks, FFDisk* currentDisk, struct ...
function detectStats (line 247) | static void detectStats(FFDisk* disk)
type mntent (line 288) | struct mntent
FILE: src/detection/disk/disk_sunos.c
function isPhysicalDevice (line 11) | static bool isPhysicalDevice(const struct mnttab* device)
function isSubvolume (line 39) | static bool isSubvolume(const FFlist* disks, FFDisk* currentDisk)
function detectType (line 73) | static void detectType(const FFlist* disks, FFDisk* currentDisk, struct ...
function detectStats (line 85) | static void detectStats(FFDisk* disk)
type mnttab (line 110) | struct mnttab
FILE: src/detection/diskio/diskio.c
function ffPrepareDiskIO (line 10) | void ffPrepareDiskIO(FFDiskIOOptions* options)
FILE: src/detection/diskio/diskio.h
type FFDiskIOResult (line 6) | typedef struct FFDiskIOResult
FILE: src/detection/diskio/diskio_bsd.c
type gmesh (line 17) | struct gmesh
type devstat (line 28) | struct devstat
type gident (line 33) | struct gident
type gprovider (line 38) | struct gprovider
type gprovider (line 38) | struct gprovider
type gconfig (line 43) | struct gconfig
type statinfo (line 79) | struct statinfo
type devinfo (line 80) | struct devinfo
type devinfo (line 80) | struct devinfo
type devstat (line 87) | struct devstat
FILE: src/detection/diskio/diskio_linux.c
type dirent (line 83) | struct dirent
FILE: src/detection/diskio/diskio_nbsd.c
type io_sysctl (line 10) | struct io_sysctl
type io_sysctl (line 14) | struct io_sysctl
type io_sysctl (line 23) | struct io_sysctl
FILE: src/detection/diskio/diskio_obsd.c
type diskstats (line 14) | struct diskstats
type diskstats (line 23) | struct diskstats
FILE: src/detection/diskio/diskio_sunos.c
function kstatFreeWrap (line 5) | static inline void kstatFreeWrap(kstat_ctl_t** pkc)
FILE: src/detection/diskio/diskio_windows.c
function detectPhysicalDisk (line 8) | static bool detectPhysicalDisk(const wchar_t* szDevice, FFlist* result, ...
FILE: src/detection/displayserver/displayserver.c
function FFDisplayResult (line 3) | FFDisplayResult* ffdsAppendDisplay(
function FFDisplayServerResult (line 53) | const FFDisplayServerResult* ffConnectDisplayServer()
FILE: src/detection/displayserver/displayserver.h
type FF_DISPLAY_TYPE_UNKNOWN (line 49) | typedef enum __attribute__((__packed__)) FFDisplayType {
type FF_DISPLAY_HDR_STATUS_UNKNOWN (line 55) | typedef enum __attribute__((__packed__)) FFDisplayHdrStatus
type FF_DISPLAY_DRR_STATUS_UNKNOWN (line 63) | typedef enum __attribute__((__packed__)) FFDisplayVrrStatus
type FFDisplayResult (line 70) | typedef struct FFDisplayResult
type FFDisplayServerResult (line 95) | typedef struct FFDisplayServerResult
FILE: src/detection/displayserver/displayserver_android.c
function checkHdrStatus (line 8) | static bool checkHdrStatus(FFDisplayResult* display)
function detectWithDumpsys (line 35) | static void detectWithDumpsys(FFDisplayServerResult* ds)
function detectWithGetprop (line 107) | static bool detectWithGetprop(FFDisplayServerResult* ds)
function detectDE (line 143) | static bool detectDE(FFDisplayServerResult* ds)
function ffConnectDisplayServerImpl (line 201) | void ffConnectDisplayServerImpl(FFDisplayServerResult* ds)
FILE: src/detection/displayserver/displayserver_apple.c
function detectDisplays (line 21) | static void detectDisplays(FFDisplayServerResult* ds)
function ffConnectDisplayServerImpl (line 190) | void ffConnectDisplayServerImpl(FFDisplayServerResult* ds)
FILE: src/detection/displayserver/displayserver_haiku.cpp
function detectDisplays (line 12) | static void detectDisplays(FFDisplayServerResult* ds)
function ffConnectDisplayServerImpl (line 68) | void ffConnectDisplayServerImpl(FFDisplayServerResult* ds)
FILE: src/detection/displayserver/displayserver_windows.c
function detectDisplays (line 13) | static void detectDisplays(FFDisplayServerResult* ds)
function ffConnectDisplayServerImpl (line 208) | void ffConnectDisplayServerImpl(FFDisplayServerResult* ds)
FILE: src/detection/displayserver/linux/common.c
function FFDisplayType (line 4) | FFDisplayType ffdsGetDisplayType(const char* name)
FILE: src/detection/displayserver/linux/displayserver_linux.c
function getWMProtocolNameFromEnv (line 9) | static void getWMProtocolNameFromEnv(FFDisplayServerResult* result)
function ffConnectDisplayServerImpl (line 46) | void ffConnectDisplayServerImpl(FFDisplayServerResult* ds)
FILE: src/detection/displayserver/linux/drm.c
type dirent (line 22) | struct dirent
function FF_MAYBE_UNUSED (line 174) | FF_MAYBE_UNUSED static const char* drmGetEdidByConnId(uint32_t connId, u...
FILE: src/detection/displayserver/linux/wayland/global-output.c
function waylandOutputModeListener (line 7) | static void waylandOutputModeListener(void* data, FF_MAYBE_UNUSED struct...
function waylandOutputScaleListener (line 25) | static void waylandOutputScaleListener(void* data, FF_MAYBE_UNUSED struc...
function waylandOutputGeometryListener (line 31) | static void waylandOutputGeometryListener(void *data,
function handleXdgLogicalSize (line 48) | static void handleXdgLogicalSize(void *data, FF_MAYBE_UNUSED struct zxdg...
type wl_output_listener (line 69) | struct wl_output_listener
type zxdg_output_v1_listener (line 73) | struct zxdg_output_v1_listener
type wl_registry (line 81) | struct wl_registry
type wl_proxy (line 83) | struct wl_proxy
type wl_proxy (line 83) | struct wl_proxy
type wl_proxy (line 109) | struct wl_proxy
type wl_registry (line 169) | struct wl_registry
type wl_proxy (line 171) | struct wl_proxy
type wl_proxy (line 171) | struct wl_proxy
FILE: src/detection/displayserver/linux/wayland/kde-output-device-v2-client-protocol.h
type kde_output_device_mode_v2 (line 32) | struct kde_output_device_mode_v2
type kde_output_device_registry_v2 (line 33) | struct kde_output_device_registry_v2
type kde_output_device_v2 (line 34) | struct kde_output_device_v2
type wl_interface (line 57) | struct wl_interface
type wl_interface (line 114) | struct wl_interface
type wl_interface (line 145) | struct wl_interface
type kde_output_device_registry_v2_error (line 156) | enum kde_output_device_registry_v2_error {
type kde_output_device_registry_v2_listener (line 168) | struct kde_output_device_registry_v2_listener {
function kde_output_device_registry_v2_add_listener (line 194) | static inline int
function kde_output_device_registry_v2_set_user_data (line 219) | static inline void
type kde_output_device_registry_v2 (line 227) | struct kde_output_device_registry_v2
type wl_proxy (line 229) | struct wl_proxy
function kde_output_device_registry_v2_get_version (line 232) | static inline uint32_t
function kde_output_device_registry_v2_destroy (line 239) | static inline void
function kde_output_device_registry_v2_stop (line 254) | static inline void
type kde_output_device_v2_subpixel (line 270) | enum kde_output_device_v2_subpixel {
type kde_output_device_v2_transform (line 297) | enum kde_output_device_v2_transform {
type kde_output_device_v2_capability (line 317) | enum kde_output_device_v2_capability {
type kde_output_device_v2_vrr_policy (line 448) | enum kde_output_device_v2_vrr_policy {
type kde_output_device_v2_rgb_range (line 463) | enum kde_output_device_v2_rgb_range {
type kde_output_device_v2_auto_rotate_policy (line 476) | enum kde_output_device_v2_auto_rotate_policy {
type kde_output_device_v2_color_profile_source (line 489) | enum kde_output_device_v2_color_profile_source {
type kde_output_device_v2_color_power_tradeoff (line 507) | enum kde_output_device_v2_color_power_tradeoff {
type kde_output_device_v2_edr_policy (line 525) | enum kde_output_device_v2_edr_policy {
type kde_output_device_v2_listener (line 535) | struct kde_output_device_v2_listener {
function kde_output_device_v2_add_listener (line 994) | static inline int
function kde_output_device_v2_set_user_data (line 1159) | static inline void
type kde_output_device_v2 (line 1167) | struct kde_output_device_v2
type wl_proxy (line 1169) | struct wl_proxy
function kde_output_device_v2_get_version (line 1172) | static inline uint32_t
function kde_output_device_v2_destroy (line 1179) | static inline void
function kde_output_device_v2_release (line 1191) | static inline void
type kde_output_device_mode_v2_flags (line 1204) | enum kde_output_device_mode_v2_flags {
type kde_output_device_mode_v2_listener (line 1214) | struct kde_output_device_mode_v2_listener {
function kde_output_device_mode_v2_add_listener (line 1269) | static inline int
function kde_output_device_mode_v2_set_user_data (line 1300) | static inline void
type kde_output_device_mode_v2 (line 1308) | struct kde_output_device_mode_v2
type wl_proxy (line 1310) | struct wl_proxy
function kde_output_device_mode_v2_get_version (line 1313) | static inline uint32_t
function kde_output_device_mode_v2_destroy (line 1320) | static inline void
FILE: src/detection/displayserver/linux/wayland/kde-output-device-v2-protocol.c
type wl_interface (line 20) | struct wl_interface
type wl_interface (line 21) | struct wl_interface
type wl_interface (line 23) | struct wl_interface
type wl_message (line 37) | struct wl_message
type wl_message (line 41) | struct wl_message
type wl_message (line 52) | struct wl_message
type wl_message (line 56) | struct wl_message
type wl_message (line 102) | struct wl_message
FILE: src/detection/displayserver/linux/wayland/kde-output-order-v1-client-protocol.h
type kde_output_order_v1 (line 26) | struct kde_output_order_v1
type wl_interface (line 45) | struct wl_interface
type kde_output_order_v1_listener (line 52) | struct kde_output_order_v1_listener {
function kde_output_order_v1_add_listener (line 75) | static inline int
FILE: src/detection/displayserver/linux/wayland/kde-output-order-v1-protocol.c
type wl_interface (line 16) | struct wl_interface
type wl_message (line 20) | struct wl_message
type wl_message (line 24) | struct wl_message
FILE: src/detection/displayserver/linux/wayland/kde-output.c
type WaylandKdeMode (line 9) | typedef struct WaylandKdeMode
function waylandKdeModeSizeListener (line 18) | static void waylandKdeModeSizeListener(void* data, FF_MAYBE_UNUSED struc...
function waylandKdeModeRefreshListener (line 25) | static void waylandKdeModeRefreshListener(void* data, FF_MAYBE_UNUSED st...
function waylandKdeModePreferredListener (line 31) | static void waylandKdeModePreferredListener(void* data, FF_MAYBE_UNUSED ...
type kde_output_device_mode_v2_listener (line 37) | struct kde_output_device_mode_v2_listener
function waylandKdeModeListener (line 45) | static void waylandKdeModeListener(void* data, FF_MAYBE_UNUSED struct kd...
function waylandKdeCurrentModeListener (line 57) | static void waylandKdeCurrentModeListener(void* data, FF_MAYBE_UNUSED st...
function waylandKdeScaleListener (line 83) | static void waylandKdeScaleListener(void* data, FF_MAYBE_UNUSED struct k...
function waylandKdeEdidListener (line 89) | static void waylandKdeEdidListener(void* data, FF_MAYBE_UNUSED struct kd...
function waylandKdeEnabledListener (line 102) | static void waylandKdeEnabledListener(void* data, FF_MAYBE_UNUSED struct...
function waylandKdeGeometryListener (line 108) | static void waylandKdeGeometryListener(void *data,
function waylandKdeNameListener (line 125) | static void waylandKdeNameListener(void* data, FF_MAYBE_UNUSED struct kd...
function waylandKdeHdrListener (line 135) | static void waylandKdeHdrListener(void *data, FF_MAYBE_UNUSED struct kde...
function waylandKdeMaxBitsPerColorListener (line 141) | static void waylandKdeMaxBitsPerColorListener(void *data, FF_MAYBE_UNUSE...
type kde_output_device_v2_listener (line 147) | struct kde_output_device_v2_listener
type wl_registry (line 187) | struct wl_registry
type wl_proxy (line 189) | struct wl_proxy
type wl_proxy (line 189) | struct wl_proxy
function waylandKdeOutputOrderListener (line 266) | static void waylandKdeOutputOrderListener(void *data, FF_MAYBE_UNUSED st...
type wl_registry (line 273) | struct wl_registry
type wl_proxy (line 275) | struct wl_proxy
type wl_proxy (line 275) | struct wl_proxy
type kde_output_order_v1_listener (line 279) | struct kde_output_order_v1_listener
FILE: src/detection/displayserver/linux/wayland/wayland.c
function waylandDetectWM (line 27) | static bool waylandDetectWM(int fd, FFDisplayServerResult* result)
function waylandGlobalAddListener (line 76) | static void waylandGlobalAddListener(void* data, struct wl_registry* reg...
function FF_MAYBE_UNUSED (line 108) | static FF_MAYBE_UNUSED bool matchDrmConnector(const char* connName, Wayl...
function ffWaylandOutputNameListener (line 148) | void ffWaylandOutputNameListener(void* data, FF_MAYBE_UNUSED void* outpu...
function ffWaylandOutputDescriptionListener (line 162) | void ffWaylandOutputDescriptionListener(void* data, FF_MAYBE_UNUSED void...
function ffWaylandHandleRotation (line 172) | uint32_t ffWaylandHandleRotation(WaylandDisplay* display)
type wl_proxy (line 240) | struct wl_proxy
type wl_proxy (line 240) | struct wl_proxy
type wl_registry_listener (line 249) | struct wl_registry_listener
FILE: src/detection/displayserver/linux/wayland/wayland.h
type FF_WAYLAND_PROTOCOL_TYPE_NONE (line 12) | typedef enum __attribute__((__packed__)) WaylandProtocolType
type WaylandData (line 20) | typedef struct WaylandData
type WaylandDisplay (line 34) | typedef struct WaylandDisplay
function stubListener (line 62) | inline static void stubListener(void* data, ...)
function ffWaylandGenerateIdFromName (line 67) | inline static uint64_t ffWaylandGenerateIdFromName(const char* name)
type wl_registry (line 83) | struct wl_registry
type wl_registry (line 84) | struct wl_registry
type wl_registry (line 85) | struct wl_registry
type wl_registry (line 86) | struct wl_registry
type wl_registry (line 87) | struct wl_registry
FILE: src/detection/displayserver/linux/wayland/wlr-output-management-unstable-v1-client-protocol.h
type zwlr_output_configuration_head_v1 (line 65) | struct zwlr_output_configuration_head_v1
type zwlr_output_configuration_v1 (line 66) | struct zwlr_output_configuration_v1
type zwlr_output_head_v1 (line 67) | struct zwlr_output_head_v1
type zwlr_output_manager_v1 (line 68) | struct zwlr_output_manager_v1
type zwlr_output_mode_v1 (line 69) | struct zwlr_output_mode_v1
type wl_interface (line 138) | struct wl_interface
type wl_interface (line 179) | struct wl_interface
type wl_interface (line 210) | struct wl_interface
type wl_interface (line 245) | struct wl_interface
type wl_interface (line 266) | struct wl_interface
type zwlr_output_manager_v1_listener (line 273) | struct zwlr_output_manager_v1_listener {
function zwlr_output_manager_v1_add_listener (line 320) | static inline int
function zwlr_output_manager_v1_set_user_data (line 354) | static inline void
type zwlr_output_manager_v1 (line 362) | struct zwlr_output_manager_v1
type wl_proxy (line 364) | struct wl_proxy
function zwlr_output_manager_v1_get_version (line 367) | static inline uint32_t
function zwlr_output_manager_v1_destroy (line 374) | static inline void
type zwlr_output_head_v1_adaptive_sync_state (line 415) | enum zwlr_output_head_v1_adaptive_sync_state {
type zwlr_output_head_v1_listener (line 431) | struct zwlr_output_head_v1_listener {
function zwlr_output_head_v1_add_listener (line 673) | static inline int
function zwlr_output_head_v1_set_user_data (line 746) | static inline void
type zwlr_output_head_v1 (line 754) | struct zwlr_output_head_v1
type wl_proxy (line 756) | struct wl_proxy
function zwlr_output_head_v1_get_version (line 759) | static inline uint32_t
function zwlr_output_head_v1_destroy (line 766) | static inline void
type zwlr_output_mode_v1_listener (line 789) | struct zwlr_output_mode_v1_listener {
function zwlr_output_mode_v1_add_listener (line 835) | static inline int
function zwlr_output_mode_v1_set_user_data (line 868) | static inline void
type zwlr_output_mode_v1 (line 876) | struct zwlr_output_mode_v1
type wl_proxy (line 878) | struct wl_proxy
function zwlr_output_mode_v1_get_version (line 881) | static inline uint32_t
function zwlr_output_mode_v1_destroy (line 888) | static inline void
type zwlr_output_configuration_v1_error (line 909) | enum zwlr_output_configuration_v1_error {
type zwlr_output_configuration_v1_listener (line 929) | struct zwlr_output_configuration_v1_listener {
function zwlr_output_configuration_v1_add_listener (line 977) | static inline int
function zwlr_output_configuration_v1_set_user_data (line 1026) | static inline void
type zwlr_output_configuration_v1 (line 1034) | struct zwlr_output_configuration_v1
type wl_proxy (line 1036) | struct wl_proxy
function zwlr_output_configuration_v1_get_version (line 1039) | static inline uint32_t
type zwlr_output_configuration_head_v1_error (line 1134) | enum zwlr_output_configuration_head_v1_error {
function zwlr_output_configuration_head_v1_set_user_data (line 1201) | static inline void
type zwlr_output_configuration_head_v1 (line 1209) | struct zwlr_output_configuration_head_v1
type wl_proxy (line 1211) | struct wl_proxy
function zwlr_output_configuration_head_v1_get_version (line 1214) | static inline uint32_t
function zwlr_output_configuration_head_v1_destroy (line 1221) | static inline void
FILE: src/detection/displayserver/linux/wayland/wlr-output-management-unstable-v1-protocol.c
type wl_interface (line 45) | struct wl_interface
type wl_interface (line 46) | struct wl_interface
type wl_interface (line 47) | struct wl_interface
type wl_interface (line 48) | struct wl_interface
type wl_interface (line 50) | struct wl_interface
type wl_message (line 65) | struct wl_message
type wl_message (line 70) | struct wl_message
type wl_message (line 82) | struct wl_message
type wl_message (line 86) | struct wl_message
type wl_message (line 109) | struct wl_message
type wl_message (line 113) | struct wl_message
type wl_message (line 126) | struct wl_message
type wl_message (line 134) | struct wl_message
type wl_message (line 146) | struct wl_message
FILE: src/detection/displayserver/linux/wayland/xdg-output-unstable-v1-client-protocol.h
type wl_output (line 76) | struct wl_output
type zxdg_output_manager_v1 (line 77) | struct zxdg_output_manager_v1
type zxdg_output_v1 (line 78) | struct zxdg_output_v1
type wl_interface (line 95) | struct wl_interface
type wl_interface (line 128) | struct wl_interface
type zxdg_output_v1_listener (line 199) | struct zxdg_output_v1_listener {
function zxdg_output_v1_add_listener (line 341) | static inline int
FILE: src/detection/displayserver/linux/wayland/xdg-output-unstable-v1-protocol.c
type wl_interface (line 31) | struct wl_interface
type wl_interface (line 32) | struct wl_interface
type wl_interface (line 34) | struct wl_interface
type wl_message (line 41) | struct wl_message
type wl_message (line 52) | struct wl_message
type wl_message (line 56) | struct wl_message
FILE: src/detection/displayserver/linux/wayland/zwlr-output.c
function waylandZwlrTransformListener (line 6) | static void waylandZwlrTransformListener(void* data, FF_MAYBE_UNUSED str...
function waylandZwlrScaleListener (line 12) | static void waylandZwlrScaleListener(void* data, FF_MAYBE_UNUSED struct ...
type WaylandZwlrMode (line 18) | typedef struct WaylandZwlrMode
function waylandZwlrModeSizeListener (line 27) | static void waylandZwlrModeSizeListener(void* data, FF_MAYBE_UNUSED stru...
function waylandZwlrModeRefreshListener (line 34) | static void waylandZwlrModeRefreshListener(void* data, FF_MAYBE_UNUSED s...
function waylandZwlrModePreferredListener (line 40) | static void waylandZwlrModePreferredListener(void* data, FF_MAYBE_UNUSED...
type zwlr_output_mode_v1_listener (line 46) | struct zwlr_output_mode_v1_listener
function waylandZwlrModeListener (line 53) | static void waylandZwlrModeListener(void* data, FF_MAYBE_UNUSED struct z...
function waylandZwlrCurrentModeListener (line 65) | static void waylandZwlrCurrentModeListener(void* data, FF_MAYBE_UNUSED s...
function waylandZwlrPhysicalSizeListener (line 91) | static void waylandZwlrPhysicalSizeListener(void* data, FF_MAYBE_UNUSED ...
function waylandZwlrEnabledListener (line 98) | static void waylandZwlrEnabledListener(void* data, FF_MAYBE_UNUSED struc...
type zwlr_output_head_v1_listener (line 104) | struct zwlr_output_head_v1_listener
function waylandHandleZwlrHead (line 121) | static void waylandHandleZwlrHead(void *data, FF_MAYBE_UNUSED struct zwl...
type wl_registry (line 189) | struct wl_registry
type wl_proxy (line 191) | struct wl_proxy
type wl_proxy (line 191) | struct wl_proxy
type zwlr_output_manager_v1_listener (line 195) | struct zwlr_output_manager_v1_listener
FILE: src/detection/displayserver/linux/wmde.c
function applyPrettyNameIfWM (line 78) | static void applyPrettyNameIfWM(FFDisplayServerResult* result, const cha...
function applyNameIfWM (line 142) | static void applyNameIfWM(FFDisplayServerResult* result, const char* pro...
function applyBetterWM (line 149) | static void applyBetterWM(FFDisplayServerResult* result, const char* pro...
function applyPrettyNameIfDE (line 164) | static void applyPrettyNameIfDE(FFDisplayServerResult* result, const cha...
type kinfo_proc (line 285) | struct kinfo_proc
type kinfo_proc (line 291) | struct kinfo_proc
type kinfo_proc (line 305) | struct kinfo_proc
type dirent (line 331) | struct dirent
type dirent (line 370) | struct dirent
type kinfo_proc2 (line 410) | struct kinfo_proc2
type kinfo_proc2 (line 421) | struct kinfo_proc2
type kinfo_proc2 (line 421) | struct kinfo_proc2
function ffdsDetectWMDE (line 437) | void ffdsDetectWMDE(FFDisplayServerResult* result)
FILE: src/detection/displayserver/linux/xcb.c
type XcbRandrData (line 16) | typedef struct XcbRandrData
function xcb_randr_get_output_property_reply_t (line 81) | static xcb_randr_get_output_property_reply_t* xcbRandrGetProperty(XcbRan...
function xcbDetectWMfromEWMH (line 94) | static void xcbDetectWMfromEWMH(XcbRandrData* data, xcb_window_t rootWin...
function xcbFetchServerVendor (line 113) | static void xcbFetchServerVendor(XcbRandrData* data, FFDisplayServerResu...
function xcbRandrHandleOutput (line 130) | static bool xcbRandrHandleOutput(XcbRandrData* data, xcb_randr_output_t ...
function xcbRandrHandleMonitor (line 250) | static bool xcbRandrHandleMonitor(XcbRandrData* data, xcb_randr_monitor_...
function xcbRandrHandleMonitors (line 301) | static bool xcbRandrHandleMonitors(XcbRandrData* data, xcb_screen_t* scr...
function xcbRandrHandleScreen (line 336) | static void xcbRandrHandleScreen(XcbRandrData* data, xcb_screen_t* screen)
FILE: src/detection/displayserver/linux/xlib.c
type XrandrData (line 13) | typedef struct XrandrData
function x11DetectWMFromEWMH (line 77) | static void x11DetectWMFromEWMH(XrandrData* data, FFDisplayServerResult*...
function x11FetchServerVendor (line 97) | static void x11FetchServerVendor(XrandrData* data, FFDisplayServerResult...
function xrandrHandleCrtc (line 104) | static bool xrandrHandleCrtc(XrandrData* data, XRROutputInfo* output, FF...
function xrandrHandleOutput (line 185) | static bool xrandrHandleOutput(XrandrData* data, RROutput output, FFstrb...
function xrandrHandleMonitor (line 215) | static bool xrandrHandleMonitor(XrandrData* data, XRRMonitorInfo* monito...
function xrandrHandleMonitors (line 250) | static bool xrandrHandleMonitors(XrandrData* data, Screen* screen)
function xrandrHandleScreen (line 284) | static void xrandrHandleScreen(XrandrData* data, Screen* screen)
FILE: src/detection/editor/editor.c
function extractNvimVersionFromBinary (line 10) | static bool extractNvimVersionFromBinary(const char* str, FF_MAYBE_UNUSE...
function extractVimVersionFromBinary (line 17) | static bool extractVimVersionFromBinary(const char* str, FF_MAYBE_UNUSED...
function extractNanoVersionFromBinary (line 25) | static bool extractNanoVersionFromBinary(const char* str, FF_MAYBE_UNUSE...
FILE: src/detection/editor/editor.h
type FFEditorResult (line 6) | typedef struct FFEditorResult
FILE: src/detection/font/font.h
type FFFontResult (line 8) | typedef struct FFFontResult
FILE: src/detection/font/font_haiku.cpp
function generateString (line 13) | static void generateString(FFFontResult* font)
type menu_info (line 35) | struct menu_info
FILE: src/detection/font/font_linux.c
function generateString (line 7) | static void generateString(FFFontResult* font)
FILE: src/detection/font/font_windows.c
function generateString (line 6) | static void generateString(FFFontResult* font)
FILE: src/detection/gamepad/gamepad.h
type FFGamepadDevice (line 5) | typedef struct FFGamepadDevice
FILE: src/detection/gamepad/gamepad_apple.c
function enumSet (line 8) | static void enumSet(IOHIDDeviceRef value, FFlist* results)
FILE: src/detection/gamepad/gamepad_bsd.c
type hid_data (line 34) | struct hid_data
type hid_item (line 37) | struct hid_item
type usb_device_info (line 51) | struct usb_device_info
FILE: src/detection/gamepad/gamepad_linux.c
function detectGamepad (line 5) | static void detectGamepad(FFlist* devices, FFstrbuf* name, FFstrbuf* path)
type dirent (line 66) | struct dirent
FILE: src/detection/gpu/asahi_drm.h
type drm_asahi_ioctl_id (line 60) | enum drm_asahi_ioctl_id {
type drm_asahi_params_global (line 105) | struct drm_asahi_params_global {
type drm_asahi_feature (line 202) | enum drm_asahi_feature {
type drm_asahi_get_params (line 221) | struct drm_asahi_get_params {
type drm_asahi_vm_create (line 242) | struct drm_asahi_vm_create {
type drm_asahi_vm_destroy (line 274) | struct drm_asahi_vm_destroy {
type drm_asahi_gem_flags (line 285) | enum drm_asahi_gem_flags {
type drm_asahi_gem_create (line 303) | struct drm_asahi_gem_create {
type drm_asahi_gem_mmap_offset (line 326) | struct drm_asahi_gem_mmap_offset {
type drm_asahi_bind_flags (line 340) | enum drm_asahi_bind_flags {
type drm_asahi_gem_bind_op (line 366) | struct drm_asahi_gem_bind_op {
type drm_asahi_vm_bind (line 405) | struct drm_asahi_vm_bind {
type drm_asahi_bind_object_op (line 431) | enum drm_asahi_bind_object_op {
type drm_asahi_bind_object_flags (line 442) | enum drm_asahi_bind_object_flags {
type drm_asahi_gem_bind_object (line 454) | struct drm_asahi_gem_bind_object {
type drm_asahi_cmd_type (line 483) | enum drm_asahi_cmd_type {
type drm_asahi_priority (line 531) | enum drm_asahi_priority {
type drm_asahi_queue_create (line 557) | struct drm_asahi_queue_create {
type drm_asahi_queue_destroy (line 591) | struct drm_asahi_queue_destroy {
type drm_asahi_sync_type (line 602) | enum drm_asahi_sync_type {
type drm_asahi_sync (line 613) | struct drm_asahi_sync {
type drm_asahi_cmd_header (line 639) | struct drm_asahi_cmd_header {
type drm_asahi_submit (line 694) | struct drm_asahi_submit {
type drm_asahi_attachment (line 756) | struct drm_asahi_attachment {
type drm_asahi_render_flags (line 770) | enum drm_asahi_render_flags {
type drm_asahi_zls_buffer (line 818) | struct drm_asahi_zls_buffer {
type drm_asahi_timestamp (line 851) | struct drm_asahi_timestamp {
type drm_asahi_timestamps (line 872) | struct drm_asahi_timestamps {
type drm_asahi_helper_program (line 891) | struct drm_asahi_helper_program {
type drm_asahi_bg_eot (line 925) | struct drm_asahi_bg_eot {
type drm_asahi_cmd_render (line 972) | struct drm_asahi_cmd_render {
type drm_asahi_cmd_compute (line 1119) | struct drm_asahi_cmd_compute {
type drm_asahi_get_time (line 1152) | struct drm_asahi_get_time {
FILE: src/detection/gpu/gpu.h
type FFGPUMemory (line 31) | typedef struct FFGPUMemory
type FFGPUResult (line 37) | typedef struct FFGPUResult
type FFGpuDriverPciBusId (line 60) | typedef struct FFGpuDriverPciBusId
function ffGPUPciAddr2Id (line 84) | static inline uint64_t ffGPUPciAddr2Id(uint64_t domain, uint64_t bus, ui...
function ffGPUGeneral2Id (line 89) | static inline uint64_t ffGPUGeneral2Id(uint64_t originalId)
FILE: src/detection/gpu/gpu_amd.c
function FF_ADL_STATUS_CASE (line 12) | FF_ADL_STATUS_CASE(ADL_OK)
type FFAdlData (line 46) | struct FFAdlData {
function shutdownAdl (line 68) | static void shutdownAdl()
FILE: src/detection/gpu/gpu_android.c
function parseTZDir (line 7) | static double parseTZDir(int dfd, FFstrbuf* buffer)
function ffGPUDetectTempFromTZ (line 22) | double ffGPUDetectTempFromTZ(void)
FILE: src/detection/gpu/gpu_apple.c
function detectGpuTemp (line 10) | static double detectGpuTemp(const FFstrbuf* gpuName)
FILE: src/detection/gpu/gpu_bsd.c
function fillGPUTypeGeneric (line 14) | static void fillGPUTypeGeneric(FFGPUResult* gpu)
type drm_version (line 104) | struct drm_version
type pci_conf (line 159) | struct pci_conf
type pci_match_conf (line 160) | struct pci_match_conf
type pci_conf_io (line 164) | struct pci_conf_io
type pci_conf (line 180) | struct pci_conf
FILE: src/detection/gpu/gpu_driver_specific.h
type __attribute__ (line 5) | enum __attribute__
type FFGpuDriverPciDeviceId (line 13) | typedef struct FFGpuDriverPciDeviceId
type FFGpuDriverCondition (line 22) | typedef struct FFGpuDriverCondition
type FFGpuDriverResult (line 31) | typedef struct FFGpuDriverResult
function FF_MAYBE_UNUSED (line 50) | FF_MAYBE_UNUSED static inline bool getDriverSpecificDetectionFn(const ch...
FILE: src/detection/gpu/gpu_drm.c
type drm_radeon_info (line 27) | struct drm_radeon_info
type drm_radeon_info (line 35) | struct drm_radeon_info
type drm_radeon_info (line 42) | struct drm_radeon_info
type drm_radeon_gem_info (line 50) | struct drm_radeon_gem_info
type drm_radeon_info (line 58) | struct drm_radeon_info
type drm_radeon_info (line 64) | struct drm_radeon_info
type amdgpu_gpu_info (line 108) | struct amdgpu_gpu_info
type amdgpu_heap_info (line 136) | struct amdgpu_heap_info
type drm_i915_query_item (line 171) | struct drm_i915_query_item
type drm_i915_query (line 174) | struct drm_i915_query
type drm_i915_query_memory_regions (line 185) | struct drm_i915_query_memory_regions
type drm_i915_memory_region_info (line 188) | struct drm_i915_memory_region_info
function popcountBytes (line 207) | static inline int popcountBytes(uint8_t* bytes, uint32_t length)
type drm_xe_device_query (line 239) | struct drm_xe_device_query
type drm_xe_query_topology_mask (line 249) | struct drm_xe_query_topology_mask
type drm_xe_device_query (line 271) | struct drm_xe_device_query
type drm_xe_query_mem_regions (line 281) | struct drm_xe_query_mem_regions
type drm_xe_mem_region (line 284) | struct drm_xe_mem_region
type drm_asahi_params_global (line 306) | struct drm_asahi_params_global
type drm_asahi_get_params (line 307) | struct drm_asahi_get_params
type drm_nouveau_getparam (line 353) | struct drm_nouveau_getparam
FILE: src/detection/gpu/gpu_gnu.c
type dirent (line 26) | struct dirent
type dirent (line 42) | struct dirent
type dirent (line 57) | struct dirent
FILE: src/detection/gpu/gpu_intel.c
type FFIgclData (line 7) | struct FFIgclData {
function shutdownIgcl (line 24) | static void shutdownIgcl()
FILE: src/detection/gpu/gpu_linux.c
function pciDetectDriver (line 38) | static bool pciDetectDriver(FFstrbuf* result, FFstrbuf* pciDir, FFstrbuf...
function FF_MAYBE_UNUSED (line 89) | FF_MAYBE_UNUSED static const char* drmFindRenderFromCard(const char* drm...
function pciDetectAmdSpecific (line 131) | static void pciDetectAmdSpecific(const FFGPUOptions* options, FFGPUResul...
function pciDetectIntelSpecific (line 198) | static void pciDetectIntelSpecific(const FFGPUOptions* options, FFGPURes...
type dirent (line 278) | struct dirent
type dirent (line 415) | struct dirent
function FF_MAYBE_UNUSED (line 508) | FF_MAYBE_UNUSED static const char* drmDetectAsahiSpecific(FFGPUResult* g...
type dirent (line 592) | struct dirent
type dirent (line 634) | struct dirent
FILE: src/detection/gpu/gpu_mthreads.c
type FFMtmlData (line 6) | struct FFMtmlData
function FF_MAYBE_UNUSED (line 33) | FF_MAYBE_UNUSED static void shutdownMtml(void)
FILE: src/detection/gpu/gpu_nbsd.c
function pciReadConf (line 11) | static inline int pciReadConf(int fd, uint32_t bus, uint32_t device, uin...
type pciio_businfo (line 45) | struct pciio_businfo
type pciio_drvname (line 102) | struct pciio_drvname
FILE: src/detection/gpu/gpu_nvidia.c
type FFNvmlData (line 6) | struct FFNvmlData {
type FFNvapiData (line 28) | struct FFNvapiData {
FILE: src/detection/gpu/gpu_obsd.c
function pciReadConf (line 11) | static inline int pciReadConf(int fd, uint32_t bus, uint32_t device, uin...
FILE: src/detection/gpu/gpu_pci.c
function FFstrbuf (line 28) | static const FFstrbuf* loadPciIds()
function parsePciIdsFile (line 64) | static void parsePciIdsFile(const FFstrbuf* content, uint8_t subclass, u...
function pciDeviceCmp (line 140) | static inline int pciDeviceCmp(const uint16_t* key, const FFPciDevice* e...
function loadPciidsInc (line 145) | static bool loadPciidsInc(uint8_t subclass, uint16_t vendor, uint16_t de...
function ffGPUFillVendorAndName (line 193) | void ffGPUFillVendorAndName(uint8_t subclass, uint16_t vendor, uint16_t ...
function amdGpuCmp (line 203) | static inline int amdGpuCmp(const uint32_t* key, const FFArmGpuProduct* ...
function loadAmdGpuIdsInc (line 209) | static bool loadAmdGpuIdsInc(uint16_t deviceId, uint8_t revision, FFGPUR...
function parseAmdGpuIdsFile (line 222) | static void parseAmdGpuIdsFile(uint16_t deviceId, uint8_t revision, FFGP...
function ffGPUQueryAmdGpuName (line 233) | void ffGPUQueryAmdGpuName(uint16_t deviceId, uint8_t revisionId, FFGPURe...
FILE: src/detection/gpu/gpu_sunos.c
function walkDevTree (line 6) | static int walkDevTree(di_node_t node, FF_MAYBE_UNUSED di_minor_t minor,...
FILE: src/detection/gpu/gpu_windows.c
function wrapRegCloseKey (line 22) | static inline void wrapRegCloseKey(HKEY* phKey)
FILE: src/detection/gpu/igcl.h
type ctl_result_t (line 10) | typedef enum ctl_result_t
type ctl_application_id_t (line 16) | typedef struct ctl_application_id_t
type ctl_init_flag_t (line 27) | typedef enum ctl_init_flag_t
type ctl_version_info_t (line 33) | typedef uint32_t ctl_version_info_t;
type ctl_init_args_t (line 36) | typedef struct ctl_init_args_t
type ctl_api_handle_t (line 46) | struct ctl_api_handle_t
type ctl_device_adapter_handle_t (line 53) | struct ctl_device_adapter_handle_t
type ctl_device_type_t (line 59) | typedef enum ctl_device_type_t
type ctl_firmware_version_t (line 67) | typedef struct ctl_firmware_version_t
type ctl_adapter_bdf_t (line 75) | typedef struct ctl_adapter_bdf_t
type ctl_adapter_properties_flag_t (line 85) | typedef enum ctl_adapter_properties_flag_t
type ctl_device_adapter_properties_t (line 91) | typedef struct ctl_device_adapter_properties_t
type ctl_temp_handle_t (line 119) | struct ctl_temp_handle_t
type ctl_temp_sensors_t (line 125) | typedef enum ctl_temp_sensors_t
type ctl_temp_properties_t (line 136) | typedef struct _ctl_temp_properties_t
type ctl_mem_handle_t (line 147) | struct ctl_mem_handle_t
type ctl_mem_state_t (line 153) | typedef struct ctl_
Condensed preview — 1400 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (5,511K chars).
[
{
"path": ".codespellrc",
"chars": 307,
"preview": "[codespell]\ncheck-filenames =\nbuiltin = clear,rare,usage,informal\nskip = */.git,*/cmake-build-*,*/.idea,*/completions,*/"
},
{
"path": ".editorconfig",
"chars": 231,
"preview": "root = true\n\n[*]\nend_of_line = lf\nindent_style = space\ntab_width = 4\ninsert_final_newline = true\ntrim_trailing_whitespac"
},
{
"path": ".gitattributes",
"chars": 48,
"preview": "*.h linguist-language=c\n*.c linguist-language=c\n"
},
{
"path": ".github/FUNDING.yml",
"chars": 79,
"preview": "github: LinusDierheimer\nko_fi: carterli\ncustom: https://paypal.me/zhangsongcui\n"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report_crash.yml",
"chars": 3869,
"preview": "name: Crash Bug Report\ndescription: If fastfetch crashes or freezes\ntitle: \"[BUG] \"\nlabels: [\"bug\", \"crash\", \"triage\"]\nb"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report_general.yml",
"chars": 3316,
"preview": "name: General Bug Report\ndescription: If something is not working as expected (wrong output, missing info, etc)\ntitle: \""
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report_logo.yml",
"chars": 3988,
"preview": "name: Logo Bug Report\ndescription: If my image logo is not displayed correctly\ntitle: \"[BUG] \"\nlabels: [\"bug\", \"logo\", \""
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.yml",
"chars": 1270,
"preview": "name: Feature Request\ndescription: Suggest an idea for this project\ntitle: \"[FEAT] \"\nlabels: [\"enhancement\"]\nbody:\n - t"
},
{
"path": ".github/ISSUE_TEMPLATE/logo_request.yml",
"chars": 2017,
"preview": "name: Logo Request\ndescription: Request a new ASCII logo for your favorite distro\ntitle: \"[LOGO] \"\nlabels: [\"logo reques"
},
{
"path": ".github/pull_request_template.md",
"chars": 513,
"preview": "## Summary\n\n<!-- Briefly describe what this PR does. -->\n\n## Related issue (required for new logos for new distros)\n\n<!-"
},
{
"path": ".github/stale.yml",
"chars": 677,
"preview": "# Number of days of inactivity before an issue becomes stale\ndaysUntilStale: 60\n\n# Number of days of inactivity before a"
},
{
"path": ".github/workflows/ci.yml",
"chars": 31080,
"preview": "name: CI\n\non:\n - push\n - pull_request\n\nenv:\n CMAKE_BUILD_TYPE: ${{ vars.CMAKE_BUILD_TYPE || 'RelWithDebInfo' }}\n\njobs"
},
{
"path": ".gitignore",
"chars": 99,
"preview": "build/\n.vs/\n.vscode/\n.cache/\n.kdev4/\n.DS_Store\ncscope.*\ntags\nfastfetch.kdev4\n*.user\n*.user.*\n*.swp\n"
},
{
"path": "CHANGELOG.md",
"chars": 139250,
"preview": "# 2.60.0\n\nChanges:\n* The CMake option `ENABLE_WIN7_COMPAT:BOOLEAN` now defaults to `OFF` and will be removed in v2.61.0,"
},
{
"path": "CMakeLists.txt",
"chars": 83663,
"preview": "cmake_minimum_required(VERSION 3.12.0) # target_link_libraries with OBJECT libs & project homepage url\n\nproject(fastfetc"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 5488,
"preview": "\n# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make particip"
},
{
"path": "LICENSE",
"chars": 1112,
"preview": "MIT License\n\nCopyright (c) 2021-2023 Linus Dierheimer\nCopyright (c) 2022-2026 Carter Li\n\nPermission is hereby granted, f"
},
{
"path": "README-cn.md",
"chars": 2073,
"preview": "# Fastfetch\n\nFastfetch 是一款类似 neofetch 的系统信息展示工具,主要用 C 编写,强调性能和可定制性。支持 Linux、macOS、Windows 7+、Android、FreeBSD、OpenBSD、Net"
},
{
"path": "README.md",
"chars": 16934,
"preview": "# Fastfetch\n\n[ {\n # Use Bash built-in variables directly\n local cur=\"${COMP_WORDS[COMP_CWORD]}\"\n l"
},
{
"path": "completions/fastfetch.fish",
"chars": 3499,
"preview": "if not type -q fastfetch\n exit\nend\n\ncommand -q python3\nif test $status -ne 0\n exit\nend\n\ncomplete -c fastfetch -f\n\n"
},
{
"path": "completions/fastfetch.zsh",
"chars": 3039,
"preview": "#compdef fastfetch\n\nfunction _fastfetch() {\n\n whence python3 &> /dev/null\n if [ $? -ne 0 ]\n then\n return\n fi\n\n l"
},
{
"path": "debian/changelog.tpl",
"chars": 11443,
"preview": "fastfetch (2.58.0~#UBUNTU_CODENAME#) #UBUNTU_CODENAME#; urgency=medium\n\n * Update to 2.58.0\n\n -- Carter Li <zhangsongcu"
},
{
"path": "debian/compat",
"chars": 3,
"preview": "12\n"
},
{
"path": "debian/control",
"chars": 895,
"preview": "Source: fastfetch\nSection: universe/utils\nPriority: optional\nMaintainer: Carter Li <zhangsongcui@live.cn>\nBuild-Depends:"
},
{
"path": "debian/copyright",
"chars": 275,
"preview": "Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/\nUpstream-Name: fastfetch\nSource: https://gith"
},
{
"path": "debian/publish.sh",
"chars": 2252,
"preview": "#!/usr/bin/env bash\n# WARNING: DO NOT RUN THIS SCRIPT UNLESS YOU KNOW WHAT YOU ARE DOING.\n\nset -euo pipefail\n\ncommand -v"
},
{
"path": "debian/rules",
"chars": 176,
"preview": "#!/usr/bin/make -f\n\n%:\n\tdh $@ --buildsystem=cmake+ninja\n\noverride_dh_ctest_configure:\n\tdh_ctest_configure -- -DSET_TWEAK"
},
{
"path": "debian/watch",
"chars": 243,
"preview": "version=4\nopts=\"filenamemangle=s%.*/@ANY_VERSION@%@PACKAGE@-$1.tar.gz%,searchmode=plain\" \\\nhttps://api.github.com/repos/"
},
{
"path": "doc/fastfetch.1.in",
"chars": 5743,
"preview": ".TH FASTFETCH 1 \"@FASTFETCH_BUILD_DATE@\" \"@CMAKE_PROJECT_NAME@ @CMAKE_PROJECT_VERSION@\"\n\n.SH NAME\nfastfetch \\- a fast an"
},
{
"path": "doc/json_schema.json",
"chars": 258043,
"preview": "{\n \"$schema\": \"https://json-schema.org/draft-07/schema\",\n \"$defs\": {\n \"colors\": {\n \"oneOf\": [\n "
},
{
"path": "presets/all.jsonc",
"chars": 2235,
"preview": "{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"logo\": {\n \"paddi"
},
{
"path": "presets/archey.jsonc",
"chars": 1929,
"preview": "{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"modules\": [\n {\n "
},
{
"path": "presets/ci.jsonc",
"chars": 2394,
"preview": "{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"display\": {\n \"st"
},
{
"path": "presets/examples/10.jsonc",
"chars": 3776,
"preview": "// Load with --config examples/2.jsonc\n// Note that you must replace the image path to an existing image to display it.\n"
},
{
"path": "presets/examples/11.jsonc",
"chars": 831,
"preview": "{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"logo\": {\n \"type\""
},
{
"path": "presets/examples/12.jsonc",
"chars": 2762,
"preview": "{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"logo\": {\n \"type\""
},
{
"path": "presets/examples/13.jsonc",
"chars": 2023,
"preview": "// Inspired by Catnap\n{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"l"
},
{
"path": "presets/examples/14.jsonc",
"chars": 2009,
"preview": "// Inspired by Catnap\n{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"l"
},
{
"path": "presets/examples/15.jsonc",
"chars": 2023,
"preview": "// Inspired by Catnap\n{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"l"
},
{
"path": "presets/examples/16.jsonc",
"chars": 2023,
"preview": "// Inspired by Catnap\n{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"l"
},
{
"path": "presets/examples/17.jsonc",
"chars": 2135,
"preview": "{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"logo\": {\n \"type\""
},
{
"path": "presets/examples/18.jsonc",
"chars": 2134,
"preview": "{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"logo\": {\n \"type\""
},
{
"path": "presets/examples/19.jsonc",
"chars": 5182,
"preview": "// _____ _____ _____ _____ _____ _____ _____ _____ _____\n// | __| _ | __|_ _| __| __|_ _| | | |\n/"
},
{
"path": "presets/examples/2.jsonc",
"chars": 2166,
"preview": "// Load with --config examples/2.jsonc\n// Note that you must replace the image path to an existing image to display it.\n"
},
{
"path": "presets/examples/20.jsonc",
"chars": 4907,
"preview": "// Inspired by https://github.com/usgraphics/TR-100\n{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev"
},
{
"path": "presets/examples/21.jsonc",
"chars": 1050,
"preview": "{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"logo\": {\n \"type\""
},
{
"path": "presets/examples/22.jsonc",
"chars": 2696,
"preview": "// Designed for Arch Linux\n// Modified from: https://github.com/fastfetch-cli/fastfetch/pull/1025#issuecomment-217756613"
},
{
"path": "presets/examples/23.jsonc",
"chars": 1571,
"preview": "// designed for presenting Vanilla Linux\n// inspired from imstilllearnin's Vanilla Logo Ultra\n{\n \"$schema\": \"https://"
},
{
"path": "presets/examples/24.jsonc",
"chars": 4979,
"preview": "// By jan-rex\n// Modified from: https://github.com/fastfetch-cli/fastfetch/discussions/1269\n{\n \"$schema\": \"https://gi"
},
{
"path": "presets/examples/25.jsonc",
"chars": 12176,
"preview": "// Based on #1576\n{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"displ"
},
{
"path": "presets/examples/26.jsonc",
"chars": 5292,
"preview": "// Modified from: 24.jsonc\n{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n "
},
{
"path": "presets/examples/27.jsonc",
"chars": 1088,
"preview": "{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"logo\": {\n \"type\""
},
{
"path": "presets/examples/28.jsonc",
"chars": 1341,
"preview": "{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"logo\": {\n \"type\""
},
{
"path": "presets/examples/29.jsonc",
"chars": 3422,
"preview": "// #1887\n{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"logo\": null,\n "
},
{
"path": "presets/examples/3.jsonc",
"chars": 470,
"preview": "// Load with --config examples/3.jsonc\n\n{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_sc"
},
{
"path": "presets/examples/30.jsonc",
"chars": 2069,
"preview": "{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"logo\": null,\n \"displ"
},
{
"path": "presets/examples/31.jsonc",
"chars": 28684,
"preview": "// Modified from https://github.com/fastfetch-cli/fastfetch/discussions/2133\n\n{\n \"$schema\": \"https://github.com/fastf"
},
{
"path": "presets/examples/32.jsonc",
"chars": 1252,
"preview": "// Inspired by microfetch\n{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n "
},
{
"path": "presets/examples/4.jsonc",
"chars": 682,
"preview": "// Load with --config examples/4.jsonc\n\n{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_sc"
},
{
"path": "presets/examples/5.jsonc",
"chars": 517,
"preview": "// Load with --config examples/5.jsonc\n\n{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_sc"
},
{
"path": "presets/examples/6.jsonc",
"chars": 3998,
"preview": "// Load with --config examples/2.jsonc\n// Note that you must replace the image path to an existing image to display it.\n"
},
{
"path": "presets/examples/7.jsonc",
"chars": 2936,
"preview": "// Load with --config examples/2.jsonc\n// Note that you must replace the image path to an existing image to display it.\n"
},
{
"path": "presets/examples/8.jsonc",
"chars": 849,
"preview": "{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"logo\": {\n \"type\""
},
{
"path": "presets/examples/9.jsonc",
"chars": 782,
"preview": "{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"logo\": {\n \"type\""
},
{
"path": "presets/neofetch.jsonc",
"chars": 1217,
"preview": "{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"display\": {\n \"si"
},
{
"path": "presets/paleofetch.jsonc",
"chars": 656,
"preview": "{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"modules\": [\n \"ti"
},
{
"path": "presets/screenfetch.jsonc",
"chars": 745,
"preview": "{\n \"$schema\": \"https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json\",\n \"modules\": [\n \"ti"
},
{
"path": "run.sh",
"chars": 414,
"preview": "#!/usr/bin/env sh\n\nset -e\n\nmkdir -p build/\ncd build/\n\ncmake ..\n\nkernel_name=\"$(uname -s)\"\n\ncase \"${kernel_name}\" in\n "
},
{
"path": "scripts/gen-amdgpuids.py",
"chars": 1144,
"preview": "#!/usr/bin/env python3\n\nimport sys\n\ndef main(amdgpu_ids_path: str):\n with open(amdgpu_ids_path, 'r') as f:\n fu"
},
{
"path": "scripts/gen-man.py",
"chars": 9448,
"preview": "#!/usr/bin/env python3\n\n\"\"\"\nPython script to generate a comprehensive man page for the command `fastfetch`.\n\nThe generat"
},
{
"path": "scripts/gen-pciids.py",
"chars": 2698,
"preview": "#!/usr/bin/env python3\n\nimport sys\n\nclass PciDeviceModel:\n def __init__(self, id: int, name: str):\n self.id = "
},
{
"path": "src/3rdparty/display-library/adl_defines.h",
"chars": 115889,
"preview": "//\r\n// Copyright (c) 2016 - 2022 Advanced Micro Devices, Inc. All rights reserved.\r\n//\r\n// MIT LICENSE:\r\n// Permission i"
},
{
"path": "src/3rdparty/display-library/adl_sdk.h",
"chars": 1907,
"preview": "//\r\n// Copyright (c) 2016 - 2022 Advanced Micro Devices, Inc. All rights reserved.\r\n//\r\n// MIT LICENSE:\r\n// Permission i"
},
{
"path": "src/3rdparty/display-library/adl_structures.h",
"chars": 178108,
"preview": "//\r\n// Copyright (c) 2016 - 2022 Advanced Micro Devices, Inc. All rights reserved.\r\n//\r\n// MIT LICENSE:\r\n// Permission i"
},
{
"path": "src/3rdparty/display-library/repo.json",
"chars": 196,
"preview": "{\n \"home\": \"https://github.com/GPUOpen-LibrariesAndSDKs/display-library\",\n \"license\": \"MIT (embeded in source)\",\n "
},
{
"path": "src/3rdparty/widecharwidth/repo.json",
"chars": 159,
"preview": "{\n \"home\": \"https://github.com/ridiculousfish/widecharwidth\",\n \"license\": \"Public domain\",\n \"version\": \"Unicode"
},
{
"path": "src/3rdparty/widecharwidth/widechar_width_c.h",
"chars": 39485,
"preview": "/**\n * widechar_width_c.h for Unicode 17.0.0\n * See https://github.com/ridiculousfish/widecharwidth/\n *\n * SHA1 file has"
},
{
"path": "src/3rdparty/yyjson/repo.json",
"chars": 144,
"preview": "{\n \"home\": \"https://github.com/ibireme/yyjson\",\n \"license\": \"MIT ( embed in source )\",\n \"version\": \"0.12.0\",\n "
},
{
"path": "src/3rdparty/yyjson/yyjson.c",
"chars": 410813,
"preview": "/*==============================================================================\n Copyright (c) 2020 YaoYuan <ibireme@gm"
},
{
"path": "src/3rdparty/yyjson/yyjson.h",
"chars": 322407,
"preview": "/*==============================================================================\n Copyright (c) 2020 YaoYuan <ibireme@gm"
},
{
"path": "src/common/FFPlatform.h",
"chars": 961,
"preview": "#pragma once\n\n#include \"common/FFstrbuf.h\"\n#include \"common/FFlist.h\"\n\ntypedef struct FFPlatformSysinfo\n{\n FFstrbuf n"
},
{
"path": "src/common/FFcheckmacros.h",
"chars": 1206,
"preview": "#pragma once\n\n#ifdef _MSC_VER\n #include <sal.h>\n#endif\n\n#if defined(__has_attribute) && __has_attribute(__warn_unused"
},
{
"path": "src/common/FFlist.h",
"chars": 3957,
"preview": "#pragma once\n\n#include \"FFcheckmacros.h\"\n\n#include <stdbool.h>\n#include <stdint.h>\n#include <assert.h>\n#include <stdlib."
},
{
"path": "src/common/FFstrbuf.h",
"chars": 20373,
"preview": "#pragma once\n\n#include \"FFcheckmacros.h\"\n\n#include <stdint.h>\n#include <stdarg.h>\n#include <stdbool.h>\n#include <stdio.h"
},
{
"path": "src/common/apple/Info.plist.in",
"chars": 574,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "src/common/apple/cf_helpers.c",
"chars": 5906,
"preview": "#include \"cf_helpers.h\"\n\nconst char* ffCfNumGetInt64(CFTypeRef cf, int64_t* result)\n{\n if(CFGetTypeID(cf) == CFNumber"
},
{
"path": "src/common/apple/cf_helpers.h",
"chars": 1632,
"preview": "#pragma once\n\n#include \"fastfetch.h\"\n#include <CoreFoundation/CoreFoundation.h>\n#include <IOKit/IOKitLib.h>\n\n//Return er"
},
{
"path": "src/common/apple/osascript.h",
"chars": 93,
"preview": "#pragma once\n\n#include \"fastfetch.h\"\n\nbool ffOsascript(const char* input, FFstrbuf* result);\n"
},
{
"path": "src/common/apple/osascript.m",
"chars": 481,
"preview": "#include \"osascript.h\"\n\n#import <Foundation/Foundation.h>\n#import <AppKit/AppKit.h>\n#import <CoreData/CoreData.h>\n\nbool "
},
{
"path": "src/common/apple/smc_temps.c",
"chars": 17273,
"preview": "#include \"smc_temps.h\"\n#include \"common/apple/cf_helpers.h\"\n#include \"common/stringUtils.h\"\n\n#include <stdint.h>\n#includ"
},
{
"path": "src/common/apple/smc_temps.h",
"chars": 611,
"preview": "#pragma once\n\n#include \"fastfetch.h\"\n\ntypedef struct FFTempValue\n{\n FFstrbuf name;\n FFstrbuf deviceClass;\n doub"
},
{
"path": "src/common/argType.h",
"chars": 1013,
"preview": "#pragma once\n\n#include \"common/FFstrbuf.h\"\n\ntypedef enum __attribute__((__packed__)) FFArgType\n{\n FF_ARG_TYPE_NULL = "
},
{
"path": "src/common/arrayUtils.h",
"chars": 660,
"preview": "#pragma once\n\n#include <assert.h>\n\n#ifdef __has_builtin\n #if !__cplusplus && FF_SUPPORTS_COUNT_OF\n #define ARR"
},
{
"path": "src/common/base64.h",
"chars": 731,
"preview": "#pragma once\n\n#include \"fastfetch.h\"\n\nvoid ffBase64EncodeRaw(uint32_t size, const char *str, uint32_t *out_size, char *o"
},
{
"path": "src/common/binary.h",
"chars": 776,
"preview": "#pragma once\n\n#include \"fastfetch.h\"\n\n/**\n * Extracts string literals from a binary file\n *\n * @param file Path to the b"
},
{
"path": "src/common/color.h",
"chars": 1616,
"preview": "#pragma once\n\n#define FF_COLOR_MODE_RESET \"0;\"\n#define FF_COLOR_MODE_BOLD \"1;\"\n#define FF_COLOR_MODE_DIM \"2;\"\n#define FF"
},
{
"path": "src/common/commandoption.h",
"chars": 239,
"preview": "#pragma once\n\n#include \"common/ffdata.h\"\n\nvoid ffPrepareCommandOption(FFdata* data);\nvoid ffPrintCommandOption(FFdata* d"
},
{
"path": "src/common/dbus.h",
"chars": 2318,
"preview": "#pragma once\n\n#ifdef FF_HAVE_DBUS\n#include <dbus/dbus.h>\n\n#include \"common/FFstrbuf.h\"\n#include \"common/library.h\"\n\ntype"
},
{
"path": "src/common/debug.h",
"chars": 973,
"preview": "#pragma once\n\n#include \"fastfetch.h\"\n#include \"common/time.h\"\n\nstatic inline const char* ffFindFileName(const char* file"
},
{
"path": "src/common/duration.h",
"chars": 105,
"preview": "#pragma once\n\n#include \"fastfetch.h\"\n\nvoid ffDurationAppendNum(uint64_t totalSeconds, FFstrbuf* result);\n"
},
{
"path": "src/common/edidHelper.h",
"chars": 763,
"preview": "#pragma once\n\n#include <stdint.h>\n#include \"common/FFstrbuf.h\"\n\nvoid ffEdidGetVendorAndModel(const uint8_t edid[128], FF"
},
{
"path": "src/common/ffdata.h",
"chars": 952,
"preview": "#pragma once\n\n#include \"common/FFstrbuf.h\"\n\ntypedef enum __attribute__((__packed__)) FFDataResultDocType\n{\n FF_RESULT"
},
{
"path": "src/common/font.h",
"chars": 793,
"preview": "#pragma once\n\n#include \"common/FFstrbuf.h\"\n#include \"common/FFlist.h\"\n\ntypedef struct FFfont\n{\n FFstrbuf pretty;\n "
},
{
"path": "src/common/format.h",
"chars": 568,
"preview": "#pragma once\n\n#include \"common/argType.h\"\n\ntypedef struct FFformatarg\n{\n FFArgType type;\n const void* value;\n c"
},
{
"path": "src/common/frequency.h",
"chars": 92,
"preview": "#pragma once\n\n#include \"fastfetch.h\"\n\nbool ffFreqAppendNum(uint32_t mhz, FFstrbuf* result);\n"
},
{
"path": "src/common/haiku/version.cpp",
"chars": 548,
"preview": "extern \"C\" {\n#include \"version.h\"\n}\n\n#include <File.h>\n#include <AppFileInfo.h>\n\nbool ffGetFileVersion(const char* fileP"
},
{
"path": "src/common/haiku/version.h",
"chars": 94,
"preview": "#include \"common/FFstrbuf.h\"\n\nbool ffGetFileVersion(const char* filePath, FFstrbuf* version);\n"
},
{
"path": "src/common/impl/FFPlatform.c",
"chars": 2838,
"preview": "#include \"FFPlatform_private.h\"\n#include \"common/stringUtils.h\"\n#include \"common/io.h\"\n#include \"detection/version/versi"
},
{
"path": "src/common/impl/FFPlatform_private.h",
"chars": 248,
"preview": "#pragma once\n\n#include \"common/FFPlatform.h\"\n\nvoid ffPlatformInitImpl(FFPlatform* platform);\n\nvoid ffPlatformPathAddAbso"
},
{
"path": "src/common/impl/FFPlatform_unix.c",
"chars": 11830,
"preview": "#include \"FFPlatform_private.h\"\n#include \"common/FFstrbuf.h\"\n#include \"common/arrayUtils.h\"\n#include \"common/stringUtils"
},
{
"path": "src/common/impl/FFPlatform_windows.c",
"chars": 11081,
"preview": "#include \"FFPlatform_private.h\"\n#include \"common/io.h\"\n#include \"common/library.h\"\n#include \"common/stringUtils.h\"\n#incl"
},
{
"path": "src/common/impl/FFlist.c",
"chars": 805,
"preview": "#include \"common/FFlist.h\"\n\n#include <stdlib.h>\n#include <string.h>\n\nvoid* ffListAdd(FFlist* list)\n{\n if(list->length"
},
{
"path": "src/common/impl/FFstrbuf.c",
"chars": 24925,
"preview": "#include \"common/FFstrbuf.h\"\n#include \"common/mallocHelper.h\"\n\n#include <ctype.h>\n#include <inttypes.h>\n#include <math.h"
},
{
"path": "src/common/impl/base64.c",
"chars": 2910,
"preview": "#include \"common/base64.h\"\n\n// https://github.com/kostya/benchmarks/blob/master/base64/test-nolib.c#L145\nvoid ffBase64En"
},
{
"path": "src/common/impl/binary_apple.c",
"chars": 8684,
"preview": "#include \"common/binary.h\"\n#include \"common/io.h\"\n#include \"common/stringUtils.h\"\n#include \"common/mallocHelper.h\"\n\n#inc"
},
{
"path": "src/common/impl/binary_linux.c",
"chars": 4625,
"preview": "#include \"common/binary.h\"\n\n#if defined(FF_HAVE_ELF) || defined(__sun) || (defined(__FreeBSD__) && !defined(__DragonFly_"
},
{
"path": "src/common/impl/binary_windows.c",
"chars": 2469,
"preview": "#include \"common/binary.h\"\n#include \"common/io.h\"\n#include \"common/stringUtils.h\"\n#include \"common/windows/nt.h\"\n\n#inclu"
},
{
"path": "src/common/impl/commandoption.c",
"chars": 9285,
"preview": "#include \"common/commandoption.h\"\n#include \"common/color.h\"\n#include \"common/printing.h\"\n#include \"common/time.h\"\n#inclu"
},
{
"path": "src/common/impl/dbus.c",
"chars": 8774,
"preview": "#include \"common/dbus.h\"\n\n#ifdef FF_HAVE_DBUS\n\n#include \"common/thread.h\"\n#include \"common/stringUtils.h\"\n\nstatic bool l"
},
{
"path": "src/common/impl/debug_windows.c",
"chars": 869,
"preview": "#include \"common/debug.h\"\n\n#include <windows.h>\n\nconst char* ffDebugWin32Error(DWORD errorCode)\n{\n static char buffer"
},
{
"path": "src/common/impl/duration.c",
"chars": 2295,
"preview": "#include \"common/duration.h\"\n\nvoid ffDurationAppendNum(uint64_t totalSeconds, FFstrbuf* result)\n{\n const FFOptionsDis"
},
{
"path": "src/common/impl/edidHelper.c",
"chars": 4891,
"preview": "#include \"common/edidHelper.h\"\n\nvoid ffEdidGetPhysicalResolution(const uint8_t edid[128], uint32_t* width, uint32_t* hei"
},
{
"path": "src/common/impl/font.c",
"chars": 15164,
"preview": "#include \"fastfetch.h\"\n#include \"common/FFlist.h\"\n#include \"common/FFstrbuf.h\"\n#include \"common/stringUtils.h\"\n#include "
},
{
"path": "src/common/impl/format.c",
"chars": 14673,
"preview": "#include \"fastfetch.h\"\n#include \"common/format.h\"\n#include \"common/parsing.h\"\n#include \"common/textModifier.h\"\n#include "
},
{
"path": "src/common/impl/frequency.c",
"chars": 701,
"preview": "#include \"common/frequency.h\"\n\nbool ffFreqAppendNum(uint32_t mhz, FFstrbuf* result)\n{\n if (mhz == 0)\n return f"
},
{
"path": "src/common/impl/init.c",
"chars": 6535,
"preview": "#include \"fastfetch.h\"\n#include \"common/init.h\"\n#include \"common/parsing.h\"\n#include \"common/thread.h\"\n#include \"common/"
},
{
"path": "src/common/impl/io_unix.c",
"chars": 9577,
"preview": "#include \"common/io.h\"\n#include \"fastfetch.h\"\n#include \"common/stringUtils.h\"\n#include \"common/time.h\"\n\n#include <fcntl."
},
{
"path": "src/common/impl/io_windows.c",
"chars": 16555,
"preview": "#include \"fastfetch.h\"\n#include \"common/io.h\"\n#include \"common/stringUtils.h\"\n#include \"common/windows/nt.h\"\n#include \"c"
},
{
"path": "src/common/impl/jsonconfig.c",
"chars": 12319,
"preview": "#include \"fastfetch.h\"\n#include \"common/color.h\"\n#include \"common/jsonconfig.h\"\n#include \"common/printing.h\"\n#include \"c"
},
{
"path": "src/common/impl/kmod_apple.c",
"chars": 700,
"preview": "#include \"common/kmod.h\"\n#include \"common/apple/cf_helpers.h\"\n#include <IOKit/kext/KextManager.h>\n#include <CoreFoundati"
},
{
"path": "src/common/impl/kmod_bsd.c",
"chars": 150,
"preview": "#include \"common/kmod.h\"\n#include <sys/param.h>\n#include <sys/module.h>\n\nbool ffKmodLoaded(const char* modName)\n{\n re"
},
{
"path": "src/common/impl/kmod_linux.c",
"chars": 558,
"preview": "#include \"common/kmod.h\"\n#include \"common/io.h\"\n\nbool ffKmodLoaded(const char* modName)\n{\n static FFstrbuf modules;\n "
},
{
"path": "src/common/impl/kmod_nbsd.c",
"chars": 926,
"preview": "#include \"common/kmod.h\"\n#include \"common/stringUtils.h\"\n\n#include <sys/module.h>\n#include <sys/param.h>\n\ntypedef struct"
},
{
"path": "src/common/impl/kmod_nosupport.c",
"chars": 149,
"preview": "#include \"common/kmod.h\"\n\nbool ffKmodLoaded(FF_MAYBE_UNUSED const char* modName)\n{\n return true; // Don't generate ke"
},
{
"path": "src/common/impl/kmod_sunos.c",
"chars": 531,
"preview": "#include \"common/kmod.h\"\n#include \"common/stringUtils.h\"\n\n#include <sys/modctl.h>\n#include <errno.h>\n\nbool ffKmodLoaded("
},
{
"path": "src/common/impl/kmod_windows.c",
"chars": 816,
"preview": "#include \"common/kmod.h\"\n#include \"common/windows/nt.h\"\n#include \"common/mallocHelper.h\"\n#include \"common/stringUtils.h\""
},
{
"path": "src/common/impl/library.c",
"chars": 4808,
"preview": "#include \"fastfetch.h\"\n#include \"common/library.h\"\n\n#if _WIN32\n#include \"common/debug.h\"\n#include \"common/windows/nt.h\"\n"
},
{
"path": "src/common/impl/memrchr.c",
"chars": 322,
"preview": "#include \"common/memrchr.h\"\n#include <stddef.h>\n#include <stdint.h>\n\nvoid* memrchr(const void* s, int c, size_t n)\n{\n "
},
{
"path": "src/common/impl/netif.c",
"chars": 675,
"preview": "#include \"common/netif.h\"\n\n#ifndef _WIN32\n #include <net/if.h>\n #include <netinet/in.h>\n#endif\n\nconst FFNetifDefau"
},
{
"path": "src/common/impl/netif_apple.c",
"chars": 6405,
"preview": "#include \"common/netif.h\"\n#include \"common/io.h\"\n#include \"common/mallocHelper.h\"\n\n#include <net/if.h>\n#include <net/if_"
},
{
"path": "src/common/impl/netif_bsd.c",
"chars": 4207,
"preview": "#include \"common/netif.h\"\n#include \"common/io.h\"\n#include \"common/mallocHelper.h\"\n\n#include <net/if.h>\n#include <net/if_"
},
{
"path": "src/common/impl/netif_gnu.c",
"chars": 959,
"preview": "#include \"common/netif.h\"\n#include \"common/io.h\"\n\n#include <net/if.h>\n#include <stdio.h>\n\n#define FF_STR_INDIR(x) #x\n#de"
},
{
"path": "src/common/impl/netif_haiku.c",
"chars": 3665,
"preview": "#include \"common/netif.h\"\n#include \"common/io.h\"\n#include \"common/mallocHelper.h\"\n\n#include <arpa/inet.h>\n#include <net/"
},
{
"path": "src/common/impl/netif_linux.c",
"chars": 16110,
"preview": "#include \"common/netif.h\"\n#include \"common/io.h\"\n#include \"common/mallocHelper.h\"\n#include \"common/debug.h\"\n\n#include <a"
},
{
"path": "src/common/impl/netif_windows.c",
"chars": 3320,
"preview": "#include \"common/netif.h\"\n#include \"common/mallocHelper.h\"\n\n#include <ws2tcpip.h> // AF_INET6, IN6_IS_ADDR_UNSPECIFIED\n#"
},
{
"path": "src/common/impl/networking_common.c",
"chars": 7146,
"preview": "#include \"fastfetch.h\"\n#include \"common/library.h\"\n#include \"common/networking.h\"\n#include \"common/stringUtils.h\"\n#inclu"
},
{
"path": "src/common/impl/networking_linux.c",
"chars": 18197,
"preview": "#include \"fastfetch.h\"\n#include \"common/networking.h\"\n#include \"common/time.h\"\n#include \"common/library.h\"\n#include \"com"
},
{
"path": "src/common/impl/networking_windows.c",
"chars": 14134,
"preview": "#include <mswsock.h>\n#include <ws2tcpip.h>\n\n//Must be included after <mswsock.h>\n#include \"fastfetch.h\"\n#include \"common"
},
{
"path": "src/common/impl/option.c",
"chars": 7679,
"preview": "#include \"fastfetch.h\"\n#include \"common/option.h\"\n#include \"common/color.h\"\n#include \"common/stringUtils.h\"\n\n// Return s"
},
{
"path": "src/common/impl/parsing.c",
"chars": 4172,
"preview": "#include \"fastfetch.h\"\n#include \"common/parsing.h\"\n\n#include <ctype.h>\n\n#ifdef _WIN32\n #pragma GCC diagnostic push\n "
},
{
"path": "src/common/impl/path.c",
"chars": 8437,
"preview": "#include \"common/path.h\"\n#include \"common/io.h\"\n#include \"common/arrayUtils.h\"\n\n#if !_WIN32\nconst char* ffFindExecutable"
},
{
"path": "src/common/impl/percent.c",
"chars": 11398,
"preview": "#include \"fastfetch.h\"\n#include \"common/percent.h\"\n#include \"common/color.h\"\n#include \"common/option.h\"\n#include \"common"
},
{
"path": "src/common/impl/printing.c",
"chars": 5215,
"preview": "#include \"fastfetch.h\"\n#include \"common/printing.h\"\n#include \"common/textModifier.h\"\n#include \"logo/logo.h\"\n\nvoid ffPrin"
},
{
"path": "src/common/impl/processing_linux.c",
"chars": 19119,
"preview": "#include \"fastfetch.h\"\n#include \"common/processing.h\"\n#include \"common/io.h\"\n#include \"common/stringUtils.h\"\n#include \"c"
},
{
"path": "src/common/impl/processing_windows.c",
"chars": 9277,
"preview": "#include \"fastfetch.h\"\n#include \"common/mallocHelper.h\"\n#include \"common/processing.h\"\n#include \"common/io.h\"\n#include \""
},
{
"path": "src/common/impl/properties.c",
"chars": 4549,
"preview": "#include \"fastfetch.h\"\n#include \"common/properties.h\"\n#include \"common/io.h\"\n#include \"common/mallocHelper.h\"\n\n#include "
},
{
"path": "src/common/impl/settings.c",
"chars": 15987,
"preview": "#include \"fastfetch.h\"\n#include \"common/settings.h\"\n#include \"common/library.h\"\n#include \"common/thread.h\"\n#include \"com"
},
{
"path": "src/common/impl/size.c",
"chars": 1543,
"preview": "#include \"common/size.h\"\n\n#include <inttypes.h>\n\nstatic void appendNum(FFstrbuf* result, uint64_t bytes, uint32_t base, "
},
{
"path": "src/common/impl/smbiosHelper.c",
"chars": 21675,
"preview": "#include \"common/smbiosHelper.h\"\n#include \"common/io.h\"\n#include \"common/unused.h\"\n#include \"common/mallocHelper.h\"\n#inc"
},
{
"path": "src/common/impl/sysctl.c",
"chars": 2649,
"preview": "#include \"common/sysctl.h\"\n\n#include <stdlib.h>\n\n#ifdef __OpenBSD__\nconst char* ffSysctlGetString(int mib1, int mib2, FF"
},
{
"path": "src/common/impl/temps.c",
"chars": 5229,
"preview": "#include \"fastfetch.h\"\n#include \"common/temps.h\"\n#include \"common/textModifier.h\"\n#include \"common/stringUtils.h\"\n\nvoid "
},
{
"path": "src/common/impl/time.c",
"chars": 2762,
"preview": "#include \"common/time.h\"\n\n#include <stdio.h>\n\nchar ffTimeInternalBuffer[64]; // Reduce memory usage and prevent redundan"
},
{
"path": "src/common/impl/wcwidth.c",
"chars": 951,
"preview": "#include \"common/wcwidth.h\"\n#include \"3rdparty/widecharwidth/widechar_width_c.h\"\n\nint mk_wcwidth(uint32_t wc)\n{\n // /"
},
{
"path": "src/common/init.h",
"chars": 139,
"preview": "#pragma once\n\nvoid ffInitInstance(void);\nvoid ffStart(void);\nvoid ffFinish(void);\nvoid ffDestroyInstance(void);\nvoid ffL"
},
{
"path": "src/common/io.h",
"chars": 6867,
"preview": "#pragma once\n\n#include \"common/FFstrbuf.h\"\n#include \"common/FFlist.h\"\n\n#ifdef _WIN32\n #include <fileapi.h>\n #inclu"
},
{
"path": "src/common/jsonconfig.h",
"chars": 1235,
"preview": "#pragma once\n\n#include \"common/ffdata.h\"\n#include \"common/option.h\"\n\nbool ffJsonConfigParseModuleArgs(yyjson_val* key, y"
},
{
"path": "src/common/kmod.h",
"chars": 78,
"preview": "#pragma once\n\n#include \"fastfetch.h\"\n\nbool ffKmodLoaded(const char* modName);\n"
},
{
"path": "src/common/library.h",
"chars": 4310,
"preview": "#pragma once\n\n#include \"fastfetch.h\"\n#include \"common/FFcheckmacros.h\"\n\n#ifndef FF_DISABLE_DLOPEN\n\n#if defined(_WIN32)\n "
},
{
"path": "src/common/mallocHelper.h",
"chars": 901,
"preview": "#pragma once\n\n#include <stdlib.h>\n#include <assert.h>\n\n#if FF_HAVE_MALLOC_USABLE_SIZE || FF_HAVE_MSVC_MSIZE\n #if __ha"
},
{
"path": "src/common/memrchr.h",
"chars": 351,
"preview": "#pragma once\n\n#include <stddef.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n// `memrchr` is a GNU extension and may not b"
},
{
"path": "src/common/netif.h",
"chars": 806,
"preview": "#pragma once\n\n#include \"fastfetch.h\"\n\n#ifndef _WIN32\n #include <net/if.h>\n #include <netinet/in.h>\n#endif\n\ntypedef"
},
{
"path": "src/common/networking.h",
"chars": 1039,
"preview": "#pragma once\n\n#include \"common/thread.h\"\n#include \"common/FFstrbuf.h\"\n\n#ifdef _WIN32\n #include <minwindef.h>\n#endif\n\n"
},
{
"path": "src/common/option.h",
"chars": 3878,
"preview": "#pragma once\n\n#include \"common/FFstrbuf.h\"\n\nstruct yyjson_val;\nstruct yyjson_mut_doc;\nstruct yyjson_mut_val;\n\ntypedef st"
},
{
"path": "src/common/parsing.h",
"chars": 663,
"preview": "#pragma once\n\n#include \"common/FFstrbuf.h\"\n\n#include <stdint.h>\n\ntypedef struct FFVersion\n{\n uint32_t major;\n uint"
},
{
"path": "src/common/path.h",
"chars": 778,
"preview": "#pragma once\n\n#include \"common/FFstrbuf.h\"\n#include \"common/stringUtils.h\"\n\nconst char* ffFindExecutableInPath(const cha"
},
{
"path": "src/common/percent.h",
"chars": 1748,
"preview": "#pragma once\n\n#include \"common/FFstrbuf.h\"\n#include \"common/parsing.h\"\n#include \"common/option.h\"\n\ntypedef enum __attrib"
},
{
"path": "src/common/printing.h",
"chars": 1221,
"preview": "#pragma once\n\n#include \"fastfetch.h\"\n#include \"common/format.h\"\n\ntypedef enum __attribute__((__packed__)) FFPrintType {\n"
},
{
"path": "src/common/processing.h",
"chars": 1527,
"preview": "#pragma once\n\n#include \"common/FFstrbuf.h\"\n\n#ifndef _WIN32\n#include <sys/types.h> // pid_t\n#endif\n\ntypedef struct FFProc"
},
{
"path": "src/common/properties.h",
"chars": 2212,
"preview": "#pragma once\n\n#include \"fastfetch.h\"\n\ntypedef struct FFpropquery\n{\n const char* start;\n FFstrbuf* buffer;\n} FFprop"
},
{
"path": "src/common/settings.h",
"chars": 1473,
"preview": "#pragma once\n\n#include \"fastfetch.h\"\n\ntypedef enum __attribute__((__packed__)) FFvarianttype\n{\n FF_VARIANT_TYPE_STRIN"
},
{
"path": "src/common/size.h",
"chars": 94,
"preview": "#pragma once\n\n#include \"fastfetch.h\"\n\nvoid ffSizeAppendNum(uint64_t bytes, FFstrbuf* result);\n"
},
{
"path": "src/common/smbiosHelper.h",
"chars": 3559,
"preview": "#pragma once\n\n#include \"common/FFstrbuf.h\"\n\nbool ffIsSmbiosValueSet(FFstrbuf* value);\nstatic inline void ffCleanUpSmbios"
},
{
"path": "src/common/stringUtils.h",
"chars": 2367,
"preview": "#pragma once\n\n#include <stdbool.h>\n#include <stdint.h>\n#include <string.h>\n#include <ctype.h>\n\nstatic inline bool ffStrS"
},
{
"path": "src/common/sysctl.h",
"chars": 703,
"preview": "#pragma once\n\n#include \"fastfetch.h\"\n#include \"common/FFcheckmacros.h\"\n\n#include <sys/types.h>\n#include <sys/sysctl.h>\n\n"
},
{
"path": "src/common/temps.h",
"chars": 537,
"preview": "#pragma once\n\n#include \"common/parsing.h\"\n#include \"common/option.h\"\n\nvoid ffTempsAppendNum(double celsius, FFstrbuf* bu"
},
{
"path": "src/common/textModifier.h",
"chars": 160,
"preview": "#pragma once\n\n#define FASTFETCH_TEXT_MODIFIER_BOLT \"\\033[1m\"\n#define FASTFETCH_TEXT_MODIFIER_ERROR \"\\033[1;31m\"\n#define"
},
{
"path": "src/common/thread.h",
"chars": 4250,
"preview": "#pragma once\n\n#include \"fastfetch.h\"\n\n#ifdef FF_HAVE_THREADS\n #if defined(_WIN32)\n #include <winternl.h>\n "
},
{
"path": "src/common/time.h",
"chars": 2301,
"preview": "#pragma once\n\n#include <stdbool.h>\n#include <stdint.h>\n#include <time.h>\n#ifdef _WIN32\n #include <ntstatus.h>\n #in"
},
{
"path": "src/common/unused.h",
"chars": 267,
"preview": "#pragma once\n\nstatic inline void ffUnused(int dummy, ...) { (void) dummy; }\n#define FF_UNUSED(...) ffUnused(0, __VA_ARGS"
},
{
"path": "src/common/wcwidth.h",
"chars": 364,
"preview": "#pragma once\n\n#include <stdint.h>\n\n#ifdef FF_HAVE_WCWIDTH\n#include <wchar.h>\n\n// Should be char32_t but it's not defined"
},
{
"path": "src/common/windows/c-logo.sh",
"chars": 485,
"preview": "#!/bin/sh\n# Convert logo.svg to logo.ico\nrsvg-convert -w 16 -h 16 logo.svg > logo16.png\nrsvg-convert -w 32 -h 32 logo.sv"
},
{
"path": "src/common/windows/com.cpp",
"chars": 1433,
"preview": "#include \"com.hpp\"\n#include \"fastfetch.h\"\n\n#include <stdlib.h>\n\n//https://learn.microsoft.com/en-us/windows/win32/wmisdk"
},
{
"path": "src/common/windows/com.hpp",
"chars": 426,
"preview": "#pragma once\n\n#ifdef __cplusplus\n\n#include <unknwn.h>\n\nconst char* ffInitCom(void);\n\nstatic inline void ffReleaseComObje"
},
{
"path": "src/common/windows/getline.c",
"chars": 1165,
"preview": "#include \"getline.h\"\n\n#include <stdlib.h>\n#include <errno.h>\n\nssize_t getline(char **lineptr, size_t *n, FILE *stream) {"
},
{
"path": "src/common/windows/getline.h",
"chars": 112,
"preview": "#pragma once\n\n#include <stdint.h>\n#include <stdio.h>\n\nssize_t getline(char **lineptr, size_t *n, FILE *stream);\n"
},
{
"path": "src/common/windows/manifest.xml",
"chars": 1521,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersi"
},
{
"path": "src/common/windows/nt.h",
"chars": 40353,
"preview": "#pragma once\n\n#include <ntdef.h>\n#include <winternl.h>\n#include <winnt.h>\n#include <stdint.h>\n#include <assert.h>\n\nenum "
},
{
"path": "src/common/windows/perflib_.h",
"chars": 5616,
"preview": "#pragma once\n\n#include <windows.h>\n#include <perflib.h>\n\n// Missing from <perflib.h> of MinGW-w64 SDK\n\n#define PERF_WILD"
},
{
"path": "src/common/windows/registry.c",
"chars": 15717,
"preview": "#include \"registry.h\"\n#include \"unicode.h\"\n#include \"common/mallocHelper.h\"\n#include \"common/debug.h\"\n#include \"common/w"
}
]
// ... and 1200 more files (download for full content)
About this extraction
This page contains the full source code of the fastfetch-cli/fastfetch GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1400 files (5.0 MB), approximately 1.4M tokens, and a symbol index with 3314 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.