Fastfetch: Neofetch-like system information tool
High-performance CLI system information display written in C.
Learn more about fastfetch
Fastfetch is a command-line system information tool written in C that queries and displays hardware and software configuration details similar to Neofetch but with significantly faster execution times. The tool works by directly interfacing with operating system APIs and reading system files to collect data about components including CPU, GPU, memory, kernel version, desktop environment, and various other system attributes. It supports extensive customization through configuration files and command-line flags that control which modules are displayed, how data is formatted using template strings with positional placeholders, and how the ASCII logo and color scheme are rendered. The architecture prioritizes minimal dependencies and efficient system calls to achieve sub-millisecond execution on most platforms, making it suitable for shell prompts and frequent invocations. Cross-platform compatibility is achieved through platform-specific detection code paths that handle differences between Linux, macOS, Windows, and BSD systems.
C-based implementation
Written primarily in C rather than shell scripts, allowing for direct system calls and reduced interpreter overhead. This architectural choice affects startup time and resource consumption compared to script-based alternatives.
Multi-platform support
Supports a broad range of operating systems including Linux distributions, macOS, Windows 7 and later, BSD variants (FreeBSD, OpenBSD, NetBSD, DragonFly), Android, Haiku, and SunOS. Platform-specific code paths handle differences in system information retrieval across these environments.
Configuration-driven output
Provides preset configuration files that control which system information is displayed and how it is formatted. Users can customize the tool's behavior through configuration files rather than command-line flags alone, enabling complex display layouts.
#include <fastfetch/fastfetch.h>
int main() {
FFdata data;
ffInitData(&data);
// Get CPU information
FFCPUResult cpu;
ffDetectCPU(&data, &cpu);
printf("CPU: %s\n", cpu.name.chars);
ffCleanupData(&data);
return 0;
}Commands now execute in parallel by default for faster performance; set `"parallel": false` in config if scripts break.
- –Add `--dynamic-interval <ms>` flag to enable auto-refresh output (Display and Media modules excluded).
- –Use media cover art as logo source with `--<image-protocol> media-cover` or `"source": "media-cover"` in JSON config.
Windows binaries now signed by SignPath; new CMake option `-DENABLE_WORDEXP` defaults ON but can be disabled for security.
- –Set `-DENABLE_WORDEXP=OFF` in CMake to use `glob(3)` instead of `wordexp(3)` for logo paths if security is a concern.
- –Use `--json` or `-j` flag as shortcut for JSON output; glob patterns now work in `Disk.hideFolders` config.
Renames Separator JSON property `length` to `times` (breaking change); adds experimental glibc 2.17 polyfilled binaries for RHEL/CentOS 7.
- –Update JSON configs: replace `"length"` with `"times"` in Separator module definitions to avoid breakage.
- –Use polyfilled binaries only on ancient distros (glibc <2.17); standard builds remain preferred and officially supported.
See how people are using fastfetch
Top in Developer Tools
Related Repositories
Discover similar tools and frameworks used by developers
posthog
Event tracking, analytics, and experimentation platform.
crush
LLM-powered coding agent with LSP and MCP integration.
grafana
Query and visualize metrics from multiple data sources.
bun
Fast JavaScript runtime with built-in bundler and package manager.
ddt4all
Open-source Python application for vehicle diagnostics, ECU parameter modification, and CAN bus communication with Renault and Dacia cars.