Skip to content

QFetch - A blazing-fast, highly customizable system info tool. Faster than neofetch, with extensive theming support. Display your system stats in style with endless customization options for colors, layout, and ASCII art. Perfect for Unix-like systems.

License

Notifications You must be signed in to change notification settings

tinyopsec/nanofetch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

54 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Nanofetch

GitHub Workflow Status License GitHub Stars Contributors Latest Release Commit Activity Language: C++

A lightweight, blazingly fast, and highly customizable system information tool written in modern C++. Display your system stats with style using gradient themes and custom ASCII art.

Nanofetch is a minimal alternative to Neofetch and Fastfetch, designed for speed, simplicity, and visual elegance. Perfect for showcasing your Arch Linux setup with zero bloat.


πŸ–ΌοΈ Preview

Nanofetch Example 1 Nanofetch Example 2


✨ Features

  • πŸš€ Blazing Fast β€” Written in modern C++17 with performance in mind
  • 🎨 Gradient Themes β€” 13 built-in color schemes including rainbow, neon, sunset, and more
  • βš™οΈ Highly Customizable β€” Toggle any information field and use custom ASCII logos
  • πŸ“ XDG Compliant β€” Follows XDG Base Directory specification for clean config management
  • πŸ”§ Zero Dependencies β€” Uses only standard Linux utilities and system calls
  • πŸͺΆ Minimal Footprint β€” Single binary with a small memory footprint

🧩 Supported Platforms

Currently Supported:

  • βœ… Arch Linux and derivatives (Manjaro, EndeavourOS, Artix, ArcoLinux, etc.)

Planned Support:

  • πŸ“‹ Debian/Ubuntu (.deb packages)
  • πŸ“‹ Fedora/RHEL (.rpm packages)
  • πŸ“‹ Void Linux
  • πŸ“‹ Gentoo
  • πŸ“‹ Alpine Linux
  • πŸ“‹ BSD variants (FreeBSD, OpenBSD)

πŸ“¦ Installation

Arch Linux (AUR)

Install directly from the AUR using your preferred AUR helper:

yay -S nanofetch

Or with paru:

paru -S nanofetch

Arch Linux (Manual Build)

Clone the repository and build with makepkg:

git clone https://github.com/tinyopsec/nanofetch.git
cd nanofetch
makepkg -si

From Source (Any Linux Distribution)

For manual installation on any Linux distribution:

install folder nanofetch
cd nanofetch
g++ -std=c++17 -O2 -o nanofetch nanofetch.cpp
sudo install -Dm755 nanofetch /usr/bin/nanofetch
sudo install -Dm644 logo.txt /usr/share/nanofetch/logo.txt
sudo install -Dm644 config.txt /usr/share/nanofetch/config.txt
sudo install -Dm644 options.txt /usr/share/nanofetch/options.txt
sudo install -Dm644 settings.txt /usr/share/nanofetch/settings.txt

πŸ—‘οΈ Uninstallation

Arch Linux (AUR)

yay -R nanofetch

Or with paru:

paru -R nanofetch

Manual Uninstallation

sudo rm /usr/bin/nanofetch
sudo rm -rf /usr/share/nanofetch
rm -rf ~/home/<user>/.config/nanofetch

πŸš€ Usage

Simply run Nanofetch in your terminal:

nanofetch

First Launch

On first run, Nanofetch automatically:

  1. Creates the configuration directory at ~/home/<user>/.config/nanofetch/
  2. Copies default configuration files from /usr/share/nanofetch/
  3. Displays your system information with default settings

βš™οΈ Configuration

Configuration File Structure

Nanofetch follows the XDG Base Directory specification:

~/home/<user>/.config/nanofetch/           # User configuration (edit these)
β”œβ”€β”€ logo.txt                   # Custom ASCII logo
β”œβ”€β”€ config.txt                 # Gradient theme settings
β”œβ”€β”€ options.txt                # Toggle information fields
└── settings.txt               # General settings

/usr/share/nanofetch/          # System defaults (do not edit)
β”œβ”€β”€ logo.txt
β”œβ”€β”€ config.txt
β”œβ”€β”€ options.txt
└── settings.txt

Gradient Themes

Customize your color schemes by editing ~/home/<user>/.config/nanofetch/config.txt:

gradient_info=neon            # Gradient for system information text
gradient_logo=rainbow         # Gradient for ASCII logo

Available Gradients:

