1 stable release
Uses new Rust 2024
| 1.0.4 | Nov 30, 2025 |
|---|
#44 in Operating systems
3.5MB
9K
SLoC
๐ง 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
- ๐ง infors - A fast, minimal, and customizable system information tool built in Rust โ your alternative to Neofetch, for real power users.
๐ธ 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 | inforsfor 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(aliaslayout) โ 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 ofascii_distroorcustom_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.jsoncin your favorite text editor. - Read the inline comments for a full explanation of every option.
- Change values as you like, save, and re-run
inforsto 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-configignores 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,shellrenders just the listed modules;--hide gpuremoves 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
- Fork the repo
- Create your branch (
git checkout -b feature/my-feature) - Commit your changes (
git commit -m 'feat: add my feature') - Push to the branch (
git push origin feature/my-feature) - Create a Pull Request
We welcome clean PRs and documented modules! โจ
๐ License
MIT License ยฉ ArtificialXDev
๐ก Inspiration
Dependencies
~7โ12MB
~214K SLoC