fitch 2.1.1

dotnet tool install --global fitch --version 2.1.1
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local fitch --version 2.1.1
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=fitch&version=2.1.1
                    
nuke :add-package fitch --version 2.1.1
                    

Fitch

A fast, cross-platform system information tool written in F#.

fitch

Generic badge Tests

About This Fork

This is a maintained and actively developed fork of the original Fitch project created by Luis Quintanilla (@lquintanilla) and Luis Angel Mendez Gort (@lamg).

The original project brought system information display to Linux using F#. This fork continues that vision with major enhancements and ongoing maintenance.

Original authors: Luis Quintanilla, Luis Angel Mendez Gort
Current maintainer: Jonas Lara (@jonas1ara)

<details> <summary><b>📜 Project Evolution History</b></summary>

<br>

Original Project (2022-2023)

  • Created by Luis Quintanilla
  • Linux-only support with Spectre.Console for rendering
  • Basic system information display
  • Inspiration from Nitch and Neofetch
  • Initial NuGet package release

Refactor code and add ASCII art logos (2023)

  • Refactored code for better maintainability
  • Added ASCII art logos for supported distributions
  • Improved configuration system with display modes and color options

Current Version (2026)

  • Port to Windows with WMI-based implementation
  • PNG logo support replacing ASCII art
  • GPU detection (Windows, Linux, WSL)
  • Battery information display
  • Terminal emulator detection
  • Distribution-specific RGB color schemes
  • Enhanced configuration system
  • Implemented DistroName mode with customizable colors
  • Implemented Setup.ps1 for Windows installation
  • Improved Setup.sh with dependency checking
  • Fixed case-sensitivity issues in distribution detection
  • Fixed spacing in columns

DistroName Mode - Honoring the Origin

The DistroName display mode was part of the original vision - displaying system information with the distribution name in beautiful FigletText. This mode has been enhanced with:

  • Fully configurable colors via .fitch config file
  • Distribution-specific color schemes in Logo mode
  • Respect for the minimalist, elegant approach of the original design

</details>


Features

System Information:

  • Distribution/OS name and version
  • Kernel version
  • Terminal emulator
  • Shell
  • User and hostname
  • Uptime
  • Memory usage
  • CPU model
  • GPU (optional - if detected)
  • Battery status (optional - on laptops)
  • Local IP address

Display Modes:

  • Logo Mode: Distribution PNG logos with system info
  • DistroName Mode: Distribution name in FigletText with customizable colors

Supported Platforms:

  • Linux (Debian, Ubuntu, Fedora, Arch, NixOS, Alpine, Mint)
  • Windows 10/11
  • WSL (Windows Subsystem for Linux)

Installation

Prerequisites

dotnet tool install --global fitch

<details> <summary><b>📦 Option 2: Build from Source</b></summary>

<br>

Linux
  1. Clone the repository:

    git clone https://github.com/jonas1ara/fitch.git
    cd fitch
    
  2. Run the setup script:

    chmod +x Setup.sh
    ./Setup.sh
    

    The script will:

    • Check for optional dependencies (lspci for GPU detection)
    • Build and install fitch as a global .NET tool
    • Make it available system-wide
Windows
  1. Clone the repository:

    git clone https://github.com/jonas1ara/fitch.git
    cd fitch
    
  2. Run the PowerShell setup script:

    .\Setup.ps1
    

</details>


Usage

Simply run:

fitch

Optional: Add fitch to your shell config (.bashrc, .zshrc, etc.) to display on terminal startup:

# In ~/.bashrc or ~/.zshrc
fitch

Configuration

Fitch creates a configuration file on first run with sensible defaults.

Configuration file location:

  • Linux: ~/.config/fitch/.fitch
  • Windows: %USERPROFILE%\.config\fitch\.fitch

Quick Configuration

# Display mode: "logo" or "distroname"
displaymode = "logo"

# Logo position: "left" or "right"
logoposition = "left"

# Colors for DistroName mode (only apply when displaymode = "distroname")
distronamelabelcolor = "Blue"
distronameheadercolor = "DarkBlue"

<details> <summary><b>📖 Complete Configuration Guide</b></summary>

<br>

Configuration Options

# Display mode: "logo" or "distroname"
displaymode = "logo"

# Logo position: "left" or "right"
logoposition = "left"

# ============================================
# Colors for DistroName mode (only apply when displaymode = "distroname")
# ============================================

# Color for labels (Distribution:, Kernel:, etc.) and user@hostname
distronamelabelcolor = "Blue"

# Color for the header (distro name in FigletText)
distronameheadercolor = "DarkBlue"

# Available colors: Black, Red, Green, Yellow, Blue, White, Grey,
# DarkRed, DarkGreen, DarkBlue, DarkMagenta, DarkCyan,
# HotPink, Orange, Purple, Teal, Aqua, Fuchsia, Lime, Maroon, Navy, Olive, Silver

Display Modes

