A pure, lightweight UNIX system fetch tool
  • C 97.5%
  • Makefile 2.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-10 17:02:11 +03:00
assets added showcase in README 2026-05-31 10:15:41 +03:00
include 1.4.1 // see changelog.md 2026-06-02 09:15:35 +03:00
src 1.4.2 // see CHANGELOG.md 2026-07-10 17:02:11 +03:00
.gitignore initial commit 2026-05-29 09:44:28 +03:00
CHANGELOG.md 1.4.2 // see CHANGELOG.md 2026-07-10 17:02:11 +03:00
config.def.h 1.1.0 // see CHANGELOG.md 2026-05-30 07:59:52 +03:00
config.mk 1.1.0 // see CHANGELOG.md 2026-05-30 07:59:52 +03:00
HACKING.md 1.1.0 // see CHANGELOG.md 2026-05-30 07:59:52 +03:00
LICENSE change license 2026-05-31 10:55:41 +03:00
Makefile 1.1.0 // see CHANGELOG.md 2026-05-30 07:59:52 +03:00
README.md change readme 2026-05-31 10:56:54 +03:00

Logo
Static Badge Gitea Stars Gitea Forks Gitea Last Commit

skfetch is a lightweight and fast system information tool written in pure C99. It works on Linux, macOS, and *BSD, following the strict Suckless philosophy and Unix way.

Performance

skfetch achieves the fastest possible speed for a compiled binary when running bash commands.

Fetch Tool Command Weight Execution Time
fastfetch-cli/fastfetch time fastfetch ~1.5MB 0.017s
DylanAraps/pfetch time pfetch ~59KB 0.031s
b0nn133/skfetch time skfetch ~25KB 0.062s
DylanAraps/neofetch time neofetch ~377KB 0.432s
KittyKatt/screenFetch time screenfetch ~259KB 0.930s

The benchmarks were carried out using the same configuration for all tools (excluding pfetch). Although fastfetch is quicker thanks to its native C/C++ API implementations, skfetch keeps high performance at the same time being ultra-lightweight and transparent in the configuration part through simple C macros and shell commands.

Philosophy

  • Zero Bloat: There are no dependencies. The tool compiles into a small binary using native system APIs (uname, sysctl).
  • Header-Only Configuration: Configuration occurs entirely at compile time through config.h. There is no slow, runtime JSON or TOML parsing.
  • Do One Thing Well: It fetches essential system info. You can easily extend its functionality for memory, packages, or hardware using shell commands without adding bloat.
  • Inline Color Coding: Logos use raw custom \1, \2, etc. inline control bytes to manage colors dynamically. This allows for perfect column alignment without string parsing.

Configuration

skfetch follows a traditional suckless compilation setup. Modify config.h:

#ifndef CONFIG_H
#define CONFIG_H

#include "skfetch.h"
#include <stdlib.h>
#include "colors.h"

#define DEF_COLOR        ANSI_CYAN
#define TEXT_COLOR       ANSI_RESET
#define COLOR_CONTROL    ANSI_BOLD

#define FORCE_LOGO       NULL
#define LOGO_ASCII       NULL
#define LOGO_ASCII_PATH  NULL
#define LOGO_COLORS      ANSI_RED, ANSI_GREEN, ANSI_BLUE

static const SKModule enabled_modules[] = {
    { "",       get_user_host, NULL },
    { "",       get_raw_text,  "-----------------" },
    { "OS",     get_os,        NULL },
    { "Kernel", get_kernel,    NULL },
    { "Uptime", get_uptime,    NULL },
};

#endif // CONFIG_H

Build & Installation

git clone https://codeberg.org/bunnies/skfetch
cd skfetch
make
make install

Usage

usage: skfetch [options]
options:
  -h          show this help message
  -v          show version information
  -d, -l <id> force a specific ascii distro logo

Hacking (Contributing)

Check HACKING.md for more details.

Changelog

See CHANGELOG.md for updates.