infors

Crates.ioinfors
lib.rsinfors
version1.0.4
created_at2025-11-30 16:41:03.647833+00
updated_at2025-11-30 16:41:03.647833+00
descriptionFast, minimal, customizable system info tool in Rust (Neofetch alternative)
homepage
repositoryhttps://github.com/artificialxdev/infors
max_upload_size
id1958450
size3,324,077
Shahzain Khan (ArtificialXDev)

documentation

README

๐Ÿง  infors

A fast, minimal, and customizable system information tool built in Rust โ€” your alternative to Neofetch, for real power users.

๐Ÿ’ฌ Feedback & Issues

Found a bug? Got a feature idea?
Head over to the issues!

๐Ÿ“š Table of Contents

๐Ÿ“ธ Screenshots

๐Ÿš€ Features

  • โšก Blazing fast startup thanks to Rust

  • ๐ŸŽจ Customizable output layout with colorized terminal output

  • ๐Ÿงฉ Modular design โ€” enable or disable components via config

  • ๐Ÿ’พ Smart defaults but easily extendable

  • ๐Ÿ“ฆ Detects installed packages, shell, GPU, DE/WM, and more

  • ๐Ÿ–ผ๏ธ Custom ASCII art support and override via config

  • ๐ŸŽจ Supports theme-based color profiles (ascii_colors=distro, etc.)

  • ๐Ÿ”Œ Single JSONC config: ~/.config/infors/config.jsonc

  • ๐Ÿงต Accepts piped ASCII input โ€” use fortune | cowsay | infors for dynamic text logos

๐Ÿ“ฆ Installation

Install on Arch Linux (via AUR)

If you're on Arch Linux or an Arch-based distribution (like Manjaro), you can install infors from the AUR using an AUR helper like yay:

yay -S infors

or

git clone https://aur.archlinux.org/infors.git
cd infors
makepkg -si

Install on Debian / Ubuntu (via .deb)

COMING SOOON

Install on Fedora / RHEL (via .rpm)

COMING SOOON

Install on Windows (via .zip)

If you're on Windows, download the latest .zip from the GitHub Releases:

Install from crates.io

Make sure you have Rust & Cargo installed:

cargo install infors

After that, just run:

infors

If you hit issues with PATH, try adding ~/.cargo/bin to your shell:

export PATH="$HOME/.cargo/bin:$PATH"

๐Ÿ› ๏ธ Manual Installation (Build from Source)

git clone https://github.com/artificialxdev/infors.git
cd infors
cargo build --release

Add to PATH:

cp target/release/infors~/.local/bin/

Then run:

infors

๐Ÿ“ฅ Using Piped Input

infors can accept piped input to use as the ASCII logo.

This allows you to create dynamic, fun logos on the fly using other command-line tools.

Examples:

echo "Rustacean" | infors
fortune | cowsay | infors

infors will detect piped input via stdin and render the ASCII art above your system information.

If no piped input is provided, it will fall back to your configured or auto-detected ASCII art.


โš™๏ธ Configuration

On first run, infors writes a single config.jsonc file to your configuration directory:

# Linux
~/.config/infors/config.jsonc

# Windows
C:\Users\<username>\AppData\Roaming\infors\config.jsonc

The file uses JSON with comments (JSONC), so you can keep inline explanations next to your settings. It combines the previous trio of files into a single document with clear sections:

  • flags โ€” Display and formatting toggles.
  • modules (alias layout) โ€” Output order, headings, and custom rows.
  • (optional) logo โ€” Override ASCII art source or padding. Omitted keys fall back to defaults.

flags section

The flags object fine-tunes how each block is rendered. Values shown below match the generated defaults; unset keys fall back to the same defaults internally.

