Lucien Cartier-Tilet
3354f79554
All checks were successful
deploy / build (push) Successful in 3m41s
484 lines
13 KiB
Org Mode
484 lines
13 KiB
Org Mode
#+title: Neofetch
|
||
#+setupfile: headers
|
||
#+PROPERTY: header-args :noweb yes :exports code :tangle no :exports none
|
||
#+PROPERTY: header-args:sh :tangle ~/.config/neofetch/config.conf :exports code
|
||
#+PROPERTY: header-args:sh+ :noweb yes :padline no :mkdirp yes
|
||
|
||
* Neofetch
|
||
[[https://github.com/dylanaraps/neofetch][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
|
||
[[https://github.com/dylanaraps/neofetch][original repository]] and [[https://github.com/dylanaraps/neofetch/wiki/Customizing-Info][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, we’ll
|
||
choose what to display, and how. This function looks like this:
|
||
#+BEGIN_SRC sh :tangle no
|
||
print_info() {
|
||
# Print information here…
|
||
}
|
||
#+END_SRC
|
||
|
||
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:
|
||
#+NAME: info-elements-table
|
||
| 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 | User’s default shell |
|
||
| WM | wm | User’s Window Manager |
|
||
| Terminal | term | Default terminal |
|
||
| CPU | cpu | CPU information |
|
||
| GPU | gpu | GPU information |
|
||
| Memory | memory | RAM information |
|
||
|
||
#+NAME: info-elements-gen
|
||
#+BEGIN_SRC emacs-lisp :var table=info-elements-table :cache yes
|
||
(mapconcat (lambda (x)
|
||
(let ((prefix (car x))
|
||
(information (cadr x)))
|
||
(format "info %s%s"
|
||
(if (not (string= prefix ""))
|
||
(format "\"%s\" " prefix)
|
||
"")
|
||
information)))
|
||
table
|
||
"\n")
|
||
#+END_SRC
|
||
|
||
#+RESULTS[83eb4aaa554df955ad996157d911eec3a9251628]: info-elements-gen
|
||
#+begin_example
|
||
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
|
||
#+end_example
|
||
|
||
Hence, the function looks like so:
|
||
#+BEGIN_SRC sh
|
||
print_info() {
|
||
<<info-elements-gen()>>
|
||
}
|
||
#+END_SRC
|
||
|
||
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~
|
||
#+begin_src sh
|
||
distro_shorthand="off"
|
||
#+end_src
|
||
|
||
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 distro’s logo. We’ll customize it a bit.
|
||
First, let’s 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~
|
||
#+BEGIN_SRC sh
|
||
image_backend="kitty"
|
||
#+END_SRC
|
||
|
||
Now, since I indicated I wanted an image engine, I’ll 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~
|
||
#+BEGIN_SRC sh
|
||
image_source="$HOME/org/config/img/leon.png"
|
||
#+END_SRC
|
||
|
||
The default image size will probably not be correct since it is half the
|
||
terminal width and I have an ultrawide monitor, so I’ll need to set it manually.
|
||
- Default value :: ~auto~
|
||
- Values ::
|
||
- ~auto~
|
||
- ~00px~
|
||
- ~00%~
|
||
- ~none~
|
||
- Flag :: ~--image-size~ or ~--size~
|
||
#+BEGIN_SRC sh
|
||
image_size="224px"
|
||
#+END_SRC
|
||
|
||
***** 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~
|
||
#+begin_src sh
|
||
kernel_shorthand="off"
|
||
#+end_src
|
||
|
||
***** 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~
|
||
#+begin_src sh
|
||
os_arch="off"
|
||
#+end_src
|
||
|
||
***** 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'~
|
||
#+BEGIN_SRC sh
|
||
package_managers="on"
|
||
#+END_SRC
|
||
|
||
***** Shell
|
||
****** Shell path
|
||
This allows to show either the path of the user’s shell, or simply its name.
|
||
- Default value :: ~"off"~
|
||
- Values ::
|
||
- ~"on"~
|
||
- ~"off"~
|
||
- Flag :: ~--shell_path~
|
||
- Examples ::
|
||
- on :: ~/bin/bash~
|
||
- off :: ~bash~
|
||
#+begin_src sh
|
||
shell_path="off"
|
||
#+end_src
|
||
|
||
****** Shell version
|
||
This allows to show the shell’s version in the output of ~shell~.
|
||
- Default value :: ~"on"~
|
||
- Values ::
|
||
- ~"on"~
|
||
- ~"off"~
|
||
- Flag :: ~--shell_version~
|
||
- Examples ::
|
||
- on :: ~bash 4.4.5~
|
||
- off :: ~bash~
|
||
#+begin_src sh
|
||
shell_version="off"
|
||
#+end_src
|
||
|
||
**** 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~
|
||
#+begin_src sh
|
||
uptime_shorthand="on"
|
||
#+end_src
|
||
|
||
**** IP address
|
||
It is possible to display the machine’s 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~
|
||
#+begin_src sh
|
||
public_ip_host="http://ident.me"
|
||
#+end_src
|
||
|
||
**** Theming
|
||
This section will allow the user to modify what Neofetch can and cannot display
|
||
about the machine’s 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 computer’s theming.
|
||
- Default value :: ~"off"~
|
||
- Values ::
|
||
- ~"on"~
|
||
- ~"off"~
|
||
- Flag :: ~--gtk_shorthand~
|
||
- Examples ::
|
||
- on :: ~Numix, Adwaita~
|
||
- off :: ~Numix [GTK2], Adwaita [GTK3]~
|
||
#+begin_src sh
|
||
gtk_shorthand="on"
|
||
#+end_src
|
||
|
||
***** Enable or disable theming display for GTK2
|
||
It is possible to explicitely show or hide the computer’s theming with GTK2 with
|
||
this variable.
|
||
- Default value :: ~"on"~
|
||
- Values ::
|
||
- ~"on"~
|
||
- ~"off"~
|
||
- Flag :: ~--gtk2~
|
||
- Examples ::
|
||
- on :: ~Numix [GTK2], Adwaita [GTK3]~
|
||
- off :: ~Adwaita [GTK3]~
|
||
#+begin_src sh
|
||
gtk2="off"
|
||
#+end_src
|
||
|
||
***** 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]~
|
||
#+begin_src sh
|
||
gtk3="off"
|
||
#+end_src
|
||
|
||
*** Hardware
|
||
**** CPU
|
||
***** CPU brand
|
||
With these 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~
|
||
#+begin_src sh
|
||
cpu_brand="off"
|
||
#+end_src
|
||
|
||
***** 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)~
|
||
#+begin_src sh
|
||
cpu_speed="off"
|
||
#+end_src
|
||
|
||
***** CPU speed type
|
||
This allows Neofetch to know what type of speed it has to fetch regarding the
|
||
machine’s 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~
|
||
#+begin_src sh
|
||
speed_type="bios_limit"
|
||
#+end_src
|
||
|
||
***** CPU speed shorthand
|
||
This value allows showing sorter CPU speed with fewer 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~
|
||
#+begin_src sh
|
||
speed_shorthand="on"
|
||
#+end_src
|
||
|
||
***** 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~
|
||
#+begin_src sh
|
||
cpu_cores="off"
|
||
#+end_src
|
||
|
||
***** CPU temperature
|
||
This variable allows the user to hide or show the CPU’s temperature,
|
||
and if shown, the user can display it in Celsius or Fahrenheit
|
||
degrees. For FreeBSD and NetBSD-based systems, you’ll 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~
|
||
#+begin_src sh
|
||
cpu_temp="off"
|
||
#+end_src
|
||
|
||
**** 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~
|
||
#+begin_src sh
|
||
gpu_brand="off"
|
||
#+end_src
|
||
|
||
***** 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 ::
|
||
#+BEGIN_SRC text
|
||
GPU1: AMD HD 7950
|
||
GPU2: Intel Integrated Graphics
|
||
#+END_SRC
|
||
- dedicated :: ~GPU1: AMD HD 7950~
|
||
- integrated :: ~GPU1: Intel Integrated Graphics~
|
||
#+begin_src sh
|
||
gpu_type="all"
|
||
#+end_src
|
||
|
||
**** 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~
|
||
#+begin_src sh
|
||
refresh_rate="off"
|
||
#+end_src
|