All Projects → LinusDierheimer → fastfetch

LinusDierheimer / fastfetch

Licence: MIT License
Like neofetch, but much faster because written in c. Only Linux.

Programming Languages

c
50402 projects - #5 most used programming language
CMake
9771 projects
shell
77523 projects

Projects that are alternatives of or similar to fastfetch

yafetch
Yet another fetch ...
Stars: ✭ 27 (-85.86%)
Mutual labels:  fetch, screenfetch, neofetch
awesome-fetch
Command-line fetch tools for system/other information
Stars: ✭ 177 (-7.33%)
Mutual labels:  fetch, neofetch
rsfetch
A WIP rewrite of rsfetch from scratch.
Stars: ✭ 33 (-82.72%)
Mutual labels:  fetch, neofetch
sysfex
Another system information fetching tool written in C++
Stars: ✭ 107 (-43.98%)
Mutual labels:  fetch, neofetch
rxfetch
A custom system info fetching tool
Stars: ✭ 384 (+101.05%)
Mutual labels:  screenfetch, neofetch
disfetch
Yet another *nix distro fetching program, but less complex.
Stars: ✭ 45 (-76.44%)
Mutual labels:  fetch, neofetch
cat-fetch
Cute fetch started as a C program, now more complex and just better
Stars: ✭ 16 (-91.62%)
Mutual labels:  fetch
fetch-wrap
extend WHATWG fetch wrapping it with middlewares
Stars: ✭ 21 (-89.01%)
Mutual labels:  fetch
vue-methods-promise
Let Vue methods support return Promise
Stars: ✭ 35 (-81.68%)
Mutual labels:  fetch
wumpfetch
🚀🔗 A modern, lightweight, fast and easy to use Node.js HTTP client
Stars: ✭ 20 (-89.53%)
Mutual labels:  fetch
airtable-node
Node API for Airtable without the bloat (lodash, etc)
Stars: ✭ 23 (-87.96%)
Mutual labels:  fetch
axios-endpoints
Axios endpoints helps you to create a more concise endpoint mapping with axios.
Stars: ✭ 41 (-78.53%)
Mutual labels:  fetch
fbvideos
🔗 Easily extract downloadable link of publicly available videos on facebook.
Stars: ✭ 28 (-85.34%)
Mutual labels:  fetch
packages
Cloud Posse DevOps distribution of linux packages for native apps, binaries, alpine packages, debian packages, and redhat packages.
Stars: ✭ 107 (-43.98%)
Mutual labels:  fetch
node-fetch-har
Generate HAR entries for requests made with node-fetch
Stars: ✭ 23 (-87.96%)
Mutual labels:  fetch
fetchx
Beautiful way to fetch data in React
Stars: ✭ 71 (-62.83%)
Mutual labels:  fetch
dots
My dotfiles
Stars: ✭ 67 (-64.92%)
Mutual labels:  fetch
fetchingInReact
💎📷 Fetching data from Unsplash.com in React
Stars: ✭ 23 (-87.96%)
Mutual labels:  fetch
node-blog-app
🌐 A node+espress+mongoose+react+nextjs blog
Stars: ✭ 12 (-93.72%)
Mutual labels:  fetch
ultrafetch
Node-based fetch backed with an RFC-7234 compliant filesystem cache.
Stars: ✭ 30 (-84.29%)
Mutual labels:  fetch

fastfetch

fastfetch is a neofetch-like tool for fetching system information and displaying them in a pretty way. It is written in c to achieve much better performance, in return only Linux and Android are supported. It also uses mechanisms like multithreading and caching to finish as fast as possible.

The output on my personal machine with default configurations looks like this: example output

Customization

With customization and speed being two competing goals, this project actually builds two executables.
The main one being fastfetch, which can be very greatly configured via flags. These flags can be made persistent in ~/.config/fastfetch/config.conf. To view the available options run fastfetch --help.
The second executable being buildt is called flashfetch, which is configured at compile time to eliminate any possible overhead. Configuration of it can be very easily done in src/flashfetch.c.
At the moment the performance difference is measurable, but too small to be human recognizable. But the leap will get bigger with more and more options coming, and on slow machines this might actually make a difference.

