Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
# fastfetch

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 is supported. Additional it uses mechanismen like multithreading and caching to finish as fast as possible.
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 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](screenshots/example.png)

## Customization

With customization and speed being two competing goals, this project actually builds two executables.
The main one being `fastfetch`, which can be greatly configured via flags. These flags even can be made persistant in `~/.config/fastfetch/config.conf`. To view the available options run `fastfetch --help`.
The second executable being build 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 lap will get bigger with more and more options coming and on slow machines this may actually make a difference.
The main one being `fastfetch`, which can be greatly configured via flags. These flags can even 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.

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.

## 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`](https://www.gnu.org/software/libc/) (`libc`, `libdl` and `libpthread` are actually used) which is automatically shipped with every linux system.
Following libraries are used if present:
The following libraries are used if present:
* [`libpci`](https://github.com/pciutils/pciutils): Needed for GPU output. _Should_ be available on every linux system.
* [`libX11`](https://gitlab.freedesktop.org/xorg/lib/libx11): Needed for resolution output
* [`libXrandr`](https://gitlab.freedesktop.org/xorg/lib/libxrandr): Needed for appending refresh rate to resolution output.
Expand All @@ -39,7 +39,7 @@ Pacman, Flatpak, xbps

### Window managers:
```
KWin, Mutter, Muffin, Openbox, Muffin, XFWM, Sway, Wayfire, Weston
KWin, Mutter, Muffin, Openbox, XFWM, Sway, Wayfire, Weston
```

### Window manager themes:
Expand All @@ -54,15 +54,15 @@ konsole, xfce4-terminal, TTY

## Building

fastfetch uses [`cmake`](https://cmake.org/) for building. The simplies steps to build the entire project are:
fastfetch uses [`cmake`](https://cmake.org/) for building. The simplest steps to build the entire project are:
```bash
mkdir -p build && \
cd build && \
cmake .. && \
cmake --build .
```

this will produce `build/fastfetch` and `build/flashfetch`, both standalone executables.
This will produce `build/fastfetch` and `build/flashfetch`, both standalone executables.
Command line completions for bash can be found in [`completions/bash`](completions/bash).

## Packaging
Expand All @@ -75,4 +75,4 @@ 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 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
> 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