#fetch #neofetch #arch-linux #file-info #rust

app rsftch

Aesthetically pleasing and lightning fast hardware fetch tool written in rust with configuration

51 releases (5 breaking)

0.6.6 Jun 19, 2024
0.6.3 May 26, 2024
0.3.4 Mar 31, 2024

#29 in Command line utilities

Download history 584/week @ 2024-03-19 1165/week @ 2024-03-26 367/week @ 2024-04-02 708/week @ 2024-04-09 18/week @ 2024-04-16 9/week @ 2024-04-23 142/week @ 2024-04-30 749/week @ 2024-05-07 609/week @ 2024-05-14 444/week @ 2024-05-21 268/week @ 2024-05-28 42/week @ 2024-06-04 168/week @ 2024-06-11 216/week @ 2024-06-18 8/week @ 2024-06-25

450 downloads per month

MIT license

56KB
1.5K SLoC

Rsftch

Screenshots

image image

Ascii supported distros

  • Arch Linux
  • Debian
  • Fedora
  • Endeavour OS
  • Void Linux
  • Ubuntu
  • *Suse
  • Raspbian
  • Linux Mint
  • MX Linux
  • Gentoo
  • Funtoo
  • Slackware
  • NixOS
  • Kali Linux
  • CachyOS
  • FreeBSD
  • NetBSD
Others won't have a custom title, only "Rsftch"

Supported package managers

  • xbps
  • dnf
  • rpm
  • apt
  • pacman
  • emerge
  • yum
  • zypper
  • apk
  • pkg

* Some might not work, and if they don't, please file an issue.

Dependencies

  • pciutils
  • libxrandr
  • glibc
  • Any nerdfont

For NVIDIA cards:

  • nvidia-smi (sometimes packaged with nvidia-utils)

Installation

cargo install rsftch

Source

git clone https://github.com/charklie/rsftch.git
cd rsftch
cargo install --path .

NetBSD

If you're on NetBSD or, any supported pkgsrc platform, a pre-compiled binary is available from the official repositories. To install it, simply run: pkgin install rsftch

Or, if you prefer to build it from source:

cd /usr/pkgsrc/sysutils/rsftch
make install

DEB file

There is an .deb file availible in the releases section, for Arch and Debian / Ubuntu users.

Binary

If you don't have cargo installed you can download the binary and move it directly to your /usr/bin, although this is very unsafe and should be rarely ever done.

Configuration

Info:

The info configuration should be located at ~/.config/rsftch/info.json, and it could look something like this;

{
    "info1": [ "os", "kernel", "packs" ],
    "info2": [ "user", "host", "de" ],
    "info3": [ "cpu", "gpu", "mem" ]
}

Each info(number) is the section. This is a very simple example but all the options are as follows:

  • os / distro
  • host / hostname
  • shell
  • kernel
  • packs / packages
  • user / username
  • term / terminal
  • de / dewm / wm
  • cpu / processor
  • gpu / graphics
  • mem / memory
  • uptime
  • res / display / resolution
  • time / timezone
  • disk / diskusage

Colors

The color configuration should be located at ~/.config/rsftch/colors.json, and it could look something like this:

{
  "colors": {
    "color0": "blue",
    "color1": "red",
    "color2": "green",
    "color3": "yellow"
  }
}

Other available colors are as follows:

  • green
  • red
  • purple / magenta
  • yellow
  • blue
  • black
  • white

The number followed by "color" means:

  • color0: Ascii text on top
  • color1: First info section
  • color2: Second info section
  • color3: Last info section

Common issues

Running rsftch in terminal doesn't work (command not found)

Solution: (If you installed with cargo) Add ~/.cargo/bin/ to PATH, how varies from shell to shell, here are some popular ones:

Bash / Zsh: echo "PATH=\$PATH:~/.cargo/bin/" >> (.bashrc / .zshrc path)

Fish: set -U fish_user_paths ~/.cargo/bin/ $fish_user_paths

Nushell: let-env PATH = ($env.PATH | prepend $"($env.HOME)/.cargo/bin")

Elvish: set paths = [~/.cargo/bin/ $@paths]

If none of these work, or you are unsure how to do this in your shell, consider moving the binary to /usr/bin, example command: sudo mv ~/.cargo/bin/rsftch /usr/bin

Other issues

File an issue.

Usage

Usage: rsftch [OPTION...] [OVERRIDE] [MARGIN] [CONFIG FILE(s)] [INFO]

      -h, --help, --usage         Bring up this menu.
      -v, --version               Print version number.
      -o, --override              Overrides distribution, affects ASCII and "distro" info. Running without
                                  an argument prints all possible options.
      -m, --margin                Add margin to the info sections, default 1.
      -c, --color-config          Specify another color config file, to be used instead of the default one.
      -i, --info-config           Specify another info config file, to be used instead of the default one.
          --ignore-color-config   Ignores the custom color config and uses the default one.
          --ignore-info-config    Ignores the custom info config and uses the default one.
          --ignore-config         Ignores both configs and uses the default ones.
          --info                  Only prints the value of the following arguments info, for example
                                  `rsftch --info distro` would output: "EndeavourOS".

Info config is located at:  ~/.config/rsftch/info.json
Color config is located at: ~/.config/rsftch/colors.json

Time comparison

  • Rsftch: 33.26 milliseconds
  • Neofetch: 284.03 milliseconds
  • Screenfetch: 832.59 milliseconds
NOTE: Timing varies heavily depending on e.g. what package manager your distro uses, these times are from my system. (arch + pacman)

Compatability

Currently Rsftch only works on GNU/Linux, (most) BSD distributions and (probably) Mac OS.

Contribrutions

All PRs are always welcome, just remember to make sure it works on both NetBSD and Linux.

Thanks

Thank you to:

Todo

  • Configuration via JSON
  • Version command
  • Rewrite memory function
  • Optimizations (?)
  • Automatic ASCII generation
  • Add TOML / JSONC support
  • Add support for more info sections (?)

Dependencies

~2–13MB
~112K SLoC