MetaFetch
A beautiful, fast, and comprehensive system information tool inspired by neofetch, written in Python with enhanced cross-platform support and advanced system monitoring capabilities.
-` john@desktop
.o+` -------------
`ooo/ OS: Ubuntu 22.04.3 LTS
`+oooo: Kernel: 5.15.0-84-generic
`+oooooo: Architecture: x86_64
-+oooooo+: Uptime: 2d 14h 32m
`/:-:++oooo+: Packages: 2847 (apt), 23 (pip), 45 (npm)
`/++++/+++++++: Shell: bash 5.1.16
`/++++++++++++++: Desktop: GNOME
`/+++ooooooooo+/` Window Manager: Mutter
./ooosssso++osssssso+` Terminal: gnome-terminal
.oossssso-````/ossssss+` CPU: Intel i7-9700K (8C/16T)
-osssssso. :ssssssso. GPU: NVIDIA GeForce RTX 3070
:osssssss/ osssso+++. Memory: 8.2GB / 32.0GB (26%)
/ossssssss/ +ssssooo/- Swap: 2.1GB / 8.0GB (26%)
`/ossssso+/:- -:/+osssso+- Disk: 245.8GB / 931.5GB (26%)
`+sso+:-` `.-/+oso: Network: eth0 (192.168.1.100)
`++:. `-/+/ Resolution: 2560x1440
.` `/ Battery: 85% (Charging)
Temperature: 45.2°C
Load Avg: 0.85, 1.23, 1.45
Processes: 342
Users: john (tty1), admin (pts/0)
Public IP: 203.0.113.45
Timezone: America/New_York
Python: Python 3.10.12
Session: X11 | Wayland
🌟 Features
Core Functionality
- 🌍 Cross-Platform Support: Works seamlessly on Linux, macOS, and Windows
- 📊 Comprehensive System Info: 25+ system metrics including hardware, software, and network information
- 🎨 Beautiful ASCII Art: Platform-specific ASCII logos with colorful ANSI output
- ⚡ Fast Performance: Optimized information gathering with timeout protection
- 🔧 Multiple Display Modes: Full display with ASCII art or compact categorized view
Advanced System Detection
- 📦 Package Manager Detection: Supports 12+ package managers:
- System:
apt,dnf/yum,pacman,portage,xbps,apk - Cross-platform:
brew,pip,conda,npm,gem,cargo
- System:
- 🖥️ Desktop Environment Detection: Auto-detects DE (GNOME, KDE, XFCE, MATE, etc.) and standalone WMs
- 🌐 Network Information: Active interfaces, local IPs, and public IP detection
- 🔋 Hardware Monitoring: Real-time battery, temperature, memory, disk, and swap usage
- 👥 Multi-user Support: Shows all logged-in users and their terminals
- 📺 Display Information: Screen resolution and session type detection
Technical Features
- 🛡️ Robust Error Handling: Graceful degradation when information isn't available
- ⏱️ Timeout Protection: Prevents hanging on slow system commands
- 🔄 Fallback Methods: Multiple detection methods for maximum compatibility
- 📱 Responsive Design: Adapts output formatting based on available information
🚀 Installation
Prerequisites
Ensure you have Python 3.6 or higher installed:
python --version
# or
python3 --version
Install from PyPI (Recommended)
The easiest way to install MetaFetch is through PyPI:
# Install globally
pip install metafetch
# Or for user installation
pip install --user metafetch
# For Python 3 specifically
pip3 install metafetch
Install from Source
- Clone the repository:
git clone https://github.com/volksgeistt/metafetch.git
cd metafetch
- Install dependencies:
pip install -r requirements.txt
# or for system-wide installation
pip3 install -r requirements.txt
- Make it executable (Linux/macOS):
chmod +x metafetch.py
System-wide Installation (Optional)
Linux/macOS:
# Method 1: Create symbolic link
sudo ln -s $(pwd)/metafetch.py /usr/local/bin/metafetch
# Method 2: Add to PATH
echo 'export PATH="$PATH:'$(pwd)'"' >> ~/.bashrc
source ~/.bashrc
Windows:
# Add the directory to your PATH environment variable
# or create a batch file in a directory that's already in PATH
📖 Usage
Basic Usage
# Run with Python
python metafetch.py
python3 metafetch.py
# If installed globally
metafetch
Command Line Options
metafetch [OPTIONS]
Options:
-c, --compact Display compact categorized output without ASCII art
-h, --help Show help message and usage information
--version Show version information
Usage Examples
Full system information with ASCII art (default):
metafetch
Compact categorized display:
metafetch -c
john@desktop
============
System:
OS: Ubuntu 22.04.3 LTS
Kernel: 5.15.0-84-generic
Architecture: x86_64
Uptime: 2d 14h 32m
Software:
Packages: 2847 (apt), 23 (pip), 45 (npm)
Shell: bash 5.1.16
Desktop: GNOME
Terminal: gnome-terminal
Hardware:
CPU: Intel i7-9700K (8C/16T)
GPU: NVIDIA GeForce RTX 3070
Memory: 8.2GB / 32.0GB (26%)
Disk: 245.8GB / 931.5GB (26%)
Network:
Local IP: eth0 (192.168.1.100)
Public IP: 203.0.113.45
Resolution: 2560x1440
Status:
Battery: 85% (Charging)
Temperature: 45.2°C
Load Avg: 0.85, 1.23, 1.45
Processes: 342
🎨 Customization
MetaFetch is highly customizable and extensible:
Color Customization
Modify the colors dictionary in the metafetch class:
self.colors = {
'red': '\033[91m',
'green': '\033[92m',
# Add your custom colors
}
ASCII Art Customization
Edit the get_ascii_art() method to add custom ASCII art or modify existing ones.
Information Fields
- Add new fields: Create new
get_*()methods and add them togather_info() - Remove fields: Comment out unwanted information in the display methods
- Modify display: Customize the
display()ordisplay_compact()methods
Example Customization
# Add custom information
def get_favorite_editor(self):
return os.environ.get('EDITOR', 'Unknown')
# Add to info_functions in gather_info()
'editor': self.get_favorite_editor,
🔧 Compatibility
Operating Systems
| OS | Support | Versions | Features |
|---|---|---|---|
| Linux | ✅ Full | All major distributions | Complete feature set |
| macOS | ✅ Full | macOS 10.12+ (Sierra and later) | Complete feature set |
| Windows | ✅ Full | Windows 10/11 | Complete feature set |
Package Managers
System Package Managers
- Linux:
apt(Debian/Ubuntu),dnf/yum(RHEL/Fedora),pacman(Arch),portage(Gentoo),xbps(Void),apk(Alpine) - macOS:
brew(Homebrew)
Language Package Managers
- Python:
pip,conda - JavaScript:
npm - Ruby:
gem - Rust:
cargo
Desktop Environments & Window Managers
Desktop Environments
- GNOME, KDE Plasma, XFCE, MATE, Cinnamon, LXQt, LXDE, Budgie, Pantheon
Window Managers
- Tiling: i3, bspwm, awesome, dwm, sway, Hyprland
- Stacking: openbox, fluxbox, JWM, IceWM
🛠️ Technical Details
Dependencies
- psutil: System and process utilities
- Built-in modules: os, platform, subprocess, socket, getpass, time, sys, datetime, re, urllib
Performance
- Startup time: < 1 second on modern systems
- Memory usage: ~10-20MB during execution
- CPU usage: Minimal, with 3-second timeout protection
Security Considerations
- Commands executed with timeout protection
- No user input processing (command injection safe)
- External network requests limited to IP detection services
- File system access uses proper exception handling
🤝 Contributing
We welcome contributions! Here are some ways you can help:
- Report bugs by opening an issue
- Suggest features or improvements
- Submit pull requests with bug fixes or new features
- Improve documentation or add examples
- Test on different platforms and report compatibility issues
Development Setup
git clone https://github.com/volksgeistt/metafetch.git
cd metafetch
pip install -r requirements.txt
python metafetch.py # Test your changes
📝 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- Inspired by neofetch and screenfetch
- Thanks to all contributors who help improve MetaFetch
- Special thanks to the Python community for excellent libraries like
psutil
📊 Comparison with Similar Tools
| Feature | MetaFetch | neofetch | screenfetch | fastfetch |
|---|---|---|---|---|
| Language | Python | Bash | Bash | C |
| Cross-platform | ✅ | ✅ | ❌ | ✅ |
| Package Detection | 12+ managers | 50+ managers | Limited | Many |
| Performance | Fast | Medium | Slow | Very Fast |
| Customization | High | Very High | Medium | Medium |
| Dependencies | psutil only | Many | Many | Minimal |
| Compact Mode | ✅ | ❌ | ❌ | ✅ |
If you find MetaFetch useful, please consider giving it a ⭐!
Metadata
Release files for metafetch 1.0.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| metafetch-1.0.5.tar.gz | 15.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| metafetch-1.0.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 29.9 kB
Release files / metafetch-1.0.5.tar.gz
| Download URL | metafetch-1.0.5.tar.gz |
|---|---|
| Size | 15.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
11baeb5fe4d9fb9c8d236fbdb0f63ebb9cd95b0527f2d3d53ad3806e1b6354e9
|
|
BLAKE2b-256 checksum How to use checksums |
d7aaf63ece558fd47a10f0bf6a4b1b491e6676c37e28b368ffe5af3c98bf8cb1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.6
|
Release files / metafetch-1.0.5-py3-none-any.whl
| Download URL | metafetch-1.0.5-py3-none-any.whl |
|---|---|
| Size | 14.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8f5ba4a7086f7007e1893e47be9c821c6a5a1b3a1ac925e60ba832ca42d20400
|
|
BLAKE2b-256 checksum How to use checksums |
c0522ad3d74143c77aa5826913160e9fd5b71eb812e8446361efea515561b8e2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.6
|