524 lines
16 KiB
Org Mode
524 lines
16 KiB
Org Mode
# -*- org-confirm-babel-evaluate: nil -*-
|
||
#+title: Neofetch configuration (WIP)
|
||
#+INCLUDE: headers
|
||
#+OPTIONS: auto-id:t
|
||
#+HTML_HEAD_EXTRA: <meta name="description" content="Phundrak's Neofetch config" />
|
||
#+HTML_HEAD_EXTRA: <meta property="og:title" content="Phundrak's Neofetch config" />
|
||
#+HTML_HEAD_EXTRA: <meta property="og:description" content="Description of the Neofetch config file of Phundrak" />
|
||
#+PROPERTY: header-args :noweb yes :exports code :tangle no :exports none
|
||
#+PROPERTY: header-args:sh :tangle ~/.config/neofetch/config.conf.bak :exports code :noweb yes
|
||
#+STARTUP: content
|
||
# #+INFOJS_OPT: view:plain home:https://phundrak.com/config toc:t
|
||
#+INFOJS_OPT: up:https://phundrak.com/config/neofetch
|
||
|
||
* Introduction
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Introduction-a7a859ac
|
||
:END:
|
||
[[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=.
|
||
First, let’s insert the Emacs config header in order to specify the mode to
|
||
open the file with.
|
||
#+BEGIN_SRC sh
|
||
# -*- mode: sh -*-
|
||
#+END_SRC
|
||
|
||
* The ~print_info~ functions
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: The_~print_info~_functions-afbafdc3
|
||
:END:
|
||
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
|
||
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 |
|
||
|----------+-------------+------------------------------|
|
||
| | line_break | Insert a blank line |
|
||
| | title | Username and hostname |
|
||
| | line_break | Insert a blank line |
|
||
| | cols | System theme |
|
||
| | line_break | Insert a blank line |
|
||
| OS | 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)
|
||
(format "info %s%s"
|
||
(if (not (string= (car x) ""))
|
||
(format "\"%s\" " (car x))
|
||
"")
|
||
(cadr x)))
|
||
table
|
||
"\n")
|
||
#+END_SRC
|
||
|
||
#+RESULTS[b674f32b66234a67929a0426ce187ce712d806f4]: info-elements-gen
|
||
#+begin_example
|
||
info line_break
|
||
info title
|
||
info line_break
|
||
info cols
|
||
info line_break
|
||
info "OS" 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
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-7d3a990e
|
||
:END:
|
||
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
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Software-7b13b829
|
||
:END:
|
||
*** OS
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Software-OS-7019c112
|
||
:END:
|
||
**** Kernel
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Software-OS-Kernel-df1062f0
|
||
:END:
|
||
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
|
||
|
||
**** Distro
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Software-OS-Distro-3c8118d9
|
||
:END:
|
||
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
|
||
|
||
**** OS Architecture
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Software-OS-OS_Architecture-1164eea9
|
||
:END:
|
||
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
|
||
|
||
*** Uptime shorthand
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Software-Uptime_shorthand-70ff185a
|
||
:END:
|
||
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
|
||
|
||
*** Shell
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Software-Shell-b958db2a
|
||
:END:
|
||
**** Shell path
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Software-Shell-Shell_path-fff91e35
|
||
:END:
|
||
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
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Software-Shell-Shell_version-a1702748
|
||
:END:
|
||
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
|
||
|
||
*** Theming
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Software-Theming-44dc624d
|
||
:END:
|
||
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
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Software-Theming-Shorten_output-bdb4af3f
|
||
:END:
|
||
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
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Software-Theming-Enable_or_disable_theming_display_for_GTK2-6bfd9cf8
|
||
:END:
|
||
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
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Software-Theming-Enable_or_disable_theming_display_for_GTK3-7dde3690
|
||
:END:
|
||
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
|
||
#+end_src
|
||
|
||
*** IP address
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Software-IP_address-66efe064
|
||
:END:
|
||
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
|
||
|
||
- Default value :: ~""~
|
||
- Values ::
|
||
- ~""~
|
||
- ~""~
|
||
- Flag :: ~""~
|
||
- Supports ::
|
||
- Examples ::
|
||
- on :: ~~
|
||
- off :: ~~
|
||
#+begin_src sh
|
||
#+end_src
|
||
|
||
** Hardware
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Hardware-490075ce
|
||
:END:
|
||
*** CPU
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Hardware-CPU-dfa36b11
|
||
:END:
|
||
|
||
**** CPU brand
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Hardware-CPU-CPU_brand-12ceb9ce
|
||
:END:
|
||
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~
|
||
#+begin_src sh
|
||
cpu_brand="off"
|
||
#+end_src
|
||
|
||
**** CPU speed
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Hardware-CPU-CPU_speed-86e4ea04
|
||
:END:
|
||
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
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Hardware-CPU-CPU_speed_type-4380a471
|
||
:END:
|
||
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
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Hardware-CPU-CPU_speed_shorthand-8000dc1f
|
||
:END:
|
||
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~
|
||
#+begin_src sh
|
||
speed_shorthand="on"
|
||
#+end_src
|
||
|
||
**** CPU cores
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Hardware-CPU-CPU_cores-66e72a57
|
||
:END:
|
||
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
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Hardware-CPU-CPU_temperature-c79fb1a1
|
||
:END:
|
||
This variable allows the user to hide or show the CPU’s temperature, and if
|
||
shown, the user can display it in Celcius or Farenheit 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
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Hardware-GPU-f9450397
|
||
:END:
|
||
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
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Hardware-GPU-GPU_brand-c8d3c67d
|
||
:END:
|
||
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
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Hardware-GPU-Which_GPU_to_display-a6f72453
|
||
:END:
|
||
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
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Hardware-Resolution-f8a0316b
|
||
:END:
|
||
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
|
||
|
||
*** Disks
|
||
:PROPERTIES:
|
||
:CUSTOM_ID: Information_settings-Hardware-Disks-48e9e728
|
||
:END:
|
||
Neofetch can display the space available and the total space of disks
|