ratfetch

August 31, 2026 · View on GitHub

ci

A system fetch that does not stop at one frame.

fastfetch prints your machine once and exits. ratfetch keeps the logo and the info table, then puts them at the top of a live TUI: meters, graphs, a process table, filesystems and interfaces, all refreshing while you watch.

ratfetch-demo

What it does

  • Live, not a snapshot. Everything re-reads on a configurable interval.
  • 526 logos, the full set vendored from fastfetch, with their original colour palettes. Auto-detected from /etc/os-release, or pick your own.
  • Four tabs — overview, processes, filesystems, interfaces.
  • 13 built-in themes, plus per-role colour overrides. The default is mono, so the interface borrows your terminal's colours and the logo is the only thing on screen with a palette of its own.
  • A config system that tells you when you get it wrong, with the file, the line, and a "did you mean" for every closed vocabulary in the schema.
  • No sysinfo crate. /proc and /sys are read directly, so the numbers come from where the kernel actually puts them.

Linux only — the collectors are built on /proc and /sys.

Install

curl -fsSL https://tuna4ll.github.io/ratfetch/install.sh | sh

That picks the right prebuilt binary for your architecture and libc, verifies its checksum against the release's SHA256SUMS, and installs it to ~/.local/bin (or /usr/local/bin when run as root). RATFETCH_VERSION, RATFETCH_INSTALL_DIR and RATFETCH_NO_MODIFY_PATH override the defaults. The script is install.sh in this repo — read it before piping it to a shell, as you should with any installer.

Prebuilt for x86_64 and aarch64, gnu and musl.

Manual setup

Any other architecture, or if you would rather build it yourself. Needs Rust 1.88 or newer.

cargo install --git https://github.com/tuna4ll/ratfetch

From a checkout, which is also how you build it to hack on:

git clone https://github.com/tuna4ll/ratfetch
cd ratfetch
cargo install --path .

Both put the binary in ~/.cargo/bin. To keep it out of the cargo tree entirely, build and place it yourself:

cargo build --release
install -m 755 target/release/ratfetch ~/.local/bin/

Use

ratfetch                      # the live TUI
ratfetch --once               # one frame, like a classic fetch tool
                              # (graphs are dropped: one sample is not a series)
ratfetch --logo nixos         # override the detected logo
ratfetch --theme gruvbox-dark
ratfetch --interval 250       # four samples a second
ratfetch --list-logos | fzf   # browse what is bundled

Keys

keyaction
q esc ctrl+cquit
? f1help
tab shift+tabchange tab
j k / arrowsscroll
scycle the process sort column
cper-core CPU meters
spacefreeze / resume
rreload the config

All of them are rebindable.

Configuration

ratfetch --generate-config     # writes a fully commented ~/.config/ratfetch/config.toml
ratfetch --check-config        # validates without starting the UI
ratfetch --print-config        # the effective config, after merging

Files are merged in order, and each one may be partial:

/etc/ratfetch/config.toml  →  ~/.config/ratfetch/config.toml  →  --set key=value

--config PATH replaces the first two. --no-config skips them all.

The config is watched while running, so saving the file re-applies it. If the new version does not parse, ratfetch says so in the footer and keeps running on the old one.

A taste of it

[general]
interval_ms = 500

[logo]
source = "arch"
color_mode = "rainbow"

[theme]
name = "tokyonight"

[theme.colors]
accent = "#7aa2f7"

[layout]
panels = ["meters", "graphs", "processes"]

[info]
items = ["title", "separator", "os", "kernel", "uptime", "cpu", "memory", "colors"]

[meters]
style = "blocks"
per_core = true

[keys]
quit = ["q"]
freeze = ["p"]

Anything you leave out keeps its default. Anything you misspell is an error with a location:

$ ratfetch --check-config
ratfetch: in /home/tuna4l/.config/ratfetch/config.toml:
TOML parse error at line 12, column 1
   |
12 | inteval_ms = 500
   | ^^^^^^^^^^
unknown field `inteval_ms`, expected one of `interval_ms`, `history`, ...
$ ratfetch --set info.items='["kernal"]' --check-config
ratfetch: config is not valid: unknown InfoItem `kernal` (did you mean `kernel`?)

Every option is documented inline in the generated config; that file is the reference.

Layout

The overview is a header plus a stack of panels:

  • layout.panelsmeters, graphs, processes, disks, network, colors
  • layout.panel_heights — a fixed height each, or 0 to share what is left (meters sizes itself to its bars)
  • logo.positionleft, right, top, none

Below layout.narrow_width columns the logo moves above the info table on its own, so ratfetch stays readable in a split pane.

Credits

The ASCII art is vendored from fastfetch under the MIT License — see assets/ascii/LICENSE. The TUI is built with ratatui, which the name is a nod to.

License

MIT © Tuna Kılıç