Files
fastfetch/README.md
T

95 lines
5.9 KiB
Markdown
Raw Normal View History

2021-02-18 22:25:20 +01:00
# fastfetch
2021-03-07 13:12:45 +01:00
2022-01-20 01:22:13 +01:00
fastfetch is a [neofetch](https://github.com/dylanaraps/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.
2021-05-19 20:08:29 +02:00
2021-05-13 21:27:24 +02:00
The output on my personal machine with default configurations looks like this:
2021-05-19 20:08:29 +02:00
<img src="screenshots/example.png" alt="example output" width="100%"/>
2021-03-07 13:12:45 +01:00
## Customization
2021-05-19 20:08:29 +02:00
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`](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.
2021-04-25 12:31:39 +02:00
There are some presets defined for fastfech in [`presets`](presets), you can can load them with `--load-config`. They may also serve as a good example for format arguments.
2021-03-07 13:12:45 +01:00
## Dependencies
2022-01-23 12:02:26 +01:00
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`](https://www.gnu.org/software/libc/), which is already installed on most linux distributions, so you probably don't have to worry about it.
2022-01-23 12:00:28 +01:00
The following libraries are used if present at runtime:
2021-11-13 18:25:35 +01:00
* [`libpci`](https://github.com/pciutils/pciutils): GPU output.
* [`libvulkan`](https://www.vulkan.org/): Fallback for GPU output.
2022-01-05 14:40:57 +01:00
* [`libxcb-randr`](https://xcb.freedesktop.org/),
[`libXrandr`](https://gitlab.freedesktop.org/xorg/lib/libxrandr),
[`libxcb`](https://xcb.freedesktop.org/),
[`libX11`](https://gitlab.freedesktop.org/xorg/lib/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`](https://wayland.freedesktop.org/): Better resolution performance and output in wayland sessions. Supports different refresh rates per monitor.
2021-06-14 12:07:08 +05:30
* [`libGIO`](https://developer.gnome.org/gio/unstable/): Needed for values that are only stored GSettings.
* [`libDConf`](https://developer.gnome.org/dconf/unstable/): Needed for values that are only stored in DConf + Fallback for GSettings.
2021-11-06 19:31:28 +08:00
* [`libXFConf`](https://gitlab.xfce.org/xfce/xfconf): Needed for XFWM theme and XFCE Terminal font.
* [`librpm`](http://rpm.org/): Needed for rpm package count.
2021-03-07 13:12:45 +01:00
2021-04-25 16:16:40 +02:00
## Support status
All categories not listed here should work without needing a specific implementation.
2021-06-14 14:57:45 +05:30
##### Logos
2021-04-25 16:16:40 +02:00
```
2022-01-20 12:18:56 +01:00
Android, Arch, Arco, Artix, CachyOS, CentOS, Debian, Endeavour, Fedora, Garuda, Gentoo, Manjaro, Mint, Pop!_OS, Ubuntu, Void
2021-04-25 16:16:40 +02:00
```
2021-11-12 01:39:21 +01:00
* 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`.
2021-05-08 18:35:51 +02:00
2021-06-14 14:57:45 +05:30
##### Package managers
2021-04-25 16:16:40 +02:00
```
2022-02-12 12:06:16 +01:00
Pacman, dpkg, rpm, emerge, xbps, Flatpak, Snap
2021-04-25 16:16:40 +02:00
```
2021-06-14 14:57:45 +05:30
##### WM themes
2021-04-25 16:16:40 +02:00
```
2021-05-14 12:47:12 +02:00
KWin, Mutter, Muffin, Marco, XFWM, Openbox (LXDE, LXQT & without DE)
2021-04-25 16:16:40 +02:00
```
2021-06-14 14:57:45 +05:30
##### DE versions
2021-05-14 12:47:12 +02:00
```
2021-05-17 07:52:16 +02:00
KDE Plasma, Gnome, Cinnamon, Mate, XFCE4, LXQt
2021-05-14 12:47:12 +02:00
```
2021-06-14 14:57:45 +05:30
##### Terminal fonts
2021-04-25 16:16:40 +02:00
```
2021-05-19 19:43:16 +02:00
konsole, gnome-terminal-server, tilix, xfce4-terminal, lxterminal, TTY
2021-04-25 16:16:40 +02:00
```
2021-03-07 13:12:45 +01:00
## Building
2022-01-23 12:07:49 +01:00
fastfetch uses [`cmake`](https://cmake.org/) and [`pkg-config`](https://www.freedesktop.org/wiki/Software/pkg-config/) for building. The simplest steps to build the fastfetch and flashfetch binaries are:
```bash
2021-07-06 21:25:12 +02:00
mkdir -p build
cd build
cmake ..
2022-01-23 12:00:28 +01:00
cmake --build . -j$(nproc) --target fastfetch --target flashfetch
```
2022-01-23 12:00:28 +01:00
If pkg-config fails to find the headers for a library listed in [dependencies](#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.
2021-06-08 20:01:29 +02:00
2021-03-07 13:12:45 +01:00
## Packaging
2022-01-23 12:00:28 +01:00
* [AUR](https://aur.archlinux.org/packages/fastfetch-git/): Packaged by me. Will install the fastfetch binary, bash completion and the presets. Git version
* [Manjaro Repositories](https://gitlab.manjaro.org/packages/community/fastfetch): Packaged by a manjaro maintainer. Usually a bit outdated.
2022-01-23 12:08:58 +01:00
* DEB: You need to build deb packages yourself. Run [`packaging/deb/create-deb-pkg.sh`](packaging/deb/create-deb-pkg.sh) for that.
2022-01-23 12:00:28 +01:00
* Manually: Follow the [build instructions](#building). Then:
* Copy the binaries `build/fastfetch` and `build/flashfetch` to `/usr/local/bin/`.
* Copy the [bash completion](completions/bash) to `/usr/share/bash-completion/completions/fastfetch`.
* Copy the [presets](presets/) to `/usr/share/fastfetch/presets/`.
2021-03-07 13:12:45 +01:00
## 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?
2021-04-29 15:34:55 +02:00
> 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