A microscopic fetch script in Rust, for NixOS systems.
Find a file
NotAShelf 2ecf9303fa
Some checks are pending
Rust / build (push) Waiting to run
update Cargo.lock
How the hell did I miss this?
2024-08-05 01:04:38 +03:00
.github add demo to README 2024-08-04 16:35:16 +03:00
nix nix package 2024-08-04 01:14:17 +03:00
src clean up get_desktop_info; increment minor version 2024-08-04 22:04:23 +03:00
.gitignore nix package 2024-08-04 01:14:17 +03:00
Cargo.lock update Cargo.lock 2024-08-05 01:04:38 +03:00
Cargo.toml clean up get_desktop_info; increment minor version 2024-08-04 22:04:23 +03:00
flake.lock nix package 2024-08-04 01:14:17 +03:00
flake.nix nix package 2024-08-04 01:14:17 +03:00
LICENSE initial commit 2024-08-03 19:06:29 +03:00
README.md include benchmarks, add contributing section 2024-08-05 00:57:07 +03:00

Microfetch

A stupidly simple fetch tool, written in Rust. Runs in a fraction of a second, displays most nonsense people on r/unixporn care about. Aims to replace fastfetch on my system, but probably not on yours. Though you are more than welcome to use it on your system: it's fast.

Demo

Features

  • Fast
  • Really fast
  • Minimal dependencies
  • Actually really fast
  • Cool NixOS logo (other, inferior, distros are not supported)
  • Reliable detection of following info:
    • Hostname/Username
    • Kernel
      • Name
      • Version
      • Architecture
    • Current shell (from $SHELL)
    • WM/Compositor and display backend
    • Memory Usage/Total Memory
    • Storage Usage/Total Storage (for / only)
    • Shell Colors
  • Did I mention fast?

Benchmarks

Microfetch's performance is mostly hardware-dependant, however, the overall trend seems to be < 2ms on any modern (2015 and after) CPU. Below are the benchmarks with Hyperfine on my desktop system.

Command Mean [ms] Min [ms] Max [ms] Relative
target/release/microfetch 1.3 ± 0.1 1.2 3.7 1.00

On an average configuration, this is roughly 25 times faster than fastfetch and around 80 times faster than neofetch. Results, as stated above, may vary.

Customizing

You can't.

Why?

Customization, of any kind, is expensive: I could try reading environment variables, parse command-line arguments or read a configuration file but all of those increment execution time and resource consumption by a lot.

Really?

To be fair, you can customize Microfetch by... Well, patching it. It's not the best way per se, but it will be the only way that does not compromise on speed.

Contributing

I will, mostly, reject feature additions. This is not to say you should avoid them altogether, as you might have a really good idea worth discussing but as a general rule of thumb consider talking to me before creating a feature PR.

Contributions that help improve performance in specific areas of Microfetch are welcome. Though, prepare to be bombarded with questions.

License

Microfetch is licensed under GPL3. See the license file for details.