config.phundrak.com/org/config/neofetch.org
Lucien Cartier-Tilet d4f11b612d
[Org, Emacs] Do not add spaces in front of code in src blocks
By default, org-mode will add two spaces before code lines in the org
file itself. This does not change how code is edited when editing a
code block through `org-edit-special' but when copy/pasting code or
editing it directly from the org file, it can be troublesome.
Setting `org-src-preserve-indentation' to `t' prevents org from adding
these two spaces.
2021-10-12 12:19:46 +02:00

16 KiB
Raw Blame History

Neofetch configuration

Introduction

Neofetch is a CLI utility used to display system information. It was written in Bash, and thus its configuration file is written as a Bash script too. This document was written with org-mode, and my configuration file is tangled from the source blocks you will see below to ~/.config/neofetch/config.conf. This configuration will only contain what I need. For any further information, please refer to the original repository and its documentation.

The print_info functions

The print_info function is the function called by Neofetch in order to print the system information it could fetch. In this function, well choose what to display, and how. This function looks like this:

print_info() {
    # Print information here…
}

Generally, what we will display will be shown through the info function, redefined inside Neofetch (this is not info(1)). This info function accepts one or two arguments. With one argument, such as with info memory, we can get a result that looks like 5136MiB / 15873MiB, while calling it with two arguments will treat the first one as a prefix and the second one as the interesting information; info "Memory" memory will look like Memory: 5136MiB / 15873MiB. Here is what we want to display:

Prefix Information What it does
title Username and hostname
line_break Insert a blank line
cols System theme
line_break Insert a blank line
Distro distro Distribution name
Kernel kernel Kernel version
Uptime uptime Machine uptime
Packages packages Number of installed packages
Shell shell Users default shell
WM wm Users Window Manager
Terminal term Default terminal
CPU cpu CPU information
GPU gpu GPU information
Memory memory RAM information
(mapconcat (lambda (x)
             (let ((prefix      (car x))
                   (information (cadr x)))
              (format "info %s%s"
                      (if (not (string= prefix ""))
                          (format "\"%s\" " prefix)
                        "")
                      information)))
           table
           "\n")
info title
info line_break
info cols
info line_break
info "Distro" distro
info "Kernel" kernel
info "Uptime" uptime
info "Packages" packages
info "Shell" shell
info "WM" wm
info "Terminal" term
info "CPU" cpu
info "GPU" gpu
info "Memory" memory

Hence, the function looks like so:

print_info() {
    <<info-elements-gen()>>
}

Each of these modules can be tuned with the variables presented below.

Information settings

Each of the following variable tunes a function that can be called in print_info described above. It is possible to tune them by modifying this document or the configuration file itself, and they can be overridden by the command line with flags passed to neofetch. I will divide these variables in two main categories: hardware and software-related properties.

Software

OS

Distro

This variable can shorten the output of the distro function.

Default value
"on"
Values
  • "on"
  • "off"
Flag
--distro_shorthand
Supports
Everything except Windows and Haiku
Examples
on
Arch Linux
off
Arch
distro_shorthand="off"

It is possible to display when the distro has been installed on the computer.

Distro art or image

By default, Neofetch will display ascii art next to our system information representing our distros logo. Well customize it a bit. First, lets change the backend value. Note that most of them (except off of course) support shorthands such as --kitty when passed as arguments from the command line. In my case, I will use the Kitty backend since it is the native backend of the terminal emulator I use.

Default value
"ascii"
Values
  • ascii
  • caca
  • catimg
  • chafa
  • jp2a
  • iterm2
  • off
  • pot
  • termpix
  • pixterm
  • tycat
  • w3m
  • kitty
  • ueberzug
  • viu
flag
--backend
image_backend="kitty"

Now, since I indicated I wanted an image engine, Ill indicate neofetch which image to find. Note that auto will pick the best image source for whatever image backend is used. In ascii mode, distro ascii art will be used and in an image mode, your wallpaper will be used.

Default value
auto
Values
  • auto
  • ascii
  • wallpaper
  • /path/to/img
  • /path/to/ascii
  • /path/to/dir/
  • command output (neofetch --ascii "$(fortune | cowsay -W 30)")
Flag
--source
image_source="$HOME/org/config/img/leon.png"

The default image size will probably not be correct since it is half the terminal width and I have an ultrawide monitor, so Ill need to set it manually.

Default value
auto
Values
  • auto
  • 00px
  • 00%
  • none
Flag
--image-size or --size
image_size="224px"
Kernel

The variable below can shorten the output ofh the kernel function.

Default value
"on"
Values
  • "on"
  • "off"
Flag
--kernel_shorthand
Supports
Everything except *BSDs (except PacBSD and PC-BSD)
Examples
on
4.8.9-1-ARCH
off
Linux 4.8.9-1-ARCH
kernel_shorthand="off"
OS Architecture

This variable can show or hide the OS architecture in the distro output.

Default value
"off"
Values
  • "on"
  • "off"
Flag
--os_arch
Examples
on
Arch Linux x86_64
off
Arch Linux
os_arch="off"
Packages

It is possible to show or hide Package Manager names.

Default
'tiny'
Values
'on' / 'tiny' / 'off'
Flag
--package_managers
Example
on
'998 (pacman), 8 (flatpak), 4 (snap)'
tiny
'908 (pacman, flatpak, snap)'
off
'908'
package_managers="on"
Shell
Shell path

This allows to show either the path of the users shell, or simply its name.

Default value
"off"
Values
  • "on"
  • "off"
