Git Product home page Git Product logo

fastfetch's Introduction

Fastfetch

Fastfetch is a neofetch-like tool for fetching system information and displaying them in a pretty way. It is written mainly in C, with performance and customizability in mind. Currently, Linux, Android, FreeBSD, MacOS and Windows 7+ are supported.

There are screenshots on different platforms

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 $XDG_CONFIG_HOME/fastfetch/config.conf. To view the available options run fastfetch --help.
  • The second executable being built 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 premade config files in presets, including the ones used for the screenshots above. You can load them using --load-config <filename>. They may also serve as a good example for format arguments.

Logos can be heavily customized to. See the logo documentation for more information.

Dependencies

Fastfetch dynamically loads needed libraries if they are available. On Linux, its only hard dependencies are libc (any implementation of the c standard library), libdl and libpthread (if built with multithreading support). They are all shipped with glibc, which is already installed on most linux distributions.

The following libraries are used if present at runtime:

Linux and FreeBSD

  • libpci: GPU output.
  • libvulkan: Vulkan module & fallback for GPU output.
  • libxcb-randr, libXrandr, libxcb, libX11: At least one of them sould be present in X11 sessions for better display detection and faster WM detection. The *randr ones provide multi monitor support The libxcb* ones usually have better performance.
  • libwayland-client: Better display 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.
  • libmagickcore (ImageMagick): Images in terminal using sixel or kitty graphics protocol.
  • libchafa: Image output as ascii art.
  • libZ: Faster image output when using kitty graphics protocol.
  • libDBus: Bluetooth, Player & Media detection.
  • libEGL, libGLX, libOSMesa: At least one of them is needed by the OpenGL module for gl context creation.
  • libOpenCL: OpenCL module
  • libXFConf: Needed for XFWM theme and XFCE Terminal font.
  • libsqlite3: Needed for pkg & rpm package count.
  • librpm: Slower fallback for rpm package count. Needed on openSUSE.
  • libcJSON: Needed for Windows Terminal font ( WSL ).
  • libnm: Used for Wifi detection.
  • libpulse: Used for Sound detection.

macOS

For the image logo, iTerm with iterm image protocol should work. Apple Terminal is not supported.

Windows

Note: In Windows 7, 8 and 8.1, ConEmu is required to run fastfetch due to the lack of ASCII escape code native support. In addition, as fastfetch for Windows targets UCRT C runtime library, it must be installed manually as UCRT is only pre-installed in Windows 10 and later.

For the image logo, only chafa is supported due to the design flaw of ConPTY. In addition, chafa support is not built by default due to the massive dependencies of imagemagick. You must built it yourself.

Android

Support status

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

Available Modules
Battery, Bios, Bluetooth, Board, Break, Brightness, Colors, Command, CPU, CPUUsage, Cursor, Custom, Date, DateTime, DE, Disk, Display, Font, Gamepad, GPU, Host, Icons, Kernel, Locale, LocalIP, Media, Memory, OpenCL, OpenGL, Packages, Player, Power Adapter, Processes, PublicIP, Separator, OS, Shell, Sound, Swap, Terminal, Terminal Font, Theme, Time, Title, Uptime, Vulkan, Wallpaper, Wifi, WM, WMTheme
Builtin logos
AlmaLinux, Alpine, Android, Arch, Arco, Artix, Bedrock, CachyOS, CentOS, CRUX, Crystal, Debian, Deepin, Devuan, Endeavour, Enso, Fedora, FreeBSD, Garuda, Gentoo, KDE Neon, KISS, Kubuntu, LangitKetujuh, Linux, MacOS, Manjaro, Mint, MSYS2, NixOS, Nobara, OpenSUSE, OpenSUSE LEAP, OpenSUSE Tumbleweed, Parabola, Pop!_OS, Raspbian, RebornOS, RedstarOS, Rocky, Rosa, Slackware, Solus, SteamOS, Ubuntu, Vanilla, Void, Windows, Windows 11, Windows 8, Zorin
Package managers
apk, brew, Chocolatey, dpkg, emerge, eopkg, Flatpak, MacPorts, nix, Pacman, pkg, rpm, scoop, Snap, xbps
WM themes
DWM (Windows), KWin, Marco, Muffin, Mutter, Openbox (LXDE, LXQT & without DE), Quartz Compositor (macOS), XFWM
DE versions
Budgie, Cinnamon, Gnome, KDE Plasma, LXQt, Mate, XFCE4
Terminal fonts
Alacritty, Apple Terminal, ConEmu, Deepin Terminal, foot, Gnome Terminal, iTerm2, Kitty, Konsole, LXTerminal, mintty, Tabby, Terminator, Termux, Tilix, TTY, Warp, WezTerm, Windows Terminal, XFCE4 Terminal

Building

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

mkdir -p build
cd build
cmake ..
cmake --build . --target fastfetch --target flashfetch

If the build process 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.

Building on Windows

Currently GCC or clang is required (MSVC is not supported). MSYS2 with CLANG64 subsystem (or CLANGARM64 if needed) is suggested (and tested) to build fastfetch. If you need Windows 7 / 8.x support, using MINGW64 is suggested.

  1. Install MSYS2
  2. Open MSYS2 / CLANG64 (not MSYS2 / MSYS, which targets cygwin C runtime)
  3. Install dependencies
pacman -Syu mingw-w64-clang-x86_64-cmake mingw-w64-clang-x86_64-pkgconf mingw-w64-clang-x86_64-clang mingw-w64-clang-x86_64-cjson mingw-w64-clang-x86_64-vulkan-loader mingw-w64-clang-x86_64-opencl-icd

Follow the building instructions of Linux next.

Packaging

Repositories

Packaging status

Manual

  • DEB / RPM package: cmake --build . --target package
  • Install directly: cmake --install . --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

fastfetch's People

Contributors

linusdierheimer avatar carterli avatar darncelsius avatar x-zvf avatar draumaz avatar saloniamatteo avatar wizard-28 avatar kojq avatar alborrajo avatar zerogiven avatar menacingperson avatar alxhr0 avatar tdtooke avatar ceamac avatar rayrsn avatar hayatehay avatar cybertailor avatar edsploration avatar vnepogodin avatar jumps-are-op avatar yuannan avatar iamnorobot avatar sladegetz avatar jonathanspw avatar dr460nf1r3 avatar wvlab avatar yureien avatar kingkrouch avatar evo112358 avatar doubletimedan 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.