{"id":13672593,"url":"https://github.com/rsfetch/rsfetch","last_synced_at":"2025-04-27T22:32:26.955Z","repository":{"id":57663605,"uuid":"183382876","full_name":"rsfetch/rsfetch","owner":"rsfetch","description":"Fast (~1ms execution time) and somewhat(?) minimal fetch program written in Rust.","archived":true,"fork":false,"pushed_at":"2021-01-21T13:40:01.000Z","size":1969,"stargazers_count":106,"open_issues_count":14,"forks_count":6,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-07T13:40:53.028Z","etag":null,"topics":["commandline","fetch","linux","neofetch","rsfetch","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rsfetch.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-25T07:43:02.000Z","updated_at":"2024-09-28T16:56:35.000Z","dependencies_parsed_at":"2022-09-12T15:30:28.867Z","dependency_job_id":null,"html_url":"https://github.com/rsfetch/rsfetch","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsfetch%2Frsfetch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsfetch%2Frsfetch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsfetch%2Frsfetch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsfetch%2Frsfetch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rsfetch","download_url":"https://codeload.github.com/rsfetch/rsfetch/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251219601,"owners_count":21554444,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["commandline","fetch","linux","neofetch","rsfetch","rust"],"created_at":"2024-08-02T09:01:40.847Z","updated_at":"2025-04-27T22:32:26.506Z","avatar_url":"https://github.com/rsfetch.png","language":"Rust","funding_links":[],"categories":["Rust","Packages"],"sub_categories":["CLI Tools"],"readme":"**The rewrite is now considered to be a major improvement over this version.\u003cbr\u003e\nThis repo is now archived, please use the rewrite.\u003cbr\u003e\nThe rewrite is available in [this repo](https://github.com/Phate6660/rsfetch).**\n\n\u003ch3 align=\"center\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/rsfetch/rsfetch/master/Screenshots/new-logo.jpg\" alt=\"logo\" height=\"100px\"\u003e\u003c/h3\u003e\n\u003cp align=\"center\"\u003eFast (~1ms execution time) and somewhat(?) minimal fetch program written in Rust.\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg alt=\"crates.io version\" src=\"https://img.shields.io/crates/v/rsfetch\"\u003e\n\u003cimg alt=\"GitHub code size in bytes\" src=\"https://img.shields.io/github/languages/code-size/rsfetch/rsfetch.svg\"\u003e\n\u003cimg alt=\"lines of code\" src=\"https://tokei.rs/b1/github/rsfetch/rsfetch?category=code\"\u003e\n\u003cimg alt=\"GitHub\" src=\"https://img.shields.io/github/license/rsfetch/rsfetch.svg\"\u003e\n\u003cimg alt=\"GitHub last commit\" src=\"https://img.shields.io/github/last-commit/rsfetch/rsfetch.svg\"\u003e\n\u003cimg alt=\"GitHub issues\" src=\"https://img.shields.io/github/issues/rsfetch/rsfetch.svg?color=gren\"\u003e\n\u003c/p\u003e\n\n### Table of Contents\n* [What is this?](#what-is-this)\n* [Preface](#preface)\n* [Things to Know](#things-to-know)\n* [Installation](#installation)\n* [Usage](#usage)\n* [Screenshots](#screenshots)\n* [Benchmarks](#benchmarks)\n* [License](#license)\n* [Changelog](#changelog)\n\n### What is this?\n\nFor those that don't know, this is a tool used to gather various information\nabout the system and display it in a nice looking format. Some various examples\nof info would be the distro, DE/WM, terminal, shell, and more. This tool is meant\nto be a viable alternative to other tools like neofetch, ufetch, petch, etc. Except\nthat it's written in one of the best languages... Rust!\n\n### Preface\n\n**Why I originally made it:** I used to use neofetch, ufetch, and \naurafetch a lot, but then that got me thinking. I have the skill to make\n my own script, so why not? At first, it was just a simple BASH script. \nThen I decided I wanted to try my hand at Rust, as it has interested me \nfor a while. So... here's the end result. I am open to any criticisms \nyou have. After all, I wish to make this better (as well as improve my \nRust skills).\n\n**Why I want to continue improving this:** When this first started out, it \nwas a simple pet project for learning how to code in Rust. Now that I have\npeople helping me with this project, I would love to see this turn into a\nworthy alternative to neofetch/ufetch/screenfetch. Please, if there's anything \nthat you feel is missing from this, open an issue. I would love to hear people's\nthoughts on how this is.\n\n**Another notice:** If you show off `rsfetch` anywhere, please let [/u/Valley6660](https://www.reddit.com/user/Valley6660/) know or open up an issue here.\nHe'd absolutely love to see `rsfetch` used by someone other than himself.\nAnd if you share, there's a very good possibility of your screenshot being included in the README!\n(I'm totally not trying to bribe people into using it, shhhhhhh.)\n\n### Things to Know\n\n1. If you plan to help, note that indentation is done with 4 spaces. It used to be tabs, but I have been told that spaces are the preferred indentation in the Rust community. ~~Any new changes should be recorded in [CHANGELOG.md](CHANGELOG.md).~~\n\n2. These are the current package managers supported. If I missed any, please report it in [this](https://github.com/rsfetch/rsfetch/issues/28) issue.\n    - pacman\n    - apt\n    - xbps\n    - dnf\n    - eopkg\n    - pkg\n    - rpm\n    - apk\n    - portage (note: requires portage-utils to be installed as it uses qlist)\n    - cargo\n    - pip\n\n3. The music info obtains the info from a locally running `mpd` server using `mpc`. If you want more music sources supported, let me know by opening up an issue.\n\n### Installation\nI have prebuilt binaries in the releases tab for people who don't want to build from source, otherwise you can do this.\n\n#### Prerequisites\n- the Rust compiler toolchain\n- **GNU** Make (makefile not compatible with `bmake`!)\n\nYou have two methods to build from source:\n\n##### make\n(Choose either 3 or 4, but don't do both.)\n1. Clone the repository\n2. `cd rsfetch`\n3. `sudo make install`\n4. Or use `make DESTDIR=\"/home/$USER\" PREFIX=\".cargo/\" install` to install to `$HOME/.cargo/bin`\n\nUninstall with `sudo make uninstall`.\n\n##### cargo\n1. Clone the repository\n2. `cd rsfetch`\n3. `cargo install --path .`\n4. `sudo cp rsfetch.1 /usr/share/man/man1/` (for optional manpage, skip if unwanted)\n\nUninstall with `cargo uninstall rsfetch`\n\n#### distro repos\n[![Packaging status](https://repology.org/badge/vertical-allrepos/rsfetch.svg)](https://repology.org/project/rsfetch/versions)\n\nIf you use an Arch-based distro, you can use either of the following AUR packages:\n- [rsfetch-git](https://aur.archlinux.org/packages/rsfetch-git/) (This requires Rust as it builds from source.)\n- [rsfetch-bin](https://aur.archlinux.org/packages/rsfetch-bin/) (This grabs the latest binary from releases.)\n\nIf you are on BSD, it is in Fresh Ports (thanks to whoever maintains that package, I was ecstatic to see it):\n- [rsfetch](https://www.freshports.org/sysutils/rsfetch/) (Requires Rust and pkgconf as it builds from source.)\n\nIf you are on Gentoo, you can install it from the overlay I co-created:\n1. Install [p6nc-overlay](https://github.com/p6nc/overlay)\n2. Make sure repos and overlays are synced: `sudo emerge --sync`\n3. `sudo emerge -atv rsfetch`\n\n#### cargo\nIf you already have `rust` and `cargo` setup, you can install it with:\u003cbr\u003e\n`cargo install rsfetch`\n\nIf you want the manpage:\u003cbr\u003e\n`sudo curl -sSL https://raw.githubusercontent.com/rsfetch/rsfetch/master/rsfetch.1 -o /usr/share/man/man1/rsfetch.1`\n\n### Usage\n\n```\nrsfetch 2.0.2\n\nAn info fetch tool for Linux. Fast (~1ms execution time) and somewhat(?) minimal.\n\nAll options are off by default.\n\nAccepted values for the package manager are \"pacman\", \"apt\", \"xbps\", \"dnf\", \"pkg\", \"eopkg\", \"rpm\", \"apk\", \"pip\",\n\"portage\", and \"cargo\".\n\nUSAGE:\n    rsfetch [FLAGS] [OPTIONS]\n\nFLAGS:\n    -P, --cpu           Turn CPU information on.\n        --credits       List of past and current contributors for this project.\n    -d, --distro        Turn distro name on.\n    -e, --editor        Turn default editor name on. (Must have $EDITOR/$VISUAL variable set.)\n    -f, --farenheit     Display temperature in farenheit instead of celcius.\n        --help          Prints help information\n    -h, --host          Turn device name on.\n    -H, --hostname      Turn hostname on.\n    -i, --ip-address    Turn ip address display on.\n    -k, --kernel        Turn kernel version on.\n    -l, --logo          Turn the logo or ascii art on.\n    -r, --memory        Turn memory information on.\n    -M, --minimal       Turn minimal-style output mode on.\n    -N, --neofetch      Turn neofetch-style output mode on.\n    -b, --no-bold       Turn bold for field titles off.\n    -B, --no-borders    Turn borders off.\n    -c, --no-caps       Turn all caps off.\n    -s, --shell         Turn default shell name on.\n    -t, --terminal      Turn terminal name on.\n    -u, --uptime        Turn uptime info on.\n    -U, --user          Turn user name on.\n    -@, --userat        Turn 'user@hostname' style on (only applicable if both 'user' and 'hostname' are enabled!).\n    -V, --version       Prints version information\n    -w, --wm            Turn WM or DE name on.\n\nOPTIONS:\n    -C, --corners \u003cCHARACTER\u003e    Specify the corner character. Only used when borders are enabled.\n    -L, --logofile \u003cFILE\u003e        Specify the file from which to read a custom ASCII logo.\n    -m, --music \u003cSOURCE\u003e         Choose where to get music info. The only supported options is \"mpd\".\n    -p, --packages \u003cPKG MNGR\u003e    Turn total package count on.\n```\n\n### Screenshots\n\n**rsfetch-style output**\u003cbr\u003e\n![rsfetch-style](Screenshots/rsfetch.png?raw=true \"rsfetch-style\")\n\n**neofetch-style output**\u003cbr\u003e\n![neofetch-style](Screenshots/neofetch.png?raw=true \"neofetch-style\")\n\n**Phate6660's preference of options**\u003cbr\u003e\n![rsfetch-valley](Screenshots/rsfetch-valley.png?raw=true \"rsfetch-valley\")\n\n### Benchmarks\nTODO: Update benchmarks. They are out of date by a lot. My latest hyperfine run for rsfetch actually resulted in 1.1ms result time, but I don't currently have the other fetch tools to compare.\n\n\nHere's a detailed benchmark; with rsfetch versus ufetch, pfetch, aurafetch, Neofetch, and ScreenFetch:\n\n```\nBenchmark #1: target/release/rsfetch -NcldkuUH@swp apt\n  Time (mean ± σ):      20.5 ms ±  20.2 ms    [User: 10.8 ms, System: 5.3 ms]\n  Range (min … max):    14.4 ms … 117.2 ms    25 runs\n \n  Warning: The first benchmarking run for this command was significantly slower than the rest (117.2 ms). This could be caused by (filesystem) caches that were not filled until after the first run. You should consider using the '--warmup' option to fill those caches before the actual benchmark. Alternatively, use the '--prepare' option to clear the caches before each timing run.\n \nBenchmark #2: ufetch\n  Time (mean ± σ):     180.4 ms ±  10.4 ms    [User: 154.4 ms, System: 24.9 ms]\n  Range (min … max):   171.4 ms … 211.9 ms    14 runs\n \nBenchmark #3: pfetch\n  Time (mean ± σ):     146.2 ms ±   3.7 ms    [User: 123.5 ms, System: 19.1 ms]\n  Range (min … max):   141.4 ms … 155.9 ms    19 runs\n \nBenchmark #4: aura -n \"term\"\n  Time (mean ± σ):     138.4 ms ±   3.5 ms    [User: 109.6 ms, System: 26.0 ms]\n  Range (min … max):   132.2 ms … 145.8 ms    21 runs\n \nBenchmark #5: neofetch --disable resolution --disable theme --disable icons --disable term --disable cpu --disable memory\n  Time (mean ± σ):     454.2 ms ±  23.6 ms    [User: 327.3 ms, System: 101.6 ms]\n  Range (min … max):   427.6 ms … 507.6 ms    10 runs\n \nBenchmark #6: screenfetch -d \"-gtk;-res;-disk;-mem;-cpu\"\n  Time (mean ± σ):     647.4 ms ±  33.1 ms    [User: 480.3 ms, System: 133.6 ms]\n  Range (min … max):   622.5 ms … 731.6 ms    10 runs\n \nSummary\n  'target/release/rsfetch -NcldkuUH@swp apt' ran\n    6.76 ± 6.67 times faster than 'aura -n \"term\"'\n    7.14 ± 7.05 times faster than 'pfetch'\n    8.81 ± 8.71 times faster than 'ufetch'\n   22.19 ± 21.93 times faster than 'neofetch --disable resolution --disable theme --disable icons --disable term --disable cpu --disable memory'\n   31.63 ± 31.25 times faster than 'screenfetch -d \"-gtk;-res;-disk;-mem;-cpu\"'\n```\n\n### License\n\n- License has been set to \"MIT\". Anybody can do anything with this repository, provided that they include the license if they choose to redistribute. [View license](https://raw.githubusercontent.com/rsfetch/rsfetch/master/LICENSE)\n\n### Changelog\n\n- Changelog was generated (because I'm too lazy) by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator). [View changelog](https://raw.githubusercontent.com/rsfetch/rsfetch/master/CHANGELOG.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frsfetch%2Frsfetch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frsfetch%2Frsfetch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frsfetch%2Frsfetch/lists"}