Flag
--shell_path
Examples
on
/bin/bash
off
bash
 shell_path="off"
Shell version

This allows to show the shells version in the output of shell.

Default value
"on"
Values
  • "on"
  • "off"
Flag
--shell_version
Examples
on
bash 4.4.5
off
bash
shell_version="off"

Uptime

This variable can shorten the output of the uptime function. on shortens it a bit, while tiny shortens it greatly.

Default value
"on"
Values
  • "on"
  • "tiny"
  • "off"
Flag
--uptime_shorthand
Examples
on
2 days, 10 hours, 3 mins
off
2 days, 10 hours, 3 minutes
tiny
2d 10h 3m
uptime_shorthand="on"

IP address

It is possible to display the machines public IP address with the function ip. The value below allows the user to change the website used to fetch it.

Default value
"http://ident.me"
Value
"url"
Flag
--ip_host
public_ip_host="http://ident.me"

Theming

This section will allow the user to modify what Neofetch can and cannot display about the machines theming —by this, I mean its GTK theme, its icons and its default font.

Shorten output

With this value, it is possible to shorten the output of the computers theming.

Default value
"off"
Values
  • "on"
  • "off"
Flag
--gtk_shorthand
Examples
on
Numix, Adwaita
off
Numix [GTK2], Adwaita [GTK3]
gtk_shorthand="on"
Enable or disable theming display for GTK2

It is possible to explicitely show or hide the computers theming with GTK2 with this variable.

Default value
"on"
Values
  • "on"
  • "off"
Flag
--gtk2
Examples
on
Numix [GTK2], Adwaita [GTK3]
off
Adwaita [GTK3]
gtk2="off"
Enable or disable theming display for GTK3

The same variable as above is also available for GTK3.

Default value
"on"
Values
  • "on"
  • "off"
Flag
--gtk3
Examples
on
Numix [GTK2], Adwaita [GTK3]
off
Numix [GTK2]
gtk3="off"

Hardware

CPU

CPU brand

With this variables, it is possible to show or hide the brand of a CPU in the cpu output.

Default value
"on"
Values
  • "on"
  • "off"
Flag
--cpu_brand
Examples
on
Intel i7-6500U
off
i7-6500U
cpu_brand="off"
CPU speed

With this variable, it is possible to show or hide the speed of the CPU.

Default value
"on"
Values
  • "on"
  • "off"
Flag
--cpu_speed
Examples
on
Intel i7-6500U (4) @ 3.1GHz
off
Intel i7-6500U (4)
cpu_speed="off"
CPU speed type

This allows Neofetch to know what type of speed it has to fetch regarding the machines CPU. Any file in /sys/devices/system/cpu/cpu0/cpufreq can be used as a value.

Default value
"bios_limit"
Values
  • "scaling_cur_freq"
  • "scaling_min_freq"
  • "scaling_max_freq"
  • "bios_limit"
Flag
--speed_type
Supports
Linux with cpufreq
speed_type="bios_limit"
CPU speed shorthand

This value allows to show sorter CPU speed with less digits. This flag is not supported in systems with CPU speed below 1GHz.

Default value
"off"
Values
  • "on"
  • "on"
Flag
--speed_shorthand
Examples
on
i7-6500U (4) @ 3.1GHz
off
i7-6500U (4) @ 3.100GHz
speed_shorthand="on"
CPU cores

With this variable, it is possible to display the number of cores that are available in the CPU.

Default value
"logical"
Values
  • "logical"
  • "physical"
  • "off"
Flag
--cpu_cores
Supports
physical does not work on BSD.
Examples
logical
Intel i7-6500U (4) @ 3.1GHz (All virtual cores)
physical
Intel i7-6500U (2) @ 3.1GHz (All physical cores)
off
Intel i7-6500U @ 3.1GHz
cpu_cores="off"
CPU temperature

This variable allows the user to hide or show the CPUs temperature, and if shown, the user can display it in Celcius or Farenheit degrees. For FreeBSD and NetBSD-based systems, youll need to enable the coretemp kernel module. This only supports newer Intel processors.

Default value
"off"
Values
  • "C"
  • "F"
  • "off"
Flag
--cpu_temp
Supports
Linux, BSD
Examples
C
Intel i7-6500U (4) @ 3.1GHz [27.2°C]
F
Intel i7-6500U (4) @ 3.1GHz [82.0°F]
off
Intel i7-6500U (4) @ 3.1GHz
cpu_temp="off"

GPU

The function responsible for displaying information regarding the GPUs is gpu. It will try to list all available GPUs and display what it knows about them.

GPU brand

This value allows the user to hide or show the brand of their GPU in the output of gpu.

Default value
"on"
Values
  • "on"
  • "off"
Flag
--gpu_brand
Supports
Examples
on
AMD HD 7950
off
HD 7950
gpu_brand="off"
Which GPU to display

This allows the user to choose which GPU appears in the output of the function gpu.

Default value
"all"
Values
  • "all"
  • "dedicated"
  • "integrated"
Flag
--gpu_type
Supports
Linux
Examples
all
GPU1: AMD HD 7950
GPU2: Intel Integrated Graphics
dedicated
GPU1: AMD HD 7950
integrated
GPU1: Intel Integrated Graphics
gpu_type="all"

Resolution

This will try to list all the connected screens and display their resolution individually. It is possible to display the refresh rate or to hide it.

Default value
"off"
Values
  • "on"
  • "off"
Flag
--refresh_rate
Supports
Does not work on Windows
Examples
on
1920x1080 @ 60Hz
off
1920x1080
refresh_rate="off"