lynxfetch 1.0.8

Super fast, versatile, and customizable command-line fetcher.
# 🦊 LynxFetch - A Minimal & Aesthetic System Fetch Tool

[![GitLab CI](https://gitlab.com/lynxfetch/lynxfetch/badges/main/pipeline.svg?style=for-the-badge)](https://gitlab.com/lynxfetch/lynxfetch/-/pipelines)
[![Coverage](https://gitlab.com/lynxfetch/lynxfetch/badges/main/coverage.svg?style=for-the-badge)](https://gitlab.com/lynxfetch/lynxfetch/-/commits/main)
[![License: GPL-3.0-or-later](https://img.shields.io/badge/License-GPL3-green.svg?style=for-the-badge)](LICENSE)
[![Stars](https://img.shields.io/gitlab/stars/lynxfetch/lynxfetch?style=for-the-badge)](https://gitlab.com/lynxfetch/lynxfetch)
[![Forks](https://img.shields.io/gitlab/forks/lynxfetch/lynxfetch?style=for-the-badge)](https://gitlab.com/lynxfetch/lynxfetch/-/forks)

LynxFetch is a **lightweight**, **aesthetic**, and **fast** system information fetch tool developed in **Rust** for Linux. It displays essential system details in a minimalistic, clean format, making it a perfect alternative to more resource-heavy fetch tools like **Neofetch**. Designed with performance in mind, LynxFetch prioritizes **speed**, **efficiency**, and a **beautiful output**, providing a seamless experience while using minimal system resources. πŸš€

## 🎯 Purpose

LynxFetch was developed to give users a **fast, lightweight, and visually pleasing** way to display system information. Unlike bloated alternatives, LynxFetch focuses on **simplicity, performance**, and **aesthetic appeal**, making it a perfect tool for minimalists, developers, and enthusiasts who want a beautiful, easy-to-read terminal output. Whether you're showcasing your system specs or just keeping an eye on your machine's resources, LynxFetch is the ultimate companion for your terminal.

## ✨ Features

- βœ… **Ultra-Lightweight & Blazing Fast**: Consumes minimal system resources and displays information instantly.
- βœ… **Essential System Information**: Showcases CPU, GPU, Memory, Kernel, OS, Uptime, and more.
- βœ… **Minimalistic & Aesthetic**: No clutterβ€”just clean, readable system stats.
- βœ… **Cross-Platform Compatibility**: Fully supports Linux.
- βœ… **Highly Customizable**: Tailor themes, colors, and output styles to fit your preferences.
- βœ… **No Bloat & Dependencies**: Pure simplicityβ€”no unnecessary software overhead.
- βœ… **Fast & Efficient**: Optimized for speed with near-instant execution times.
- βœ… **ASCII Art Support**: Displays distribution logos in ASCII format for added flair.
- βœ… **Built with Rust**: LynxFetch is developed in Rust, ensuring excellent performance and reliability.

## πŸ“Έ Preview

![Preview](/assets/preview.png)

## πŸ”§ Installation

### πŸ“¦ <a href="https://codeberg.org/venomlinux/community/src/branch/main/lynxfetch">Venom Linux</a> (Community Repository)
```bash
scratch install lynxfetch
```

### πŸ“¦ <a href="https://pacstall.dev/packages/lynxfetch">Ubuntu/Rhino Linux</a> (Pacstall)
```bash
pacstall -I lynxfetch
```

<!--
### πŸ“¦ ArchLinux (AUR)
```bash
paru -S lynxfetch # or yay
```
-->

### πŸ¦€ Installation via <a href="https://crates.io/crates/lynxfetch">Cargo</a>
```bash
cargo install lynxfetch
```

### 🐧 Manual Installation

```bash
git clone https://gitlab.com/lynxfetch/lynxfetch.git
cd lynxfetch
cargo build --release
cp target/release/lynxfetch /usr/local/bin/
```

## πŸš€ Usage

To run LynxFetch and display system information with a minimalistic interface, simply execute:

```bash
lynxfetch
```

## πŸ‘₯ Development & Contributing

### πŸ› οΈ Development Setup

1. **Prerequisites**:
   - Rust 1.70+ (install via [rustup]https://rustup.rs/)
   - Basic Linux system libraries

2. **Building & Running**:
```bash
cargo build
cargo run
```

3. **Testing**:
```bash
cargo test
```

4. **Debugging**:
```bash
RUST_LOG=debug cargo run
```

### πŸ“ Module Development Guide

To add a new system information module:

1. Create a new file in `src/modules/` with your module category
2. Implement the `Module` trait:
```rust
impl Module for YourModule {
    fn new() -> Self { ... }
    fn style(&self, config: &Configuration) -> (String, String) { ... }
    // Other required methods
}
```

3. Register your module in `src/modules/mod.rs`

4. Add configuration options if needed in `src/config_manager.rs`

### πŸ‘₯ Contributing

We welcome contributions to LynxFetch! πŸŽ‰ Whether you're fixing bugs, adding new features, or improving documentation, your help is greatly appreciated. Here's how you can get started:

1. **Clone the Repository**: Start by cloning the LynxFetch repository to your local machine:
   ```bash
   git clone https://gitlab.com/lynxfetch/lynxfetch.git
   cd lynxfetch
   ```

2. **Create a New Branch**: Always create a new branch for your changes to keep your work organized and separate from the main branch:
   ```bash
   git checkout -b feature-branch
   ```
   Replace `feature-branch` with a descriptive name for your branch, such as `fix-bug-123` or `add-new-feature`.

3. **Make Your Changes**: Implement your changes in the codebase. Be sure to follow the project's coding standards and guidelines.

4. **Test Your Changes**: Before committing, test your changes thoroughly to ensure they work as expected and do not introduce new issues.

5. **Commit Your Changes**: Write a clear and concise commit message that describes your changes:
   ```bash
   git commit -m "Add: Implemented new feature for XYZ"
   ```

6. **Push Your Changes**: Push your branch to the remote repository on GitLab:
   ```bash
   git push origin feature-branch
   ```

7. **Create a Merge Request**: Go to the [LynxFetch GitLab repository]https://gitlab.com/lynxfetch/lynxfetch and create a merge request (MR). Provide a detailed description of your changes, including the problem it solves or the feature it adds.

### πŸ›  Contribution Guidelines

- **Code Style**: Ensure your code adheres to the Rust community's best practices and the project's style guide.
- **Documentation**: Update or add documentation for any new features or changes.
- **Commit Messages**: Use clear and descriptive commit messages. Follow the format: `Type: Short description (e.g., Add: Implemented XYZ feature)`.
- **Testing**: Include tests for any new functionality or bug fixes.

### 🀝 Need Help?

If you have any questions or need assistance, feel free to open an [Issue](https://gitlab.com/lynxfetch/lynxfetch/-/issues) or join the discussion in the community.

---

## πŸ“ License

LynxFetch is licensed under the **GPL-3.0-or-later License**. This means you are free to use, modify, and distribute the software under the terms of the license. See the [LICENSE](LICENSE) file for full details.

---

## πŸ’¬ Community & Support

We value your feedback and contributions! Here’s how you can get involved:

- πŸ’‘ **Feature Requests**: Have an idea for a new feature? Open an [Issue]https://gitlab.com/lynxfetch/lynxfetch/-/issues to share your suggestion.
- 🐞 **Bug Reports**: Found a bug? Submit a detailed [Bug Report]https://gitlab.com/lynxfetch/lynxfetch/-/issues so we can fix it.
- ❀️ **Support the Project**: If you enjoy using LynxFetch, consider giving it a ⭐ on GitLab to show your support!

Join us in making LynxFetch even better! πŸš€