Skip to content

Dependencies

Carter Li edited this page Oct 6, 2026 · 27 revisions

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, libm 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. Which of them were found when your binary was built is reported by fastfetch --list-features.

All platforms

  • libZ: Zlib compression when sending HTTP requests. Faster image output when using kitty graphics protocol.
  • libzfs: Zpool module.
  • Lua 5.3 to 5.5, or QuickJS v0.15.0 or newer: Lua and JavaScript scripting in format strings.

Linux and FreeBSD

  • libvulkan: Vulkan module & fallback for GPU output.
  • libxcb-randr, libXrandr: At least one of them should be present in X11 sessions for better display detection and faster WM detection.
  • libwayland-client: Better display performance and output in wayland sessions. Supports different refresh rates per monitor.
  • libdrm: fall back if both wayland and x11 are not available. AMD GPU properties detection
  • libGIO: Needed for values that are only stored in GSettings.
  • libDConf: Needed for values that are only stored in DConf + Fallback for GSettings.
  • libeet: Enlightenment window manager configuration detection
  • libmagickcore (ImageMagick 7): Images in terminal using sixel or kitty graphics protocol. ImageMagick 6 works too but is deprecated, and is only kept for old Debian and Ubuntu releases that have no ImageMagick 7.
  • libchafa: Image output as ascii art.
  • libDBus: Bluetooth, Player & Media, XFCE theme detection.
  • libEGL, libGLX: At least one of them is needed by the OpenGL module for gl context creation (EGL preferred).
  • libOpenCL: OpenCL module
  • libsqlite3: Needed for the rpm, moss and soar package counts, and for values that are only stored in a SQLite database, such as GSettings.
  • libelf: Much faster version detection for many things. Necessary for st terminal font detection.
  • libva-drm, libva-x11: Hardware video acceleration codec detection via VA-API.
  • libvdpau: Hardware video acceleration codec detection via VDPAU-API.

Linux only

  • linux-headers (required)
  • librpm: Slower fallback for rpm package count. Needed on openSUSE.
  • libddcutil: Used for brightness detection of external displays.

FreeBSD only

macOS

  • MediaRemote: Needed for Media detection. It's a private framework provided by newer macOS systems.
  • DisplayServices: Needed for screen brightness detection. It's a private framework provided by newer macOS systems.
  • MoltenVK: Vulkan driver for macOS. molten-vk
  • libchafa: Image output as ascii art. chafa
  • libsqlite3: Used for fast wallpaper detection before macOS Sonoma (fallback to AppleScript).

Image logos are decoded by the ImageIO framework, which is part of macOS, so ImageMagick is not needed. Sixel output is produced by an embedded encoder. Any terminal that supports sixel works; iTerm2 works with the iterm image protocol, and kitty, Ghostty and WezTerm with the kitty graphics protocol. Apple Terminal supports neither.

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.

Image logos are decoded by WIC, which is part of Windows, so ImageMagick is not needed. Sixel output is produced by an embedded encoder, which makes fastfetch --sixel X:\path\to\image work out of the box on Windows Terminal. WezTerm is known to work with the iterm image protocol, surprisingly.

Android

  • freetype: Used for Termux font detection. freetype
  • libvulkan: Vulkan module, also used for GPU detection. Usually has been provided by the Android system. vulkan-headers vulkan-loader-android
  • libOpenCL: OpenCL module. Usually has been provided by the Android system. ocl-icd opencl-headers
    • You usually need to set LD_LIBRARY_PATH to let opencl loader find the drivers. LD_LIBRARY_PATH=/vendor/lib64 fastfetch
  • libEGL: OpenGL module. Installing EGL headers is enough. mesa-dev
  • Termux:API: The Android app is needed for Wifi detection, because it is what carries the Wi-Fi permission that Termux itself does not request. Uninstalling it takes the permission off the shared UID and the module stops reporting the connection. The termux-api command package is not needed: Wifi, Battery, Camera and Display detection all read from the Android services directly now.
  • libandroid-wordexp-static: wordexp.h support for Android. (Build only)
  • chafa, dbus, glib/gio, libelf, libxcb, libxrandr, zlib

Image logos are decoded by AImageDecoder, which needs Android 11 (API 30), so a build running on Android 10 or older reports an error instead. Animated logos additionally need Android 12 (API 31), and the repeat count is not available there, so an animation is reported as looping forever. Termux Monet supports the iterm image protocol.

Clone this wiki locally