Logo Mode (Default)
  • Shows distribution PNG logo
  • Uses distribution-specific color schemes (Fedora blue, Ubuntu orange, etc.)
  • Logo can be positioned left or right
DistroName Mode
  • Shows distribution name in ASCII art (FigletText)
  • Fully customizable label and header colors
  • Honors the original minimalist design philosophy
  • Perfect for terminals where PNG logos don't render well

Example Configurations

Fedora style with logo on the left:

displaymode = "logo"
logoposition = "left"

DistroName mode with custom colors:

displaymode = "distroname"
logoposition = "right"
distronamelabelcolor = "Cyan"
distronameheadercolor = "Blue"

Ubuntu orange theme:

displaymode = "distroname"
logoposition = "left"
distronamelabelcolor = "Orange"
distronameheadercolor = "DarkRed"

</details>


Optional Dependencies

<details> <summary><b>🔧 GPU Detection (Linux)</b></summary>

<br>

For GPU detection on Linux, install pciutils:

Debian/Ubuntu:

sudo apt install pciutils

Fedora/RHEL:

sudo dnf install pciutils

Arch:

sudo pacman -S pciutils

Alpine:

sudo apk add pciutils

Without pciutils, fitch will still work but won't display GPU information.

</details>


Building for Multiple Platforms

<details> <summary><b>🛠️ Build Instructions</b></summary>

<br>

Build All Platforms

Linux:

./Build.sh

Windows:

.\Build.ps1

Generates executables for:

  • Windows x64 and ARM64
  • Linux x64

Build for Specific Platform

# Linux
dotnet publish -c Release -r linux-x64

# Windows x64
dotnet publish -c Release -r win-x64

# Windows ARM64
dotnet publish -c Release -r win-arm64

</details>


Architecture

<details> <summary><b>🏗️ Technical Details</b></summary>

<br>

Fitch uses a modular architecture with platform-specific implementations:

  • SystemInfoLinux.fs - Gathers info from /proc, /etc, and lspci
  • SystemInfoWindows.fs - Uses Windows Management Instrumentation (WMI)
  • SystemInfo.fs - Runtime OS detection and routing
  • DisplayInfo.fs - Rendering with Spectre.Console
  • Colorize.fs - Distribution-specific color schemes
  • Config.fs - Configuration file parsing

This design allows:

  • Single codebase for multiple platforms
  • Easy addition of new distributions
  • Clean separation of concerns
  • Efficient runtime detection

Dependencies

</details>


Supported Distributions

<details> <summary><b>🐧 View All Supported Systems</b></summary>

<br>

Linux

  • Arch Linux (Manjaro, EndeavourOS, etc.)
  • Debian (Ubuntu, Linux Mint, Pop!_OS, etc.)
  • Fedora (RHEL, CentOS, etc.)
  • NixOS (Additional guidance)
  • Alpine Linux

Windows

  • Windows 10 and later
  • Windows 11
  • WSL (All supported Linux distributions)

</details>


License

MIT License - See LICENSE file for details.

Original work Copyright (c) 2022-2024 Luis Quintanilla, Luis Angel Mendez Gort
Modified work Copyright (c) 2026 Jonas Lara


Acknowledgements

<details> <summary><b>🙏 Credits & Inspiration</b></summary>

<br>

Original Authors:

Inspiration:

  • Nitch - Minimal system information tool
  • Neofetch - The legendary system info script
  • Fastfetch - Fast neofetch-like tool

Special Thanks:

  • F# Community for the amazing ecosystem
  • Spectre.Console team for the beautiful terminal framework
  • All contributors and users who keep this project alive

</details>


Contributing

Contributions are welcome! Feel free to:

  • Report bugs
  • Suggest features
  • Submit pull requests
  • Improve documentation

Please ensure your code follows F# conventions and includes appropriate tests.


Changelog

<details> <summary><b>📜 Version History</b></summary>

<br>

v2.0.0 (2026) - Major Update

  • Port to Windows with WMI-based implementation
  • PNG logo support replacing ASCII art
  • GPU detection (Windows, Linux, WSL)
  • Battery information display
  • Terminal emulator detection
  • Distribution-specific RGB color schemes
  • Enhanced configuration system
  • Implmemented DistroName mode with customizable colors
  • Implemented Setup.ps1 for Windows installation
  • Improved Setup.sh with dependency checking
  • Fixed case-sensitivity issues in distribution detection
  • Fixed spacing in columns

v1.2 (2023) - Refactor code and add ASCI art logos

  • Refactored code for better maintainability
  • Added ASCII art logos for supported distributions
  • Improved configuration system with display modes and color options

v1.0 (2022-2023) - Original

  • Initial Linux support
  • Linux-only support with Spectre.Console for rendering
  • Basic system information
  • Inspired by Nitch and Neofetch
  • Nuget package release

</details>


Made with ❤️ and F#

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
2.1.1 95 10/26/2026
2.1.0 93 10/26/2026
2.0.0 276 2/15/2026