{"id":14967948,"url":"https://github.com/notashelf/microfetch","last_synced_at":"2025-10-10T12:38:42.568Z","repository":{"id":251519420,"uuid":"837655440","full_name":"NotAShelf/microfetch","owner":"NotAShelf","description":"Microscopic fetch tool in Rust, for NixOS systems, with special emphasis on speed","archived":false,"fork":false,"pushed_at":"2025-08-17T12:56:52.000Z","size":232,"stargazers_count":100,"open_issues_count":3,"forks_count":9,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-01T11:57:32.850Z","etag":null,"topics":["linux","neofetch-like","nixos","ricing","rust-crate","unixporn"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NotAShelf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-08-03T16:06:06.000Z","updated_at":"2025-09-29T22:31:04.000Z","dependencies_parsed_at":"2024-08-03T17:27:15.006Z","dependency_job_id":"8389753e-8baa-491e-a111-1c7c5510c3b2","html_url":"https://github.com/NotAShelf/microfetch","commit_stats":{"total_commits":48,"total_committers":7,"mean_commits":6.857142857142857,"dds":"0.16666666666666663","last_synced_commit":"9ed9e8d930b18895fd7629a58a2a322ea52eea21"},"previous_names":["notashelf/microfetch"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/NotAShelf/microfetch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotAShelf%2Fmicrofetch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotAShelf%2Fmicrofetch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotAShelf%2Fmicrofetch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotAShelf%2Fmicrofetch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NotAShelf","download_url":"https://codeload.github.com/NotAShelf/microfetch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotAShelf%2Fmicrofetch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279003896,"owners_count":26083641,"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","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["linux","neofetch-like","nixos","ricing","rust-crate","unixporn"],"created_at":"2024-09-24T13:38:59.201Z","updated_at":"2025-10-10T12:38:42.542Z","avatar_url":"https://github.com/NotAShelf.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://deps.rs/repo/github/notashelf/microfetch/status.svg\" alt=\"https://deps.rs/repo/github/notashelf/microfetch\"\u003e\n    \u003c!-- \u003cimg src=\"https://img.shields.io/github/v/release/notashelf/microfetch?display_name=tag\u0026color=DEA584\"\u003e --\u003e\n    \u003cimg src=\"https://img.shields.io/github/stars/notashelf/microfetch?label=stars\u0026color=DEA584\"\u003e\n\u003c/div\u003e\n\n\u003ch1 align=\"center\"\u003eMicrofetch\u003c/h1\u003e\n\nStupidly simple, laughably fast fetch tool. Written in Rust for speed and ease\nof maintainability. Runs in a _fraction of a millisecond_ and displays _most_ of\nthe nonsense you'd see posted on r/unixporn or other internet communities. Aims\nto replace [fastfetch](https://github.com/fastfetch-cli/fastfetch) on my\npersonal system, but [probably not yours](#customizing). Though, you are more\nthan welcome to use it on your system: it's pretty [fast](#benchmarks)...\n\n\u003cp align=\"center\"\u003e\n  \u003cimg\n    alt=\"latest demo\"\n    src=\"./.github/assets/demo.png\"\n    width=\"850px\"\n  \u003e\n\u003c/p\u003e\n\n## Features\n\n- Fast\n- Really fast\n- Minimal dependencies\n- Actually really fast\n- Cool NixOS logo (other, inferior, distros are not supported)\n- Reliable detection of following info:\n  - Hostname/Username\n  - Kernel\n    - Name\n    - Version\n    - Architecture\n  - Current shell (from `$SHELL`, trimmed if store path)\n  - Current Desktop (DE/WM/Compositor and display backend)\n  - Memory Usage/Total Memory\n  - Storage Usage/Total Storage (for `/` only)\n  - Shell Colors\n- Did I mention fast?\n- Respects [`NO_COLOR` spec](https://no-color.org/)\n\n## Motivation\n\nFastfetch, as its name indicates, a very fast fetch tool written in C, however,\nI am not interested in any of its additional features, such as customization,\nand I very much dislike the defaults. Microfetch is my response to this problem,\na _very fast_ fetch tool that you would normally write in Bash and put in your\n`~/.bashrc` but actually _really_ fast because it opts-out of all customization\noptions provided by Fastfetch, and is written in Rust. Why? Because I can, and\nbecause I prefer Rust for \"structured\" Bash scripts.\n\nI cannot re-iterate it enough, Microfetch is _annoyingly fast_.\n\n## Benchmarks\n\nThe performance may be sometimes influenced by hardware-specific race\nconditions, or even your kernel configuration meaning it may (at times) depend\non your hardware. However, the overall trend appears to be less than 1.3ms on\nany modern (2015 and after) CPU that I own. Below are the benchmarks with\nHyperfine on my desktop system. Please note that those benchmarks will not be\nalways kept up to date, but I will try to update the numbers as I make\nMicrofetch faster.\n\n| Command      |    Mean [ms] | Min [ms] | Max [ms] |       Relative | Written by raf? |\n| :----------- | -----------: | -------: | -------: | -------------: | --------------: |\n| `microfetch` |    1.0 ± 0.1 |      0.9 |      1.7 |           1.00 |             yes |\n| `fastfetch`  |   48.6 ± 1.6 |     45.8 |     61.3 |   46.65 ± 4.75 |              no |\n| `pfetch`     |  206.0 ± 4.5 |    198.0 |    241.4 | 197.50 ± 19.53 |              no |\n| `neofetch`   | 689.1 ± 29.1 |    637.7 |    811.2 | 660.79 ± 69.56 |              no |\n\nAs far as I'm concerned, Microfetch is significantly faster than every other\nfetch tool that I have tried. The only downsides of using Rust for the project\n(in exchange for speed and maintainability) is the slightly \"bloated\" dependency\ntrees, and the increased build times. The latter is very easily mitigated with\nNix's binary cache. Since Microfetch is already in Nixpkgs, you are recommended\nto use it to utilize the binary cache properly\n\n### Benchmarking Individual Functions\n\n[Criterion.rs]: https://github.com/bheisler/criterion.rs\n[Getting Started Guide]: https://bheisler.github.io/criterion.rs/book/getting_started.html\n\nTo benchmark individual functions, [Criterion.rs] is used. See Criterion's\n[Getting Started Guide] for details or just run `cargo bench` to benchmark all\nfeatures of Microfetch.\n\n## Installation\n\n\u003e [!NOTE]\n\u003e You will need a Nerdfonts patched font installed, and for your terminal\n\u003e emulator to support said font. Microfetch uses nerdfonts glyphs by default.\n\nMicrofetch is packaged in [nixpkgs](https://github.com/nixos/nixpkgs). It can be\ninstalled by adding `pkgs.microfetch` to your `environment.systemPackages`.\nAdditionally, you can try out Microfetch in a Nix shell.\n\n```bash\nnix shell nixpkgs#microfetch\n```\n\nOr run it directly with `nix run`\n\n```bash\nnix run nixpkgs#microfetch\n```\n\nNon-Nix users will have to build Microfetch with `cargo`. It is not published\nanywhere but I imagine you can use `cargo install --git` to install it from\nsource.\n\n```bash\ncargo install --git https://github.com/notashelf/microfetch.git\n```\n\nMicrofetch is _currently_ not available anywhere else. Though, does it _really_\nhave to be?\n\n## Customizing\n\nYou can't.\n\n### Why?\n\nCustomization, of any kind, is expensive: I could try reading environment\nvariables, parse command-line arguments or read a configuration file but all of\nthose increment execution time and resource consumption by a lot.\n\n### Really?\n\nTo be fair, you _can_ customize Microfetch by, well, patching it. It's not the\nbest way per se, but it will be the only way that does not compromise on speed.\n\nThe Nix package allows passing patches in a streamlined manner by passing\n`.overrideAttrs` to the derivation.\n\n## Contributing\n\nI will, mostly, reject feature additions. This is not to say you should avoid\nthem altogether, as you might have a really good idea worth discussing but as a\ngeneral rule of thumb consider talking to me before creating a feature PR.\n\nContributions that help improve performance in specific areas of Microfetch are\nwelcome. Though, prepare to be bombarded with questions if your changes are\nlarge.\n\n## Hacking\n\nA Nix flake is provided. `nix develop` to get started. Direnv users may simply\nrun `direnv allow` to get started.\n\nNon-nix users will need `cargo` and `gcc` installed on their system, see\n`Cargo.toml` for available release profiles.\n\n## Thanks\n\nHuge thanks to everyone who took the time to make pull requests or nag me in\nperson about current issues. To list a few, special thanks to:\n\n- [@Nydragon](https://github.com/Nydragon) - For packaging Microfetch in Nixpkgs\n- [@ErrorNoInternet](https://github.com/ErrorNoInternet) - Performance\n  improvements and code assistance\n- [@SoraTenshi](https://github.com/SoraTenshi) - General tips and code\n  improvements\n- [@bloxx12](https://github.com/bloxx12) - Performance improvements and\n  benchmarking plots\n- [@sioodmy](https://github.com/sioodmy) - Being cute\n- [@mewoocat](https://github.com/mewoocat) - The awesome NixOS logo ASCII used\n  in Microfetch\n\nAdditionally a big thank you to everyone who used, talked about or criticized\nMicrofetch. I might have missed your name here, but you have my thanks.\n\n## License\n\nMicrofetch is licensed under [GPL3](LICENSE). See the license file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotashelf%2Fmicrofetch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnotashelf%2Fmicrofetch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotashelf%2Fmicrofetch/lists"}