A fast, cross-platform system information tool written in Rust. This is a modern reimplementation of the classic neofetch tool with improved performance, comprehensive error handling, and support for multiple platforms.
- 🚀 Blazing Fast - Written in Rust for maximum performance
- 🌍 Cross-Platform - Supports Windows, Linux, macOS, Android, and OpenWrt
- 🎨 Beautiful Output - Colorful ASCII art with system information
- 🔧 Comprehensive - Displays CPU, memory, disk, GPU, network, and more
- ⚡ Async - Parallel information gathering for speed
- 🛡️ Robust - Proper error handling with detailed error messages
- 📦 Zero Config - Works out of the box, no configuration needed
cargo install neofetchgit clone https://github.com/ahaoboy/neofetch
cd neofetch
cargo build --releaseThe binary will be available at target/release/neofetch
Simply run:
neofetch- Operating System - Name, version, and architecture
- Host - Device manufacturer and model
- Kernel - Kernel version
- Uptime - System uptime
- Packages - Installed packages (dpkg, pacman, snap, scoop, opkg)
- Shell - Current shell and version
- Display - Resolution and refresh rate
- Desktop Environment - DE name
- Window Manager - WM name and theme
- Terminal - Terminal emulator
- CPU - Model, cores, and frequency
- GPU - Graphics card information
- Memory - RAM usage
- Disk - Disk usage for mounted filesystems
- Battery - Battery percentage (if available)
- Network - Network interfaces and IP addresses
- Temperature - System temperature sensors (if available)
- Locale - System locale
| Platform | Status | Notes |
|---|---|---|
| Windows 10/11 | ✅ Full Support | x86, x86_64, ARM64 |
| Linux | ✅ Full Support | Ubuntu, Debian, Arch, Fedora, etc. |
| macOS | ✅ Full Support | Intel and Apple Silicon |
| Android | ✅ Full Support | ARM and ARM64 |
| OpenWrt | ✅ Full Support | Embedded routers |
| FreeBSD | Basic support |
This Rust implementation is significantly faster than the original shell-based neofetch:
hyperfine --style=full --shell=fish 'neofetch' 'fastfetch' 'neofetch-rust'- Rust 1.70 or later
- Cargo (comes with Rust)
- Visual Studio Build Tools or MinGW-w64
- No additional dependencies required
- GCC or Clang
- Standard development tools (
build-essentialon Debian/Ubuntu)
- Xcode Command Line Tools:
xcode-select --install
- Android NDK
- Cargo NDK:
cargo install cargo-ndk
# Clone the repository
git clone https://github.com/ahaoboy/neofetch
cd neofetch
# Build in release mode
cargo build --release
# Run
./target/release/neofetch# Add Android targets
rustup target add aarch64-linux-android armv7-linux-androideabi
# Build for ARM64
cargo ndk -t arm64-v8a build --release# Add target
rustup target add mips-unknown-linux-musl
# Build
cargo build --release --target mips-unknown-linux-muslThe project is organized into several modules:
- error - Centralized error handling using thiserror
- utils - Reusable utilities for file I/O, process execution, and platform detection
- platform - Platform-specific implementations (Windows WMI, Linux /proc, macOS sysctl, Android properties)
- collectors - Individual system information collectors (CPU, memory, disk, etc.)
- display - Output formatting and ASCII art
This implementation uses comprehensive error handling with the thiserror crate. All operations return Result types with detailed error messages, making debugging easier and preventing panics.
use neofetch::{cpu::get_cpu, Result};
#[tokio::main]
async fn main() -> Result<()> {
let cpu = get_cpu().await?;
println!("CPU: {}", cpu);
Ok(())
}Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository
- Create your feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Run tests:
cargo test - Run clippy:
cargo clippy - Format code:
cargo fmt - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow Rust naming conventions
- Use English for all code, comments, and documentation
- Add rustdoc comments for public APIs
- Write tests for new functionality
- Ensure code passes
cargo clippywithout warnings
Issue: WMI queries fail
- Solution: Run as Administrator or check Windows Management Instrumentation service is running
Issue: Display information not available
- Solution: This is expected on Windows Server Core or systems without display drivers
Issue: Permission denied reading /proc or /sys files
- Solution: Some files require root access. Run with
sudoif needed
Issue: Temperature sensors not found
- Solution: Install
lm-sensorspackage and runsensors-detect
Issue: Temperature information not available
- Solution: Install
osx-cpu-tempvia Homebrew:brew install osx-cpu-temp
Issue: Some system information requires elevated privileges
- Solution: Run with
sudofor complete information
Issue: Some properties not accessible
- Solution: Root access may be required for certain system properties
| Feature | neofetch (Rust) | neofetch (Shell) | fastfetch |
|---|---|---|---|
| Speed | ⚡⚡⚡ | ⚡ | ⚡⚡⚡ |
| Cross-platform | ✅ | ✅ | ✅ |
| Error Handling | ✅ | ❌ | |
| Async | ✅ | ❌ | ✅ |
| Memory Usage | Low | Medium | Low |
| Dependencies | Minimal | Many | Minimal |
This project is licensed under the MIT License - see the LICENSE file for details.