Theme Description
mono Monochrome white
blue Classic blue tones
red Vibrant red gradient
green Fresh green hues
purple Royal purple shades
orange Warm orange tones
neon Bright cyan and green neon effect
aqua Cool aqua and cyan
sunset Warm sunset colors
forest Deep forest greens
rainbow Full spectrum rainbow
magenta Bold magenta and pink
gray Neutral grayscale

Toggle Information Fields

Control which system information is displayed by editing ~/home/<user>/.config/nanofetch/options.txt:

os=true                        # Operating system
kernel=true                    # Kernel version
uptime=true                    # System uptime
packages=true                  # Installed packages count
shell=true                     # Current shell
cpu=true                       # CPU model
memory=true                    # RAM usage
gpu=true                       # GPU information
resolution=true                # Screen resolution
de=true                        # Desktop environment
wm=true                        # Window manager
theme=true                     # GTK theme
icons=true                     # Icon theme
terminal=true                  # Terminal emulator

Set any field to false to hide it from the output.

Custom ASCII Logo

Replace the default logo by editing ~/home/<user>/.config/nanofetch/logo.txt with your own ASCII art. Alternatively, specify a different logo file in ~/.config/nanofetch/settings.txt:

logo=custom-logo.txt           # Path to custom logo file
theme=cyan                     # Default theme color
max_label_width=13             # Maximum width for info labels

πŸ› οΈ Build from Source

Requirements

  • Compiler: GCC 7+ or Clang 5+ with C++17 support
  • System: Linux with /proc filesystem
  • Optional: Standard Unix utilities for extended features (e.g., xrandr for resolution detection)

Compilation

Basic compilation command:

g++ -std=c++17 -O2 -o nanofetch nanofetch.cpp

Development Build

For development with debug symbols:

git clone https://github.com/tinyopsec/nanofetch.git
cd nanofetch
g++ -std=c++17 -g -Wall -Wextra -o nanofetch nanofetch.cpp
./nanofetch

🀝 Contributing

Contributions are welcome and appreciated! Whether you want to fix bugs, add features, or improve documentation, feel free to contribute.

How to Contribute

  1. Fork the repository
  2. Create a feature branch
    git checkout -b feature/amazing-feature
  3. Commit your changes
    git commit -m 'Add amazing feature'
  4. Push to your branch
    git push origin feature/amazing-feature
  5. Open a Pull Request

Contribution Guidelines

  • Follow C++17/20 standards for all code
  • Maintain XDG Base Directory compliance
  • Write clean, readable code without excessive inline comments
  • Test on multiple distributions when possible
  • Update documentation for new features
  • Ensure backwards compatibility when modifying configuration files

πŸ“‹ Roadmap

Planned Features

  • Automatic distro detection for Debian/Ubuntu
  • Official .deb and .rpm package support
  • GPU temperature and usage statistics
  • Network interface information (IP, bandwidth)
  • Battery status and health for laptops
  • Custom color definitions with hex codes
  • Image/logo support via kitty graphics protocol or sixel
  • Plugin system for custom information modules
  • JSON export mode for scripting
  • Multi-language support for system information

Under Consideration

  • Wayland-native display detection
  • Disk usage and filesystem information
  • Docker/container detection
  • System load averages
  • Color scheme preview tool

πŸ› Known Issues

  • Font Detection: Terminal font detection is limited and may not work on all terminal emulators
  • Resolution Detection: Display resolution requires xrandr (X11 only, Wayland support pending)
  • GTK Theme Info: Some GTK theme information requires gsettings to be installed
  • Multi-GPU Systems: GPU detection may only show the primary GPU on multi-GPU setups

Report issues at the GitHub issue tracker.


πŸ“œ License

This project is licensed under the MIT License. See the LICENSE file for details.


πŸ™ Acknowledgments

  • Inspired by Neofetch by Dylan Araps
  • Inspired by Fastfetch
  • Thanks to all contributors who help improve Nanofetch
  • Special thanks to the Arch Linux and open-source communities

πŸ“ž Support & Community

  • πŸ› Report Bugs β€” Found a bug? Let us know
  • πŸ’‘ Request Features β€” Have an idea? Share it with us
  • ⭐ Star the Project β€” If you like Nanofetch, give it a star on GitHub
  • πŸ”€ Fork & Customize β€” Make it your own and share your improvements

Made with ❀️ by tech hat and the Nanofetch community

⬆ Back to Top

About

QFetch - A blazing-fast, highly customizable system info tool. Faster than neofetch, with extensive theming support. Display your system stats in style with endless customization options for colors, layout, and ASCII art. Perfect for Unix-like systems.

Resources

License

Stars

Watchers

Forks

Packages

No packages published