GithubHelp home page GithubHelp logo

linus789 / fastfetch Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fastfetch-cli/fastfetch

0.0 0.0 0.0 1.64 MB

Like neofetch, but much faster because written in c. Only Linux.

License: MIT License

CMake 1.80% Shell 1.85% C 96.36%

fastfetch's Introduction

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 is 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

In order to run properly on every machine, fastfetch dynamically loads needed libraries if they are available. Therefore its only hard dependency is glibc (libc, libdl and libpthread are actually used) which is automatically shipped with every linux system.
The following libraries are used if present:

  • libpci: Needed for GPU output. Should be available on every linux system.
  • libX11: Needed for resolution output
  • libXrandr: Needed for appending refresh rate to resolution output.
  • libwayland-client: Better resolution performance in wayland sessions.
  • libGIO: Needed for values that are only stored GSettings.
  • libDConf: Needed for values that are only stored in DConf + Fallback for GSettings.
  • libXFConf: Needed for XFWM theme and XFCE Terminal font.
  • libSQLite3: Needed for rpm package count.

Support status

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

Logos
Arch, Artix, Debian, Fedora, Fedora old, Garuda, Gentoo, Manjaro, Mint, Pop!_OS, Ubuntu, Void

NOTE: Unknown/unsupported logos will be replaced with a question mark when running fastfetch.

Package managers
Pacman, dpkg, rpm, 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 for building. The simplest steps to build the entire project are:

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

This will produce build/fastfetch and build/flashfetch, both standalone executables.
Command line completions for bash can be found in completions/bash.

pkg-config is also required for building. It is used to find the header files for the libraries listed in Dependencies. If pkg-config fails to find a package, a warning will be printed and fastfetch will be build without support for the features depending on it.

Note that building with a feature enabled, doesn't mean the library must be present to run fastfetch, as they are still loaded dynamically during runtime.

Packaging

At the moment, i only package for the AUR. This package will install both the fastfetch and the flashfetch binary (with default configuration), as well as the bash completion.
There is also a package in the Manjaro Repositories, not packaged by me, but usually very up-to-date.

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

fastfetch's People

Contributors

alborrajo avatar carterli avatar darncelsius avatar halfhiddencode avatar imgbotapp avatar linusdierheimer avatar nbonaparte avatar saloniamatteo avatar wizard-28 avatar yuannan avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.