diff --git a/neofetch b/neofetch
index 62b82ea4..315f4c7a 100755
--- a/neofetch
+++ b/neofetch
@@ -158,7 +158,7 @@ uptime_shorthand="on"
 # Memory
 
 
-# Show memory pecentage in output.
+# Show memory percentage in output.
 #
 # Default: 'off'
 # Values:  'on', 'off'
@@ -780,42 +780,42 @@ image_source="auto"
 # Default: 'auto'
 # Values:  'auto', 'distro_name'
 # Flag:    --ascii_distro
-# NOTE: AIX, Hash, Alpine, AlterLinux, Amazon, Anarchy, Android, instantOS,
+# NOTE: AIX, Hash, Alpine, AlterLinux, Amazon, AmogOS, Anarchy, Android, instantOS,
 #       Antergos, antiX, "AOSC OS", "AOSC OS/Retro", Apricity, ArchCraft,
 #       ArcoLinux, ArchBox, ARCHlabs, ArchStrike, XFerience, ArchMerge, Arch,
 #       Artix, Arya, Bedrock, Bitrig, BlackArch, BLAG, BlankOn, BlueLight,
 #       bonsai, BSD, BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS,
 #       Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover, Condres,
-#       Container_Linux, CRUX, Cucumber, dahlia, Debian, Deepin, DesaOS,
-#       Devuan, DracOS, DarkOs, Itc, DragonFly, Drauger, Elementary,
+#       Container_Linux, CrystalUX, CRUX, Cucumber, dahlia, Debian, Deepin,
+#       DesaOS, Devuan, DracOS, DarkOs, Itc, DragonFly, Drauger, Elementary,
 #       EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD,
 #       FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo,
-#       gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra,
-#       Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion, Korora,
+#       gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra, HydroOS
+#       Hyperbola, iglunix, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion, Korora,
 #       KSLinux, Kubuntu, LEDE, LaxerOS, LibreELEC, LFS, Linux_Lite, LMDE,
-#       Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva, Manjaro, Maui,
+#       Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva, Manjaro, TeArch, Maui,
 #       Mer, Minix, LinuxMint, Live_Raizo, MX_Linux, Namib, Neptune, NetBSD,
 #       Netrunner, Nitrux, NixOS, Nurunner, NuTyX, OBRevenge, OpenBSD,
 #       openEuler, OpenIndiana, openmamba, OpenMandriva, OpenStage, OpenWrt,
 #       osmc, Oracle, OS Elbrus, PacBSD, Parabola, Pardus, Parrot, Parsix,
-#       TrueOS, PCLinuxOS, Pengwin, Peppermint, popos, Porteus, PostMarketOS,
-#       Proxmox, Puppy, PureOS, Qubes, Quibian, Radix, Raspbian, Reborn_OS,
-#       Redstar, Redcore, Redhat, Refracted_Devuan, Regata, Regolith, Rosa,
-#       sabotage, Sabayon, Sailfish, SalentOS, Scientific, Septor,
-#       SereneLinux, SharkLinux, Siduction, Slackware, SliTaz, SmartOS,
+#       TrueOS, PCLinuxOS, Pengwin, Peppermint, Pisi, popos, Porteus, PostMarketOS,
+#       Proxmox, PuffOS, Puppy, PureOS, Qubes, Quibian, Radix, Raspbian,
+#       Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan, Regata, Regolith,
+#       Rocky, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific, Septor,
+#       SereneLinux, SharkLinux, Siduction, SkiffOS, Slackware, SliTaz, SmartOS,
 #       Solus, Source_Mage, Sparky, Star, SteamOS, SunOS, openSUSE_Leap, t2,
 #       openSUSE_Tumbleweed, openSUSE, SwagArch, Tails, Trisquel,
 #       Ubuntu-Cinnamon, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE,
 #       Ubuntu-Studio, Ubuntu, Univention, Venom, Void, semc, Obarun,
 #       windows10, Windows7, Xubuntu, Zorin, and IRIX have ascii logos.
-# NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants.
+# NOTE: Arch, Ubuntu, Redhat, Fedora and Dragonfly have 'old' logo variants.
 #       Use '{distro name}_old' to use the old logos.
 # NOTE: Ubuntu has flavor variants.
 #       Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME,
 #       Ubuntu-Studio, Ubuntu-Mate  or Ubuntu-Budgie to use the flavors.
 # NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu,
 #       CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android,
-#       Antrix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola,
+#       Artix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola,
 #       Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS,
 #       Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian,
 #       postmarketOS, and Void have a smaller logo variant.
@@ -971,7 +971,7 @@ get_distro() {
 
     case $os in
         Linux|BSD|MINIX)