Key Allowed values Default What it controls
ascii_distro "auto" or distro name "auto" ASCII art selection. Piped input always overrides this.
ascii_colors "distro" or comma list of color indices "distro" Palette for ASCII art and color swatches.
custom_ascii_path "" or path "" Custom ASCII art file. Leave empty for bundled art.
battery_display "off", "bar", "infobar", "barinfo" "off" Battery meter style (or disable entirely).
color_blocks string glyph "โ—" Character(s) used for the 16-color preview.
cpu_brand true / false true Prefix CPU model with the vendor name.
cpu_cores true / false true Show total core/thread counts.
cpu_frequency true / false true Include advertised CPU frequency.
cpu_speed true / false true Include current CPU speed reading.
cpu_temp "C" / "F" "C" Temperature unit. Any other value skips conversion.
cpu_show_temp true / false false Toggle CPU temperature output entirely.
de_version true / false true Append desktop-environment version.
distro_display name, name_version, name_arch, name_model, name_model_version, name_model_arch, name_model_version_arch "name" Level of OS detail shown in the distro line.
disk_display info, percentage, infobar, barinfo, bar "info" Disk usage presentation for each mount.
disk_subtitle name, dir, none, mount "dir" Label used alongside disk usage.
memory_percent true / false true Add percentage to the memory line.
memory_unit kib, mib, gib "mib" Preferred memory units.
package_managers off, on, tiny "tiny" Package counter verbosity.
refresh_rate true / false true Append monitor refresh rate where available.
shell_path true / false false Print full shell path instead of name only.
shell_version true / false true Append shell version.
uptime_shorthand full, tiny, seconds "tiny" Uptime formatting style.
os_age_shorthand full, tiny, seconds "tiny" OS install age formatting style.

โ„น๏ธ Piped input (for example fortune | cowsay | infors) replaces the ASCII logo regardless of ascii_distro or custom_ascii_path.

Here is a compact example that shortens durations and hides temperature and refresh-rate extras:

{
  "flags": {
    "uptime_shorthand": "tiny",
    "cpu_show_temp": false,
    "refresh_rate": false,
    "package_managers": "on"
  }
}

logo section (optional)

Use the logo object to point to custom ASCII art or adjust how the bundled ASCII art is padded. When type is "file" the source path behaves just like custom_ascii_path.

{
  "logo": {
    "type": "file",
    "source": "~/.config/infors/branding/about.txt",
    "padding": { "top": 2, "right": 6, "left": 0 }
  }
}

modules array

The modules array (also accepted as layout) controls rendering order. Entries can be a literal string ("break" inserts an empty spacer) or an object describing a module. Objects accept a type (collector name such as titles, distro, os_age, uptime, etc.) and optional properties like key for the label or format for custom text.

{
  "modules": [
    "break",
    { "type": "custom", "format": "== System ==" },
    { "type": "titles", "key": "User" },
    { "type": "distro", "key": "Distro" },
    { "type": "cpu", "key": "CPU" },
    { "type": "memory", "key": "Memory" },
    { "type": "colors", "key": "" }
  ]
}

Rearrange, duplicate, or remove entries to customize your output. Insert "break" wherever you want an empty spacer line.


How to Edit

  • Open config.jsonc in your favorite text editor.
  • Read the inline comments for a full explanation of every option.
  • Change values as you like, save, and re-run infors to see your changes.

For advanced details, see the comments in config.jsonc or check the wiki (if available).

CLI overrides

Need a temporary tweak for screenshots or testing? infors now mirrors most flags settings on the CLI so you can adjust the output without touching config.jsonc.

  • --config <path> loads an alternate JSONC file. --no-config ignores files altogether and runs with the built-in defaults.
  • ASCII controls: --ascii_distro <name>, --ascii_colors <list>, --custom_ascii_path <file>, and --color-blocks <glyph>.
  • Formatting knobs: --battery-display, --disk-display, --disk-subtitle, --memory-unit, --packages, --uptime, --os-age, --distro-display, --cpu-temp-unit.
  • Layout helpers: --only cpu,memory,shell renders just the listed modules; --hide gpu removes modules from the current layout.
  • Boolean toggles come in pairsโ€”use --cpu-speed / --no-cpu-speed, --shell-path / --no-shell-path, --memory-percent / --no-memory-percent, etc., for quick on/off control of individual fields.

Run infors --help to see the complete list of overrides.

๐ŸŽฏ Roadmap

Feature Status
Base module system โœ… Done
Config file loader โœ… Done
Custom layout tags โœ… Done
GPU/CPU/Mem/DE/WM detection โœ… Done
Linux support โœ… Done
Windows support โœ… Done
Multi-Threading โœ… Done
CLI override options ๐Ÿ” Basic
ASCII art & theming ๐Ÿ” Basic
Plugin/module system โ“ Maybe
Fetch info over SSH โ“ Maybe

๐Ÿค Contributing

  1. Fork the repo
  2. Create your branch (git checkout -b feature/my-feature)
  3. Commit your changes (git commit -m 'feat: add my feature')
  4. Push to the branch (git push origin feature/my-feature)
  5. Create a Pull Request

We welcome clean PRs and documented modules! โœจ


๐Ÿ“„ License

MIT License ยฉ ArtificialXDev


๐Ÿ’ก Inspiration

Commit count: 0

cargo fmt