A fast, cross-platform system information tool written in F#.
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)
📜 Project Evolution History
- 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
- Refactored code for better maintainability
- Added ASCII art logos for supported distributions
- Improved configuration system with display modes and color options
- 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
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
.fitchconfig file - Distribution-specific color schemes in Logo mode
- Respect for the minimalist, elegant approach of the original design
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)
dotnet tool install --global fitch📦 Option 2: Build from Source
-
Clone the repository:
git clone https://github.com/jonas1ara/fitch.git cd fitch -
Run the setup script:
chmod +x Setup.sh ./Setup.sh
The script will:
- Check for optional dependencies (
lspcifor GPU detection) - Build and install fitch as a global .NET tool
- Make it available system-wide
- Check for optional dependencies (
-
Clone the repository:
git clone https://github.com/jonas1ara/fitch.git cd fitch
-
Run the PowerShell setup script:
.\Setup.ps1
Simply run:
fitchOptional: Add fitch to your shell config (.bashrc, .zshrc, etc.) to display on terminal startup:
# In ~/.bashrc or ~/.zshrc
fitchFitch creates a configuration file on first run with sensible defaults.
Configuration file location:
- Linux:
~/.config/fitch/.fitch - Windows:
%USERPROFILE%\.config\fitch\.fitch
# 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"📖 Complete Configuration Guide
# 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- Shows distribution PNG logo
- Uses distribution-specific color schemes (Fedora blue, Ubuntu orange, etc.)
- Logo can be positioned left or right
- 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
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"🔧 GPU Detection (Linux)
For GPU detection on Linux, install pciutils:
Debian/Ubuntu:
sudo apt install pciutilsFedora/RHEL:
sudo dnf install pciutilsArch:
sudo pacman -S pciutilsAlpine:
sudo apk add pciutilsWithout pciutils, fitch will still work but won't display GPU information.
🛠️ Build Instructions
Linux:
./Build.shWindows:
.\Build.ps1Generates executables for:
- Windows x64 and ARM64
- Linux x64
# 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🏗️ Technical Details
Fitch uses a modular architecture with platform-specific implementations:
SystemInfoLinux.fs- Gathers info from/proc,/etc, andlspciSystemInfoWindows.fs- Uses Windows Management Instrumentation (WMI)SystemInfo.fs- Runtime OS detection and routingDisplayInfo.fs- Rendering with Spectre.ConsoleColorize.fs- Distribution-specific color schemesConfig.fs- Configuration file parsing
This design allows:
- Single codebase for multiple platforms
- Easy addition of new distributions
- Clean separation of concerns
- Efficient runtime detection
- Spectre.Console - Beautiful terminal UI
- Spectre.Console.ImageSharp - PNG image rendering
- ByteSize - Memory size formatting
🐧 View All Supported Systems
- Arch Linux (Manjaro, EndeavourOS, etc.)
- Debian (Ubuntu, Linux Mint, Pop!_OS, etc.)
- Fedora (RHEL, CentOS, etc.)
- NixOS (Additional guidance)
- Alpine Linux
- Windows 10 and later
- Windows 11
- WSL (All supported Linux distributions)
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
🙏 Credits & Inspiration
Original Authors:
- Luis Quintanilla (@lquintanilla)
- Luis Angel Mendez Gort (@lamg)
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
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.
📜 Version History
- 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
- Refactored code for better maintainability
- Added ASCII art logos for supported distributions
- Improved configuration system with display modes and color options
- Initial Linux support
- Linux-only support with Spectre.Console for rendering
- Basic system information
- Inspired by Nitch and Neofetch
- Nuget package release
Made with ❤️ and F#