-            if [[ -f /bedrock/etc/bedrock-release && $PATH == */bedrock/cross/* ]]; then
+            if [[ -f /bedrock/etc/bedrock-release && -z $BEDROCK_RESTRICT ]]; then
                 case $distro_shorthand in
                     on|tiny) distro="Bedrock Linux" ;;
                     *) distro=$(< /bedrock/etc/bedrock-release)
@@ -1115,6 +1115,7 @@ get_distro() {
                         tiny) distro="Chrome OS" ;;
                         *)    distro+=" on Chrome OS" ;;
                     esac
+                    distro=${distro## on }
             fi
 
             distro=$(trim_quotes "$distro")
@@ -1123,12 +1124,12 @@ get_distro() {
             # Get Ubuntu flavor.
             if [[ $distro == "Ubuntu"* ]]; then
                 case $XDG_CONFIG_DIRS in
+                    *"studio"*)   distro=${distro/Ubuntu/Ubuntu Studio} ;;
                     *"plasma"*)   distro=${distro/Ubuntu/Kubuntu} ;;
                     *"mate"*)     distro=${distro/Ubuntu/Ubuntu MATE} ;;
                     *"xubuntu"*)  distro=${distro/Ubuntu/Xubuntu} ;;
                     *"Lubuntu"*)  distro=${distro/Ubuntu/Lubuntu} ;;
                     *"budgie"*)   distro=${distro/Ubuntu/Ubuntu Budgie} ;;
-                    *"studio"*)   distro=${distro/Ubuntu/Ubuntu Studio} ;;
                     *"cinnamon"*) distro=${distro/Ubuntu/Ubuntu Cinnamon} ;;
                 esac
             fi
@@ -1150,6 +1151,7 @@ get_distro() {
                 10.15*) codename="macOS Catalina" ;;
                 10.16*) codename="macOS Big Sur" ;;
                 11.0*)  codename="macOS Big Sur" ;;
+                12.0*)  codename="macOS Monterey" ;;
                 *)      codename=macOS ;;
             esac
 
@@ -1263,9 +1265,11 @@ get_model() {
                 iPad6,1[12]):        "iPad 5" ;;
                 iPad7,[5-6]):        "iPad 6" ;;
                 iPad7,1[12]):        "iPad 7" ;;
+                iPad11,[67]):        "iPad 8" ;;
                 iPad4,[1-3]):        "iPad Air" ;;
                 iPad5,[3-4]):        "iPad Air 2" ;;
                 iPad11,[3-4]):       "iPad Air 3" ;;
+                iPad13,[1-2]):       "iPad Air 4";;
                 iPad6,[7-8]):        "iPad Pro (12.9 Inch)" ;;
                 iPad6,[3-4]):        "iPad Pro (9.7 Inch)" ;;
                 iPad7,[1-2]):        "iPad Pro 2 (12.9 Inch)" ;;
@@ -1305,6 +1309,10 @@ get_model() {
                 iPhone12,3):    "iPhone 11 Pro" ;;
                 iPhone12,5):    "iPhone 11 Pro Max" ;;
                 iPhone12,8):    "iPhone SE 2020" ;;
+                iPhone13,1):    "iPhone 12 Mini" ;;
+                iPhone13,2):    "iPhone 12" ;;
+                iPhone13,3):    "iPhone 12 Pro" ;;
+                iPhone13,4):    "iPhone 12 Pro Max" ;;
 
                 iPod1,1): "iPod touch" ;;
                 ipod2,1): "iPod touch 2G" ;;
@@ -1312,6 +1320,7 @@ get_model() {
                 ipod4,1): "iPod touch 4G" ;;
                 ipod5,1): "iPod touch 5G" ;;
                 ipod7,1): "iPod touch 6G" ;;
+                iPod9,1): "iPod touch 7G" ;;
             esac
 
             model=$_
@@ -1498,22 +1507,32 @@ get_packages() {
     # pac: If packages > 0, log package manager name.
     # tot: Count lines in command output.
     has() { type -p "$1" >/dev/null && manager=$1; }
-    dir() { ((packages+=$#)); pac "$(($#-pkgs_h))"; }
+    # globbing is intentional here
+    # shellcheck disable=SC2206
+    dir() { pkgs=($@); ((packages+=${#pkgs[@]})); pac "$((${#pkgs[@]}-pkgs_h))"; }
     pac() { (($1 > 0)) && { managers+=("$1 (${manager})"); manager_string+="${manager}, "; }; }
     tot() {
-	IFS=$'\n' read -d "" -ra pkgs <<< "$("$@")";
-	((packages+=${#pkgs[@]}));
-	pac "$((${#pkgs[@]}-pkgs_h))";
+        IFS=$'\n' read -d "" -ra pkgs <<< "$("$@")";
+        ((packages+=${#pkgs[@]}));
+        pac "$((${#pkgs[@]}-pkgs_h))";
     }
 
-    # Redefine tot() for Bedrock Linux.
+    # Redefine tot() and dir() for Bedrock Linux.
     [[ -f /bedrock/etc/bedrock-release && $PATH == */bedrock/cross/* ]] && {
+        br_strata=$(brl list)
         tot() {
-            IFS=$'\n' read -d "" -ra pkgs <<< "$(for s in $(brl list); do strat -r "$s" "$@"; done)"
+            IFS=$'\n' read -d "" -ra pkgs <<< "$(for s in ${br_strata}; do strat -r "$s" "$@"; done)"
             ((packages+="${#pkgs[@]}"))
-	    pac "$((${#pkgs[@]}-pkgs_h))";
+            pac "$((${#pkgs[@]}-pkgs_h))";
+        }
+        dir() {
+            local pkgs=()
+            # globbing is intentional here
+            # shellcheck disable=SC2206
+            for s in ${br_strata}; do pkgs+=(/bedrock/strata/$s/$@); done
+            ((packages+=${#pkgs[@]}))
+            pac "$((${#pkgs[@]}-pkgs_h))"
         }
-        br_prefix="/bedrock/strata/*"
     }
 
     case $os in
@@ -1522,8 +1541,7 @@ get_packages() {
             has kiss       && tot kiss l
             has cpt-list   && tot cpt-list
             has pacman-key && tot pacman -Qq --color never
-            has apt        && tot apt list
-            has rpm        && tot rpm -qa
+            has dpkg       && pac "$(dpkg --list | grep -c ^ii)"
             has xbps-query && tot xbps-query -l
             has apk        && tot apk info
             has opkg       && tot opkg list-installed
@@ -1536,6 +1554,14 @@ get_packages() {
             has alps       && tot alps showinstalled
             has butch      && tot butch list
             has swupd      && tot swupd bundle-list --quiet
+            has pisi       && tot pisi li
+
+            # Using the dnf package cache is much faster than rpm.
+            if has dnf && type -p sqlite3 >/dev/null && [[ -f /var/cache/dnf/packages.db ]]; then
+                pac "$(sqlite3 /var/cache/dnf/packages.db "SELECT count(pkg) FROM installed")"
+            else
+                has rpm && tot rpm -qa
+            fi
 
             # 'mine' conflicts with minesweeper games.
             [[ -f /etc/SDE-VERSION ]] &&
@@ -1547,16 +1573,16 @@ get_packages() {
             # shellcheck disable=SC2086
             {
             shopt -s nullglob
-            has brew    && dir "$(brew --cellar)"/*
-            has emerge  && dir ${br_prefix}/var/db/pkg/*/*/
-            has Compile && dir ${br_prefix}/Programs/*/
-            has eopkg   && dir ${br_prefix}/var/lib/eopkg/package/*
-            has crew    && dir ${br_prefix}/usr/local/etc/crew/meta/*.filelist
-            has pkgtool && dir ${br_prefix}/var/log/packages/*
-            has scratch && dir ${br_prefix}/var/lib/scratchpkg/index/*/.pkginfo
-            has kagami  && dir ${br_prefix}/var/lib/kagami/pkgs/*
-            has cave    && dir ${br_prefix}/var/db/paludis/repositories/cross-installed/*/data/*/ \
-                               ${br_prefix}/var/db/paludis/repositories/installed/data/*/
+            has brew    && dir "$(brew --cellar)/* $(brew --caskroom)/*"
+            has emerge  && dir "/var/db/pkg/*/*"
+            has Compile && dir "/Programs/*/"
+            has eopkg   && dir "/var/lib/eopkg/package/*"
+            has crew    && dir "${CREW_PREFIX:-/usr/local}/etc/crew/meta/*.filelist"
+            has pkgtool && dir "/var/log/packages/*"
+            has scratch && dir "/var/lib/scratchpkg/index/*/.pkginfo"
+            has kagami  && dir "/var/lib/kagami/pkgs/*"
+            has cave    && dir "/var/db/paludis/repositories/cross-installed/*/data/*/ \
+                               /var/db/paludis/repositories/installed/data/*/"
             shopt -u nullglob
             }
 
@@ -1601,7 +1627,7 @@ get_packages() {
             # Snap hangs if the command is run without the daemon running.
             # Only run snap if the daemon is also running.
             has snap && ps -e | grep -qFm 1 snapd >/dev/null && \
-		pkgs_h=1 tot snap list && ((packages-=1))
+            pkgs_h=1 tot snap list && ((packages-=1))
 
             # This is the only standard location for appimages.
             # See: https://github.com/AppImage/AppImageKit/wiki
@@ -1610,8 +1636,9 @@ get_packages() {
 
         "Mac OS X"|"macOS"|MINIX)
             has port  && pkgs_h=1 tot port installed && ((packages-=1))
-            has brew  && dir /usr/local/Cellar/*
+            has brew  && dir "$(brew --cellar)/* $(brew --caskroom)/*"
             has pkgin && tot pkgin list
+            has dpkg  && tot dpkg-query -f '.\n' -W
 
             has nix-store && {
                 nix-user-pkgs() {
@@ -1619,7 +1646,7 @@ get_packages() {
                     nix-store -qR /etc/profiles/per-user/"$USER"
                 }
                 manager=nix-system && tot nix-store -qR /run/current-system/sw
-                manager=nix-user   && tot nix-store -qR nix-user-pkgs
+                manager=nix-user   && tot nix-user-pkgs
             }
         ;;
 
@@ -1637,7 +1664,7 @@ get_packages() {
             # Scoop environment throws errors if `tot scoop list` is used
             has scoop && pkgs_h=1 dir ~/scoop/apps/* && ((packages-=1))
 
-	    # Count chocolatey packages.
+            # Count chocolatey packages.
             [[ -d /cygdrive/c/ProgramData/chocolatey/lib ]] && \
                 dir /cygdrive/c/ProgramData/chocolatey/lib/*
         ;;
@@ -1645,7 +1672,7 @@ get_packages() {
         Haiku)
             has pkgman && dir /boot/system/package-links/*
             packages=${packages/pkgman/depot}
-	;;
+        ;;
 
         IRIX)
             manager=swpkg
@@ -1763,7 +1790,7 @@ get_de() {
             ((wm_run != 1)) && get_wm
 
             # Temporary support for Regolith Linux
-            if [[ $DESKTOP_SESSION == regolith ]]; then
+            if [[ $DESKTOP_SESSION == *regolith ]]; then
                 de=Regolith
 
             elif [[ $XDG_CURRENT_DESKTOP ]]; then
@@ -1816,7 +1843,7 @@ get_de() {
             Xfce*)     de_ver=$(xfce4-session --version) ;;
             GNOME*)    de_ver=$(gnome-shell --version) ;;
             Cinnamon*) de_ver=$(cinnamon --version) ;;
-            Deepin*)   de_ver=$(awk -F'=' '/Version/ {print $2}' /etc/deepin-version) ;;
+            Deepin*)   de_ver=$(awk -F'=' '/MajorVersion/ {print $2}' /etc/os-version) ;;
             Budgie*)   de_ver=$(budgie-desktop --version) ;;
             LXQt*)     de_ver=$(lxqt-session --version) ;;
             Lumina*)   de_ver=$(lumina-desktop --version 2>&1) ;;
@@ -1870,6 +1897,7 @@ get_wm() {
                                -e gnome-shell \
                                -e greenfield \
                                -e grefsen \
+                               -e hikari \
                                -e kwin \
                                -e lipstick \
                                -e maynard \
@@ -2187,17 +2215,50 @@ get_cpu() {
                 speed="$((speed / 1000))"
 
             else
-                speed="$(awk -F ': |\\.' '/cpu MHz|^clock/ {printf $2; exit}' "$cpu_file")"
-                speed="${speed/MHz}"
+                case $kernel_machine in
+                    "sparc"*)
+                        # SPARC systems use a different file to expose clock speed information.
+                        speed_file="/sys/devices/system/cpu/cpu0/clock_tick"
+                        speed="$(($(< "$speed_file") / 1000000))"
+                    ;;
+
+                    *)
+                        speed="$(awk -F ': |\\.' '/cpu MHz|^clock/ {printf $2; exit}' "$cpu_file")"
+                        speed="${speed/MHz}"
+                    ;;
+                esac
             fi
 
             # Get CPU temp.
             [[ -f "$temp_dir" ]] && deg="$(($(< "$temp_dir") * 100 / 10000))"
 
             # Get CPU cores.
-            case $cpu_cores in
-                "logical" | "on") cores="$(grep -c "^processor" "$cpu_file")" ;;
-                "physical") cores="$(awk '/^core id/&&!a[$0]++{++i} END {print i}' "$cpu_file")" ;;
+            case $kernel_machine in
+                "sparc"*)
+                    case $cpu_cores in
+                        # SPARC systems doesn't expose detailed topology information in
+                        # /proc/cpuinfo so I have to use lscpu here.
+                        "logical" | "on")
+                            cores="$(lscpu | awk -F ': *' '/^CPU\(s\)/ {print $2}')"
+                        ;;
+                        "physical")
+                            cores="$(lscpu | awk -F ': *' '/^Core\(s\) per socket/ {print $2}')"
+                            sockets="$(lscpu | awk -F ': *' '/^Socket\(s\)/ {print $2}')"
+                            cores="$((sockets * cores))"
+                        ;;
+                    esac
+                ;;
+
+                *)
+                    case $cpu_cores in
+                        "logical" | "on")
+                            cores="$(grep -c "^processor" "$cpu_file")"
+                        ;;
+                        "physical")
+                            cores="$(awk '/^core id/&&!a[$0]++{++i} END {print i}' "$cpu_file")"
+                        ;;
+                    esac
+                ;;
             esac
         ;;
 
@@ -2225,8 +2286,9 @@ get_cpu() {
                     "Apple A10 Fusion (4) @ 2.34GHz"
                 ;;
                 "iPhone10,"[1-6]): "Apple A11 Bionic (6) @ 2.39GHz" ;;
-                "iPhone11,"[2468] | "iPad11,"[1-4]): "Apple A12 Bionic (6) @ 2.49GHz" ;;
+                "iPhone11,"[2468] | "iPad11,"[1-4] | "iPad11,"[6-7]): "Apple A12 Bionic (6) @ 2.49GHz" ;;
                 "iPhone12,"[1358]): "Apple A13 Bionic (6) @ 2.65GHz" ;;
+                "iPhone13,"[1-4] | "iPad13,"[1-2]): "Apple A14 Bionic (6) @ 3.00Ghz" ;;
 
                 "iPod2,1"): "Samsung S5L8720 (1) @ 533MHz" ;;
                 "iPod3,1"): "Samsung S5L8922 (1) @ 600MHz" ;;
@@ -2259,7 +2321,17 @@ get_cpu() {
             [[ -z "$speed" ]] && speed="$(sysctl -n  hw.clockrate)"
 
             # Get CPU cores.
-            cores="$(sysctl -n hw.ncpu)"
+            case $kernel_name in
+                "OpenBSD"*)
+                    [[ "$(sysctl -n hw.smt)" == "1" ]] && smt="on" || smt="off"
+                    ncpufound="$(sysctl -n hw.ncpufound)"
+                    ncpuonline="$(sysctl -n hw.ncpuonline)"
+                    cores="${ncpuonline}/${ncpufound},\\xc2\\xa0SMT\\xc2\\xa0${smt}"
+                ;;
+                *)
+                    cores="$(sysctl -n hw.ncpu)"
+                ;;
+            esac
 
             # Get CPU temp.
             case $kernel_name in
@@ -2412,9 +2484,17 @@ get_gpu() {
     case $os in
         "Linux")
             # Read GPUs into array.
-            gpu_cmd="$(lspci -mm | awk -F '\"|\" \"|\\(' \
-                                          '/"Display|"3D|"VGA/ {a[$0] = $1 " " $3 " " $4}
-                                           END {for(i in a) {if(!seen[a[i]]++) print a[i]}}')"
+            gpu_cmd="$(lspci -mm |
+                       awk -F '\"|\" \"|\\(' \
+                              '/"Display|"3D|"VGA/ {
+                                  a[$0] = $1 " " $3 " " ($7 ~ /^$|^Device [[:xdigit:]]+$/ ? $4 : $7)
+                              }
+                              END { for (i in a) {
+                                  if (!seen[a[i]]++) {
+                                      sub("^[^ ]+ ", "", a[i]);
+                                      print a[i]
+                                  }
+                              }}')"
             IFS=$'\n' read -d "" -ra gpus <<< "$gpu_cmd"
 
             # Remove duplicate Intel Graphics outputs.
@@ -2514,8 +2594,9 @@ get_gpu() {
                 "iPhone8,"[1-4] | "iPad6,1"[12]):             "PowerVR GT7600" ;;
                 "iPhone9,"[1-4] | "iPad7,"[5-6]):             "PowerVR GT7600 Plus" ;;
                 "iPhone10,"[1-6]):                            "Apple Designed GPU (A11)" ;;
-                "iPhone11,"[2468]):                           "Apple Designed GPU (A12)" ;;
+                "iPhone11,"[2468] | "iPad11,"[67]):           "Apple Designed GPU (A12)" ;;
                 "iPhone12,"[1358]):                           "Apple Designed GPU (A13)" ;;
+                "iPhone13,"[1234] | "iPad13,"[12]):           "Apple Designed GPU (A14)" ;;
 
                 "iPad3,"[1-3]):     "PowerVR SGX534MP4" ;;
                 "iPad3,"[4-6]):     "PowerVR SGX554MP4" ;;
@@ -2533,12 +2614,15 @@ get_gpu() {
             while read -r line; do
                 line=$(trim "$line")
 
-                [[ -z $win_gpu ]] || [[ -z "$line" ]] && {
-                    win_gpu=1
-                    continue
-                }
+                case $line in
+                    *Caption*|'')
+                        continue
+                    ;;
 
-                prin "${subtitle:+${subtitle}${gpu_name}}" "$line"
+                    *)
+                        prin "${subtitle:+${subtitle}${gpu_name}}" "$line"
+                    ;;
+                esac
             done < <(wmic path Win32_VideoController get caption)
         ;;
 
@@ -2601,12 +2685,13 @@ get_memory() {
         ;;
 
         "Mac OS X" | "macOS" | "iPhone OS")
+            hw_pagesize="$(sysctl -n hw.pagesize)"
             mem_total="$(($(sysctl -n hw.memsize) / 1024 / 1024))"
-            mem_wired="$(vm_stat | awk '/ wired/ { print $4 }')"
-            mem_active="$(vm_stat | awk '/ active/ { printf $3 }')"
-            mem_compressed="$(vm_stat | awk '/ occupied/ { printf $5 }')"
-            mem_compressed="${mem_compressed:-0}"
-            mem_used="$(((${mem_wired//.} + ${mem_active//.} + ${mem_compressed//.}) * 4 / 1024))"
+            pages_app="$(($(sysctl -n vm.page_pageable_internal_count) - $(sysctl -n vm.page_purgeable_count)))"
+            pages_wired="$(vm_stat | awk '/ wired/ { print $4 }')"
+            pages_compressed="$(vm_stat | awk '/ occupied/ { printf $5 }')"
+            pages_compressed="${pages_compressed:-0}"
+            mem_used="$(((${pages_app} + ${pages_wired//.} + ${pages_compressed//.}) * hw_pagesize / 1024 / 1024))"
         ;;
 
         "BSD" | "MINIX")
@@ -3019,7 +3104,8 @@ get_resolution() {
         ;;
     esac
 
-    resolution="${resolution%,*}"
+    resolution="${resolution%%,}"
+    resolution="${resolution%%, }"
     [[ -z "${resolution/x}" ]] && resolution=
 }
 
@@ -3217,13 +3303,14 @@ get_term() {
         name="$(get_process_name "$parent")"
 
         case ${name// } in
-            "${SHELL/*\/}"|*"sh"|"screen"|"su"*) ;;
+            "${SHELL/*\/}"|*"sh"|"screen"|"su"*|"newgrp") ;;
 
             "login"*|*"Login"*|"init"|"(init)")
                 term="$(tty)"
             ;;
 
-            "ruby"|"1"|"tmux"*|"systemd"|"sshd"*|"python"*|"USER"*"PID"*|"kdeinit"*|"launchd"*)
+            "ruby"|"1"|"tmux"*|"systemd"|"sshd"*|"python"*|\
+            "USER"*"PID"*|"kdeinit"*|"launchd"*|"bwrap")
                 break
             ;;
 
@@ -3267,6 +3354,7 @@ get_term_font() {
             term_font="${term_font/*family:}"
             term_font="${term_font/$'\n'*}"
             term_font="${term_font/\#*}"
+            term_font="${term_font//\"}"
         ;;
 
         "Apple_Terminal")
@@ -3423,7 +3511,7 @@ END
         ;;
 
         "mintty")
-            term_font="$(awk -F '=' '!/^($|#)/ && /Font/ {printf $2; exit}' "${HOME}/.minttyrc")"
+            term_font="$(awk -F '=' '!/^($|#)/ && /^\\s*Font\\s*=/ {printf $2; exit}' "${HOME}/.minttyrc")"
         ;;
 
         "pantheon"*)
@@ -3806,12 +3894,12 @@ get_local_ip() {
 }
 
 get_public_ip() {
-    if type -p dig >/dev/null; then
+    if [[ ! -n "$public_ip_host" ]] && type -p dig >/dev/null; then
         public_ip="$(dig +time=1 +tries=1 +short myip.opendns.com @resolver1.opendns.com)"
        [[ "$public_ip" =~ ^\; ]] && unset public_ip
     fi
 
-    if [[ -z "$public_ip" ]] && type -p drill >/dev/null; then
+    if [[ ! -n "$public_ip_host" ]] && [[ -z "$public_ip" ]] && type -p drill >/dev/null; then
         public_ip="$(drill myip.opendns.com @resolver1.opendns.com | \
                      awk '/^myip\./ && $3 == "IN" {print $5}')"
     fi
@@ -5048,20 +5136,20 @@ ASCII:
                                 BlackArch, BLAG, BlankOn, BlueLight, bonsai, BSD, BunsenLabs,
                                 Calculate, Carbs, CentOS, Chakra, ChaletOS, Chapeau, Chrom,
                                 Cleanjaro, ClearOS, Clear_Linux, Clover, Condres, Container_Linux,
-                                CRUX, Cucumber, dahlia, Debian, Deepin, DesaOS, Devuan, DracOS,
-                                DarkOs, Itc, DragonFly, Drauger, Elementary, EndeavourOS, Endless,
+                                CrystalUX, CRUX, Cucumber, dahlia, Debian, Deepin, DesaOS, Devuan,
+                                DracOS, DarkOs, Itc, DragonFly, Drauger, Elementary, EndeavourOS, Endless,
                                 EuroLinux, Exherbo, Fedora, Feren, FreeBSD, FreeMiNT, Frugalware,
                                 Funtoo, GalliumOS, Garuda, Gentoo, Pentoo, gNewSense, GNOME, GNU,
-                                GoboLinux, Grombyang, Guix, Haiku, Huayra, Hyperbola, janus, Kali,
+                                GoboLinux, Grombyang, Guix, Haiku, Huayra, Hyperbola, iglunix, janus, Kali,
                                 KaOS, KDE_neon, Kibojoe, Kogaion, Korora, KSLinux, Kubuntu, LEDE,
                                 LaxerOS, LibreELEC, LFS, Linux_Lite, LMDE, Lubuntu, Lunar, macos,
-                                Mageia, MagpieOS, Mandriva, Manjaro, Maui, Mer, Minix, LinuxMint,
+                                Mageia, MagpieOS, Mandriva, Manjaro, TeArch, Maui, Mer, Minix, LinuxMint,
                                 Live_Raizo, MX_Linux, Namib, Neptune, NetBSD, Netrunner, Nitrux,
                                 NixOS, Nurunner, NuTyX, OBRevenge, OpenBSD, openEuler, OpenIndiana,
                                 openmamba, OpenMandriva, OpenStage, OpenWrt, osmc, Oracle,
                                 OS Elbrus, PacBSD, Parabola, Pardus, Parrot, Parsix, TrueOS,
-                                PCLinuxOS, Pengwin, Peppermint, popos, Porteus, PostMarketOS,
-                                Proxmox, Puppy, PureOS, Qubes, Quibian, Radix, Raspbian, Reborn_OS,
+                                PCLinuxOS, Pengwin, Peppermint, Pisi, popos, Porteus, PostMarketOS,
+                                Proxmox, PuffOS, Puppy, PureOS, Qubes, Quibian, Radix, Raspbian, Reborn_OS,
                                 Redstar, Redcore, Redhat, Refracted_Devuan, Regata, Regolith, Rosa,
                                 sabotage, Sabayon, Sailfish, SalentOS, Scientific, Septor,
                                 SereneLinux, SharkLinux, Siduction, Slackware, SliTaz, SmartOS,
@@ -5071,7 +5159,7 @@ ASCII:
                                 Ubuntu-Studio, Ubuntu, Univention, Venom, Void, semc, Obarun,
                                 windows10, Windows7, Xubuntu, Zorin, and IRIX have ascii logos.
 
-                                NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants.
+                                NOTE: Arch, Ubuntu, Redhat, Fedora and Dragonfly have 'old' logo variants.
 
                                 NOTE: Use '{distro name}_old' to use the old logos.
 
@@ -5082,7 +5170,7 @@ ASCII:
 
                                 NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu,
                                 CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android,
-                                Antrix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola,
+                                Artix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola,
                                 Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS,
                                 Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian,
                                 postmarketOS, and Void have a smaller logo variant.
@@ -5454,6 +5542,16 @@ h//NNNNh  ossss` +h  md- .hm/ `sNNNNN:+y
 EOF
         ;;
 
+	"Aperio GNU/Linux"*)
+	    set_colors 255
+	    read -rd '' ascii_data <<'EOF'
+${c2}
+ _.._  _ ._.. _
+(_][_)(/,[  |(_)
+   |   GNU/Linux
+EOF
+	;;
+
         "Hash"*)
             set_colors 123
             read -rd '' ascii_data <<'EOF'
@@ -5476,6 +5574,32 @@ ${c1}
 EOF
         ;;
 
+        "AlmaLinux"*)
+            set_colors 1 3 4 2 6
+            read -rd '' ascii_data <<'EOF'
+${c1}         'c:.
+${c1}        lkkkx, ..       ${c2}..   ,cc,
+${c1}        okkkk:ckkx'  ${c2}.lxkkx.okkkkd
+${c1}        .:llcokkx'  ${c2}:kkkxkko:xkkd,
+${c1}      .xkkkkdood:  ${c2};kx,  .lkxlll;
+${c1}       xkkx.       ${c2}xk'     xkkkkk:
+${c1}       'xkx.       ${c2}xd      .....,.
+${c3}      .. ${c1}:xkl'     ${c2}:c      ..''..
+${c3}    .dkx'  ${c1}.:ldl:'. ${c2}'  ${c4}':lollldkkxo;
+${c3}  .''lkkko'                     ${c4}ckkkx.
+${c3}'xkkkd:kkd.       ..  ${c5};'        ${c4}:kkxo.
+${c3},xkkkd;kk'      ,d;    ${c5}ld.   ${c4}':dkd::cc,
+${c3} .,,.;xkko'.';lxo.      ${c5}dx,  ${c4}:kkk'xkkkkc
+${c3}     'dkkkkkxo:.        ${c5};kx  ${c4}.kkk:;xkkd.
+${c3}       .....   ${c5}.;dk:.   ${c5}lkk.  ${c4}:;,
+             ${c5}:kkkkkkkdoxkkx
+              ,c,,;;;:xkkd.
+                ;kkkkl...
+                ;kkkkl
+                 ,od;
+EOF
+        ;;
+
         "alpine_small")
             set_colors 4 7
             read -rd '' ascii_data <<'EOF'
@@ -5564,7 +5688,31 @@ dMMMMMMMMMMMMMMMMh    yMMMMMMMMMMMMMMMMd
             `-+shy    shs+:`
 EOF
         ;;
-
+        "AmogOS"*)
+            set_colors 6 6 7 1
+            read -rd '' ascii_data <<'EOF'
+${c1}                   '
+⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣤⣤⣤⣀⣀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀
+⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⠟⠉⠉⠉⠉⠉⠉⠉⠙⠻⢶⣄⠀⠀⠀⠀⠀
+⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣷⡀⠀⠀⠀
+⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡟⠀⣠⣶⠛⠛⠛⠛⠛⠛⠳⣦⡀⠀⠘⣿⡄⠀⠀
+⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⠁⠀⢹⣿⣦⣀⣀⣀⣀⣀⣠⣼⡇⠀⠀⠸⣷⠀⠀
+⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⡏⠀⠀⠀⠉⠛⠿⠿⠿⠿⠛⠋⠁⠀⠀⠀⠀⣿⡄
+⠀⠀    ⠀⠀⢠⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡇⠀
+      ⠀⠀⣸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀
+⠀⠀⠀⠀⠀⠀⠀⠀⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣧⠀
+⠀⠀⠀⠀⠀⠀⠀⢸⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⠀
+⠀⠀⠀⠀⠀⠀⠀⣾⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀
+⠀⠀⠀⠀⠀⠀⠀⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀
+⠀⠀⠀⠀⠀⠀⢰⣿⠀⠀⠀⠀⣠⡶⠶⠿⠿⠿⠿⢷⣦⠀⠀⠀⠀⠀⠀⠀⣿⠀
+⠀⠀⣀⣀⣀⠀⣸⡇⠀⠀⠀⠀⣿⡀⠀⠀⠀⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⣿⠀
+⣠⡿⠛⠛⠛⠛⠻⠀⠀⠀⠀⠀⢸⣇⠀⠀⠀⠀⠀⠀⣿⠇⠀⠀⠀⠀⠀⠀⣿⠀
+⢻⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⡟⠀⠀⢀⣤⣤⣴⣿⠀⠀⠀⠀⠀⠀⠀⣿⠀
+⠈⠙⢷⣶⣦⣤⣤⣤⣴⣶⣾⠿⠛⠁⢀⣶⡟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡟⠀
+          ⠀⠀⠀⠀⠈⣿⣆⡀⠀⠀⠀⠀⠀⠀⢀⣠⣴⡾⠃⠀
+⠀        ⠀⠀⠀⠀⠀⠀⠈⠛⠻⢿⣿⣾⣿⡿⠿⠟⠋⠁⠀⠀⠀
+EOF
+        ;;
         "Anarchy"*)
             set_colors 7 4
             read -rd '' ascii_data <<'EOF'
@@ -6094,6 +6242,29 @@ ${c1}:syyyyyy/     :yyyyyy/${c2}-yyo.:syyyyyyyyyyy
 EOF
         ;;
 
+        "AsteroidOS"*)
+            set_colors 160 208 202 214
+            read -rd '' ascii_data <<'EOF'
+${c1}                    ***
+${c1}                   *****
+${c1}                **********
+${c1}              ***************
+${c1}           *///****////****////.
+${c2}         (/////// /////// ///////(
+${c2}      /(((((//*     //,     //((((((.
+${c2}    (((((((((((     (((        ((((((((
+${c2} *(((((((((((((((((((((((        ((((((((
+${c3}    (((((#(((((((#(((((        ((#(((((
+${c3}     (#(#(#####(#(#,       ####(#(#
+${c3}         #########        ########
+${c3}           /########   ########
+${c4}              #######%#######
+${c4}                (#%%%%%%%#
+${c4}                   %%%%%
+${c4}                    %%%
+EOF
+        ;;
+
         "Bedrock"*)
             set_colors 8 7
             read -rd '' ascii_data <<'EOF'
@@ -6357,6 +6528,28 @@ ${c2}             ..........
         ..;cllllccccclllc;'.
           ...',;;;;;;,,...
                 .....
+EOF
+        ;;
+
+
+        "CelOS"*)
+            set_colors 3 2 4 5 7
+            read -rd '' ascii_data <<'EOF'
+
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@#                       @@@
+@@         ,#%%%%%(.        (@
+@#      %%%%%%%%%%%%%%#      @
+@#    %%%%%%%%#      %%%/    @
+@#   #%%%%%%%%.      #%%%*   @
+@#   %%%%%%%%%%%*  (%%%%%#   @
+@#   #%%%%    %%%%%%%%%%%,   @
+@#    #%%%%%%%%%%%%%%%%%,    @
+@#      #%%%%%%%%%%%%%*      @
+@@          *##%#(,         @@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
+
 EOF
         ;;
 
@@ -6691,6 +6884,32 @@ ${c2}   lodd${c1}dolccc${c2}ccox${c1}xoloo
 EOF
         ;;
 
+        *"CrystalUX"*)
+            set_colors 13 5
+            read -rd '' ascii_data <<'EOF'
+${c1}                        mysssym
+${c1}                      mysssym
+${c1}                    mysssym
+${c1}                  mysssym
+${c1}                mysssyd
+${c1}              mysssyd    N
+${c1}            mysssyd    mysym
+${c1}          mysssyd      dysssym
+${c1}        mysssyd          dysssym
+${c1}      mysssyd              dysssym
+${c1}      mysssyd              dysssym
+${c1}        mysssyd          dysssym
+${c1}          mysssyd      dysssym
+${c1}            mysym    dysssym
+${c1}              N    dysssym
+${c1}                 dysssym
+${c1}               dysssym
+${c1}             dysssym
+${c1}           dysssym
+${c1}         dysssym
+EOF
+        ;;
+
         *"Cucumber"*)
             set_colors 2 3
             read -rd '' ascii_data <<'EOF'
@@ -6717,6 +6936,27 @@ o/${c2}--...::-:/::/:-......-::::::-/-...-${c1}:/o
 EOF
         ;;
 
+            "CyberOS"*)
+                set_colors 50 32 57
+                read -rd '' ascii_data <<'EOF'
+${c3}           !M$EEEEEEEEEEEP
+          .MMMMM000000Nr.
+          ${c3}&MMMMMM${c2}MMMMMMMMMMMMM9
+         ${c3}~MMM${c1}MMMM${c2}MMMMMMMMMMMMC
+    ${c1}"    ${c3}M${c1}MMMMMMM${c2}MMMMMMMMMMs
+  ${c1}iM${c2}MMM&&${c1}MMMMMMMM${c2}MMMMMMMM\\
+ ${c1}BMMM${c2}MMMMM${c1}MMMMMMM${c2}MMMMMM${c3}"
+${c1}9MMMMM${c2}MMMMMMM${c1}MMMM${c2}MMMM${c3}MMMf-
+      ${c2}sMMMMMMMM${c1}MM${c2}M${c3}MMMMMMMMM3_
+       ${c2}+ffffffff${c1}P${c3}MMMMMMMMMMMM0
+                  ${c2}CMMMMMMMMMMM
+              }MMMMMMMMM
+                      ~MMMMMMM
+                        "RMMMM
+                          .PMB
+EOF
+        ;;
+
                 "dahlia"*)
                     set_colors 1 7 3
                     read -rd '' ascii_data <<'EOF'
@@ -7134,7 +7374,7 @@ ${c1}\\ \\${c2}__/  |
 EOF
         ;;
 
-        "Fedora"* | "RFRemix"*)
+        "Fedora_old"* | "RFRemix"*)
             set_colors 4 7 1
             read -rd '' ascii_data <<'EOF'
 ${c1}          /:-------------:\\
@@ -7157,6 +7397,31 @@ ${c1}          /:-------------:\\
 EOF
         ;;
 
+        "Fedora"*)
+            set_colors 12 7
+            read -rd '' ascii_data <<'EOF'
+${c1}             .',;::::;,'.
+         .';:cccccccccccc:;,.
+      .;cccccccccccccccccccccc;.
+    .:cccccccccccccccccccccccccc:.
+  .;ccccccccccccc;${c2}.:dddl:.${c1};ccccccc;.
+ .:ccccccccccccc;${c2}OWMKOOXMWd${c1};ccccccc:.
+.:ccccccccccccc;${c2}KMMc${c1};cc;${c2}xMMc${c1};ccccccc:.
+,cccccccccccccc;${c2}MMM.${c1};cc;${c2};WW:${c1};cccccccc,
+:cccccccccccccc;${c2}MMM.${c1};cccccccccccccccc:
+:ccccccc;${c2}oxOOOo${c1};${c2}MMM0OOk.${c1};cccccccccccc:
+cccccc;${c2}0MMKxdd:${c1};${c2}MMMkddc.${c1};cccccccccccc;
+ccccc;${c2}XM0'${c1};cccc;${c2}MMM.${c1};cccccccccccccccc'
+ccccc;${c2}MMo${c1};ccccc;${c2}MMW.${c1};ccccccccccccccc;
+ccccc;${c2}0MNc.${c1}ccc${c2}.xMMd${c1};ccccccccccccccc;
+cccccc;${c2}dNMWXXXWM0:${c1};cccccccccccccc:,
+cccccccc;${c2}.:odl:.${c1};cccccccccccccc:,.
+:cccccccccccccccccccccccccccc:'.
+.:cccccccccccccccccccccc:;,..
+  '::cccccccccccccc::;,.
+EOF
+        ;;
+
         "Feren"*)
             set_colors 4 7 1
             read -rd '' ascii_data <<'EOF'
@@ -7592,6 +7857,21 @@ ${c2}                     `
 EOF
         ;;
 
+        "HydroOS"*)
+            set_colors 1 2 3 4 5
+            read -rd '' ascii_data <<'EOF'
+${c1}
+  _    _           _            ____   _____
+ | |  | |         | |          / __ \ / ____|
+ | |__| |_   _  __| |_ __ ___ | |  | | (___
+ |  __  | | | |/ _` | '__/ _ \| |  | |\___ \
+ | |  | | |_| | (_| | | | (_) | |__| |____) |
+ |_|  |_|\__, |\__,_|_|  \___/ \____/|_____/
+          __/ |
+         |___/
+EOF
+        ;;
+
         "hyperbola_small"*)
             set_colors 8
             read -rd '' ascii_data <<'EOF'
@@ -7627,6 +7907,24 @@ WW                           W
 EOF
         ;;
 
+        "iglunix"*|"iglu"*)
+            set_colors 8
+            read -rd '' ascii_data <<'EOF'
+${c1}     |
+     |        |
+              |
+|    ________
+|  /\   |    \
+  /  \  |     \  |
+ /    \        \ |
+/      \________\
+\      /        /
+ \    /        /
+  \  /        /
+   \/________/
+EOF
+        ;;
+
         "januslinux"*|"janus"*|"Ataraxia Linux"*|"Ataraxia"*)
             set_colors 4 5 6 2
             read -rd '' ascii_data <<'EOF'
@@ -8136,7 +8434,7 @@ o00.              k0O${c2}dddddd${c1}occ
 EOF
         ;;
 
-        "Mandriva"*)
+        "Mandriva"* | "Mandrake"*)
             set_colors 4 3
             read -rd '' ascii_data <<'EOF'
 ${c2}                        ``
@@ -8190,6 +8488,33 @@ ${c1}██████████████████  ██████
 EOF
         ;;
 
+        "TeArch"*)
+            set_colors 39 7 1
+            read -rd '' ascii_data <<'EOF'
+${c1}          @@@@@@@@@@@@@@
+      @@@@@@@@@              @@@@@@
+     @@@@@                     @@@@@
+     @@                           @@
+      @%                         @@
+       @                         @
+       @@@@@@@@@@@@@@@@@@@@@@@@ @@
+       .@@@@@@@@@@@@/@@@@@@@@@@@@
+       @@@@@@@@@@@@///@@@@@@@@@@@@
+      @@@@@@@@@@@@@((((@@@@@@@@@@@@
+     @@@@@@@@@@@#(((((((#@@@@@@@@@@@
+    @@@@@@@@@@@#//////////@@@@@@@@@@&
+    @@@@@@@@@@////@@@@@////@@@@@@@@@@
+    @@@@@@@@//////@@@@@/////@@@@@@@@@
+    @@@@@@@//@@@@@@@@@@@@@@@//@@@@@@@
+ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@     .@@@@@@@@@@@@@@@@@@@@@@@@@      @
+ @@@@@@           @@@.           @@@@@@@
+   @@@@@@@&@@@@@@@#  #@@@@@@@@@@@@@@@@
+      @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+          @@@@@@@@@@@@@@@@@@@@@
+EOF
+        ;;
+
         "Maui"*)
             set_colors 6 7
             read -rd '' ascii_data <<'EOF'
@@ -9096,7 +9421,7 @@ EOF
         "PCLinuxOS"*)
             set_colors 4 7 1
             read -rd '' ascii_data <<'EOF'
-            ${c1}mhhhyyyyhhhdN
+${c1}            mhhhyyyyhhhdN
         dyssyhhhhhhhhhhhssyhN
      Nysyhhyo/:-.....-/oyhhhssd
    Nsshhy+.              `/shhysm
@@ -9166,6 +9491,58 @@ ${c1}               PPPPPPPPPPPPPP
 EOF
         ;;
 
+        "Pisi"*)
+            set_colors 12 7 6 1 8
+            read -rd '' ascii_data <<'EOF'
+${c1}   \Fv/!-                      `:?lzC
+${c1}   Q!::=zFx!  ${c2}`;v6WBCicl;`  ${c1},vCC\!::#.
+${c1}  ,%:::,'` ${c2}+#%@@FQ@@.   ,cF%i${c1}``-',::a?
+${c1}  +m:,'```${c2}}3,/@@Q\@@       "af-${c1} `-'"7f
+  =o'.` ${c2}/m'   :Q@:Qg         ,kl${c1}  `.|o
+  :k` '${c2}$+      'Narm           >d,${c1}  ii
+   #`${c2}!p.        `C ,            'd+${c1} %'
+${c2}   !0m                           `6Kv
+   =a                              m+
+  !A     !\L|:            :|L\!     $:
+ .8`     Q''%Q#'        '#Q%''Q     `0-
+ :6      E|.6QQu        uQQ6.|E      p:
+  i{      \jts9?        ?9stj\      u\
+   |a`            -''.            `e>
+    ,m+     ${c1}'^ !`${c2}s@@@@a${c1}'"`+`${c2}     >e'
+      !3|${c1}`|=>>r-  ${c2}'U%:${c1}  '>>>=:`\3!
+       'xopE|      ${c2}`'${c1}     `ledoz-
+    `;=>>+`${c2}`^llci/|==|/iclc;`${c1}'>>>>:
+   `^`+~          ${c2}````${c1}          !!-^
+EOF
+        ;;
+
+        "PNM Linux"* | "WHPNM Linux"*)
+            set_colors 33 9 15 202
+            read -rd '' ascii_data <<'EOF'
+
+${c1}
+               ``.---..` `--`
+            ``.---........-:.${c2}-::`${c1}
+           ${c2}./::-${c1}........${c2}--::.````${c1}
+          ${c2}.:://:::${c1}----${c2}::::-..${c1}
+          ..${c2}--:::::--::::++-${c1}.`
+  ${c2}`-:-`${c1}   .-ohy+::${c2}-:::${c1}/sdmdd:.${c2}   `-:-
+   .-:::${c1}...${c3}sNNmds$y${c1}o/+${c3}sy+NN$m${c1}d+.`${c2}-:::-.
+     `.-:-${c1}./${c3}dN${c1}()${c3}yyooosd${c1}()${c3}$m${c1}dy${c2}-.::-.`${c1}
+      ${c2}`.${c1}-...-${c3}+hNdyyyyyydmy${c1}:......${c2}`${c1}
+ ``..--.....-${c3}yNNm${c4}hssssh${c3}mmdo${c1}.........```
+`-:://:.....${c3}hNNNNN${c4}mddm${c3}NNNmds${c1}.....//::--`
+  ```.:-...${c3}oNNNNNNNNNNNNNNmd/${c1}...:-.```
+      .....${c3}hNNNNNNNNNNNNNNmds${c1}....`
+      --...${c3}hNNNNNNNNNNNNNNmdo${c1}.....
+      .:...${c3}/NNNNNNNNNNNNNNdd${c1}:....`
+       `-...${c3}+mNNNNNNNNNNNmh${c1}:...-.
+     ${c4}.:+o+/:-${c1}:+oo+///++o+/:-${c4}:/+ooo/:.
+       ${c4}+oo/:o-            +oooooso.`
+       ${c4}.`   `             `/  .-//-
+EOF
+        ;;
+
         "popos_small"* | "pop_os_small"*)
             set_colors 6 7
             read -rd '' ascii_data <<'EOF'
@@ -9274,6 +9651,25 @@ ${c1}                 /\\
 EOF
         ;;
 
+        "PuffOS"*)
+            set_colors 3
+            read -rd '' ascii_data <<'EOF'
+${c1}
+              _,..._,m,
+            ,/'      '"";
+           /             ".
+         ,'mmmMMMMmm.      \
+       _/-"^^^^^"""%#%mm,   ;
+ ,m,_,'              "###)  ;,
+(###%                 \#/  ;##mm.
+ ^#/  __        ___    ;  (######)
+  ;  //.\\     //.\\   ;   \####/
+ _; (#\"//     \\"/#)  ;  ,/
+@##\ \##/   =   `"=" ,;mm/
+`\##>.____,...,____,<####@
+EOF
+        ;;
+
         "Proxmox"*)
             set_colors 7 202
             read -rd '' ascii_data <<'EOF'
@@ -9664,6 +10060,49 @@ ${c1}
 EOF
         ;;
 
+        "rocky_small"*)
+            set_colors 2
+                read -rd '' ascii_data <<'EOF'
+${c1}    `-/+++++++++/-.`
+ `-+++++++++++++++++-`
+.+++++++++++++++++++++.
+-+++++++++++++++++++++++.
++++++++++++++++/-/+++++++
++++++++++++++/.   ./+++++
++++++++++++:.       ./+++
++++++++++:`   `:/:`   .:/
+-++++++:`   .:+++++:`
+ .+++-`   ./+++++++++:`
+  `-`   ./+++++++++++-
+       -+++++++++:-.`
+EOF
+        ;;
+
+        "rocky"*)
+            set_colors 35
+            read -rd '' ascii_data <<'EOF'
+${c1}          __wgliliiligw_,
+       _williiiiiiliilililw,
+     _%iiiiiilililiiiiiiiiiii_
+   .Qliiiililiiiiiiililililiilm.
+  _iiiiiliiiiiililiiiiiiiiiiliil,
+ .lililiiilililiiiilililililiiiii,
+_liiiiiiliiiiiiiliiiiiF{iiiiiilili,
+jliililiiilililiiili@`  ~ililiiiiiL
+iiiliiiiliiiiiiili>`      ~liililii
+liliiiliiilililii`         -9liiiil
+iiiiiliiliiiiii~             "4lili
+4ililiiiiilil~|      -w,       )4lf
+-liiiiililiF'       _liig,       )'
+ )iiiliii@`       _QIililig,
+  )iiii>`       .Qliliiiililw
+   )<>~       .mliiiiiliiiiiil,
+            _gllilililiililii~
+           giliiiiiiiiiiiiT`
+          -^~$ililili@~~'
+EOF
+        ;;
+
         "Rosa"*)
             set_colors 4 7 1
             read -rd '' ascii_data <<'EOF'
@@ -9987,6 +10426,22 @@ yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
 EOF
         ;;
 
+        "SkiffOS"*)
+            set_colors 4 7
+            read -rd '' ascii_data <<'EOF'
+${c2}
+             ,@@@@@@@@@@@w,_
+  ${c2}====~~~,,.${c2}A@@@@@@@@@@@@@@@@@W,_
+  ${c1}`||||||||||||||L{${c2}"@$@@@@@@@@B"
+   ${c1}`|||||||||||||||||||||L{${c2}"$D
+     ${c2}@@@@@@@@@@@@@@@@@@@@@${c1}_||||}==,
+      ${c2}*@@@@@@@@@@@@@@@@@@@@@@@@@p${c1}||||==,
+        ${c1}`'||LLL{{""${c2}@$B@@@@@@@@@@@@@@@p${c1}||
+            ${c1}`~=|||||||||||L"${c2}$@@@@@@@@@@@
+                   ${c1}````'"""""""${c2}'""""""""
+EOF
+            ;;
+
         "Solus"*)
             set_colors 4 7 1
             read -rd '' ascii_data <<'EOF'
@@ -10468,26 +10923,26 @@ EOF
         "Ubuntu"* | "i3buntu"*)
             set_colors 1 7 3
             read -rd '' ascii_data <<'EOF'
-${c1}            .-/+oossssoo+/-.
-        `:+ssssssssssssssssss+:`
+${c1}            .-/+oossssoo+\-.
+        ´:+ssssssssssssssssss+:`
       -+ssssssssssssssssssyyssss+-
     .ossssssssssssssssss${c2}dMMMNy${c1}sssso.
-   /sssssssssss${c2}hdmmNNmmyNMMMMh${c1}ssssss/
+   /sssssssssss${c2}hdmmNNmmyNMMMMh${c1}ssssss\
   +sssssssss${c2}hm${c1}yd${c2}MMMMMMMNddddy${c1}ssssssss+
- /ssssssss${c2}hNMMM${c1}yh${c2}hyyyyhmNMMMNh${c1}ssssssss/
+ /ssssssss${c2}hNMMM${c1}yh${c2}hyyyyhmNMMMNh${c1}ssssssss\
 .ssssssss${c2}dMMMNh${c1}ssssssssss${c2}hNMMMd${c1}ssssssss.
 +ssss${c2}hhhyNMMNy${c1}ssssssssssss${c2}yNMMMy${c1}sssssss+
 oss${c2}yNMMMNyMMh${c1}ssssssssssssss${c2}hmmmh${c1}ssssssso
 oss${c2}yNMMMNyMMh${c1}sssssssssssssshmmmh${c1}ssssssso
 +ssss${c2}hhhyNMMNy${c1}ssssssssssss${c2}yNMMMy${c1}sssssss+
 .ssssssss${c2}dMMMNh${c1}ssssssssss${c2}hNMMMd${c1}ssssssss.
- /ssssssss${c2}hNMMM${c1}yh${c2}hyyyyhdNMMMNh${c1}ssssssss/
+ \ssssssss${c2}hNMMM${c1}yh${c2}hyyyyhdNMMMNh${c1}ssssssss/
   +sssssssss${c2}dm${c1}yd${c2}MMMMMMMMddddy${c1}ssssssss+
-   /sssssssssss${c2}hdmNNNNmyNMMMMh${c1}ssssss/
+   \sssssssssss${c2}hdmNNNNmyNMMMMh${c1}ssssss/
     .ossssssssssssssssss${c2}dMMMNy${c1}sssso.
       -+sssssssssssssssss${c2}yyy${c1}ssss+-
         `:+ssssssssssssssssss+:`
-            .-/+oossssoo+/-.
+            .-\+oossssoo+/-.
 EOF
         ;;
 
@@ -10576,7 +11031,7 @@ EOF
 
         ;;
 
-       	"semc"*)
+       "semc"*)
             set_colors 2 8 1
             read -rd '' ascii_data <<'EOF'
 ${c1}            /\
@@ -10617,6 +11072,29 @@ ${c1}                    ,;::::;
 EOF
         ;;
 
+        *"[Windows 11]"*|*"on Windows 11"*|\
+        "Windows 11"* |"windows11")
+            set_colors 6 7
+            read -rd '' ascii_data <<'EOF'
+${c1}
+################  ################
+################  ################
+################  ################
+################  ################
+################  ################
+################  ################
+################  ################
+ 
+################  ################
+################  ################
+################  ################
+################  ################
+################  ################
+################  ################
+################  ################
+EOF
+        ;;
+
         *"[Windows 10]"*|*"on Windows 10"*|"Windows 8"*|\
         "Windows 10"* |"windows10"|"windows8")
             set_colors 6 7
diff --git a/neofetch.1 b/neofetch.1
index c05e3038..0e5bffaa 100644
--- a/neofetch.1
+++ b/neofetch.1
@@ -1,5 +1,5 @@
-.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.47.16.
-.TH NEOFETCH "1" "August 2020" "Neofetch 7.1.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.48.3.
+.TH NEOFETCH "1" "April 2021" "Neofetch 7.1.0" "User Commands"
 .SH NAME
 Neofetch \- A fast, highly customizable system info script
 .SH SYNOPSIS
@@ -152,6 +152,9 @@ URL to query for public IP
 \fB\-\-ip_timeout\fR int
 Public IP timeout (in seconds).
 .TP
+\fB\-\-ip_interface\fR value
+Interface(s) to use for local IP
+.TP
 \fB\-\-song_format\fR format
 Print the song data in a specific format (see config file).
 .TP
@@ -215,10 +218,6 @@ Length in spaces to make the bars.
 Colors to make the bar.
 Set in this order: elapsed, total
 .TP
-\fB\-\-cpu_display\fR mode
-Bar mode.
-Possible values: bar, infobar, barinfo, off
-.TP
 \fB\-\-memory_display\fR mode
 Bar mode.
 Possible values: bar, infobar, barinfo, off
@@ -234,8 +233,8 @@ Possible values: bar, infobar, barinfo, off
 .TP
 \fB\-\-backend\fR backend
 Which image backend to use.
-Possible values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2',
-\&'off', 'sixel', 'tycat', 'w3m', 'kitty', 'ueberzug'
+Possible values: 'ascii', 'caca', 'catimg', 'chafa', 'jp2a',
+\&'iterm2', 'off', 'sixel', 'tycat', 'w3m', 'kitty', 'viu'
 .TP
 \fB\-\-source\fR source
 Which image or ascii file to use.
@@ -250,6 +249,9 @@ NEW: neofetch \fB\-\-ascii\fR "$(fortune | cowsay \fB\-W\fR 30)"
 \fB\-\-caca\fR source
 Shortcut to use 'caca' backend.
 .TP
+\fB\-\-catimg\fR source
+Shortcut to use 'catimg' backend.
+.TP
 \fB\-\-chafa\fR source
 Shortcut to use 'chafa' backend.
 .TP
@@ -281,7 +283,10 @@ Shortcut to use 'tycat' backend.
 Shortcut to use 'w3m' backend.
 .TP
 \fB\-\-ueberzug\fR source
-Shortcut to use 'ueberzug' backend.
+Shortcut to use 'ueberzug' backend
+.TP
+\fB\-\-viu\fR source
+Shortcut to use 'viu' backend
 .TP
 \fB\-\-off\fR
 Shortcut to use 'off' backend (Disable ascii art).
@@ -306,33 +311,33 @@ Container_Linux, CRUX, Cucumber, dahlia, Debian, Deepin, DesaOS,
 Devuan, DracOS, DarkOs, Itc, DragonFly, Drauger, Elementary,
 EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD,
 FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo,
-gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra,
+gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra, HydroOS,
 Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion, Korora,
 KSLinux, Kubuntu, LEDE, LaxerOS, LibreELEC, LFS, Linux_Lite, LMDE,
-Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva, Manjaro, Maui,
+Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva, Manjaro, TeArch, Maui,
 Mer, Minix, LinuxMint, Live_Raizo, MX_Linux, Namib, Neptune, NetBSD,
 Netrunner, Nitrux, NixOS, Nurunner, NuTyX, OBRevenge, OpenBSD,
 openEuler, OpenIndiana, openmamba, OpenMandriva, OpenStage, OpenWrt,
 osmc, Oracle, OS Elbrus, PacBSD, Parabola, Pardus, Parrot, Parsix,
-TrueOS, PCLinuxOS, Pengwin, Peppermint, popos, Porteus, PostMarketOS,
+TrueOS, PCLinuxOS, Pengwin, Peppermint, Pisi, popos, Porteus, PostMarketOS,
 Proxmox, Puppy, PureOS, Qubes, Quibian, Radix, Raspbian, Reborn_OS,
 Redstar, Redcore, Redhat, Refracted_Devuan, Regata, Regolith, Rosa,
 sabotage, Sabayon, Sailfish, SalentOS, Scientific, Septor,
 SereneLinux, SharkLinux, Siduction, Slackware, SliTaz, SmartOS,
-Solus, Source_Mage, Sparky, Star, SteamOS, SunOS, openSUSE_Leap, t2,
-openSUSE_Tumbleweed, openSUSE, SwagArch, Tails, Trisquel,
-Ubuntu-Cinnamon, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE,
-Ubuntu-Studio, Ubuntu, Univention, Venom, Void, semc, Obarun,
+Solus, Source_Mage, Sparky, Star, SteamOS, SunOS, openSUSE_Leap,
+t2, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails, Trisquel,
+Ubuntu\-Cinnamon, Ubuntu\-Budgie, Ubuntu\-GNOME, Ubuntu\-MATE,
+Ubuntu\-Studio, Ubuntu, Univention, Venom, Void, semc, Obarun,
 windows10, Windows7, Xubuntu, Zorin, and IRIX have ascii logos.
 .IP
-NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants.
+NOTE: Arch, Ubuntu, Redhat, Fedora and Dragonfly have 'old' logo variants.
 .IP
 NOTE: Use '{distro name}_old' to use the old logos.
 .IP
 NOTE: Ubuntu has flavor variants.
 .TP
-Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME,
-Ubuntu-Studio, Ubuntu-Mate  or Ubuntu-Budgie to use the flavors.
+NOTE: Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu\-GNOME,
+Ubuntu\-Studio, Ubuntu\-Mate  or Ubuntu\-Budgie to use the flavors.
 .TP
 NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu,
 CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android,
@@ -358,6 +363,9 @@ in some terminals emulators when using image mode.
 How to size the image.
 Possible values: auto, 00px, 00%, none
 .TP
+\fB\-\-catimg_size\fR 1/2
+Change the resolution of catimg.
+.TP
 \fB\-\-crop_mode\fR mode
 Which crop mode to use
 Takes the values: normal, fit, fill
@@ -369,11 +377,11 @@ west, center, east, southwest, south, southeast
 .TP
 \fB\-\-xoffset\fR px
 How close the image will be to the left edge of the
-window. This only works with w3m and ueberzug.
+window. This only works with w3m.
 .TP
 \fB\-\-yoffset\fR px
 How close the image will be to the top edge of the
-window. This only works with w3m and ueberzug.
+window. This only works with w3m.
 .TP
 \fB\-\-bg_color\fR color
 Background color to display behind transparent image.