There are some presets defined for fastfech in presets, you can can load them with --load-config. They may also serve as a good example for format arguments.

Dependencies

Fastfetch dynamically loads needed libraries if they are available. Therefore its only hard dependencies are libc (any implementation of the c standard library), libdl and libpthread. They are all shipped with glibc, which is already installed on most linux distributions, so you probably don't have to worry about it.

The following libraries are used if present at runtime:

  • libpci: GPU output.
  • libvulkan: Fallback for GPU output.
  • libxcb-randr, libXrandr, libxcb, libX11: At least one of them sould be present in X11 sessions for better resolution detection and faster WM detection. The *randr ones provide multi monitor support. The libxcb* ones usually have better performance.
  • libwayland-client: Better resolution performance and output in wayland sessions. Supports different refresh rates per monitor.
  • libGIO: Needed for values that are only stored GSettings.
  • libDConf: Needed for values that are only stored in DConf + Fallback for GSettings.
  • libDBus: Needed for detecting current media player and song.
  • libXFConf: Needed for XFWM theme and XFCE Terminal font.
  • librpm: Needed for rpm package count.

Support status

All categories not listed here should work without needing a specific implementation.

Available Modules
Title, Separator, OS, Host, Kernel, Uptime, Processes, Packages, Shell, Resolution, DE, WM, WMTheme, Theme, Icons, Font, Cursor, Terminal, Terminal Font, CPU, CPUUsage, GPU, Memory, Disk, Battery, Player, Song, LocalIP, PublicIP, DateTime, Date, Time, Locale, Colors, Break, Custom
Logos
Android, Arch, Arco, Artix, CachyOS, CentOS, Debian, Endeavour, Fedora, Garuda, Gentoo, Manjaro, Mint, Pop!_OS, RebornOS, Ubuntu, Void, Zorin
  • Most of the logos have a small variant. Access it by appending _small to the logo name.
  • Some logos have an old variant. Access it by appending _old to the logo name.
  • Unknown/unsupported logos will be replaced with a question mark when running fastfetch.
  • Get a list of all available logos with fastfetch --print-logos.
Package managers
Pacman, dpkg, rpm, emerge, xbps, Flatpak, Snap
WM themes
KWin, Mutter, Muffin, Marco, XFWM, Openbox (LXDE, LXQT & without DE)
DE versions
KDE Plasma, Gnome, Cinnamon, Mate, XFCE4, LXQt
Terminal fonts
konsole, gnome-terminal-server, tilix, xfce4-terminal, lxterminal, TTY

Building

fastfetch uses cmake and pkg-config for building. The simplest steps to build the fastfetch and flashfetch binaries are:

mkdir -p build
cd build
cmake ..
cmake --build . -j$(nproc) --target fastfetch --target flashfetch

If pkg-config fails to find the headers for a library listed in dependencies, fastfetch will simply build without support for that specific feature. This means, it won't look for it at runtime and just act like it isn't available.

Packaging

  • AUR: Packaged by me. Will install the fastfetch binary, bash completion and the presets. Git version
  • Manjaro Repositories: Packaged by a manjaro maintainer. Usually a bit outdated.
  • DEB: You need to build deb packages yourself. Run packaging/deb/create-deb-pkg.sh for that.
  • Manually:
    • Build: Follow the build instructions.
    • Install: sudo cmake --install build --prefix /usr/local

FAQ

Q: Why do you need a very performant version of neofetch?

I like putting neofetch in my ~/.bashrc to have a system overwiew whenever i use the terminal, but the slow speed annoyed me, so i created this. Also neofetch didn't output everything correctly (e.g Font is displayed as "[Plasma], Noto Sans, 10 [GTK2/3]") and writing my own tool gave me the possibility to fine tune it to run perfectly on at least my configuration.

Q: It does not display [*] correctly for me, what can i do?

This is most likely because your system is not implemented (yet). At the moment i am focusing more on making the core app better, than adding more configurations. Feel free to open a pull request if you want to add support for your configuration

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].