master ohmu/dihfiles / bin / neofetch
ohmu  ·  2026-09-26
    1#!/usr/bin/env bash
    2# vim: noai:ts=4:sw=4:expandtab
    3# shellcheck source=/dev/null
    4# shellcheck disable=2009
    5#
    6# Neofetch: A command-line system information tool written in bash 3.2+.
    7# https://github.com/dylanaraps/neofetch
    8#
    9# The MIT License (MIT)
   10#
   11# Copyright (c) 2015-2021 Dylan Araps
   12#
   13# Permission is hereby granted, free of charge, to any person obtaining a copy
   14# of this software and associated documentation files (the "Software"), to deal
   15# in the Software without restriction, including without limitation the rights
   16# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   17# copies of the Software, and to permit persons to whom the Software is
   18# furnished to do so, subject to the following conditions:
   19#
   20# The above copyright notice and this permission notice shall be included in all
   21# copies or substantial portions of the Software.
   22#
   23# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   24# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   25# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   26# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   27# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   28# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
   29# SOFTWARE.
   30
   31version=7.1.0
   32
   33# Fallback to a value of '5' for shells which support bash
   34# but do not set the 'BASH_' shell variables (osh).
   35bash_version=${BASH_VERSINFO[0]:-5}
   36shopt -s eval_unsafe_arith &>/dev/null
   37
   38sys_locale=${LANG:-C}
   39XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-${HOME}/.config}
   40PATH=$PATH:/usr/xpg4/bin:/usr/sbin:/sbin:/usr/etc:/usr/libexec
   41reset='\e[0m'
   42shopt -s nocasematch
   43
   44# Speed up script by not using unicode.
   45LC_ALL=C
   46LANG=C
   47
   48# Fix issues with gsettings.
   49export GIO_EXTRA_MODULES=/usr/lib/x86_64-linux-gnu/gio/modules/
   50
   51# Neofetch default config.
   52read -rd '' config <<'EOF'
   53# See this wiki page for more info:
   54# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info
   55print_info() {
   56    info title
   57    info underline
   58
   59    info "OS" distro
   60    info "Host" model
   61    info "Kernel" kernel
   62    info "Uptime" uptime
   63    info "Packages" packages
   64    info "Shell" shell
   65    info "Resolution" resolution
   66    info "DE" de
   67    info "WM" wm
   68    info "WM Theme" wm_theme
   69    info "Theme" theme
   70    info "Icons" icons
   71    info "Terminal" term
   72    info "Terminal Font" term_font
   73    info "CPU" cpu
   74    info "GPU" gpu
   75    info "Memory" memory
   76
   77    # info "GPU Driver" gpu_driver  # Linux/macOS only
   78    # info "Disk" disk
   79    # info "Battery" battery
   80    # info "Font" font
   81    # info "Song" song
   82    # [[ "$player" ]] && prin "Music Player" "$player"
   83    # info "Local IP" local_ip
   84    # info "Public IP" public_ip
   85    # info "Users" users
   86    # info "Locale" locale  # This only works on glibc systems.
   87
   88    info cols
   89}
   90
   91# Title
   92
   93
   94# Hide/Show Fully qualified domain name.
   95#
   96# Default:  'off'
   97# Values:   'on', 'off'
   98# Flag:     --title_fqdn
   99title_fqdn="off"
  100
  101
  102# Kernel
  103
  104
  105# Shorten the output of the kernel function.
  106#
  107# Default:  'on'
  108# Values:   'on', 'off'
  109# Flag:     --kernel_shorthand
  110# Supports: Everything except *BSDs (except PacBSD and PC-BSD)
  111#
  112# Example:
  113# on:  '4.8.9-1-ARCH'
  114# off: 'Linux 4.8.9-1-ARCH'
  115kernel_shorthand="on"
  116
  117
  118# Distro
  119
  120
  121# Shorten the output of the distro function
  122#
  123# Default:  'off'
  124# Values:   'on', 'tiny', 'off'
  125# Flag:     --distro_shorthand
  126# Supports: Everything except Windows and Haiku
  127distro_shorthand="off"
  128
  129# Show/Hide OS Architecture.
  130# Show 'x86_64', 'x86' and etc in 'Distro:' output.
  131#
  132# Default: 'on'
  133# Values:  'on', 'off'
  134# Flag:    --os_arch
  135#
  136# Example:
  137# on:  'Arch Linux x86_64'
  138# off: 'Arch Linux'
  139os_arch="on"
  140
  141
  142# Uptime
  143
  144
  145# Shorten the output of the uptime function
  146#
  147# Default: 'on'
  148# Values:  'on', 'tiny', 'off'
  149# Flag:    --uptime_shorthand
  150#
  151# Example:
  152# on:   '2 days, 10 hours, 3 mins'
  153# tiny: '2d 10h 3m'
  154# off:  '2 days, 10 hours, 3 minutes'
  155uptime_shorthand="on"
  156
  157
  158# Memory
  159
  160
  161# Show memory percentage in output.
  162#
  163# Default: 'off'
  164# Values:  'on', 'off'
  165# Flag:    --memory_percent
  166#
  167# Example:
  168# on:   '1801MiB / 7881MiB (22%)'
  169# off:  '1801MiB / 7881MiB'
  170memory_percent="off"
  171
  172# Change memory output unit.
  173#
  174# Default: 'mib'
  175# Values:  'kib', 'mib', 'gib'
  176# Flag:    --memory_unit
  177#
  178# Example:
  179# kib  '1020928KiB / 7117824KiB'
  180# mib  '1042MiB / 6951MiB'
  181# gib: ' 0.98GiB / 6.79GiB'
  182memory_unit="mib"
  183
  184
  185# Packages
  186
  187
  188# Show/Hide Package Manager names.
  189#
  190# Default: 'tiny'
  191# Values:  'on', 'tiny' 'off'
  192# Flag:    --package_managers
  193#
  194# Example:
  195# on:   '998 (pacman), 8 (flatpak), 4 (snap)'
  196# tiny: '908 (pacman, flatpak, snap)'
  197# off:  '908'
  198package_managers="on"
  199
  200
  201# Shell
  202
  203
  204# Show the path to $SHELL
  205#
  206# Default: 'off'
  207# Values:  'on', 'off'
  208# Flag:    --shell_path
  209#
  210# Example:
  211# on:  '/bin/bash'
  212# off: 'bash'
  213shell_path="off"
  214
  215# Show $SHELL version
  216#
  217# Default: 'on'
  218# Values:  'on', 'off'
  219# Flag:    --shell_version
  220#
  221# Example:
  222# on:  'bash 4.4.5'
  223# off: 'bash'
  224shell_version="on"
  225
  226
  227# CPU
  228
  229
  230# CPU speed type
  231#
  232# Default: 'bios_limit'
  233# Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'.
  234# Flag:    --speed_type
  235# Supports: Linux with 'cpufreq'
  236# NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value.
  237speed_type="bios_limit"
  238
  239# CPU speed shorthand
  240#
  241# Default: 'off'
  242# Values: 'on', 'off'.
  243# Flag:    --speed_shorthand
  244# NOTE: This flag is not supported in systems with CPU speed less than 1 GHz
  245#
  246# Example:
  247# on:    'i7-6500U (4) @ 3.1GHz'
  248# off:   'i7-6500U (4) @ 3.100GHz'
  249speed_shorthand="off"
  250
  251# Enable/Disable CPU brand in output.
  252#
  253# Default: 'on'
  254# Values:  'on', 'off'
  255# Flag:    --cpu_brand
  256#
  257# Example:
  258# on:   'Intel i7-6500U'
  259# off:  'i7-6500U (4)'
  260cpu_brand="on"
  261
  262# CPU Speed
  263# Hide/Show CPU speed.
  264#
  265# Default: 'on'
  266# Values:  'on', 'off'
  267# Flag:    --cpu_speed
  268#
  269# Example:
  270# on:  'Intel i7-6500U (4) @ 3.1GHz'
  271# off: 'Intel i7-6500U (4)'
  272cpu_speed="on"
  273
  274# CPU Cores
  275# Display CPU cores in output
  276#
  277# Default: 'logical'
  278# Values:  'logical', 'physical', 'off'
  279# Flag:    --cpu_cores
  280# Support: 'physical' doesn't work on BSD.
  281#
  282# Example:
  283# logical:  'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores)
  284# physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores)
  285# off:      'Intel i7-6500U @ 3.1GHz'
  286cpu_cores="logical"
  287
  288# CPU Temperature
  289# Hide/Show CPU temperature.
  290# Note the temperature is added to the regular CPU function.
  291#
  292# Default: 'off'
  293# Values:  'C', 'F', 'off'
  294# Flag:    --cpu_temp
  295# Supports: Linux, BSD
  296# NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable
  297#       coretemp kernel module. This only supports newer Intel processors.
  298#
  299# Example:
  300# C:   'Intel i7-6500U (4) @ 3.1GHz [27.2°C]'
  301# F:   'Intel i7-6500U (4) @ 3.1GHz [82.0°F]'
  302# off: 'Intel i7-6500U (4) @ 3.1GHz'
  303cpu_temp="off"
  304
  305
  306# GPU
  307
  308
  309# Enable/Disable GPU Brand
  310#
  311# Default: 'on'
  312# Values:  'on', 'off'
  313# Flag:    --gpu_brand
  314#
  315# Example:
  316# on:  'AMD HD 7950'
  317# off: 'HD 7950'
  318gpu_brand="on"
  319
  320# Which GPU to display
  321#
  322# Default: 'all'
  323# Values:  'all', 'dedicated', 'integrated'
  324# Flag:    --gpu_type
  325# Supports: Linux
  326#
  327# Example:
  328# all:
  329#   GPU1: AMD HD 7950
  330#   GPU2: Intel Integrated Graphics
  331#
  332# dedicated:
  333#   GPU1: AMD HD 7950
  334#
  335# integrated:
  336#   GPU1: Intel Integrated Graphics
  337gpu_type="all"
  338
  339
  340# Resolution
  341
  342
  343# Display refresh rate next to each monitor
  344# Default: 'off'
  345# Values:  'on', 'off'
  346# Flag:    --refresh_rate
  347# Supports: Doesn't work on Windows.
  348#
  349# Example:
  350# on:  '1920x1080 @ 60Hz'
  351# off: '1920x1080'
  352refresh_rate="off"
  353
  354
  355# Gtk Theme / Icons / Font
  356
  357
  358# Shorten output of GTK Theme / Icons / Font
  359#
  360# Default: 'off'
  361# Values:  'on', 'off'
  362# Flag:    --gtk_shorthand
  363#
  364# Example:
  365# on:  'Numix, Adwaita'
  366# off: 'Numix [GTK2], Adwaita [GTK3]'
  367gtk_shorthand="off"
  368
  369
  370# Enable/Disable gtk2 Theme / Icons / Font
  371#
  372# Default: 'on'
  373# Values:  'on', 'off'
  374# Flag:    --gtk2
  375#
  376# Example:
  377# on:  'Numix [GTK2], Adwaita [GTK3]'
  378# off: 'Adwaita [GTK3]'
  379gtk2="on"
  380
  381# Enable/Disable gtk3 Theme / Icons / Font
  382#
  383# Default: 'on'
  384# Values:  'on', 'off'
  385# Flag:    --gtk3
  386#
  387# Example:
  388# on:  'Numix [GTK2], Adwaita [GTK3]'
  389# off: 'Numix [GTK2]'
  390gtk3="on"
  391
  392
  393# IP Address
  394
  395
  396# Website to ping for the public IP
  397#
  398# Default: 'http://ident.me'
  399# Values:  'url'
  400# Flag:    --ip_host
  401public_ip_host="http://ident.me"
  402
  403# Public IP timeout.
  404#
  405# Default: '2'
  406# Values:  'int'
  407# Flag:    --ip_timeout
  408public_ip_timeout=2
  409
  410# Local IP interface
  411#
  412# Default: 'auto' (interface of default route)
  413# Values:  'auto', 'en0', 'en1'
  414# Flag:    --ip_interface
  415local_ip_interface=('auto')
  416
  417
  418# Desktop Environment
  419
  420
  421# Show Desktop Environment version
  422#
  423# Default: 'on'
  424# Values:  'on', 'off'
  425# Flag:    --de_version
  426de_version="on"
  427
  428
  429# Disk
  430
  431
  432# Which disks to display.
  433# The values can be any /dev/sdXX, mount point or directory.
  434# NOTE: By default we only show the disk info for '/'.
  435#
  436# Default: '/'
  437# Values:  '/', '/dev/sdXX', '/path/to/drive'.
  438# Flag:    --disk_show
  439#
  440# Example:
  441# disk_show=('/' '/dev/sdb1'):
  442#      'Disk (/): 74G / 118G (66%)'
  443#      'Disk (/mnt/Videos): 823G / 893G (93%)'
  444#
  445# disk_show=('/'):
  446#      'Disk (/): 74G / 118G (66%)'
  447#
  448disk_show=('/')
  449
  450# Disk subtitle.
  451# What to append to the Disk subtitle.
  452#
  453# Default: 'mount'
  454# Values:  'mount', 'name', 'dir', 'none'
  455# Flag:    --disk_subtitle
  456#
  457# Example:
  458# name:   'Disk (/dev/sda1): 74G / 118G (66%)'
  459#         'Disk (/dev/sdb2): 74G / 118G (66%)'
  460#
  461# mount:  'Disk (/): 74G / 118G (66%)'
  462#         'Disk (/mnt/Local Disk): 74G / 118G (66%)'
  463#         'Disk (/mnt/Videos): 74G / 118G (66%)'
  464#
  465# dir:    'Disk (/): 74G / 118G (66%)'
  466#         'Disk (Local Disk): 74G / 118G (66%)'
  467#         'Disk (Videos): 74G / 118G (66%)'
  468#
  469# none:   'Disk: 74G / 118G (66%)'
  470#         'Disk: 74G / 118G (66%)'
  471#         'Disk: 74G / 118G (66%)'
  472disk_subtitle="mount"
  473
  474# Disk percent.
  475# Show/Hide disk percent.
  476#
  477# Default: 'on'
  478# Values:  'on', 'off'
  479# Flag:    --disk_percent
  480#
  481# Example:
  482# on:  'Disk (/): 74G / 118G (66%)'
  483# off: 'Disk (/): 74G / 118G'
  484disk_percent="on"
  485
  486
  487# Song
  488
  489
  490# Manually specify a music player.
  491#
  492# Default: 'auto'
  493# Values:  'auto', 'player-name'
  494# Flag:    --music_player
  495#
  496# Available values for 'player-name':
  497#
  498# amarok
  499# audacious
  500# banshee
  501# bluemindo
  502# clementine
  503# cmus
  504# deadbeef
  505# deepin-music
  506# dragon
  507# elisa
  508# exaile
  509# gnome-music
  510# gmusicbrowser
  511# gogglesmm
  512# guayadeque
  513# io.elementary.music
  514# iTunes
  515# Music
  516# juk
  517# lollypop
  518# MellowPlayer
  519# mocp
  520# mopidy
  521# mpd
  522# muine
  523# netease-cloud-music
  524# olivia
  525# playerctl
  526# pogo
  527# pragha
  528# qmmp
  529# quodlibet
  530# rhythmbox
  531# sayonara
  532# smplayer
  533# spotify
  534# strawberry
  535# tauonmb
  536# tomahawk
  537# vlc
  538# xmms2d
  539# xnoise
  540# yarock
  541music_player="auto"
  542
  543# Format to display song information.
  544#
  545# Default: '%artist% - %album% - %title%'
  546# Values:  '%artist%', '%album%', '%title%'
  547# Flag:    --song_format
  548#
  549# Example:
  550# default: 'Song: Jet - Get Born - Sgt Major'
  551song_format="%artist% - %album% - %title%"
  552
  553# Print the Artist, Album and Title on separate lines
  554#
  555# Default: 'off'
  556# Values:  'on', 'off'
  557# Flag:    --song_shorthand
  558#
  559# Example:
  560# on:  'Artist: The Fratellis'
  561#      'Album: Costello Music'
  562#      'Song: Chelsea Dagger'
  563#
  564# off: 'Song: The Fratellis - Costello Music - Chelsea Dagger'
  565song_shorthand="off"
  566
  567# 'mpc' arguments (specify a host, password etc).
  568#
  569# Default:  ''
  570# Example: mpc_args=(-h HOST -P PASSWORD)
  571mpc_args=()
  572
  573
  574# Text Colors
  575
  576
  577# Text Colors
  578#
  579# Default:  'distro'
  580# Values:   'distro', 'num' 'num' 'num' 'num' 'num' 'num'
  581# Flag:     --colors
  582#
  583# Each number represents a different part of the text in
  584# this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info'
  585#
  586# Example:
  587# colors=(distro)      - Text is colored based on Distro colors.
  588# colors=(4 6 1 8 8 6) - Text is colored in the order above.
  589colors=(distro)
  590
  591
  592# Text Options
  593
  594
  595# Toggle bold text
  596#
  597# Default:  'on'
  598# Values:   'on', 'off'
  599# Flag:     --bold
  600bold="on"
  601
  602# Enable/Disable Underline
  603#
  604# Default:  'on'
  605# Values:   'on', 'off'
  606# Flag:     --underline
  607underline_enabled="on"
  608
  609# Underline character
  610#
  611# Default:  '-'
  612# Values:   'string'
  613# Flag:     --underline_char
  614underline_char="-"
  615
  616
  617# Info Separator
  618# Replace the default separator with the specified string.
  619#
  620# Default:  ':'
  621# Flag:     --separator
  622#
  623# Example:
  624# separator="->":   'Shell-> bash'
  625# separator=" =":   'WM = dwm'
  626separator=":"
  627
  628
  629# Color Blocks
  630
  631
  632# Color block range
  633# The range of colors to print.
  634#
  635# Default:  '0', '15'
  636# Values:   'num'
  637# Flag:     --block_range
  638#
  639# Example:
  640#
  641# Display colors 0-7 in the blocks.  (8 colors)
  642# neofetch --block_range 0 7
  643#
  644# Display colors 0-15 in the blocks. (16 colors)
  645# neofetch --block_range 0 15
  646block_range=(0 15)
  647
  648# Toggle color blocks
  649#
  650# Default:  'on'
  651# Values:   'on', 'off'
  652# Flag:     --color_blocks
  653color_blocks="on"
  654
  655# Color block width in spaces
  656#
  657# Default:  '3'
  658# Values:   'num'
  659# Flag:     --block_width
  660block_width=3
  661
  662# Color block height in lines
  663#
  664# Default:  '1'
  665# Values:   'num'
  666# Flag:     --block_height
  667block_height=1
  668
  669# Color Alignment
  670#
  671# Default: 'auto'
  672# Values: 'auto', 'num'
  673# Flag: --col_offset
  674#
  675# Number specifies how far from the left side of the terminal (in spaces) to
  676# begin printing the columns, in case you want to e.g. center them under your
  677# text.
  678# Example:
  679# col_offset="auto" - Default behavior of neofetch
  680# col_offset=7      - Leave 7 spaces then print the colors
  681col_offset="auto"
  682
  683# Progress Bars
  684
  685
  686# Bar characters
  687#
  688# Default:  '-', '='
  689# Values:   'string', 'string'
  690# Flag:     --bar_char
  691#
  692# Example:
  693# neofetch --bar_char 'elapsed' 'total'
  694# neofetch --bar_char '-' '='
  695bar_char_elapsed="-"
  696bar_char_total="="
  697
  698# Toggle Bar border
  699#
  700# Default:  'on'
  701# Values:   'on', 'off'
  702# Flag:     --bar_border
  703bar_border="on"
  704
  705# Progress bar length in spaces
  706# Number of chars long to make the progress bars.
  707#
  708# Default:  '15'
  709# Values:   'num'
  710# Flag:     --bar_length
  711bar_length=15
  712
  713# Progress bar colors
  714# When set to distro, uses your distro's logo colors.
  715#
  716# Default:  'distro', 'distro'
  717# Values:   'distro', 'num'
  718# Flag:     --bar_colors
  719#
  720# Example:
  721# neofetch --bar_colors 3 4
  722# neofetch --bar_colors distro 5
  723bar_color_elapsed="distro"
  724bar_color_total="distro"
  725
  726
  727# Info display
  728# Display a bar with the info.
  729#
  730# Default: 'off'
  731# Values:  'bar', 'infobar', 'barinfo', 'off'
  732# Flags:   --memory_display
  733#          --battery_display
  734#          --disk_display
  735#
  736# Example:
  737# bar:     '[---=======]'
  738# infobar: 'info [---=======]'
  739# barinfo: '[---=======] info'
  740# off:     'info'
  741memory_display="off"
  742battery_display="off"
  743disk_display="off"
  744
  745
  746# Backend Settings
  747
  748
  749# Image backend.
  750#
  751# Default:  'ascii'
  752# Values:   'ascii', 'caca', 'catimg', 'chafa', 'jp2a', 'iterm2', 'off',
  753#           'pot', 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty', 'ueberzug',
  754#           'viu'
  755
  756# Flag:     --backend
  757image_backend="ascii"
  758
  759# Image Source
  760#
  761# Which image or ascii file to display.
  762#
  763# Default:  'auto'
  764# Values:   'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/'
  765#           'command output (neofetch --ascii "$(fortune | cowsay -W 30)")'
  766# Flag:     --source
  767#
  768# NOTE: 'auto' will pick the best image source for whatever image backend is used.
  769#       In ascii mode, distro ascii art will be used and in an image mode, your
  770#       wallpaper will be used.
  771image_source="auto"
  772
  773
  774# Ascii Options
  775
  776
  777# Ascii distro
  778# Which distro's ascii art to display.
  779#
  780# Default: 'auto'
  781# Values:  'auto', 'distro_name'
  782# Flag:    --ascii_distro
  783# NOTE: AIX, Hash, Alpine, AlterLinux, Amazon, Anarchy, Android, instantOS,
  784#       Antergos, antiX, "AOSC OS", "AOSC OS/Retro", Apricity, ArchCraft,
  785#       ArcoLinux, ArchBox, ARCHlabs, ArchStrike, XFerience, ArchMerge, Arch,
  786#       Artix, Arya, Bedrock, Bitrig, BlackArch, BLAG, BlankOn, BlueLight,
  787#       Bodhi, bonsai, BSD, BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS,
  788#       Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover, Condres,
  789#       Container_Linux, Crystal Linux, CRUX, Cucumber, dahlia, Debian, Deepin,
  790#       DesaOS, Devuan, DracOS, DarkOs, Itc, DragonFly, Drauger, Elementary,
  791#       EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD,
  792#       FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo,
  793#       gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra, HydroOS
  794#       Hyperbola, iglunix, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion, Korora,
  795#       KSLinux, Kubuntu, LEDE, LaxerOS, LibreELEC, LFS, Linux_Lite, LMDE,
  796#       Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva, Manjaro, TeArch, Maui,
  797#       Mer, Minix, LinuxMint, Live_Raizo, MX_Linux, Namib, Neptune, NetBSD,
  798#       Netrunner, Nitrux, NixOS, Nurunner, NuTyX, OBRevenge, OpenBSD,
  799#       openEuler, OpenIndiana, openmamba, OpenMandriva, OpenStage, OpenWrt,
  800#       osmc, Oracle, OS Elbrus, PacBSD, Parabola, Pardus, Parrot, Parsix,
  801#       TrueOS, PCLinuxOS, Pengwin, Peppermint, Pisi, popos, Porteus, PostMarketOS,
  802#       Proxmox, PuffOS, Puppy, PureOS, Qubes, Qubyt, Quibian, Radix, Raspbian,
  803#       Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan, Regata, Regolith,
  804#       Rocky, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific, Septor,
  805#       SereneLinux, SharkLinux, Siduction, SkiffOS, Slackware, SliTaz, SmartOS,
  806#       Solus, Source_Mage, Sparky, Star, SteamOS, SunOS, openSUSE_Leap, t2,
  807#       openSUSE_Tumbleweed, openSUSE, SwagArch, Tails, Trisquel,
  808#       Ubuntu-Cinnamon, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE,
  809#       Ubuntu-Studio, Ubuntu, Univention, Venom, Void, VNux, LangitKetujuh, semc,
  810#       Obarun, windows10, Windows7, Xubuntu, Zorin, and IRIX have ascii logos.
  811# NOTE: Arch, Ubuntu, Redhat, Fedora and Dragonfly have 'old' logo variants.
  812#       Use '{distro name}_old' to use the old logos.
  813# NOTE: Ubuntu has flavor variants.
  814#       Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME,
  815#       Ubuntu-Studio, Ubuntu-Mate  or Ubuntu-Budgie to use the flavors.
  816# NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu,
  817#       CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android,
  818#       Artix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola,
  819#       Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS,
  820#       Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian,
  821#       postmarketOS, and Void have a smaller logo variant.
  822#       Use '{distro name}_small' to use the small variants.
  823ascii_distro="auto"
  824
  825# Ascii Colors
  826#
  827# Default:  'distro'
  828# Values:   'distro', 'num' 'num' 'num' 'num' 'num' 'num'
  829# Flag:     --ascii_colors
  830#
  831# Example:
  832# ascii_colors=(distro)      - Ascii is colored based on Distro colors.
  833# ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors.
  834ascii_colors=(distro)
  835
  836# Bold ascii logo
  837# Whether or not to bold the ascii logo.
  838#
  839# Default: 'on'
  840# Values:  'on', 'off'
  841# Flag:    --ascii_bold
  842ascii_bold="on"
  843
  844
  845# Image Options
  846
  847
  848# Image loop
  849# Setting this to on will make neofetch redraw the image constantly until
  850# Ctrl+C is pressed. This fixes display issues in some terminal emulators.
  851#
  852# Default:  'off'
  853# Values:   'on', 'off'
  854# Flag:     --loop
  855image_loop="off"
  856
  857# Thumbnail directory
  858#
  859# Default: '~/.cache/thumbnails/neofetch'
  860# Values:  'dir'
  861thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch"
  862
  863# Crop mode
  864#
  865# Default:  'normal'
  866# Values:   'normal', 'fit', 'fill'
  867# Flag:     --crop_mode
  868#
  869# See this wiki page to learn about the fit and fill options.
  870# https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F
  871crop_mode="normal"
  872
  873# Crop offset
  874# Note: Only affects 'normal' crop mode.
  875#
  876# Default:  'center'
  877# Values:   'northwest', 'north', 'northeast', 'west', 'center'
  878#           'east', 'southwest', 'south', 'southeast'
  879# Flag:     --crop_offset
  880crop_offset="center"
  881
  882# Image size
  883# The image is half the terminal width by default.
  884#
  885# Default: 'auto'
  886# Values:  'auto', '00px', '00%', 'none'
  887# Flags:   --image_size
  888#          --size
  889image_size="auto"
  890
  891# Catimg block size.
  892# Control the resolution of catimg.
  893#
  894# Default: '2'
  895# Values:  '1', '2'
  896# Flags:   --catimg_size
  897catimg_size="2"
  898
  899# Gap between image and text
  900#
  901# Default: '3'
  902# Values:  'num', '-num'
  903# Flag:    --gap
  904gap=3
  905
  906# Image offsets
  907# Only works with the w3m backend.
  908#
  909# Default: '0'
  910# Values:  'px'
  911# Flags:   --xoffset
  912#          --yoffset
  913yoffset=0
  914xoffset=0
  915
  916# Image background color
  917# Only works with the w3m backend.
  918#
  919# Default: ''
  920# Values:  'color', 'blue'
  921# Flag:    --bg_color
  922background_color=
  923
  924
  925# Misc Options
  926
  927# Stdout mode
  928# Turn off all colors and disables image backend (ASCII/Image).
  929# Useful for piping into another command.
  930# Default: 'off'
  931# Values: 'on', 'off'
  932stdout="off"
  933EOF
  934
  935# DETECT INFORMATION
  936
  937get_os() {
  938    # $kernel_name is set in a function called cache_uname and is
  939    # just the output of "uname -s".
  940    case $kernel_name in
  941        Darwin)   os=$darwin_name ;;
  942        SunOS)    os=Solaris ;;
  943        Haiku)    os=Haiku ;;
  944        MINIX)    os=MINIX ;;
  945        AIX)      os=AIX ;;
  946        IRIX*)    os=IRIX ;;
  947        FreeMiNT) os=FreeMiNT ;;
  948
  949        Linux|GNU*)
  950            os=Linux
  951        ;;
  952
  953        *BSD|DragonFly|Bitrig)
  954            os=BSD
  955        ;;
  956
  957        CYGWIN*|MSYS*|MINGW*)
  958            os=Windows
  959        ;;
  960
  961        *)
  962            printf '%s\n' "Unknown OS detected: '$kernel_name', aborting..." >&2
  963            printf '%s\n' "Open an issue on GitHub to add support for your OS." >&2
  964            exit 1
  965        ;;
  966    esac
  967}
  968
  969get_distro() {
  970    [[ $distro ]] && return
  971
  972    case $os in
  973        Linux|BSD|MINIX)
  974            if [[ -f /bedrock/etc/bedrock-release && -z $BEDROCK_RESTRICT ]]; then
  975                case $distro_shorthand in
  976                    on|tiny) distro="Bedrock Linux" ;;
  977                    *) distro=$(< /bedrock/etc/bedrock-release)
  978                esac
  979
  980            elif [[ -f /etc/redstar-release ]]; then
  981                case $distro_shorthand in
  982                    on|tiny) distro="Red Star OS" ;;
  983                    *) distro="Red Star OS $(awk -F'[^0-9*]' '$0=$2' /etc/redstar-release)"
  984                esac
  985
  986            elif [[ -f /etc/armbian-release ]]; then
  987                . /etc/armbian-release
  988                distro="Armbian $DISTRIBUTION_CODENAME (${VERSION:-})"
  989
  990            elif [[ -f /etc/siduction-version ]]; then
  991                case $distro_shorthand in
  992                    on|tiny) distro=Siduction ;;
  993                    *) distro="Siduction ($(lsb_release -sic))"
  994                esac
  995
  996            elif [[ -f /etc/mcst_version ]]; then
  997                case $distro_shorthand in
  998                    on|tiny) distro="OS Elbrus" ;;
  999                    *) distro="OS Elbrus $(< /etc/mcst_version)"
 1000                esac
 1001
 1002            elif type -p pveversion >/dev/null; then
 1003                case $distro_shorthand in
 1004                    on|tiny) distro="Proxmox VE" ;;
 1005                    *)
 1006                        distro=$(pveversion)
 1007                        distro=${distro#pve-manager/}
 1008                        distro="Proxmox VE ${distro%/*}"
 1009                esac
 1010
 1011            elif type -p lsb_release >/dev/null; then
 1012                case $distro_shorthand in
 1013                    on)   lsb_flags=-si ;;
 1014                    tiny) lsb_flags=-si ;;
 1015                    *)    lsb_flags=-sd ;;
 1016                esac
 1017                distro=$(lsb_release "$lsb_flags")
 1018
 1019            elif [[ -f /etc/os-release || \
 1020                    -f /usr/lib/os-release || \
 1021                    -f /etc/openwrt_release || \
 1022                    -f /etc/lsb-release ]]; then
 1023
 1024                # Source the os-release file
 1025                for file in /etc/lsb-release /usr/lib/os-release \
 1026                            /etc/os-release  /etc/openwrt_release; do
 1027                    source "$file" && break
 1028                done
 1029
 1030                # Format the distro name.
 1031                case $distro_shorthand in
 1032                    on)   distro="${NAME:-${DISTRIB_ID}} ${VERSION_ID:-${DISTRIB_RELEASE}}" ;;
 1033                    tiny) distro="${NAME:-${DISTRIB_ID:-${TAILS_PRODUCT_NAME}}}" ;;
 1034                    off)  distro="${PRETTY_NAME:-${DISTRIB_DESCRIPTION}} ${UBUNTU_CODENAME}" ;;
 1035                esac
 1036
 1037            elif [[ -f /etc/GoboLinuxVersion ]]; then
 1038                case $distro_shorthand in
 1039                    on|tiny) distro=GoboLinux ;;
 1040                    *) distro="GoboLinux $(< /etc/GoboLinuxVersion)"
 1041                esac
 1042
 1043            elif [[ -f /etc/SDE-VERSION ]]; then
 1044                distro="$(< /etc/SDE-VERSION)"
 1045                case $distro_shorthand in
 1046                    on|tiny) distro="${distro% *}" ;;
 1047                esac
 1048
 1049            elif type -p crux >/dev/null; then
 1050                distro=$(crux)
 1051                case $distro_shorthand in
 1052                    on)   distro=${distro//version} ;;
 1053                    tiny) distro=${distro//version*}
 1054                esac
 1055
 1056            elif type -p tazpkg >/dev/null; then
 1057                distro="SliTaz $(< /etc/slitaz-release)"
 1058
 1059            elif type -p kpt >/dev/null && \
 1060                 type -p kpm >/dev/null; then
 1061                distro=KSLinux
 1062
 1063            elif [[ -d /system/app/ && -d /system/priv-app ]]; then
 1064                distro="Android $(getprop ro.build.version.release)"
 1065
 1066            # Chrome OS doesn't conform to the /etc/*-release standard.
 1067            # While the file is a series of variables they can't be sourced
 1068            # by the shell since the values aren't quoted.
 1069            elif [[ -f /etc/lsb-release && $(< /etc/lsb-release) == *CHROMEOS* ]]; then
 1070                distro='Chrome OS'
 1071
 1072            elif type -p guix >/dev/null; then
 1073                case $distro_shorthand in
 1074                    on|tiny) distro="Guix System" ;;
 1075                    *) distro="Guix System $(guix -V | awk 'NR==1{printf $4}')"
 1076                esac
 1077
 1078            # Display whether using '-current' or '-release' on OpenBSD.
 1079            elif [[ $kernel_name = OpenBSD ]] ; then
 1080                read -ra kernel_info <<< "$(sysctl -n kern.version)"
 1081                distro=${kernel_info[*]:0:2}
 1082
 1083            else
 1084                for release_file in /etc/*-release; do
 1085                    distro+=$(< "$release_file")
 1086                done
 1087
 1088                if [[ -z $distro ]]; then
 1089                    case $distro_shorthand in
 1090                        on|tiny) distro=$kernel_name ;;
 1091                        *) distro="$kernel_name $kernel_version" ;;
 1092                    esac
 1093
 1094                    distro=${distro/DragonFly/DragonFlyBSD}
 1095
 1096                    # Workarounds for some BSD based distros.
 1097                    [[ -f /etc/pcbsd-lang ]]       && distro=PCBSD
 1098                    [[ -f /etc/trueos-lang ]]      && distro=TrueOS
 1099                    [[ -f /etc/pacbsd-release ]]   && distro=PacBSD
 1100                    [[ -f /etc/hbsd-update.conf ]] && distro=HardenedBSD
 1101                fi
 1102            fi
 1103
 1104            if [[ $(< /proc/version) == *Microsoft* || $kernel_version == *Microsoft* ]]; then
 1105                windows_version=$(wmic.exe os get Version)
 1106                windows_version=$(trim "${windows_version/Version}")
 1107
 1108                case $distro_shorthand in
 1109                    on)   distro+=" [Windows $windows_version]" ;;
 1110                    tiny) distro="Windows ${windows_version::2}" ;;
 1111                    *)    distro+=" on Windows $windows_version" ;;
 1112                esac
 1113
 1114            elif [[ $(< /proc/version) == *chrome-bot* || -f /dev/cros_ec ]]; then
 1115                [[ $distro != *Chrome* ]] &&
 1116                    case $distro_shorthand in
 1117                        on)   distro+=" [Chrome OS]" ;;
 1118                        tiny) distro="Chrome OS" ;;
 1119                        *)    distro+=" on Chrome OS" ;;
 1120                    esac
 1121                    distro=${distro## on }
 1122            fi
 1123
 1124            distro=$(trim_quotes "$distro")
 1125            distro=${distro/NAME=}
 1126
 1127            # Get Ubuntu flavor.
 1128            if [[ $distro == "Ubuntu"* ]]; then
 1129                case $XDG_CONFIG_DIRS in
 1130                    *"studio"*)   distro=${distro/Ubuntu/Ubuntu Studio} ;;
 1131                    *"plasma"*)   distro=${distro/Ubuntu/Kubuntu} ;;
 1132                    *"mate"*)     distro=${distro/Ubuntu/Ubuntu MATE} ;;
 1133                    *"xubuntu"*)  distro=${distro/Ubuntu/Xubuntu} ;;
 1134                    *"Lubuntu"*)  distro=${distro/Ubuntu/Lubuntu} ;;
 1135                    *"budgie"*)   distro=${distro/Ubuntu/Ubuntu Budgie} ;;
 1136                    *"cinnamon"*) distro=${distro/Ubuntu/Ubuntu Cinnamon} ;;
 1137                esac
 1138            fi
 1139        ;;
 1140
 1141        "Mac OS X"|"macOS")
 1142            case $osx_version in
 1143                10.4*)  codename="Mac OS X Tiger" ;;
 1144                10.5*)  codename="Mac OS X Leopard" ;;
 1145                10.6*)  codename="Mac OS X Snow Leopard" ;;
 1146                10.7*)  codename="Mac OS X Lion" ;;
 1147                10.8*)  codename="OS X Mountain Lion" ;;
 1148                10.9*)  codename="OS X Mavericks" ;;
 1149                10.10*) codename="OS X Yosemite" ;;
 1150                10.11*) codename="OS X El Capitan" ;;
 1151                10.12*) codename="macOS Sierra" ;;
 1152                10.13*) codename="macOS High Sierra" ;;
 1153                10.14*) codename="macOS Mojave" ;;
 1154                10.15*) codename="macOS Catalina" ;;
 1155                10.16*) codename="macOS Big Sur" ;;
 1156                11.*)  codename="macOS Big Sur" ;;
 1157                12.*)  codename="macOS Monterey" ;;
 1158                *)      codename=macOS ;;
 1159            esac
 1160
 1161            distro="$codename $osx_version $osx_build"
 1162
 1163            case $distro_shorthand in
 1164                on) distro=${distro/ ${osx_build}} ;;
 1165
 1166                tiny)
 1167                    case $osx_version in
 1168                        10.[4-7]*)            distro=${distro/${codename}/Mac OS X} ;;
 1169                        10.[8-9]*|10.1[0-1]*) distro=${distro/${codename}/OS X} ;;
 1170                        10.1[2-6]*|11.0*)     distro=${distro/${codename}/macOS} ;;
 1171                    esac
 1172                    distro=${distro/ ${osx_build}}
 1173                ;;
 1174            esac
 1175        ;;
 1176
 1177        "iPhone OS")
 1178            distro="iOS $osx_version"
 1179
 1180            # "uname -m" doesn't print architecture on iOS.
 1181            os_arch=off
 1182        ;;
 1183
 1184        Windows)
 1185            distro=$(wmic os get Caption)
 1186            distro=${distro/Caption}
 1187            distro=${distro/Microsoft }
 1188        ;;
 1189
 1190        Solaris)
 1191            case $distro_shorthand in
 1192                on|tiny) distro=$(awk 'NR==1 {print $1,$3}' /etc/release) ;;
 1193                *)       distro=$(awk 'NR==1 {print $1,$2,$3}' /etc/release) ;;
 1194            esac
 1195            distro=${distro/\(*}
 1196        ;;
 1197
 1198        Haiku)
 1199            distro=Haiku
 1200        ;;
 1201
 1202        AIX)
 1203            distro="AIX $(oslevel)"
 1204        ;;
 1205
 1206        IRIX)
 1207            distro="IRIX ${kernel_version}"
 1208        ;;
 1209
 1210        FreeMiNT)
 1211            distro=FreeMiNT
 1212        ;;
 1213    esac
 1214
 1215    distro=${distro//Enterprise Server}
 1216
 1217    [[ $distro ]] || distro="$os (Unknown)"
 1218
 1219    # Get OS architecture.
 1220    case $os in
 1221        Solaris|AIX|Haiku|IRIX|FreeMiNT)
 1222            machine_arch=$(uname -p)
 1223        ;;
 1224
 1225        *)  machine_arch=$kernel_machine ;;
 1226    esac
 1227
 1228    [[ $os_arch == on ]] && \
 1229        distro+=" $machine_arch"
 1230
 1231    [[ ${ascii_distro:-auto} == auto ]] && \
 1232        ascii_distro=$(trim "$distro")
 1233}
 1234
 1235get_model() {
 1236    case $os in
 1237        Linux)
 1238            if [[ -d /system/app/ && -d /system/priv-app ]]; then
 1239                model="$(getprop ro.product.brand) $(getprop ro.product.model)"
 1240
 1241            elif [[ -f /sys/devices/virtual/dmi/id/board_vendor ||
 1242                    -f /sys/devices/virtual/dmi/id/board_name ]]; then
 1243                model=$(< /sys/devices/virtual/dmi/id/board_vendor)
 1244                model+=" $(< /sys/devices/virtual/dmi/id/board_name)"
 1245
 1246            elif [[ -f /sys/devices/virtual/dmi/id/product_name ||
 1247                    -f /sys/devices/virtual/dmi/id/product_version ]]; then
 1248                model=$(< /sys/devices/virtual/dmi/id/product_name)
 1249                model+=" $(< /sys/devices/virtual/dmi/id/product_version)"
 1250
 1251            elif [[ -f /sys/firmware/devicetree/base/model ]]; then
 1252                model=$(< /sys/firmware/devicetree/base/model)
 1253
 1254            elif [[ -f /tmp/sysinfo/model ]]; then
 1255                model=$(< /tmp/sysinfo/model)
 1256            fi
 1257        ;;
 1258
 1259        "Mac OS X"|"macOS")
 1260            if [[ $(kextstat | grep -F -e "FakeSMC" -e "VirtualSMC") != "" ]]; then
 1261                model="Hackintosh (SMBIOS: $(sysctl -n hw.model))"
 1262            else
 1263                model=$(sysctl -n hw.model)
 1264            fi
 1265        ;;
 1266
 1267        "iPhone OS")
 1268            case $kernel_machine in
 1269                iPad1,1):            "iPad" ;;
 1270                iPad2,[1-4]):        "iPad 2" ;;
 1271                iPad3,[1-3]):        "iPad 3" ;;
 1272                iPad3,[4-6]):        "iPad 4" ;;
 1273                iPad6,1[12]):        "iPad 5" ;;
 1274                iPad7,[5-6]):        "iPad 6" ;;
 1275                iPad7,1[12]):        "iPad 7" ;;
 1276                iPad11,[67]):        "iPad 8" ;;
 1277                iPad4,[1-3]):        "iPad Air" ;;
 1278                iPad5,[3-4]):        "iPad Air 2" ;;
 1279                iPad11,[3-4]):       "iPad Air 3" ;;
 1280                iPad13,[1-2]):       "iPad Air 4";;
 1281                iPad6,[7-8]):        "iPad Pro (12.9 Inch)" ;;
 1282                iPad6,[3-4]):        "iPad Pro (9.7 Inch)" ;;
 1283                iPad7,[1-2]):        "iPad Pro 2 (12.9 Inch)" ;;
 1284                iPad7,[3-4]):        "iPad Pro (10.5 Inch)" ;;
 1285                iPad8,[1-4]):        "iPad Pro (11 Inch)" ;;
 1286                iPad8,[5-8]):        "iPad Pro 3 (12.9 Inch)" ;;
 1287                iPad8,9 | iPad8,10): "iPad Pro 4 (11 Inch)" ;;
 1288                iPad8,1[1-2]):       "iPad Pro 4 (12.9 Inch)" ;;
 1289                iPad2,[5-7]):        "iPad mini" ;;
 1290                iPad4,[4-6]):        "iPad mini 2" ;;
 1291                iPad4,[7-9]):        "iPad mini 3" ;;
 1292                iPad5,[1-2]):        "iPad mini 4" ;;
 1293                iPad11,[1-2]):       "iPad mini 5" ;;
 1294
 1295                iPhone1,1):     "iPhone" ;;
 1296                iPhone1,2):     "iPhone 3G" ;;
 1297                iPhone2,1):     "iPhone 3GS" ;;
 1298                iPhone3,[1-3]): "iPhone 4" ;;
 1299                iPhone4,1):     "iPhone 4S" ;;
 1300                iPhone5,[1-2]): "iPhone 5" ;;
 1301                iPhone5,[3-4]): "iPhone 5c" ;;
 1302                iPhone6,[1-2]): "iPhone 5s" ;;
 1303                iPhone7,2):     "iPhone 6" ;;
 1304                iPhone7,1):     "iPhone 6 Plus" ;;
 1305                iPhone8,1):     "iPhone 6s" ;;
 1306                iPhone8,2):     "iPhone 6s Plus" ;;
 1307                iPhone8,4):     "iPhone SE" ;;
 1308                iPhone9,[13]):  "iPhone 7" ;;
 1309                iPhone9,[24]):  "iPhone 7 Plus" ;;
 1310                iPhone10,[14]): "iPhone 8" ;;
 1311                iPhone10,[25]): "iPhone 8 Plus" ;;
 1312                iPhone10,[36]): "iPhone X" ;;
 1313                iPhone11,2):    "iPhone XS" ;;
 1314                iPhone11,[46]): "iPhone XS Max" ;;
 1315                iPhone11,8):    "iPhone XR" ;;
 1316                iPhone12,1):    "iPhone 11" ;;
 1317                iPhone12,3):    "iPhone 11 Pro" ;;
 1318                iPhone12,5):    "iPhone 11 Pro Max" ;;
 1319                iPhone12,8):    "iPhone SE 2020" ;;
 1320                iPhone13,1):    "iPhone 12 Mini" ;;
 1321                iPhone13,2):    "iPhone 12" ;;
 1322                iPhone13,3):    "iPhone 12 Pro" ;;
 1323                iPhone13,4):    "iPhone 12 Pro Max" ;;
 1324
 1325                iPod1,1): "iPod touch" ;;
 1326                ipod2,1): "iPod touch 2G" ;;
 1327                ipod3,1): "iPod touch 3G" ;;
 1328                ipod4,1): "iPod touch 4G" ;;
 1329                ipod5,1): "iPod touch 5G" ;;
 1330                ipod7,1): "iPod touch 6G" ;;
 1331                iPod9,1): "iPod touch 7G" ;;
 1332            esac
 1333
 1334            model=$_
 1335        ;;
 1336
 1337        BSD|MINIX)
 1338            model=$(sysctl -n hw.vendor hw.product)
 1339        ;;
 1340
 1341        Windows)
 1342            model=$(wmic computersystem get manufacturer,model)
 1343            model=${model/Manufacturer}
 1344            model=${model/Model}
 1345        ;;
 1346
 1347        Solaris)
 1348            model=$(prtconf -b | awk -F':' '/banner-name/ {printf $2}')
 1349        ;;
 1350
 1351        AIX)
 1352            model=$(/usr/bin/uname -M)
 1353        ;;
 1354
 1355        FreeMiNT)
 1356            model=$(sysctl -n hw.model)
 1357            model=${model/ (_MCH *)}
 1358        ;;
 1359    esac
 1360
 1361    # Remove dummy OEM info.
 1362    model=${model//To be filled by O.E.M.}
 1363    model=${model//To Be Filled*}
 1364    model=${model//OEM*}
 1365    model=${model//Not Applicable}
 1366    model=${model//System Product Name}
 1367    model=${model//System Version}
 1368    model=${model//Undefined}
 1369    model=${model//Default string}
 1370    model=${model//Not Specified}
 1371    model=${model//Type1ProductConfigId}
 1372    model=${model//INVALID}
 1373    model=${model//All Series}
 1374    model=${model//�}
 1375
 1376    case $model in
 1377        "Standard PC"*) model="KVM/QEMU (${model})" ;;
 1378        OpenBSD*)       model="vmm ($model)" ;;
 1379    esac
 1380}
 1381
 1382get_title() {
 1383    user=${USER:-$(id -un || printf %s "${HOME/*\/}")}
 1384
 1385    case $title_fqdn in
 1386        on) hostname=$(hostname -f) ;;
 1387        *)  hostname=${HOSTNAME:-$(hostname)} ;;
 1388    esac
 1389
 1390    title=${title_color}${bold}${user}${at_color}@${title_color}${bold}${hostname}
 1391    length=$((${#user} + ${#hostname} + 1))
 1392}
 1393
 1394get_kernel() {
 1395    # Since these OS are integrated systems, it's better to skip this function altogether
 1396    [[ $os =~ (AIX|IRIX) ]] && return
 1397
 1398    # Haiku uses 'uname -v' and not - 'uname -r'.
 1399    [[ $os == Haiku ]] && {
 1400        kernel=$(uname -v)
 1401        return
 1402    }
 1403
 1404    # In Windows 'uname' may return the info of GNUenv thus use wmic for OS kernel.
 1405    [[ $os == Windows ]] && {
 1406        kernel=$(wmic os get Version)
 1407        kernel=${kernel/Version}
 1408        return
 1409    }
 1410
 1411    case $kernel_shorthand in
 1412        on)  kernel=$kernel_version ;;
 1413        off) kernel="$kernel_name $kernel_version" ;;
 1414    esac
 1415
 1416    # Hide kernel info if it's identical to the distro info.
 1417    [[ $os =~ (BSD|MINIX) && $distro == *"$kernel_name"* ]] &&
 1418        case $distro_shorthand in
 1419            on|tiny) kernel=$kernel_version ;;
 1420            *)       unset kernel ;;
 1421        esac
 1422}
 1423
 1424get_uptime() {
 1425    # Get uptime in seconds.
 1426    case $os in
 1427        Linux|Windows|MINIX)
 1428            if [[ -r /proc/uptime ]]; then
 1429                s=$(< /proc/uptime)
 1430                s=${s/.*}
 1431            else
 1432                boot=$(date -d"$(uptime -s)" +%s)
 1433                now=$(date +%s)
 1434                s=$((now - boot))
 1435            fi
 1436        ;;
 1437
 1438        "Mac OS X"|"macOS"|"iPhone OS"|BSD|FreeMiNT)
 1439            boot=$(sysctl -n kern.boottime)
 1440            boot=${boot/\{ sec = }
 1441            boot=${boot/,*}
 1442
 1443            # Get current date in seconds.
 1444            now=$(date +%s)
 1445            s=$((now - boot))
 1446        ;;
 1447
 1448        Solaris)
 1449            s=$(kstat -p unix:0:system_misc:snaptime | awk '{print $2}')
 1450            s=${s/.*}
 1451        ;;
 1452
 1453        AIX|IRIX)
 1454            t=$(LC_ALL=POSIX ps -o etime= -p 1)
 1455
 1456            [[ $t == *-*   ]] && { d=${t%%-*}; t=${t#*-}; }
 1457            [[ $t == *:*:* ]] && { h=${t%%:*}; t=${t#*:}; }
 1458
 1459            h=${h#0}
 1460            t=${t#0}
 1461
 1462            s=$((${d:-0}*86400 + ${h:-0}*3600 + ${t%%:*}*60 + ${t#*:}))
 1463        ;;
 1464
 1465        Haiku)
 1466            s=$(($(system_time) / 1000000))
 1467        ;;
 1468    esac
 1469
 1470    d="$((s / 60 / 60 / 24)) days"
 1471    h="$((s / 60 / 60 % 24)) hours"
 1472    m="$((s / 60 % 60)) minutes"
 1473
 1474    # Remove plural if < 2.
 1475    ((${d/ *} == 1)) && d=${d/s}
 1476    ((${h/ *} == 1)) && h=${h/s}
 1477    ((${m/ *} == 1)) && m=${m/s}
 1478
 1479    # Hide empty fields.
 1480    ((${d/ *} == 0)) && unset d
 1481    ((${h/ *} == 0)) && unset h
 1482    ((${m/ *} == 0)) && unset m
 1483
 1484    uptime=${d:+$d, }${h:+$h, }$m
 1485    uptime=${uptime%', '}
 1486    uptime=${uptime:-$s seconds}
 1487
 1488    # Make the output of uptime smaller.
 1489    case $uptime_shorthand in
 1490        on)
 1491            uptime=${uptime/ minutes/ mins}
 1492            uptime=${uptime/ minute/ min}
 1493            uptime=${uptime/ seconds/ secs}
 1494        ;;
 1495
 1496        tiny)
 1497            uptime=${uptime/ days/d}
 1498            uptime=${uptime/ day/d}
 1499            uptime=${uptime/ hours/h}
 1500            uptime=${uptime/ hour/h}
 1501            uptime=${uptime/ minutes/m}
 1502            uptime=${uptime/ minute/m}
 1503            uptime=${uptime/ seconds/s}
 1504            uptime=${uptime//,}
 1505        ;;
 1506    esac
 1507}
 1508
 1509get_packages() {
 1510    # to adjust the number of pkgs per pkg manager
 1511    pkgs_h=0
 1512
 1513    # has: Check if package manager installed.
 1514    # dir: Count files or dirs in a glob.
 1515    # pac: If packages > 0, log package manager name.
 1516    # tot: Count lines in command output.
 1517    has() { type -p "$1" >/dev/null && manager=$1; }
 1518    # globbing is intentional here
 1519    # shellcheck disable=SC2206
 1520    dir() { pkgs=($@); ((packages+=${#pkgs[@]})); pac "$((${#pkgs[@]}-pkgs_h))"; }
 1521    pac() { (($1 > 0)) && { managers+=("$1 (${manager})"); manager_string+="${manager}, "; }; }
 1522    tot() {
 1523        IFS=$'\n' read -d "" -ra pkgs <<< "$("$@")";
 1524        ((packages+=${#pkgs[@]}));
 1525        pac "$((${#pkgs[@]}-pkgs_h))";
 1526    }
 1527
 1528    # Redefine tot() and dir() for Bedrock Linux.
 1529    [[ -f /bedrock/etc/bedrock-release && $PATH == */bedrock/cross/* ]] && {
 1530        br_strata=$(brl list)
 1531        tot() {
 1532            IFS=$'\n' read -d "" -ra pkgs <<< "$(for s in ${br_strata}; do strat -r "$s" "$@"; done)"
 1533            ((packages+="${#pkgs[@]}"))
 1534            pac "$((${#pkgs[@]}-pkgs_h))";
 1535        }
 1536        dir() {
 1537            local pkgs=()
 1538            # globbing is intentional here
 1539            # shellcheck disable=SC2206
 1540            for s in ${br_strata}; do pkgs+=(/bedrock/strata/$s/$@); done
 1541            ((packages+=${#pkgs[@]}))
 1542            pac "$((${#pkgs[@]}-pkgs_h))"
 1543        }
 1544    }
 1545
 1546    case $os in
 1547        Linux|BSD|"iPhone OS"|Solaris)
 1548            # Package Manager Programs.
 1549            has kiss       && tot kiss l
 1550            has cpt-list   && tot cpt-list
 1551            has pacman-key && tot pacman -Qq --color never
 1552            has dpkg       && tot dpkg-query -f '.\n' -W
 1553            has xbps-query && tot xbps-query -l
 1554            has apk        && tot apk info
 1555            has opkg       && tot opkg list-installed
 1556            has pacman-g2  && tot pacman-g2 -Q
 1557            has lvu        && tot lvu installed
 1558            has tce-status && tot tce-status -i
 1559            has pkg_info   && tot pkg_info
 1560            has pkgin      && tot pkgin list
 1561            has tazpkg     && pkgs_h=6 tot tazpkg list && ((packages-=6))
 1562            has sorcery    && tot gaze installed
 1563            has alps       && tot alps showinstalled
 1564            has butch      && tot butch list
 1565            has swupd      && tot swupd bundle-list --quiet
 1566            has pisi       && tot pisi li
 1567            has pacstall   && tot pacstall -L
 1568
 1569            # Using the dnf package cache is much faster than rpm.
 1570            if has dnf && type -p sqlite3 >/dev/null && [[ -f /var/cache/dnf/packages.db ]]; then
 1571                pac "$(sqlite3 /var/cache/dnf/packages.db "SELECT count(pkg) FROM installed")"
 1572            else
 1573                has rpm && tot rpm -qa
 1574            fi
 1575
 1576            # 'mine' conflicts with minesweeper games.
 1577            [[ -f /etc/SDE-VERSION ]] &&
 1578                has mine && tot mine -q
 1579
 1580            # Counting files/dirs.
 1581            # Variables need to be unquoted here. Only Bedrock Linux is affected.
 1582            # $br_prefix is fixed and won't change based on user input so this is safe either way.
 1583            # shellcheck disable=SC2086
 1584            {
 1585            shopt -s nullglob
 1586            has brew    && dir "$(brew --cellar)/* $(brew --caskroom)/*"
 1587            has emerge  && dir "/var/db/pkg/*/*"
 1588            has Compile && dir "/Programs/*/"
 1589            has eopkg   && dir "/var/lib/eopkg/package/*"
 1590            has crew    && dir "${CREW_PREFIX:-/usr/local}/etc/crew/meta/*.filelist"
 1591            has pkgtool && dir "/var/log/packages/*"
 1592            has scratch && dir "/var/lib/scratchpkg/index/*/.pkginfo"
 1593            has kagami  && dir "/var/lib/kagami/pkgs/*"
 1594            has cave    && dir "/var/db/paludis/repositories/cross-installed/*/data/*/ \
 1595                               /var/db/paludis/repositories/installed/data/*/"
 1596            shopt -u nullglob
 1597            }
 1598
 1599            # Other (Needs complex command)
 1600            has kpm-pkg && ((packages+=$(kpm  --get-selections | grep -cv deinstall$)))
 1601
 1602            has guix && {
 1603                manager=guix-system && tot guix package -p "/run/current-system/profile" -I
 1604                manager=guix-user   && tot guix package -I
 1605            }
 1606
 1607            has nix-store && {
 1608                nix-user-pkgs() {
 1609                    nix-store -qR ~/.nix-profile
 1610                    nix-store -qR /etc/profiles/per-user/"$USER"
 1611                }
 1612                manager=nix-system  && tot nix-store -qR /run/current-system/sw
 1613                manager=nix-user    && tot nix-user-pkgs
 1614                manager=nix-default && tot nix-store -qR /nix/var/nix/profiles/default
 1615            }
 1616
 1617            # pkginfo is also the name of a python package manager which is painfully slow.
 1618            # TODO: Fix this somehow.
 1619            has pkginfo && tot pkginfo -i
 1620
 1621            case $os-$kernel_name in
 1622                BSD-FreeBSD|BSD-DragonFly)
 1623                    has pkg && tot pkg info
 1624                ;;
 1625
 1626                BSD-*)
 1627                    has pkg && dir /var/db/pkg/*
 1628
 1629                    ((packages == 0)) &&
 1630                        has pkg && tot pkg list
 1631                ;;
 1632            esac
 1633
 1634            # List these last as they accompany regular package managers.
 1635            has flatpak && tot flatpak list
 1636            has spm     && tot spm list -i
 1637            has puyo    && dir ~/.puyo/installed
 1638
 1639            # Snap hangs if the command is run without the daemon running.
 1640            # Only run snap if the daemon is also running.
 1641            has snap && ps -e | grep -qFm 1 snapd >/dev/null && \
 1642            pkgs_h=1 tot snap list && ((packages-=1))
 1643
 1644            # This is the only standard location for appimages.
 1645            # See: https://github.com/AppImage/AppImageKit/wiki
 1646            manager=appimage && has appimaged && dir ~/.local/bin/*.appimage
 1647        ;;
 1648
 1649        "Mac OS X"|"macOS"|MINIX)
 1650            has port  && pkgs_h=1 tot port installed && ((packages-=1))
 1651            has brew  && dir "$(brew --cellar)/* $(brew --caskroom)/*"
 1652            has pkgin && tot pkgin list
 1653            has dpkg  && tot dpkg-query -f '.\n' -W
 1654
 1655            has nix-store && {
 1656                nix-user-pkgs() {
 1657                    nix-store -qR ~/.nix-profile
 1658                    nix-store -qR /etc/profiles/per-user/"$USER"
 1659                }
 1660                manager=nix-system && tot nix-store -qR /run/current-system/sw
 1661                manager=nix-user   && tot nix-user-pkgs
 1662            }
 1663        ;;
 1664
 1665        AIX|FreeMiNT)
 1666            has lslpp && ((packages+=$(lslpp -J -l -q | grep -cv '^#')))
 1667            has rpm   && tot rpm -qa
 1668        ;;
 1669
 1670        Windows)
 1671            case $kernel_name in
 1672                CYGWIN*) has cygcheck && tot cygcheck -cd ;;
 1673                MSYS*)   has pacman   && tot pacman -Qq --color never ;;
 1674            esac
 1675
 1676            # Scoop environment throws errors if `tot scoop list` is used
 1677            has scoop && pkgs_h=1 dir ~/scoop/apps/* && ((packages-=1))
 1678
 1679            # Count chocolatey packages.
 1680            [[ -d /cygdrive/c/ProgramData/chocolatey/lib ]] && \
 1681                dir /cygdrive/c/ProgramData/chocolatey/lib/*
 1682        ;;
 1683
 1684        Haiku)
 1685            has pkgman && dir /boot/system/package-links/*
 1686            packages=${packages/pkgman/depot}
 1687        ;;
 1688
 1689        IRIX)
 1690            manager=swpkg
 1691            pkgs_h=3 tot versions -b && ((packages-=3))
 1692        ;;
 1693    esac
 1694
 1695    if ((packages == 0)); then
 1696        unset packages
 1697
 1698    elif [[ $package_managers == on ]]; then
 1699        printf -v packages '%s, ' "${managers[@]}"
 1700        packages=${packages%,*}
 1701
 1702    elif [[ $package_managers == tiny ]]; then
 1703        packages+=" (${manager_string%,*})"
 1704    fi
 1705
 1706    packages=${packages/pacman-key/pacman}
 1707}
 1708
 1709get_shell() {
 1710    case $shell_path in
 1711        on)  shell="$SHELL " ;;
 1712        off) shell="${SHELL##*/} " ;;
 1713    esac
 1714
 1715    [[ $shell_version != on ]] && return
 1716
 1717    case ${shell_name:=${SHELL##*/}} in
 1718        bash)
 1719            [[ $BASH_VERSION ]] ||
 1720                BASH_VERSION=$("$SHELL" -c "printf %s \"\$BASH_VERSION\"")
 1721
 1722            shell+=${BASH_VERSION/-*}
 1723        ;;
 1724
 1725        sh|ash|dash|es) ;;
 1726
 1727        *ksh)
 1728            shell+=$("$SHELL" -c "printf %s \"\$KSH_VERSION\"")
 1729            shell=${shell/ * KSH}
 1730            shell=${shell/version}
 1731        ;;
 1732
 1733        osh)
 1734            if [[ $OIL_VERSION ]]; then
 1735                shell+=$OIL_VERSION
 1736            else
 1737                shell+=$("$SHELL" -c "printf %s \"\$OIL_VERSION\"")
 1738            fi
 1739        ;;
 1740
 1741        tcsh)
 1742            shell+=$("$SHELL" -c "printf %s \$tcsh")
 1743        ;;
 1744
 1745        yash)
 1746            shell+=$("$SHELL" --version 2>&1)
 1747            shell=${shell/ $shell_name}
 1748            shell=${shell/ Yet another shell}
 1749            shell=${shell/Copyright*}
 1750        ;;
 1751
 1752        nu)
 1753            shell+=$("$SHELL" -c "version | get version")
 1754            shell=${shell/ $shell_name}
 1755        ;;
 1756
 1757
 1758        *)
 1759            shell+=$("$SHELL" --version 2>&1)
 1760            shell=${shell/ $shell_name}
 1761        ;;
 1762    esac
 1763
 1764    # Remove unwanted info.
 1765    shell=${shell/, version}
 1766    shell=${shell/xonsh\//xonsh }
 1767    shell=${shell/options*}
 1768    shell=${shell/\(*\)}
 1769}
 1770
 1771get_de() {
 1772    # If function was run, stop here.
 1773    ((de_run == 1)) && return
 1774
 1775    case $os in
 1776        "Mac OS X"|"macOS") de=Aqua ;;
 1777
 1778        Windows)
 1779            case $distro in
 1780                *"Windows 10"*)
 1781                    de=Fluent
 1782                ;;
 1783
 1784                *"Windows 8"*)
 1785                    de=Metro
 1786                ;;
 1787
 1788                *)
 1789                    de=Aero
 1790                ;;
 1791            esac
 1792        ;;
 1793
 1794        FreeMiNT)
 1795            freemint_wm=(/proc/*)
 1796
 1797            case ${freemint_wm[*]} in
 1798                *thing*)  de=Thing ;;
 1799                *jinnee*) de=Jinnee ;;
 1800                *tera*)   de=Teradesk ;;
 1801                *neod*)   de=NeoDesk ;;
 1802                *zdesk*)  de=zDesk ;;
 1803                *mdesk*)  de=mDesk ;;
 1804            esac
 1805        ;;
 1806
 1807        *)
 1808            ((wm_run != 1)) && get_wm
 1809
 1810            # Temporary support for Regolith Linux
 1811            if [[ $DESKTOP_SESSION == *regolith ]]; then
 1812                de=Regolith
 1813
 1814            elif [[ $XDG_CURRENT_DESKTOP ]]; then
 1815                de=${XDG_CURRENT_DESKTOP/X\-}
 1816                de=${de/Budgie:GNOME/Budgie}
 1817                de=${de/:Unity7:ubuntu}
 1818
 1819            elif [[ $DESKTOP_SESSION ]]; then
 1820                de=${DESKTOP_SESSION##*/}
 1821
 1822            elif [[ $GNOME_DESKTOP_SESSION_ID ]]; then
 1823                de=GNOME
 1824
 1825            elif [[ $MATE_DESKTOP_SESSION_ID ]]; then
 1826                de=MATE
 1827
 1828            elif [[ $TDE_FULL_SESSION ]]; then
 1829                de=Trinity
 1830            fi
 1831
 1832            # When a window manager is started from a display manager
 1833            # the desktop variables are sometimes also set to the
 1834            # window manager name. This checks to see if WM == DE
 1835            # and discards the DE value.
 1836            [[ $de == "$wm" ]] && { unset -v de; return; }
 1837        ;;
 1838    esac
 1839
 1840    # Fallback to using xprop.
 1841    [[ $DISPLAY && -z $de ]] && type -p xprop &>/dev/null && \
 1842        de=$(xprop -root | awk '/KDE_SESSION_VERSION|^_MUFFIN|xfce4|xfce5/')
 1843
 1844    # Format strings.
 1845    case $de in
 1846        KDE_SESSION_VERSION*) de=KDE${de/* = } ;;
 1847        *xfce4*)  de=Xfce4 ;;
 1848        *xfce5*)  de=Xfce5 ;;
 1849        *xfce*)   de=Xfce ;;
 1850        *mate*)   de=MATE ;;
 1851        *GNOME*)  de=GNOME ;;
 1852        *MUFFIN*) de=Cinnamon ;;
 1853    esac
 1854
 1855    ((${KDE_SESSION_VERSION:-0} >= 4)) && de=${de/KDE/Plasma}
 1856
 1857    if [[ $de_version == on && $de ]]; then
 1858        case $de in
 1859            Plasma*)   de_ver=$(plasmashell --version) ;;
 1860            MATE*)     de_ver=$(mate-session --version) ;;
 1861            Xfce*)     de_ver=$(xfce4-session --version) ;;
 1862            GNOME*)    de_ver=$(gnome-shell --version) ;;
 1863            Cinnamon*) de_ver=$(cinnamon --version) ;;
 1864            Deepin*)   de_ver=$(awk -F'=' '/MajorVersion/ {print $2}' /etc/os-version) ;;
 1865            Budgie*)   de_ver=$(budgie-desktop --version) ;;
 1866            LXQt*)     de_ver=$(lxqt-session --version) ;;
 1867            Lumina*)   de_ver=$(lumina-desktop --version 2>&1) ;;
 1868            Trinity*)  de_ver=$(tde-config --version) ;;
 1869            Unity*)    de_ver=$(unity --version) ;;
 1870        esac
 1871
 1872        de_ver=${de_ver/*TDE:}
 1873        de_ver=${de_ver/tde-config*}
 1874        de_ver=${de_ver/liblxqt*}
 1875        de_ver=${de_ver/Copyright*}
 1876        de_ver=${de_ver/)*}
 1877        de_ver=${de_ver/* }
 1878        de_ver=${de_ver//\"}
 1879
 1880        de+=" $de_ver"
 1881    fi
 1882
 1883    # TODO:
 1884    #  - New config option + flag: --de_display_server on/off ?
 1885    #  - Add display of X11, Arcan and anything else relevant.
 1886    [[ $de && $WAYLAND_DISPLAY ]] &&
 1887        de+=" (Wayland)"
 1888
 1889    de_run=1
 1890}
 1891
 1892get_wm() {
 1893    # If function was run, stop here.
 1894    ((wm_run == 1)) && return
 1895
 1896    case $kernel_name in
 1897        *OpenBSD*) ps_flags=(x -c) ;;
 1898        *)         ps_flags=(-e) ;;
 1899    esac
 1900
 1901    if [[ -O "${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}" ]]; then
 1902        if tmp_pid="$(lsof -t "${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}" 2>&1)" ||
 1903           tmp_pid="$(fuser   "${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}" 2>&1)"; then
 1904            wm="$(ps -p "${tmp_pid}" -ho comm=)"
 1905        else
 1906            # lsof may not exist, or may need root on some systems. Similarly fuser.
 1907            # On those systems we search for a list of known window managers, this can mistakenly
 1908            # match processes for another user or session and will miss unlisted window managers.
 1909            wm=$(ps "${ps_flags[@]}" | grep -m 1 -o -F \
 1910                               -e arcan \
 1911                               -e asc \
 1912                               -e clayland \
 1913                               -e dwc \
 1914                               -e fireplace \
 1915                               -e gnome-shell \
 1916                               -e greenfield \
 1917                               -e grefsen \
 1918                               -e hikari \
 1919                               -e kwin \
 1920                               -e lipstick \
 1921                               -e maynard \
 1922                               -e mazecompositor \
 1923                               -e motorcar \
 1924                               -e orbital \
 1925                               -e orbment \
 1926                               -e perceptia \
 1927                               -e river \
 1928                               -e rustland \
 1929                               -e sway \
 1930                               -e ulubis \
 1931                               -e velox \
 1932                               -e wavy \
 1933                               -e way-cooler \
 1934                               -e wayfire \
 1935                               -e wayhouse \
 1936                               -e westeros \
 1937                               -e westford \
 1938                               -e weston)
 1939        fi
 1940
 1941    elif [[ $DISPLAY && $os != "Mac OS X" && $os != "macOS" && $os != FreeMiNT ]]; then
 1942        # non-EWMH WMs.
 1943        wm=$(ps "${ps_flags[@]}" | grep -m 1 -o \
 1944                           -e "[s]owm" \
 1945                           -e "[c]atwm" \
 1946                           -e "[f]vwm" \
 1947                           -e "[d]wm" \
 1948                           -e "[2]bwm" \
 1949                           -e "[m]onsterwm" \
 1950                           -e "[t]inywm" \
 1951                           -e "[x]11fs" \
 1952                           -e "[x]monad")
 1953
 1954        [[ -z $wm ]] && type -p xprop &>/dev/null && {
 1955            id=$(xprop -root -notype _NET_SUPPORTING_WM_CHECK)
 1956            id=${id##* }
 1957            wm=$(xprop -id "$id" -notype -len 100 -f _NET_WM_NAME 8t)
 1958            wm=${wm/*WM_NAME = }
 1959            wm=${wm/\"}
 1960            wm=${wm/\"*}
 1961        }
 1962
 1963    else
 1964        case $os in
 1965            "Mac OS X"|"macOS")
 1966                ps_line=$(ps -e | grep -o \
 1967                    -e "[S]pectacle" \
 1968                    -e "[A]methyst" \
 1969                    -e "[k]wm" \
 1970                    -e "[c]hun[k]wm" \
 1971                    -e "[y]abai" \
 1972                    -e "[R]ectangle")
 1973
 1974                case $ps_line in
 1975                    *chunkwm*)   wm=chunkwm ;;
 1976                    *kwm*)       wm=Kwm ;;
 1977                    *yabai*)     wm=yabai ;;
 1978                    *Amethyst*)  wm=Amethyst ;;
 1979                    *Spectacle*) wm=Spectacle ;;
 1980                    *Rectangle*) wm=Rectangle ;;
 1981                    *)           wm="Quartz Compositor" ;;
 1982                esac
 1983            ;;
 1984
 1985            Windows)
 1986                wm=$(
 1987                    tasklist |
 1988
 1989                    grep -Fom 1 \
 1990                         -e bugn \
 1991                         -e Windawesome \
 1992                         -e blackbox \
 1993                         -e emerge \
 1994                         -e litestep
 1995                )
 1996
 1997                [[ $wm == blackbox ]] &&
 1998                    wm="bbLean (Blackbox)"
 1999
 2000                wm=${wm:+$wm, }DWM.exe
 2001            ;;
 2002
 2003            FreeMiNT)
 2004                freemint_wm=(/proc/*)
 2005
 2006                case ${freemint_wm[*]} in
 2007                    *xaaes* | *xaloader*) wm=XaAES ;;
 2008                    *myaes*)              wm=MyAES ;;
 2009                    *naes*)               wm=N.AES ;;
 2010                    geneva)               wm=Geneva ;;
 2011                    *)                    wm="Atari AES" ;;
 2012                esac
 2013            ;;
 2014        esac
 2015    fi
 2016
 2017    # Rename window managers to their proper values.
 2018    [[ $wm == *WINDOWMAKER* ]] && wm=wmaker
 2019    [[ $wm == *GNOME*Shell* ]] && wm=Mutter
 2020
 2021    wm_run=1
 2022}
 2023
 2024get_wm_theme() {
 2025    ((wm_run != 1)) && get_wm
 2026    ((de_run != 1)) && get_de
 2027
 2028    case $wm  in
 2029        E16)
 2030            wm_theme=$(awk -F "= " '/theme.name/ {print $2}' "${HOME}/.e16/e_config--0.0.cfg")
 2031        ;;
 2032
 2033        Sawfish)
 2034            wm_theme=$(awk -F '\\(quote|\\)' '/default-frame-style/ {print $(NF-4)}' \
 2035                       "$HOME/.sawfish/custom")
 2036        ;;
 2037
 2038        Cinnamon|Muffin|"Mutter (Muffin)")
 2039            detheme=$(gsettings get org.cinnamon.theme name)
 2040            wm_theme=$(gsettings get org.cinnamon.desktop.wm.preferences theme)
 2041            wm_theme="$detheme ($wm_theme)"
 2042        ;;
 2043
 2044        Compiz|Mutter|Gala)
 2045            if type -p gsettings >/dev/null; then
 2046                wm_theme=$(gsettings get org.gnome.shell.extensions.user-theme name)
 2047
 2048                [[ ${wm_theme//\'} ]] || \
 2049                    wm_theme=$(gsettings get org.gnome.desktop.wm.preferences theme)
 2050
 2051            elif type -p gconftool-2 >/dev/null; then
 2052                wm_theme=$(gconftool-2 -g /apps/metacity/general/theme)
 2053            fi
 2054        ;;
 2055
 2056        Metacity*)
 2057            if [[ $de == Deepin ]]; then
 2058                wm_theme=$(gsettings get com.deepin.wrap.gnome.desktop.wm.preferences theme)
 2059
 2060            elif [[ $de == MATE ]]; then
 2061                wm_theme=$(gsettings get org.mate.Marco.general theme)
 2062
 2063            else
 2064                wm_theme=$(gconftool-2 -g /apps/metacity/general/theme)
 2065            fi
 2066        ;;
 2067
 2068        E17|Enlightenment)
 2069            if type -p eet >/dev/null; then
 2070                wm_theme=$(eet -d "$HOME/.e/e/config/standard/e.cfg" config |\
 2071                            awk '/value \"file\" string.*.edj/ {print $4}')
 2072                wm_theme=${wm_theme##*/}
 2073                wm_theme=${wm_theme%.*}
 2074            fi
 2075        ;;
 2076
 2077        Fluxbox)
 2078            [[ -f $HOME/.fluxbox/init ]] &&
 2079                wm_theme=$(awk -F "/" '/styleFile/ {print $NF}' "$HOME/.fluxbox/init")
 2080        ;;
 2081
 2082        IceWM*)
 2083            [[ -f $HOME/.icewm/theme ]] &&
 2084                wm_theme=$(awk -F "[\",/]" '!/#/ {print $2}' "$HOME/.icewm/theme")
 2085        ;;
 2086
 2087        Openbox)
 2088            case $de in
 2089                LXDE*) ob_file=lxde-rc ;;
 2090                LXQt*) ob_file=lxqt-rc ;;
 2091                    *) ob_file=rc ;;
 2092            esac
 2093
 2094            ob_file=$XDG_CONFIG_HOME/openbox/$ob_file.xml
 2095
 2096            [[ -f $ob_file ]] &&
 2097                wm_theme=$(awk '/<theme>/ {while (getline n) {if (match(n, /<name>/))
 2098                            {l=n; exit}}} END {split(l, a, "[<>]"); print a[3]}' "$ob_file")
 2099        ;;
 2100
 2101        PekWM)
 2102            [[ -f $HOME/.pekwm/config ]] &&
 2103                wm_theme=$(awk -F "/" '/Theme/{gsub(/\"/,""); print $NF}' "$HOME/.pekwm/config")
 2104        ;;
 2105
 2106        Xfwm4)
 2107            [[ -f $HOME/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml ]] &&
 2108                wm_theme=$(xfconf-query -c xfwm4 -p /general/theme)
 2109        ;;
 2110
 2111        KWin*)
 2112            kde_config_dir
 2113            kwinrc=$kde_config_dir/kwinrc
 2114            kdebugrc=$kde_config_dir/kdebugrc
 2115
 2116            if [[ -f $kwinrc ]]; then
 2117                wm_theme=$(awk '/theme=/ {
 2118                                    gsub(/theme=.*qml_|theme=.*svg__/,"",$0);
 2119                                    print $0;
 2120                                    exit
 2121                                 }' "$kwinrc")
 2122
 2123                [[ "$wm_theme" ]] ||
 2124                    wm_theme=$(awk '/library=org.kde/ {
 2125                                        gsub(/library=org.kde./,"",$0);
 2126                                        print $0;
 2127                                        exit
 2128                                     }' "$kwinrc")
 2129
 2130                [[ $wm_theme ]] ||
 2131                    wm_theme=$(awk '/PluginLib=kwin3_/ {
 2132                                        gsub(/PluginLib=kwin3_/,"",$0);
 2133                                        print $0;
 2134                                        exit
 2135                                     }' "$kwinrc")
 2136
 2137            elif [[ -f $kdebugrc ]]; then
 2138                wm_theme=$(awk '/(decoration)/ {gsub(/\[/,"",$1); print $1; exit}' "$kdebugrc")
 2139            fi
 2140
 2141            wm_theme=${wm_theme/theme=}
 2142        ;;
 2143
 2144        "Quartz Compositor")
 2145            global_preferences=$HOME/Library/Preferences/.GlobalPreferences.plist
 2146            wm_theme=$(PlistBuddy -c "Print AppleInterfaceStyle" "$global_preferences")
 2147            wm_theme_color=$(PlistBuddy -c "Print AppleAccentColor" "$global_preferences")
 2148
 2149            [[ "$wm_theme" ]] ||
 2150                wm_theme=Light
 2151
 2152            case $wm_theme_color in
 2153                -1) wm_theme_color=Graphite ;;
 2154                0)  wm_theme_color=Red ;;
 2155                1)  wm_theme_color=Orange ;;
 2156                2)  wm_theme_color=Yellow ;;
 2157                3)  wm_theme_color=Green ;;
 2158                5)  wm_theme_color=Purple ;;
 2159                6)  wm_theme_color=Pink ;;
 2160                *)  wm_theme_color=Blue ;;
 2161            esac
 2162
 2163            wm_theme="$wm_theme_color ($wm_theme)"
 2164        ;;
 2165
 2166        *Explorer)
 2167            path=/proc/registry/HKEY_CURRENT_USER/Software/Microsoft
 2168            path+=/Windows/CurrentVersion/Themes/CurrentTheme
 2169
 2170            wm_theme=$(head -n1 "$path")
 2171            wm_theme=${wm_theme##*\\}
 2172            wm_theme=${wm_theme%.*}
 2173        ;;
 2174
 2175        Blackbox|bbLean*)
 2176            path=$(wmic process get ExecutablePath | grep -F "blackbox")
 2177            path=${path//\\/\/}
 2178
 2179            wm_theme=$(grep '^session\.styleFile:' "${path/\.exe/.rc}")
 2180            wm_theme=${wm_theme/session\.styleFile: }
 2181            wm_theme=${wm_theme##*\\}
 2182            wm_theme=${wm_theme%.*}
 2183        ;;
 2184    esac
 2185
 2186    wm_theme=$(trim_quotes "$wm_theme")
 2187}
 2188
 2189get_cpu() {
 2190    case $os in
 2191        "Linux" | "MINIX" | "Windows")
 2192            # Get CPU name.
 2193            cpu_file="/proc/cpuinfo"
 2194
 2195            case $kernel_machine in
 2196                "frv" | "hppa" | "m68k" | "openrisc" | "or"* | "powerpc" | "ppc"* | "sparc"*)
 2197                    cpu="$(awk -F':' '/^cpu\t|^CPU/ {printf $2; exit}' "$cpu_file")"
 2198                ;;
 2199
 2200                "s390"*)
 2201                    cpu="$(awk -F'=' '/machine/ {print $4; exit}' "$cpu_file")"
 2202                ;;
 2203
 2204                "ia64" | "m32r")
 2205                    cpu="$(awk -F':' '/model/ {print $2; exit}' "$cpu_file")"
 2206                    [[ -z "$cpu" ]] && cpu="$(awk -F':' '/family/ {printf $2; exit}' "$cpu_file")"
 2207                ;;
 2208
 2209                *)
 2210                    cpu="$(awk -F '\\s*: | @' \
 2211                            '/model name|Hardware|Processor|^cpu model|chip type|^cpu type/ {
 2212                            cpu=$2; if ($1 == "Hardware") exit } END { print cpu }' "$cpu_file")"
 2213                ;;
 2214            esac
 2215
 2216            speed_dir="/sys/devices/system/cpu/cpu0/cpufreq"
 2217
 2218            # Select the right temperature file.
 2219            for temp_dir in /sys/class/hwmon/*; do
 2220                [[ "$(< "${temp_dir}/name")" =~ (cpu_thermal|coretemp|fam15h_power|k10temp) ]] && {
 2221                    temp_dirs=("$temp_dir"/temp*_input)
 2222                    temp_dir=${temp_dirs[0]}
 2223                    break
 2224                }
 2225            done
 2226
 2227            # Get CPU speed.
 2228            if [[ -d "$speed_dir" ]]; then
 2229                # Fallback to bios_limit if $speed_type fails.
 2230                speed="$(< "${speed_dir}/${speed_type}")" ||\
 2231                speed="$(< "${speed_dir}/bios_limit")" ||\
 2232                speed="$(< "${speed_dir}/scaling_max_freq")" ||\
 2233                speed="$(< "${speed_dir}/cpuinfo_max_freq")"
 2234                speed="$((speed / 1000))"
 2235
 2236            else
 2237                case $kernel_machine in
 2238                    "sparc"*)
 2239                        # SPARC systems use a different file to expose clock speed information.
 2240                        speed_file="/sys/devices/system/cpu/cpu0/clock_tick"
 2241                        speed="$(($(< "$speed_file") / 1000000))"
 2242                    ;;
 2243
 2244                    *)
 2245                        speed="$(awk -F ': |\\.' '/cpu MHz|^clock/ {printf $2; exit}' "$cpu_file")"
 2246                        speed="${speed/MHz}"
 2247                    ;;
 2248                esac
 2249            fi
 2250
 2251            # Get CPU temp.
 2252            [[ -f "$temp_dir" ]] && deg="$(($(< "$temp_dir") * 100 / 10000))"
 2253
 2254            # Get CPU cores.
 2255            case $kernel_machine in
 2256                "sparc"*)
 2257                    case $cpu_cores in
 2258                        # SPARC systems doesn't expose detailed topology information in
 2259                        # /proc/cpuinfo so I have to use lscpu here.
 2260                        "logical" | "on")
 2261                            cores="$(lscpu | awk -F ': *' '/^CPU\(s\)/ {print $2}')"
 2262                        ;;
 2263                        "physical")
 2264                            cores="$(lscpu | awk -F ': *' '/^Core\(s\) per socket/ {print $2}')"
 2265                            sockets="$(lscpu | awk -F ': *' '/^Socket\(s\)/ {print $2}')"
 2266                            cores="$((sockets * cores))"
 2267                        ;;
 2268                    esac
 2269                ;;
 2270
 2271                *)
 2272                    case $cpu_cores in
 2273                        "logical" | "on")
 2274                            cores="$(grep -c "^processor" "$cpu_file")"
 2275                        ;;
 2276                        "physical")
 2277                            cores="$(awk '/^core id/&&!a[$0]++{++i} END {print i}' "$cpu_file")"
 2278                        ;;
 2279                    esac
 2280                ;;
 2281            esac
 2282        ;;
 2283
 2284        "Mac OS X"|"macOS")
 2285            cpu="$(sysctl -n machdep.cpu.brand_string)"
 2286
 2287            # Get CPU cores.
 2288            case $cpu_cores in
 2289                "logical" | "on") cores="$(sysctl -n hw.logicalcpu_max)" ;;
 2290                "physical")       cores="$(sysctl -n hw.physicalcpu_max)" ;;
 2291            esac
 2292        ;;
 2293
 2294        "iPhone OS")
 2295            case $kernel_machine in
 2296                "iPhone1,"[1-2] | "iPod1,1"): "Samsung S5L8900 (1) @ 412MHz" ;;
 2297                "iPhone2,1"):                 "Samsung S5PC100 (1) @ 600MHz" ;;
 2298                "iPhone3,"[1-3] | "iPod4,1"): "Apple A4 (1) @ 800MHz" ;;
 2299                "iPhone4,1" | "iPod5,1"):     "Apple A5 (2) @ 800MHz" ;;
 2300                "iPhone5,"[1-4]): "Apple A6 (2) @ 1.3GHz" ;;
 2301                "iPhone6,"[1-2]): "Apple A7 (2) @ 1.3GHz" ;;
 2302                "iPhone7,"[1-2]): "Apple A8 (2) @ 1.4GHz" ;;
 2303                "iPhone8,"[1-4] | "iPad6,1"[12]): "Apple A9 (2) @ 1.85GHz" ;;
 2304                "iPhone9,"[1-4] | "iPad7,"[5-6] | "iPad7,1"[1-2]):
 2305                    "Apple A10 Fusion (4) @ 2.34GHz"
 2306                ;;
 2307                "iPhone10,"[1-6]): "Apple A11 Bionic (6) @ 2.39GHz" ;;
 2308                "iPhone11,"[2468] | "iPad11,"[1-4] | "iPad11,"[6-7]): "Apple A12 Bionic (6) @ 2.49GHz" ;;
 2309                "iPhone12,"[1358]): "Apple A13 Bionic (6) @ 2.65GHz" ;;
 2310                "iPhone13,"[1-4] | "iPad13,"[1-2]): "Apple A14 Bionic (6) @ 3.00Ghz" ;;
 2311
 2312                "iPod2,1"): "Samsung S5L8720 (1) @ 533MHz" ;;
 2313                "iPod3,1"): "Samsung S5L8922 (1) @ 600MHz" ;;
 2314                "iPod7,1"): "Apple A8 (2) @ 1.1GHz" ;;
 2315                "iPad1,1"): "Apple A4 (1) @ 1GHz" ;;
 2316                "iPad2,"[1-7]): "Apple A5 (2) @ 1GHz" ;;
 2317                "iPad3,"[1-3]): "Apple A5X (2) @ 1GHz" ;;
 2318                "iPad3,"[4-6]): "Apple A6X (2) @ 1.4GHz" ;;
 2319                "iPad4,"[1-3]): "Apple A7 (2) @ 1.4GHz" ;;
 2320                "iPad4,"[4-9]): "Apple A7 (2) @ 1.4GHz" ;;
 2321                "iPad5,"[1-2]): "Apple A8 (2) @ 1.5GHz" ;;
 2322                "iPad5,"[3-4]): "Apple A8X (3) @ 1.5GHz" ;;
 2323                "iPad6,"[3-4]): "Apple A9X (2) @ 2.16GHz" ;;
 2324                "iPad6,"[7-8]): "Apple A9X (2) @ 2.26GHz" ;;
 2325                "iPad7,"[1-4]): "Apple A10X Fusion (6) @ 2.39GHz" ;;
 2326                "iPad8,"[1-8]): "Apple A12X Bionic (8) @ 2.49GHz" ;;
 2327                "iPad8,9" | "iPad8,1"[0-2]): "Apple A12Z Bionic (8) @ 2.49GHz" ;;
 2328            esac
 2329            cpu="$_"
 2330        ;;
 2331
 2332        "BSD")
 2333            # Get CPU name.
 2334            cpu="$(sysctl -n hw.model)"
 2335            cpu="${cpu/[0-9]\.*}"
 2336            cpu="${cpu/ @*}"
 2337
 2338            # Get CPU speed.
 2339            speed="$(sysctl -n hw.cpuspeed)"
 2340            [[ -z "$speed" ]] && speed="$(sysctl -n  hw.clockrate)"
 2341
 2342            # Get CPU cores.
 2343            case $kernel_name in
 2344                "OpenBSD"*)
 2345                    [[ "$(sysctl -n hw.smt)" == "1" ]] && smt="on" || smt="off"
 2346                    ncpufound="$(sysctl -n hw.ncpufound)"
 2347                    ncpuonline="$(sysctl -n hw.ncpuonline)"
 2348                    cores="${ncpuonline}/${ncpufound},\\xc2\\xa0SMT\\xc2\\xa0${smt}"
 2349                ;;
 2350                *)
 2351                    cores="$(sysctl -n hw.ncpu)"
 2352                ;;
 2353            esac
 2354
 2355            # Get CPU temp.
 2356            case $kernel_name in
 2357                "FreeBSD"* | "DragonFly"* | "NetBSD"*)
 2358                    deg="$(sysctl -n dev.cpu.0.temperature)"
 2359                    deg="${deg/C}"
 2360                ;;
 2361                "OpenBSD"* | "Bitrig"*)
 2362                    deg="$(sysctl hw.sensors | \
 2363                        awk -F'=|degC' '/(ksmn|adt|lm|cpu)0.temp0/ {printf("%2.1f", $2); exit}')"
 2364                ;;
 2365            esac
 2366        ;;
 2367
 2368        "Solaris")
 2369            # Get CPU name.
 2370            cpu="$(psrinfo -pv)"
 2371            cpu="${cpu//*$'\n'}"
 2372            cpu="${cpu/[0-9]\.*}"
 2373            cpu="${cpu/ @*}"
 2374            cpu="${cpu/\(portid*}"
 2375
 2376            # Get CPU speed.
 2377            speed="$(psrinfo -v | awk '/operates at/ {print $6; exit}')"
 2378
 2379            # Get CPU cores.
 2380            case $cpu_cores in
 2381                "logical" | "on") cores="$(kstat -m cpu_info | grep -c -F "chip_id")" ;;
 2382                "physical") cores="$(psrinfo -p)" ;;
 2383            esac
 2384        ;;
 2385
 2386        "Haiku")
 2387            # Get CPU name.
 2388            cpu="$(sysinfo -cpu | awk -F '\\"' '/CPU #0/ {print $2}')"
 2389            cpu="${cpu/@*}"
 2390
 2391            # Get CPU speed.
 2392            speed="$(sysinfo -cpu | awk '/running at/ {print $NF; exit}')"
 2393            speed="${speed/MHz}"
 2394
 2395            # Get CPU cores.
 2396            cores="$(sysinfo -cpu | grep -c -F 'CPU #')"
 2397        ;;
 2398
 2399        "AIX")
 2400            # Get CPU name.
 2401            cpu="$(lsattr -El proc0 -a type | awk '{printf $2}')"
 2402
 2403            # Get CPU speed.
 2404            speed="$(prtconf -s | awk -F':' '{printf $2}')"
 2405            speed="${speed/MHz}"
 2406
 2407            # Get CPU cores.
 2408            case $cpu_cores in
 2409                "logical" | "on")
 2410                    cores="$(lparstat -i | awk -F':' '/Online Virtual CPUs/ {printf $2}')"
 2411                ;;
 2412
 2413                "physical")
 2414                    cores="$(lparstat -i | awk -F':' '/Active Physical CPUs/ {printf $2}')"
 2415                ;;
 2416            esac
 2417        ;;
 2418
 2419        "IRIX")
 2420            # Get CPU name.
 2421            cpu="$(hinv -c processor | awk -F':' '/CPU:/ {printf $2}')"
 2422
 2423            # Get CPU speed.
 2424            speed="$(hinv -c processor | awk '/MHZ/ {printf $2}')"
 2425
 2426            # Get CPU cores.
 2427            cores="$(sysconf NPROC_ONLN)"
 2428        ;;
 2429
 2430        "FreeMiNT")
 2431            cpu="$(awk -F':' '/CPU:/ {printf $2}' /kern/cpuinfo)"
 2432            speed="$(awk -F '[:.M]' '/Clocking:/ {printf $2}' /kern/cpuinfo)"
 2433        ;;
 2434    esac
 2435
 2436    # Remove un-needed patterns from cpu output.
 2437    cpu="${cpu//(TM)}"
 2438    cpu="${cpu//(tm)}"
 2439    cpu="${cpu//(R)}"
 2440    cpu="${cpu//(r)}"
 2441    cpu="${cpu//CPU}"
 2442    cpu="${cpu//Processor}"
 2443    cpu="${cpu//Dual-Core}"
 2444    cpu="${cpu//Quad-Core}"
 2445    cpu="${cpu//Six-Core}"
 2446    cpu="${cpu//Eight-Core}"
 2447    cpu="${cpu//[1-9][0-9]-Core}"
 2448    cpu="${cpu//[0-9]-Core}"
 2449    cpu="${cpu//, * Compute Cores}"
 2450    cpu="${cpu//Core / }"
 2451    cpu="${cpu//(\"AuthenticAMD\"*)}"
 2452    cpu="${cpu//with Radeon * Graphics}"
 2453    cpu="${cpu//, altivec supported}"
 2454    cpu="${cpu//FPU*}"
 2455    cpu="${cpu//Chip Revision*}"
 2456    cpu="${cpu//Technologies, Inc}"
 2457    cpu="${cpu//Core2/Core 2}"
 2458
 2459    # Trim spaces from core and speed output
 2460    cores="${cores//[[:space:]]}"
 2461    speed="${speed//[[:space:]]}"
 2462
 2463    # Remove CPU brand from the output.
 2464    if [[ "$cpu_brand" == "off" ]]; then
 2465        cpu="${cpu/AMD }"
 2466        cpu="${cpu/Intel }"
 2467        cpu="${cpu/Core? Duo }"
 2468        cpu="${cpu/Qualcomm }"
 2469    fi
 2470
 2471    # Add CPU cores to the output.
 2472    [[ "$cpu_cores" != "off" && "$cores" ]] && \
 2473        case $os in
 2474            "Mac OS X"|"macOS") cpu="${cpu/@/(${cores}) @}" ;;
 2475            *)                  cpu="$cpu ($cores)" ;;
 2476        esac
 2477
 2478    # Add CPU speed to the output.
 2479    if [[ "$cpu_speed" != "off" && "$speed" ]]; then
 2480        if (( speed < 1000 )); then
 2481            cpu="$cpu @ ${speed}MHz"
 2482        else
 2483            [[ "$speed_shorthand" == "on" ]] && speed="$((speed / 100))"
 2484            speed="${speed:0:1}.${speed:1}"
 2485            cpu="$cpu @ ${speed}GHz"
 2486        fi
 2487    fi
 2488
 2489    # Add CPU temp to the output.
 2490    if [[ "$cpu_temp" != "off" && "$deg" ]]; then
 2491        deg="${deg//.}"
 2492
 2493        # Convert to Fahrenheit if enabled
 2494        [[ "$cpu_temp" == "F" ]] && deg="$((deg * 90 / 50 + 320))"
 2495
 2496        # Format the output
 2497        deg="[${deg/${deg: -1}}.${deg: -1}°${cpu_temp:-C}]"
 2498        cpu="$cpu $deg"
 2499    fi
 2500}
 2501
 2502get_gpu() {
 2503    case $os in
 2504        "Linux")
 2505            # Read GPUs into array.
 2506            gpu_cmd="$(lspci -mm |
 2507                       awk -F '\"|\" \"|\\(' \
 2508                              '/"Display|"3D|"VGA/ {
 2509                                  a[$0] = $1 " " $3 " " ($(NF-1) ~ /^$|^Device [[:xdigit:]]+$/ ? $4 : $(NF-1))
 2510                              }
 2511                              END { for (i in a) {
 2512                                  if (!seen[a[i]]++) {
 2513                                      sub("^[^ ]+ ", "", a[i]);
 2514                                      print a[i]
 2515                                  }
 2516                              }}')"
 2517            IFS=$'\n' read -d "" -ra gpus <<< "$gpu_cmd"
 2518
 2519            # Remove duplicate Intel Graphics outputs.
 2520            # This fixes cases where the outputs are both
 2521            # Intel but not entirely identical.
 2522            #
 2523            # Checking the first two array elements should
 2524            # be safe since there won't be 2 intel outputs if
 2525            # there's a dedicated GPU in play.
 2526            [[ "${gpus[0]}" == *Intel* && "${gpus[1]}" == *Intel* ]] && unset -v "gpus[0]"
 2527
 2528            for gpu in "${gpus[@]}"; do
 2529                # GPU shorthand tests.
 2530                [[ "$gpu_type" == "dedicated" && "$gpu" == *Intel* ]] || \
 2531                [[ "$gpu_type" == "integrated" && ! "$gpu" == *Intel* ]] && \
 2532                    { unset -v gpu; continue; }
 2533
 2534                case $gpu in
 2535                    *"Advanced"*)
 2536                        brand="${gpu/*AMD*ATI*/AMD ATI}"
 2537                        brand="${brand:-${gpu/*AMD*/AMD}}"
 2538                        brand="${brand:-${gpu/*ATI*/ATi}}"
 2539
 2540                        gpu="${gpu/\[AMD\/ATI\] }"
 2541                        gpu="${gpu/\[AMD\] }"
 2542                        gpu="${gpu/OEM }"
 2543                        gpu="${gpu/Advanced Micro Devices, Inc.}"
 2544                        gpu="${gpu/*\[}"
 2545                        gpu="${gpu/\]*}"
 2546                        gpu="$brand $gpu"
 2547                    ;;
 2548
 2549                    *"NVIDIA"*)
 2550                        gpu="${gpu/*\[}"
 2551                        gpu="${gpu/\]*}"
 2552                        gpu="NVIDIA $gpu"
 2553                    ;;
 2554
 2555                    *"Intel"*)
 2556                        gpu="${gpu/*Intel/Intel}"
 2557                        gpu="${gpu/\(R\)}"
 2558                        gpu="${gpu/Corporation}"
 2559                        gpu="${gpu/ \(*}"
 2560                        gpu="${gpu/Integrated Graphics Controller}"
 2561                        gpu="${gpu/*Xeon*/Intel HD Graphics}"
 2562
 2563                        [[ -z "$(trim "$gpu")" ]] && gpu="Intel Integrated Graphics"
 2564                    ;;
 2565
 2566                    *"MCST"*)
 2567                        gpu="${gpu/*MCST*MGA2*/MCST MGA2}"
 2568                    ;;
 2569
 2570                    *"VirtualBox"*)
 2571                        gpu="VirtualBox Graphics Adapter"
 2572                    ;;
 2573
 2574                    *) continue ;;
 2575                esac
 2576
 2577                if [[ "$gpu_brand" == "off" ]]; then
 2578                    gpu="${gpu/AMD }"
 2579                    gpu="${gpu/NVIDIA }"
 2580                    gpu="${gpu/Intel }"
 2581                fi
 2582
 2583                prin "${subtitle:+${subtitle}${gpu_name}}" "$gpu"
 2584            done
 2585
 2586            return
 2587        ;;
 2588
 2589        "Mac OS X"|"macOS")
 2590            if [[ -f "${cache_dir}/neofetch/gpu" ]]; then
 2591                source "${cache_dir}/neofetch/gpu"
 2592
 2593            else
 2594                gpu="$(system_profiler SPDisplaysDataType |\
 2595                       awk -F': ' '/^\ *Chipset Model:/ {printf $2 ", "}')"
 2596                gpu="${gpu//\/ \$}"
 2597                gpu="${gpu%,*}"
 2598
 2599                cache "gpu" "$gpu"
 2600            fi
 2601        ;;
 2602
 2603        "iPhone OS")
 2604            case $kernel_machine in
 2605                "iPhone1,"[1-2]):                             "PowerVR MBX Lite 3D" ;;
 2606                "iPhone2,1" | "iPhone3,"[1-3] | "iPod3,1" | "iPod4,1" | "iPad1,1"):
 2607                    "PowerVR SGX535"
 2608                ;;
 2609                "iPhone4,1" | "iPad2,"[1-7] | "iPod5,1"):     "PowerVR SGX543MP2" ;;
 2610                "iPhone5,"[1-4]):                             "PowerVR SGX543MP3" ;;
 2611                "iPhone6,"[1-2] | "iPad4,"[1-9]):             "PowerVR G6430" ;;
 2612                "iPhone7,"[1-2] | "iPod7,1" | "iPad5,"[1-2]): "PowerVR GX6450" ;;
 2613                "iPhone8,"[1-4] | "iPad6,1"[12]):             "PowerVR GT7600" ;;
 2614                "iPhone9,"[1-4] | "iPad7,"[5-6]):             "PowerVR GT7600 Plus" ;;
 2615                "iPhone10,"[1-6]):                            "Apple Designed GPU (A11)" ;;
 2616                "iPhone11,"[2468] | "iPad11,"[67]):           "Apple Designed GPU (A12)" ;;
 2617                "iPhone12,"[1358]):                           "Apple Designed GPU (A13)" ;;
 2618                "iPhone13,"[1234] | "iPad13,"[12]):           "Apple Designed GPU (A14)" ;;
 2619
 2620                "iPad3,"[1-3]):     "PowerVR SGX534MP4" ;;
 2621                "iPad3,"[4-6]):     "PowerVR SGX554MP4" ;;
 2622                "iPad5,"[3-4]):     "PowerVR GXA6850" ;;
 2623                "iPad6,"[3-8]):     "PowerVR 7XT" ;;
 2624
 2625                "iPod1,1" | "iPod2,1")
 2626                    : "PowerVR MBX Lite"
 2627                ;;
 2628            esac
 2629            gpu="$_"
 2630        ;;
 2631
 2632        "Windows")
 2633            wmic path Win32_VideoController get caption | while read -r line; do
 2634                line=$(trim "$line")
 2635
 2636                case $line in
 2637                    *Caption*|'')
 2638                        continue
 2639                    ;;
 2640
 2641                    *)
 2642                        prin "${subtitle:+${subtitle}${gpu_name}}" "$line"
 2643                    ;;
 2644                esac
 2645            done
 2646        ;;
 2647
 2648        "Haiku")
 2649            gpu="$(listdev | grep -A2 -F 'device Display controller' |\
 2650                   awk -F':' '/device beef/ {print $2}')"
 2651        ;;
 2652
 2653        *)
 2654            case $kernel_name in
 2655                "FreeBSD"* | "DragonFly"*)
 2656                    gpu="$(pciconf -lv | grep -B 4 -F "VGA" | grep -F "device")"
 2657                    gpu="${gpu/*device*= }"
 2658                    gpu="$(trim_quotes "$gpu")"
 2659                ;;
 2660
 2661                *)
 2662                    gpu="$(glxinfo -B | grep -F 'OpenGL renderer string')"
 2663                    gpu="${gpu/OpenGL renderer string: }"
 2664                ;;
 2665            esac
 2666        ;;
 2667    esac
 2668
 2669    if [[ "$gpu_brand" == "off" ]]; then
 2670        gpu="${gpu/AMD}"
 2671        gpu="${gpu/NVIDIA}"
 2672        gpu="${gpu/Intel}"
 2673    fi
 2674}
 2675
 2676get_memory() {
 2677    case $os in
 2678        "Linux" | "Windows")
 2679            # MemUsed = Memtotal + Shmem - MemFree - Buffers - Cached - SReclaimable
 2680            # Source: https://github.com/KittyKatt/screenFetch/issues/386#issuecomment-249312716
 2681            while IFS=":" read -r a b; do
 2682                case $a in
 2683                    "MemTotal") ((mem_used+=${b/kB})); mem_total="${b/kB}" ;;
 2684                    "Shmem") ((mem_used+=${b/kB}))  ;;
 2685                    "MemFree" | "Buffers" | "Cached" | "SReclaimable")
 2686                        mem_used="$((mem_used-=${b/kB}))"
 2687                    ;;
 2688
 2689                    # Available since Linux 3.14rc (34e431b0ae398fc54ea69ff85ec700722c9da773).
 2690                    # If detected this will be used over the above calculation for mem_used.
 2691                    "MemAvailable")
 2692                        mem_avail=${b/kB}
 2693                    ;;
 2694                esac
 2695            done < /proc/meminfo
 2696
 2697            if [[ $mem_avail ]]; then
 2698                mem_used=$(((mem_total - mem_avail) / 1024))
 2699            else
 2700                mem_used="$((mem_used / 1024))"
 2701            fi
 2702
 2703            mem_total="$((mem_total / 1024))"
 2704        ;;
 2705
 2706        "Mac OS X" | "macOS" | "iPhone OS")
 2707            hw_pagesize="$(sysctl -n hw.pagesize)"
 2708            mem_total="$(($(sysctl -n hw.memsize) / 1024 / 1024))"
 2709            pages_app="$(($(sysctl -n vm.page_pageable_internal_count) - $(sysctl -n vm.page_purgeable_count)))"
 2710            pages_wired="$(vm_stat | awk '/ wired/ { print $4 }')"
 2711            pages_compressed="$(vm_stat | awk '/ occupied/ { printf $5 }')"
 2712            pages_compressed="${pages_compressed:-0}"
 2713            mem_used="$(((${pages_app} + ${pages_wired//.} + ${pages_compressed//.}) * hw_pagesize / 1024 / 1024))"
 2714        ;;
 2715
 2716        "BSD" | "MINIX")
 2717            # Mem total.
 2718            case $kernel_name in
 2719                "NetBSD"*) mem_total="$(($(sysctl -n hw.physmem64) / 1024 / 1024))" ;;
 2720                *) mem_total="$(($(sysctl -n hw.physmem) / 1024 / 1024))" ;;
 2721            esac
 2722
 2723            # Mem free.
 2724            case $kernel_name in
 2725                "NetBSD"*)
 2726                    mem_free="$(($(awk -F ':|kB' '/MemFree:/ {printf $2}' /proc/meminfo) / 1024))"
 2727                ;;
 2728
 2729                "FreeBSD"* | "DragonFly"*)
 2730                    hw_pagesize="$(sysctl -n hw.pagesize)"
 2731                    mem_inactive="$(($(sysctl -n vm.stats.vm.v_inactive_count) * hw_pagesize))"
 2732                    mem_unused="$(($(sysctl -n vm.stats.vm.v_free_count) * hw_pagesize))"
 2733                    mem_cache="$(($(sysctl -n vm.stats.vm.v_cache_count) * hw_pagesize))"
 2734                    mem_free="$(((mem_inactive + mem_unused + mem_cache) / 1024 / 1024))"
 2735                ;;
 2736
 2737                "MINIX")
 2738                    mem_free="$(top -d 1 | awk -F ',' '/^Memory:/ {print $2}')"
 2739                    mem_free="${mem_free/M Free}"
 2740                ;;
 2741
 2742                "OpenBSD"*) ;;
 2743                *) mem_free="$(($(vmstat | awk 'END {printf $5}') / 1024))" ;;
 2744            esac
 2745
 2746            # Mem used.
 2747            case $kernel_name in
 2748                "OpenBSD"*)
 2749                    mem_used="$(vmstat | awk 'END {printf $3}')"
 2750                    mem_used="${mem_used/M}"
 2751                ;;
 2752
 2753                *) mem_used="$((mem_total - mem_free))" ;;
 2754            esac
 2755        ;;
 2756
 2757        "Solaris" | "AIX")
 2758            hw_pagesize="$(pagesize)"
 2759            case $os in
 2760                "Solaris")
 2761                    pages_total="$(kstat -p unix:0:system_pages:pagestotal | awk '{print $2}')"
 2762                    pages_free="$(kstat -p unix:0:system_pages:pagesfree | awk '{print $2}')"
 2763                ;;
 2764
 2765                "AIX")
 2766                    IFS=$'\n'"| " read -d "" -ra mem_stat <<< "$(svmon -G -O unit=page)"
 2767                    pages_total="${mem_stat[11]}"
 2768                    pages_free="${mem_stat[16]}"
 2769                ;;
 2770            esac
 2771            mem_total="$((pages_total * hw_pagesize / 1024 / 1024))"
 2772            mem_free="$((pages_free * hw_pagesize / 1024 / 1024))"
 2773            mem_used="$((mem_total - mem_free))"
 2774        ;;
 2775
 2776        "Haiku")
 2777            mem_total="$(($(sysinfo -mem | awk -F '\\/ |)' '{print $2; exit}') / 1024 / 1024))"
 2778            mem_used="$(sysinfo -mem | awk -F '\\/|)' '{print $2; exit}')"
 2779            mem_used="$((${mem_used/max} / 1024 / 1024))"
 2780        ;;
 2781
 2782        "IRIX")
 2783            IFS=$'\n' read -d "" -ra mem_cmd <<< "$(pmem)"
 2784            IFS=" " read -ra mem_stat <<< "${mem_cmd[0]}"
 2785
 2786            mem_total="$((mem_stat[3] / 1024))"
 2787            mem_free="$((mem_stat[5] / 1024))"
 2788            mem_used="$((mem_total - mem_free))"
 2789        ;;
 2790
 2791        "FreeMiNT")
 2792            mem="$(awk -F ':|kB' '/MemTotal:|MemFree:/ {printf $2, " "}' /kern/meminfo)"
 2793            mem_free="${mem/*  }"
 2794            mem_total="${mem/$mem_free}"
 2795            mem_used="$((mem_total - mem_free))"
 2796            mem_total="$((mem_total / 1024))"
 2797            mem_used="$((mem_used / 1024))"
 2798        ;;
 2799
 2800    esac
 2801
 2802    [[ "$memory_percent" == "on" ]] && ((mem_perc=mem_used * 100 / mem_total))
 2803
 2804    case $memory_unit in
 2805        gib)
 2806            mem_used=$(awk '{printf "%.2f", $1 / $2}' <<< "$mem_used 1024")
 2807            mem_total=$(awk '{printf "%.2f", $1 / $2}' <<< "$mem_total 1024")
 2808            mem_label=GiB
 2809        ;;
 2810
 2811        kib)
 2812            mem_used=$((mem_used * 1024))
 2813            mem_total=$((mem_total * 1024))
 2814            mem_label=KiB
 2815        ;;
 2816    esac
 2817
 2818    memory="${mem_used}${mem_label:-MiB} / ${mem_total}${mem_label:-MiB} ${mem_perc:+(${mem_perc}%)}"
 2819
 2820    # Bars.
 2821    case $memory_display in
 2822        "bar")     memory="$(bar "${mem_used}" "${mem_total}")" ;;
 2823        "infobar") memory="${memory} $(bar "${mem_used}" "${mem_total}")" ;;
 2824        "barinfo") memory="$(bar "${mem_used}" "${mem_total}")${info_color} ${memory}" ;;
 2825    esac
 2826}
 2827
 2828get_song() {
 2829    players=(
 2830        "amarok"
 2831        "audacious"
 2832        "banshee"
 2833        "bluemindo"
 2834        "clementine"
 2835        "cmus"
 2836        "deadbeef"
 2837        "deepin-music"
 2838        "dragon"
 2839        "elisa"
 2840        "exaile"
 2841        "gnome-music"
 2842        "gmusicbrowser"
 2843        "gogglesmm"
 2844        "guayadeque"
 2845        "io.elementary.music"
 2846        "iTunes"
 2847        "Music"
 2848        "juk"
 2849        "lollypop"
 2850        "MellowPlayer"
 2851        "mocp"
 2852        "mopidy"
 2853        "mpd"
 2854        "muine"
 2855        "netease-cloud-music"
 2856        "olivia"
 2857        "plasma-browser-integration"
 2858        "playerctl"
 2859        "pogo"
 2860        "pragha"
 2861        "qmmp"
 2862        "quodlibet"
 2863        "rhythmbox"
 2864        "sayonara"
 2865        "smplayer"
 2866        "spotify"
 2867        "Spotify"
 2868        "strawberry"
 2869        "tauonmb"
 2870        "tomahawk"
 2871        "vlc"
 2872        "xmms2d"
 2873        "xnoise"
 2874        "yarock"
 2875    )
 2876
 2877    printf -v players "|%s" "${players[@]}"
 2878    player="$(ps aux | awk -v pattern="(${players:1})" \
 2879        '!/ awk / && !/iTunesHelper/ && match($0,pattern){print substr($0,RSTART,RLENGTH); exit}')"
 2880
 2881    [[ "$music_player" && "$music_player" != "auto" ]] && player="$music_player"
 2882
 2883    get_song_dbus() {
 2884        # Multiple players use an almost identical dbus command to get the information.
 2885        # This function saves us using the same command throughout the function.
 2886        song="$(\
 2887            dbus-send --print-reply --dest=org.mpris.MediaPlayer2."${1}" /org/mpris/MediaPlayer2 \
 2888            org.freedesktop.DBus.Properties.Get string:'org.mpris.MediaPlayer2.Player' \
 2889            string:'Metadata' |\
 2890            awk -F '"' 'BEGIN {RS=" entry"}; /"xesam:artist"/ {a = $4} /"xesam:album"/ {b = $4}
 2891                        /"xesam:title"/ {t = $4} END {print a " \n" b " \n" t}'
 2892        )"
 2893    }
 2894
 2895    case ${player/*\/} in
 2896        "mocp"*)          song="$(mocp -Q '%artist \n%album \n%song')" ;;
 2897        "deadbeef"*)      song="$(deadbeef --nowplaying-tf '%artist% \\n%album% \\n%title%')" ;;
 2898        "qmmp"*)          song="$(qmmp --nowplaying '%p \n%a \n%t')" ;;
 2899        "gnome-music"*)   get_song_dbus "GnomeMusic" ;;
 2900        "lollypop"*)      get_song_dbus "Lollypop" ;;
 2901        "clementine"*)    get_song_dbus "clementine" ;;
 2902        "cmus"*)          get_song_dbus "cmus" ;;
 2903        "juk"*)           get_song_dbus "juk" ;;
 2904        "bluemindo"*)     get_song_dbus "Bluemindo" ;;
 2905        "guayadeque"*)    get_song_dbus "guayadeque" ;;
 2906        "yarock"*)        get_song_dbus "yarock" ;;
 2907        "deepin-music"*)  get_song_dbus "DeepinMusic" ;;
 2908        "tomahawk"*)      get_song_dbus "tomahawk" ;;
 2909        "elisa"*)         get_song_dbus "elisa" ;;
 2910        "sayonara"*)      get_song_dbus "sayonara" ;;
 2911        "audacious"*)     get_song_dbus "audacious" ;;
 2912        "vlc"*)           get_song_dbus "vlc" ;;
 2913        "gmusicbrowser"*) get_song_dbus "gmusicbrowser" ;;
 2914        "pragha"*)        get_song_dbus "pragha" ;;
 2915        "amarok"*)        get_song_dbus "amarok" ;;
 2916        "dragon"*)        get_song_dbus "dragonplayer" ;;
 2917        "smplayer"*)      get_song_dbus "smplayer" ;;
 2918        "rhythmbox"*)     get_song_dbus "rhythmbox" ;;
 2919        "strawberry"*)    get_song_dbus "strawberry" ;;
 2920        "gogglesmm"*)     get_song_dbus "gogglesmm" ;;
 2921        "xnoise"*)        get_song_dbus "xnoise" ;;
 2922        "tauonmb"*)       get_song_dbus "tauon" ;;
 2923        "olivia"*)        get_song_dbus "olivia" ;;
 2924        "exaile"*)        get_song_dbus "exaile" ;;
 2925        "netease-cloud-music"*)        get_song_dbus "netease-cloud-music" ;;
 2926        "plasma-browser-integration"*) get_song_dbus "plasma-browser-integration" ;;
 2927        "io.elementary.music"*)        get_song_dbus "Music" ;;
 2928        "MellowPlayer"*)  get_song_dbus "MellowPlayer3" ;;
 2929
 2930        "mpd"* | "mopidy"*)
 2931            song="$(mpc -f '%artist% \n%album% \n%title%' current "${mpc_args[@]}")"
 2932        ;;
 2933
 2934        "xmms2d"*)
 2935            song="$(xmms2 current -f "\${artist}"$' \n'"\${album}"$' \n'"\${title}")"
 2936        ;;
 2937
 2938        "spotify"*)
 2939            case $os in
 2940                "Linux") get_song_dbus "spotify" ;;
 2941
 2942                "Mac OS X"|"macOS")
 2943                    song="$(osascript -e 'tell application "Spotify" to artist of current track as¬
 2944                                          string & "\n" & album of current track as¬
 2945                                          string & "\n" & name of current track as string')"
 2946                ;;
 2947            esac
 2948        ;;
 2949
 2950        "itunes"*)
 2951            song="$(osascript -e 'tell application "iTunes" to artist of current track as¬
 2952                                  string & "\n" & album of current track as¬
 2953                                  string & "\n" & name of current track as string')"
 2954        ;;
 2955
 2956        "music"*)
 2957            song="$(osascript -e 'tell application "Music" to artist of current track as¬
 2958                                  string & "\n" & album of current track as¬
 2959                                  string & "\n" & name of current track as string')"
 2960        ;;
 2961
 2962        "banshee"*)
 2963            song="$(banshee --query-artist --query-album --query-title |\
 2964                    awk -F':' '/^artist/ {a=$2} /^album/ {b=$2} /^title/ {t=$2}
 2965                               END {print a " \n" b " \n"t}')"
 2966        ;;
 2967
 2968        "muine"*)
 2969            song="$(dbus-send --print-reply --dest=org.gnome.Muine /org/gnome/Muine/Player \
 2970                    org.gnome.Muine.Player.GetCurrentSong |
 2971                    awk -F':' '/^artist/ {a=$2} /^album/ {b=$2} /^title/ {t=$2}
 2972                               END {print a " \n" b " \n" t}')"
 2973        ;;
 2974
 2975        "quodlibet"*)
 2976            song="$(dbus-send --print-reply --dest=net.sacredchao.QuodLibet \
 2977                    /net/sacredchao/QuodLibet net.sacredchao.QuodLibet.CurrentSong |\
 2978                    awk -F'"' 'BEGIN {RS=" entry"}; /"artist"/ {a=$4} /"album"/ {b=$4}
 2979                    /"title"/ {t=$4} END {print a " \n" b " \n" t}')"
 2980        ;;
 2981
 2982        "pogo"*)
 2983            song="$(dbus-send --print-reply --dest=org.mpris.pogo /Player \
 2984                    org.freedesktop.MediaPlayer.GetMetadata |
 2985                    awk -F'"' 'BEGIN {RS=" entry"}; /"artist"/ {a=$4} /"album"/ {b=$4}
 2986                    /"title"/ {t=$4} END {print a " \n" b " \n" t}')"
 2987        ;;
 2988
 2989        "playerctl"*)
 2990            song="$(playerctl metadata --format '{{ artist }} \n{{ album }} \n{{ title }}')"
 2991         ;;
 2992
 2993        *) mpc &>/dev/null && song="$(mpc -f '%artist% \n%album% \n%title%' current)" || return ;;
 2994    esac
 2995
 2996    IFS=$'\n' read -d "" -r artist album title <<< "${song//'\n'/$'\n'}"
 2997
 2998    # Make sure empty tags are truly empty.
 2999    artist="$(trim "$artist")"
 3000    album="$(trim "$album")"
 3001    title="$(trim "$title")"
 3002
 3003    # Set default values if no tags were found.
 3004    : "${artist:=Unknown Artist}" "${album:=Unknown Album}" "${title:=Unknown Song}"
 3005
 3006    # Display Artist, Album and Title on separate lines.
 3007    if [[ "$song_shorthand" == "on" ]]; then
 3008        prin "Artist" "$artist"
 3009        prin "Album"  "$album"
 3010        prin "Song"   "$title"
 3011    else
 3012        song="${song_format/\%artist\%/$artist}"
 3013        song="${song/\%album\%/$album}"
 3014        song="${song/\%title\%/$title}"
 3015    fi
 3016}
 3017
 3018get_resolution() {
 3019    case $os in
 3020        "Mac OS X"|"macOS")
 3021            if type -p screenresolution >/dev/null; then
 3022                resolution="$(screenresolution get 2>&1 | awk '/Display/ {printf $6 "Hz, "}')"
 3023                resolution="${resolution//x??@/ @ }"
 3024
 3025            else
 3026                resolution="$(system_profiler SPDisplaysDataType |\
 3027                              awk '/Resolution:/ {printf $2"x"$4" @ "$6"Hz, "}')"
 3028            fi
 3029
 3030            if [[ -e "/Library/Preferences/com.apple.windowserver.plist" ]]; then
 3031                scale_factor="$(PlistBuddy -c "Print DisplayAnyUserSets:0:0:Resolution" \
 3032                                /Library/Preferences/com.apple.windowserver.plist)"
 3033            else
 3034                scale_factor=""
 3035            fi
 3036
 3037            # If no refresh rate is empty.
 3038            [[ "$resolution" == *"@ Hz"* ]] && \
 3039                resolution="${resolution//@ Hz}"
 3040
 3041            [[ "${scale_factor%.*}" == 2 ]] && \
 3042                resolution="${resolution// @/@2x @}"
 3043
 3044            if [[ "$refresh_rate" == "off" ]]; then
 3045                resolution="${resolution// @ [0-9][0-9]Hz}"
 3046                resolution="${resolution// @ [0-9][0-9][0-9]Hz}"
 3047            fi
 3048
 3049            [[ "$resolution" == *"0Hz"* ]] && \
 3050                resolution="${resolution// @ 0Hz}"
 3051        ;;
 3052
 3053        "Windows")
 3054            IFS=$'\n' read -d "" -ra sw \
 3055                <<< "$(wmic path Win32_VideoController get CurrentHorizontalResolution)"
 3056
 3057            IFS=$'\n' read -d "" -ra sh \
 3058                <<< "$(wmic path Win32_VideoController get CurrentVerticalResolution)"
 3059
 3060            sw=("${sw[@]//CurrentHorizontalResolution}")
 3061            sh=("${sh[@]//CurrentVerticalResolution}")
 3062
 3063            for ((mn = 0; mn < ${#sw[@]}; mn++)) {
 3064                [[ ${sw[mn]//[[:space:]]} && ${sh[mn]//[[:space:]]} ]] &&
 3065                    resolution+="${sw[mn]//[[:space:]]}x${sh[mn]//[[:space:]]}, "
 3066            }
 3067
 3068            resolution=${resolution%,}
 3069        ;;
 3070
 3071        "Haiku")
 3072            resolution="$(screenmode | awk -F ' |, ' 'END{printf $2 "x" $3 " @ " $6 $7}')"
 3073
 3074            [[ "$refresh_rate" == "off" ]] && resolution="${resolution/ @*}"
 3075        ;;
 3076
 3077        "FreeMiNT")
 3078            # Need to block X11 queries
 3079        ;;
 3080
 3081        *)
 3082            if type -p xrandr >/dev/null && [[ $DISPLAY && -z $WAYLAND_DISPLAY ]]; then
 3083                case $refresh_rate in
 3084                    "on")
 3085                        resolution="$(xrandr --nograb --current |\
 3086                                      awk 'match($0,/[0-9]*\.[0-9]*\*/) {
 3087                                           printf $1 " @ " substr($0,RSTART,RLENGTH) "Hz, "}')"
 3088                    ;;
 3089
 3090                    "off")
 3091                        resolution="$(xrandr --nograb --current |\
 3092                                      awk -F 'connected |\\+|\\(' \
 3093                                             '/ connected.*[0-9]+x[0-9]+\+/ && $2 {printf $2 ", "}')"
 3094
 3095                        resolution="${resolution/primary, }"
 3096                        resolution="${resolution/primary }"
 3097                    ;;
 3098                esac
 3099                resolution="${resolution//\*}"
 3100
 3101            elif type -p xwininfo >/dev/null && [[ $DISPLAY && -z $WAYLAND_DISPLAY ]]; then
 3102                read -r w h \
 3103                    <<< "$(xwininfo -root | awk -F':' '/Width|Height/ {printf $2}')"
 3104                resolution="${w}x${h}"
 3105
 3106            elif type -p xdpyinfo >/dev/null && [[ $DISPLAY && -z $WAYLAND_DISPLAY ]]; then
 3107                resolution="$(xdpyinfo | awk '/dimensions:/ {printf $2}')"
 3108
 3109            elif [[ -d /sys/class/drm ]]; then
 3110                for dev in /sys/class/drm/*/modes; do
 3111                    read -r single_resolution _ < "$dev"
 3112
 3113                    [[ $single_resolution ]] && resolution="${single_resolution}, ${resolution}"
 3114                done
 3115            fi
 3116        ;;
 3117    esac
 3118
 3119    resolution="${resolution%%,}"
 3120    resolution="${resolution%%, }"
 3121    [[ -z "${resolution/x}" ]] && resolution=
 3122}
 3123
 3124get_style() {
 3125    # Fix weird output when the function is run multiple times.
 3126    unset gtk2_theme gtk3_theme theme path
 3127
 3128    if [[ "$DISPLAY" && $os != "Mac OS X" && $os != "macOS" ]]; then
 3129        # Get DE if user has disabled the function.
 3130        ((de_run != 1)) && get_de
 3131
 3132        # Remove version from '$de'.
 3133        [[ $de_version == on ]] && de=${de/ *}
 3134
 3135        # Check for DE Theme.
 3136        case $de in
 3137            "KDE"* | "Plasma"*)
 3138                kde_config_dir
 3139
 3140                if [[ -f "${kde_config_dir}/kdeglobals" ]]; then
 3141                    kde_config_file="${kde_config_dir}/kdeglobals"
 3142
 3143                    kde_theme="$(grep "^${kde}" "$kde_config_file")"
 3144                    kde_theme="${kde_theme/*=}"
 3145                    if [[ "$kde" == "font" ]]; then
 3146                        kde_font_size="${kde_theme#*,}"
 3147                        kde_font_size="${kde_font_size/,*}"
 3148                        kde_theme="${kde_theme/,*} ${kde_theme/*,} ${kde_font_size}"
 3149                    fi
 3150                    kde_theme="$kde_theme [$de], "
 3151                else
 3152                    err "Theme: KDE config files not found, skipping."
 3153                fi
 3154            ;;
 3155
 3156            *"Cinnamon"*)
 3157                if type -p gsettings >/dev/null; then
 3158                    gtk3_theme="$(gsettings get org.cinnamon.desktop.interface "$gsettings")"
 3159                    gtk2_theme="$gtk3_theme"
 3160                fi
 3161            ;;
 3162
 3163            "Gnome"* | "Unity"* | "Budgie"*)
 3164                if type -p gsettings >/dev/null; then
 3165                    gtk3_theme="$(gsettings get org.gnome.desktop.interface "$gsettings")"
 3166                    gtk2_theme="$gtk3_theme"
 3167
 3168                elif type -p gconftool-2 >/dev/null; then
 3169                    gtk2_theme="$(gconftool-2 -g /desktop/gnome/interface/"$gconf")"
 3170                fi
 3171            ;;
 3172
 3173            "Mate"*)
 3174                gtk3_theme="$(gsettings get org.mate.interface "$gsettings")"
 3175                gtk2_theme="$gtk3_theme"
 3176            ;;
 3177
 3178            "Xfce"*)
 3179                type -p xfconf-query >/dev/null && \
 3180                    gtk2_theme="$(xfconf-query -c xsettings -p "$xfconf")"
 3181            ;;
 3182        esac
 3183
 3184        # Check for general GTK2 Theme.
 3185        if [[ -z "$gtk2_theme" ]]; then
 3186            if [[ -n "$GTK2_RC_FILES" ]]; then
 3187                IFS=: read -ra rc_files <<< "$GTK2_RC_FILES"
 3188                gtk2_theme="$(grep "^[^#]*${name}" "${rc_files[@]}")"
 3189            elif [[ -f "${HOME}/.gtkrc-2.0"  ]]; then
 3190                gtk2_theme="$(grep "^[^#]*${name}" "${HOME}/.gtkrc-2.0")"
 3191
 3192            elif [[ -f "/etc/gtk-2.0/gtkrc" ]]; then
 3193                gtk2_theme="$(grep "^[^#]*${name}" /etc/gtk-2.0/gtkrc)"
 3194
 3195            elif [[ -f "/usr/share/gtk-2.0/gtkrc" ]]; then
 3196                gtk2_theme="$(grep "^[^#]*${name}" /usr/share/gtk-2.0/gtkrc)"
 3197
 3198            fi
 3199
 3200            gtk2_theme="${gtk2_theme/*${name}*=}"
 3201        fi
 3202
 3203        # Check for general GTK3 Theme.
 3204        if [[ -z "$gtk3_theme" ]]; then
 3205            if [[ -f "${XDG_CONFIG_HOME}/gtk-3.0/settings.ini" ]]; then
 3206                gtk3_theme="$(grep "^[^#]*$name" "${XDG_CONFIG_HOME}/gtk-3.0/settings.ini")"
 3207
 3208            elif type -p gsettings >/dev/null; then
 3209                gtk3_theme="$(gsettings get org.gnome.desktop.interface "$gsettings")"
 3210
 3211            elif [[ -f "/etc/gtk-3.0/settings.ini" ]]; then
 3212                gtk3_theme="$(grep "^[^#]*$name" /etc/gtk-3.0/settings.ini)"
 3213
 3214            elif [[ -f "/usr/share/gtk-3.0/settings.ini" ]]; then
 3215                gtk3_theme="$(grep "^[^#]*$name" /usr/share/gtk-3.0/settings.ini)"
 3216            fi
 3217
 3218            gtk3_theme="${gtk3_theme/${name}*=}"
 3219        fi
 3220
 3221        # Trim whitespace.
 3222        gtk2_theme="$(trim "$gtk2_theme")"
 3223        gtk3_theme="$(trim "$gtk3_theme")"
 3224
 3225        # Remove quotes.
 3226        gtk2_theme="$(trim_quotes "$gtk2_theme")"
 3227        gtk3_theme="$(trim_quotes "$gtk3_theme")"
 3228
 3229        # Toggle visibility of GTK themes.
 3230        [[ "$gtk2" == "off" ]] && unset gtk2_theme
 3231        [[ "$gtk3" == "off" ]] && unset gtk3_theme
 3232
 3233        # Format the string based on which themes exist.
 3234        if [[ "$gtk2_theme" && "$gtk2_theme" == "$gtk3_theme" ]]; then
 3235            gtk3_theme+=" [GTK2/3]"
 3236            unset gtk2_theme
 3237
 3238        elif [[ "$gtk2_theme" && "$gtk3_theme" ]]; then
 3239            gtk2_theme+=" [GTK2], "
 3240            gtk3_theme+=" [GTK3] "
 3241
 3242        else
 3243            [[ "$gtk2_theme" ]] && gtk2_theme+=" [GTK2] "
 3244            [[ "$gtk3_theme" ]] && gtk3_theme+=" [GTK3] "
 3245        fi
 3246
 3247        # Final string.
 3248        theme="${kde_theme}${gtk2_theme}${gtk3_theme}"
 3249        theme="${theme%, }"
 3250
 3251        # Make the output shorter by removing "[GTKX]" from the string.
 3252        if [[ "$gtk_shorthand" == "on" ]]; then
 3253            theme="${theme// '[GTK'[0-9]']'}"
 3254            theme="${theme/ '[GTK2/3]'}"
 3255            theme="${theme/ '[KDE]'}"
 3256            theme="${theme/ '[Plasma]'}"
 3257        fi
 3258    fi
 3259}
 3260
 3261get_theme() {
 3262    name="gtk-theme-name"
 3263    gsettings="gtk-theme"
 3264    gconf="gtk_theme"
 3265    xfconf="/Net/ThemeName"
 3266    kde="Name"
 3267
 3268    get_style
 3269}
 3270
 3271get_icons() {
 3272    name="gtk-icon-theme-name"
 3273    gsettings="icon-theme"
 3274    gconf="icon_theme"
 3275    xfconf="/Net/IconThemeName"
 3276    kde="Theme"
 3277
 3278    get_style
 3279    icons="$theme"
 3280}
 3281
 3282get_font() {
 3283    name="gtk-font-name"
 3284    gsettings="font-name"
 3285    gconf="font_theme"
 3286    xfconf="/Gtk/FontName"
 3287    kde="font"
 3288
 3289    get_style
 3290    font="$theme"
 3291}
 3292
 3293get_term() {
 3294    # If function was run, stop here.
 3295    ((term_run == 1)) && return
 3296
 3297    # Workaround for macOS systems that
 3298    # don't support the block below.
 3299    case $TERM_PROGRAM in
 3300        "iTerm.app")    term="iTerm2" ;;
 3301        "Terminal.app") term="Apple Terminal" ;;
 3302        "Hyper")        term="HyperTerm" ;;
 3303        *)              term="${TERM_PROGRAM/\.app}" ;;
 3304    esac
 3305
 3306    # Most likely TosWin2 on FreeMiNT - quick check
 3307    [[ "$TERM" == "tw52" || "$TERM" == "tw100" ]] && term="TosWin2"
 3308    [[ "$SSH_CONNECTION" ]] && term="$SSH_TTY"
 3309    [[ "$WT_SESSION" ]]     && term="Windows Terminal"
 3310
 3311    # Check $PPID for terminal emulator.
 3312    while [[ -z "$term" ]]; do
 3313        parent="$(get_ppid "$parent")"
 3314        [[ -z "$parent" ]] && break
 3315        name="$(get_process_name "$parent")"
 3316
 3317        case ${name// } in
 3318            "${SHELL/*\/}"|*"sh"|"screen"|"su"*|"newgrp") ;;
 3319
 3320            "login"*|*"Login"*|"init"|"(init)")
 3321                term="$(tty)"
 3322            ;;
 3323
 3324            "ruby"|"1"|"tmux"*|"systemd"|"sshd"*|"python"*|\
 3325            "USER"*"PID"*|"kdeinit"*|"launchd"*|"bwrap")
 3326                break
 3327            ;;
 3328
 3329            "gnome-terminal-") term="gnome-terminal" ;;
 3330            "urxvtd")          term="urxvt" ;;
 3331            *"nvim")           term="Neovim Terminal" ;;
 3332            *"NeoVimServer"*)  term="VimR Terminal" ;;
 3333
 3334            *)
 3335                # Fix issues with long process names on Linux.
 3336                [[ $os == Linux ]] && term=$(realpath "/proc/$parent/exe")
 3337
 3338                term="${name##*/}"
 3339
 3340                # Fix wrapper names in Nix.
 3341                [[ $term == .*-wrapped ]] && {
 3342                   term="${term#.}"
 3343                   term="${term%-wrapped}"
 3344                }
 3345            ;;
 3346        esac
 3347    done
 3348
 3349    # Log that the function was run.
 3350    term_run=1
 3351}
 3352
 3353get_term_font() {
 3354    ((term_run != 1)) && get_term
 3355
 3356    case $term in
 3357        "alacritty"*)
 3358            shopt -s nullglob
 3359            confs=({$XDG_CONFIG_HOME,$HOME}/{alacritty,}/{.,}alacritty.ym?)
 3360            shopt -u nullglob
 3361
 3362            [[ -f "${confs[0]}" ]] || return
 3363
 3364            term_font="$(awk '/normal:/ {while (!/family:/ || /#/)
 3365                         {if (!getline) {exit}} print; exit}' "${confs[0]}")"
 3366            term_font="${term_font/*family:}"
 3367            term_font="${term_font/$'\n'*}"
 3368            term_font="${term_font/\#*}"
 3369            term_font="${term_font//\"}"
 3370        ;;
 3371
 3372        "Apple_Terminal")
 3373            term_font="$(osascript <<END
 3374                         tell application "Terminal" to font name of window frontmost
 3375END
 3376)"
 3377        ;;
 3378
 3379        "iTerm2")
 3380            # Unfortunately the profile name is not unique, but it seems to be the only thing
 3381            # that identifies an active profile. There is the "id of current session of current win-
 3382            # dow" though, but that does not match to a guid in the plist.
 3383            # So, be warned, collisions may occur!
 3384            # See: https://groups.google.com/forum/#!topic/iterm2-discuss/0tO3xZ4Zlwg
 3385            local current_profile_name profiles_count profile_name diff_font
 3386
 3387            current_profile_name="$(osascript <<END
 3388                                    tell application "iTerm2" to profile name \
 3389                                    of current session of current window
 3390END
 3391)"
 3392
 3393            # Warning: Dynamic profiles are not taken into account here!
 3394            # https://www.iterm2.com/documentation-dynamic-profiles.html
 3395            font_file="${HOME}/Library/Preferences/com.googlecode.iterm2.plist"
 3396
 3397            # Count Guids in "New Bookmarks"; they should be unique
 3398            profiles_count="$(PlistBuddy -c "Print ':New Bookmarks:'" "$font_file" | \
 3399                              grep -w -c "Guid")"
 3400
 3401            for ((i=0; i<profiles_count; i++)); do
 3402                profile_name="$(PlistBuddy -c "Print ':New Bookmarks:${i}:Name:'" "$font_file")"
 3403
 3404                if [[ "$profile_name" == "$current_profile_name" ]]; then
 3405                    # "Normal Font"
 3406                    term_font="$(PlistBuddy -c "Print ':New Bookmarks:${i}:Normal Font:'" \
 3407                                 "$font_file")"
 3408
 3409                    # Font for non-ascii characters
 3410                    # Only check for a different non-ascii font, if the user checked
 3411                    # the "use a different font for non-ascii text" switch.
 3412                    diff_font="$(PlistBuddy -c "Print ':New Bookmarks:${i}:Use Non-ASCII Font:'" \
 3413                                 "$font_file")"
 3414
 3415                    if [[ "$diff_font" == "true" ]]; then
 3416                        non_ascii="$(PlistBuddy -c "Print ':New Bookmarks:${i}:Non Ascii Font:'" \
 3417                                     "$font_file")"
 3418
 3419                        [[ "$term_font" != "$non_ascii" ]] && \
 3420                            term_font="$term_font (normal) / $non_ascii (non-ascii)"
 3421                    fi
 3422                fi
 3423            done
 3424        ;;
 3425
 3426        "deepin-terminal"*)
 3427            term_font="$(awk -F '=' '/font=/ {a=$2} /font_size/ {b=$2} END {print a,b}' \
 3428                         "${XDG_CONFIG_HOME}/deepin/deepin-terminal/config.conf")"
 3429        ;;
 3430
 3431        "GNUstep_Terminal")
 3432             term_font="$(awk -F '>|<' '/>TerminalFont</ {getline; f=$3}
 3433                          />TerminalFontSize</ {getline; s=$3} END {print f,s}' \
 3434                          "${HOME}/GNUstep/Defaults/Terminal.plist")"
 3435        ;;
 3436
 3437        "Hyper"*)
 3438            term_font="$(awk -F':|,' '/fontFamily/ {print $2; exit}' "${HOME}/.hyper.js")"
 3439            term_font="$(trim_quotes "$term_font")"
 3440        ;;
 3441
 3442        "kitty"*)
 3443            term_font="from kitty.cli import *; o = create_default_opts(); \
 3444                       print(f'{o.font_family} {o.font_size}')"
 3445            term_font="$(kitty +runpy ''"$term_font"'')"
 3446        ;;
 3447
 3448        "konsole" | "yakuake")
 3449            # Get Process ID of current konsole window / tab
 3450            child="$(get_ppid "$$")"
 3451
 3452            QT_BINDIR="$(qtpaths --binaries-dir)" && PATH+=":$QT_BINDIR"
 3453
 3454            IFS=$'\n' read -d "" -ra konsole_instances \
 3455                <<< "$(qdbus | awk '/org.kde.'"$term"'/ {print $1}')"
 3456
 3457            for i in "${konsole_instances[@]}"; do
 3458                IFS=$'\n' read -d "" -ra konsole_sessions <<< "$(qdbus "$i" | grep -F '/Sessions/')"
 3459
 3460                for session in "${konsole_sessions[@]}"; do
 3461                    if ((child == "$(qdbus "$i" "$session" processId)")); then
 3462                        profile="$(qdbus "$i" "$session" environment |\
 3463                                   awk -F '=' '/KONSOLE_PROFILE_NAME/ {print $2}')"
 3464                        [[ $profile ]] || profile="$(qdbus "$i" "$session" profile)"
 3465                        break
 3466                    fi
 3467                done
 3468                [[ $profile ]] && break
 3469            done
 3470
 3471            [[ $profile ]] || return
 3472
 3473            # We could have two profile files for the same profile name, take first match
 3474            profile_filename="$(grep -l "Name=${profile}" "$HOME"/.local/share/konsole/*.profile)"
 3475            profile_filename="${profile_filename/$'\n'*}"
 3476
 3477            [[ $profile_filename ]] && \
 3478                term_font="$(awk -F '=|,' '/Font=/ {print $2,$3}' "$profile_filename")"
 3479        ;;
 3480
 3481        "lxterminal"*)
 3482            term_font="$(awk -F '=' '/fontname=/ {print $2; exit}' \
 3483                         "${XDG_CONFIG_HOME}/lxterminal/lxterminal.conf")"
 3484        ;;
 3485
 3486        "mate-terminal")
 3487            # To get the actual config we have to create a temporarily file with the
 3488            # --save-config option.
 3489            mateterm_config="/tmp/mateterm.cfg"
 3490
 3491            # Ensure /tmp exists and we do not overwrite anything.
 3492            if [[ -d "/tmp" && ! -f "$mateterm_config" ]]; then
 3493                mate-terminal --save-config="$mateterm_config"
 3494
 3495                role="$(xprop -id "${WINDOWID}" WM_WINDOW_ROLE)"
 3496                role="${role##* }"
 3497                role="${role//\"}"
 3498
 3499                profile="$(awk -F '=' -v r="$role" \
 3500                                  '$0~r {
 3501                                            getline;
 3502                                            if(/Maximized/) getline;
 3503                                            if(/Fullscreen/) getline;
 3504                                            id=$2"]"
 3505                                         } $0~id {if(id) {getline; print $2; exit}}' \
 3506                           "$mateterm_config")"
 3507
 3508                rm -f "$mateterm_config"
 3509
 3510                mate_get() {
 3511                   gsettings get org.mate.terminal.profile:/org/mate/terminal/profiles/"$1"/ "$2"
 3512                }
 3513
 3514                if [[ "$(mate_get "$profile" "use-system-font")" == "true" ]]; then
 3515                    term_font="$(gsettings get org.mate.interface monospace-font-name)"
 3516                else
 3517                    term_font="$(mate_get "$profile" "font")"
 3518                fi
 3519                term_font="$(trim_quotes "$term_font")"
 3520            fi
 3521        ;;
 3522
 3523        "mintty")
 3524            term_font="$(awk -F '=' '!/^($|#)/ && /^\\s*Font\\s*=/ {printf $2; exit}' "${HOME}/.minttyrc")"
 3525        ;;
 3526
 3527        "pantheon"*)
 3528            term_font="$(gsettings get org.pantheon.terminal.settings font)"
 3529
 3530            [[ -z "${term_font//\'}" ]] && \
 3531                term_font="$(gsettings get org.gnome.desktop.interface monospace-font-name)"
 3532
 3533            term_font="$(trim_quotes "$term_font")"
 3534        ;;
 3535
 3536        "qterminal")
 3537            term_font="$(awk -F '=' '/fontFamily=/ {a=$2} /fontSize=/ {b=$2} END {print a,b}' \
 3538                         "${XDG_CONFIG_HOME}/qterminal.org/qterminal.ini")"
 3539        ;;
 3540
 3541        "sakura"*)
 3542            term_font="$(awk -F '=' '/^font=/ {print $2; exit}' \
 3543                         "${XDG_CONFIG_HOME}/sakura/sakura.conf")"
 3544        ;;
 3545
 3546        "st")
 3547            term_font="$(ps -o command= -p "$parent" | grep -F -- "-f")"
 3548
 3549            if [[ "$term_font" ]]; then
 3550                term_font="${term_font/*-f/}"
 3551                term_font="${term_font/ -*/}"
 3552
 3553            else
 3554                # On Linux we can get the exact path to the running binary through the procfs
 3555                # (in case `st` is launched from outside of $PATH) on other systems we just
 3556                # have to guess and assume `st` is invoked from somewhere in the users $PATH
 3557                [[ -L "/proc/$parent/exe" ]] && binary="/proc/$parent/exe" || binary="$(type -p st)"
 3558
 3559                # Grep the output of strings on the `st` binary for anything that looks vaguely
 3560                # like a font definition. NOTE: There is a slight limitation in this approach.
 3561                # Technically "Font Name" is a valid font. As it doesn't specify any font options
 3562                # though it is hard to match it correctly amongst the rest of the noise.
 3563                [[ -n "$binary" ]] &&
 3564                    term_font=$(
 3565                        strings "$binary" |
 3566
 3567                        grep -m 1 "*font[^2]"
 3568                    )
 3569            fi
 3570
 3571            term_font="${term_font/xft:}"
 3572            term_font="${term_font#*=}"
 3573            term_font="${term_font/:*}"
 3574        ;;
 3575
 3576        "terminology")
 3577            term_font="$(strings "${XDG_CONFIG_HOME}/terminology/config/standard/base.cfg" |\
 3578                         awk '/^font\.name$/{print a}{a=$0}')"
 3579            term_font="${term_font/.pcf}"
 3580            term_font="${term_font/:*}"
 3581        ;;
 3582
 3583        "termite")
 3584            [[ -f "${XDG_CONFIG_HOME}/termite/config" ]] && \
 3585                termite_config="${XDG_CONFIG_HOME}/termite/config"
 3586
 3587            term_font="$(awk -F '= ' '/\[options\]/ {
 3588                                          opt=1
 3589                                      }
 3590                                      /^\s*font/ {
 3591                                          if(opt==1) a=$2;
 3592                                          opt=0
 3593                                      } END {print a}' "/etc/xdg/termite/config" \
 3594                         "$termite_config")"
 3595        ;;
 3596
 3597        urxvt|urxvtd|rxvt-unicode|xterm)
 3598            xrdb=$(xrdb -query)
 3599            term_font=$(grep -im 1 -e "^${term/d}"'\**\.*font:' -e '^\*font:' <<< "$xrdb")
 3600            term_font=${term_font/*"*font:"}
 3601            term_font=${term_font/*".font:"}
 3602            term_font=${term_font/*"*.font:"}
 3603            term_font=$(trim "$term_font")
 3604
 3605            [[ -z $term_font && $term == xterm ]] && \
 3606                term_font=$(grep '^XTerm.vt100.faceName' <<< "$xrdb")
 3607
 3608            term_font=$(trim "${term_font/*"faceName:"}")
 3609
 3610            # xft: isn't required at the beginning so we prepend it if it's missing
 3611            [[ ${term_font:0:1} != '-' && ${term_font:0:4} != xft: ]] && \
 3612                term_font=xft:$term_font
 3613
 3614            # Xresources has two different font formats, this checks which
 3615            # one is in use and formats it accordingly.
 3616            case $term_font in
 3617                *xft:*)
 3618                    term_font=${term_font/xft:}
 3619                    term_font=${term_font/:*}
 3620                ;;
 3621
 3622                -*)
 3623                    IFS=- read -r _ _ term_font _ <<< "$term_font"
 3624                ;;
 3625            esac
 3626        ;;
 3627
 3628        "xfce4-terminal")
 3629            term_font="$(awk -F '=' '/^FontName/{a=$2}/^FontUseSystem=TRUE/{a=$0} END {print a}' \
 3630                         "${XDG_CONFIG_HOME}/xfce4/terminal/terminalrc")"
 3631
 3632            [[ "$term_font" == "FontUseSystem=TRUE" ]] && \
 3633                term_font="$(gsettings get org.gnome.desktop.interface monospace-font-name)"
 3634
 3635            term_font="$(trim_quotes "$term_font")"
 3636
 3637            # Default fallback font hardcoded in terminal-preferences.c
 3638            [[ -z "$term_font" ]] && term_font="Monospace 12"
 3639        ;;
 3640
 3641        conemu-*)
 3642            # Could have used `eval set -- "$ConEmuArgs"` instead for arg parsing.
 3643            readarray -t ce_arg_list < <(xargs -n1 printf "%s\n" <<< "${ConEmuArgs-}")
 3644
 3645            for ce_arg_idx in "${!ce_arg_list[@]}"; do
 3646                # Search for "-LoadCfgFile" arg
 3647                [[ "${ce_arg_list[$ce_arg_idx]}" == -LoadCfgFile ]] && {
 3648                    # Conf path is the next arg
 3649                    ce_conf=${ce_arg_list[++ce_arg_idx]}
 3650                    break
 3651                }
 3652            done
 3653
 3654            # https://conemu.github.io/en/ConEmuXml.html#search-sequence
 3655            for ce_conf in "$ce_conf" "${ConEmuDir-}\ConEmu.xml" "${ConEmuDir-}\.ConEmu.xml" \
 3656                           "${ConEmuBaseDir-}\ConEmu.xml" "${ConEmuBaseDir-}\.ConEmu.xml" \
 3657                           "$APPDATA\ConEmu.xml" "$APPDATA\.ConEmu.xml"; do
 3658                # Search for first conf file available
 3659                [[ -f "$ce_conf" ]] && {
 3660                    # Very basic XML parsing
 3661                    term_font="$(awk '/name="FontName"/ && match($0, /data="([^"]*)"/) {
 3662                        print substr($0, RSTART+6, RLENGTH-7)}' "$ce_conf")"
 3663                    break
 3664                }
 3665            done
 3666
 3667            # Null-terminated contents in /proc/registry files triggers a Bash warning.
 3668            [[ "$term_font" ]] || read -r term_font < \
 3669                /proc/registry/HKEY_CURRENT_USER/Software/ConEmu/.Vanilla/FontName
 3670        ;;
 3671    esac
 3672}
 3673
 3674get_disk() {
 3675    type -p df &>/dev/null ||
 3676        { err "Disk requires 'df' to function. Install 'df' to get disk info."; return; }
 3677
 3678    df_version=$(df --version 2>&1)
 3679
 3680    case $df_version in
 3681        *IMitv*)   df_flags=(-P -g) ;; # AIX
 3682        *befhikm*) df_flags=(-P -k) ;; # IRIX
 3683        *hiklnP*)  df_flags=(-h)    ;; # OpenBSD
 3684
 3685        *Tracker*) # Haiku
 3686            err "Your version of df cannot be used due to the non-standard flags"
 3687            return
 3688        ;;
 3689
 3690        *) df_flags=(-P -h) ;;
 3691    esac
 3692
 3693    # Create an array called 'disks' where each element is a separate line from
 3694    # df's output. We then unset the first element which removes the column titles.
 3695    IFS=$'\n' read -d "" -ra disks <<< "$(df "${df_flags[@]}" "${disk_show[@]:-/}")"
 3696    unset "disks[0]"
 3697
 3698    # Stop here if 'df' fails to print disk info.
 3699    [[ ${disks[*]} ]] || {
 3700        err "Disk: df failed to print the disks, make sure the disk_show array is set properly."
 3701        return
 3702    }
 3703
 3704    for disk in "${disks[@]}"; do
 3705        # Create a second array and make each element split at whitespace this time.
 3706        IFS=" " read -ra disk_info <<< "$disk"
 3707        disk_perc=${disk_info[${#disk_info[@]} - 2]/\%}
 3708
 3709        case $disk_percent in
 3710            off) disk_perc=
 3711        esac
 3712
 3713        case $df_version in
 3714            *befhikm*)
 3715                disk=$((disk_info[${#disk_info[@]} - 4] / 1024 / 1024))G
 3716                disk+=" / "
 3717                disk+=$((disk_info[${#disk_info[@]} - 5] / 1024/ 1024))G
 3718                disk+=${disk_perc:+ ($disk_perc%)}
 3719            ;;
 3720
 3721            *)
 3722                disk=${disk_info[${#disk_info[@]} - 4]/i}
 3723                disk+=" / "
 3724                disk+=${disk_info[${#disk_info[@]} - 5]/i}
 3725                disk+=${disk_perc:+ ($disk_perc%)}
 3726            ;;
 3727        esac
 3728
 3729        case $disk_subtitle in
 3730            name)
 3731                disk_sub=${disk_info[*]::${#disk_info[@]} - 5}
 3732            ;;
 3733
 3734            dir)
 3735                disk_sub=${disk_info[${#disk_info[@]} - 1]/*\/}
 3736                disk_sub=${disk_sub:-${disk_info[${#disk_info[@]} - 1]}}
 3737            ;;
 3738
 3739            none) ;;
 3740
 3741            *)
 3742                disk_sub=${disk_info[${#disk_info[@]} - 1]}
 3743            ;;
 3744        esac
 3745
 3746        case $disk_display in
 3747            bar)     disk="$(bar "$disk_perc" "100")" ;;
 3748            infobar) disk+=" $(bar "$disk_perc" "100")" ;;
 3749            barinfo) disk="$(bar "$disk_perc" "100")${info_color} $disk" ;;
 3750            perc)    disk="${disk_perc}% $(bar "$disk_perc" "100")" ;;
 3751        esac
 3752
 3753        # Append '(disk mount point)' to the subtitle.
 3754        if [[ "$subtitle" ]]; then
 3755            prin "$subtitle${disk_sub:+ ($disk_sub)}" "$disk"
 3756        else
 3757            prin "$disk_sub" "$disk"
 3758        fi
 3759    done
 3760}
 3761
 3762get_battery() {
 3763    case $os in
 3764        "Linux")
 3765            # We use 'prin' here so that we can do multi battery support
 3766            # with a single battery per line.
 3767            for bat in "/sys/class/power_supply/"{BAT,axp288_fuel_gauge,CMB}*; do
 3768                capacity="$(< "${bat}/capacity")"
 3769                status="$(< "${bat}/status")"
 3770
 3771                if [[ "$capacity" ]]; then
 3772                    battery="${capacity}% [${status}]"
 3773
 3774                    case $battery_display in
 3775                        "bar")     battery="$(bar "$capacity" 100)" ;;
 3776                        "infobar") battery+=" $(bar "$capacity" 100)" ;;
 3777                        "barinfo") battery="$(bar "$capacity" 100)${info_color} ${battery}" ;;
 3778                    esac
 3779
 3780                    bat="${bat/*axp288_fuel_gauge}"
 3781                    prin "${subtitle:+${subtitle}${bat: -1}}" "$battery"
 3782                fi
 3783            done
 3784            return
 3785        ;;
 3786
 3787        "BSD")
 3788            case $kernel_name in
 3789                "FreeBSD"* | "DragonFly"*)
 3790                    battery="$(acpiconf -i 0 | awk -F ':\t' '/Remaining capacity/ {print $2}')"
 3791                    battery_state="$(acpiconf -i 0 | awk -F ':\t\t\t' '/State/ {print $2}')"
 3792                ;;
 3793
 3794                "NetBSD"*)
 3795                    battery="$(envstat | awk '\\(|\\)' '/charge:/ {print $2}')"
 3796                    battery="${battery/\.*/%}"
 3797                ;;
 3798
 3799                "OpenBSD"* | "Bitrig"*)
 3800                    battery0full="$(sysctl -n   hw.sensors.acpibat0.watthour0\
 3801                                                hw.sensors.acpibat0.amphour0)"
 3802                    battery0full="${battery0full%% *}"
 3803
 3804                    battery0now="$(sysctl -n    hw.sensors.acpibat0.watthour3\
 3805                                                hw.sensors.acpibat0.amphour3)"
 3806                    battery0now="${battery0now%% *}"
 3807
 3808                    state="$(sysctl -n hw.sensors.acpibat0.raw0)"
 3809                    state="${state##? (battery }"
 3810                    state="${state%)*}"
 3811
 3812                    [[ "${state}" == "charging" ]] && battery_state="charging"
 3813                    [[ "$battery0full" ]] && \
 3814                    battery="$((100 * ${battery0now/\.} / ${battery0full/\.}))%"
 3815                ;;
 3816            esac
 3817        ;;
 3818
 3819        "Mac OS X"|"macOS")
 3820            battery="$(pmset -g batt | grep -o '[0-9]*%')"
 3821            state="$(pmset -g batt | awk '/;/ {print $4}')"
 3822            [[ "$state" == "charging;" ]] && battery_state="charging"
 3823        ;;
 3824
 3825        "Windows")
 3826            battery="$(wmic Path Win32_Battery get EstimatedChargeRemaining)"
 3827            battery="${battery/EstimatedChargeRemaining}"
 3828            battery="$(trim "$battery")%"
 3829            state="$(wmic /NameSpace:'\\root\WMI' Path BatteryStatus get Charging)"
 3830            state="${state/Charging}"
 3831            [[ "$state" == *TRUE* ]] && battery_state="charging"
 3832        ;;
 3833
 3834        "Haiku")
 3835            battery0full="$(awk -F '[^0-9]*' 'NR==2 {print $4}' /dev/power/acpi_battery/0)"
 3836            battery0now="$(awk -F '[^0-9]*' 'NR==5 {print $4}' /dev/power/acpi_battery/0)"
 3837            battery="$((battery0full * 100 / battery0now))%"
 3838        ;;
 3839    esac
 3840
 3841    [[ "$battery_state" ]] && battery+=" Charging"
 3842
 3843    case $battery_display in
 3844        "bar")     battery="$(bar "${battery/\%*}" 100)" ;;
 3845        "infobar") battery="${battery} $(bar "${battery/\%*}" 100)" ;;
 3846        "barinfo") battery="$(bar "${battery/\%*}" 100)${info_color} ${battery}" ;;
 3847    esac
 3848}
 3849
 3850get_local_ip() {
 3851    case $os in
 3852        "Linux" | "BSD" | "Solaris" | "AIX" | "IRIX")
 3853            if [[ "${local_ip_interface[0]}" == "auto" ]]; then
 3854                local_ip="$(ip route get 1 | awk -F'src' '{print $2; exit}')"
 3855                local_ip="${local_ip/uid*}"
 3856                [[ "$local_ip" ]] || local_ip="$(ifconfig -a | awk '/broadcast/ {print $2; exit}')"
 3857            else
 3858                for interface in "${local_ip_interface[@]}"; do
 3859                    local_ip="$(ip addr show "$interface" 2> /dev/null |
 3860                        awk '/inet / {print $2; exit}')"
 3861                    local_ip="${local_ip/\/*}"
 3862                    [[ "$local_ip" ]] ||
 3863                        local_ip="$(ifconfig "$interface" 2> /dev/null |
 3864                        awk '/broadcast/ {print $2; exit}')"
 3865                    if [[ -n "$local_ip" ]]; then
 3866                        prin "$interface" "$local_ip"
 3867                    else
 3868                        err "Local IP: Could not detect local ip for $interface"
 3869                    fi
 3870                done
 3871            fi
 3872        ;;
 3873
 3874        "MINIX")
 3875            local_ip="$(ifconfig | awk '{printf $3; exit}')"
 3876        ;;
 3877
 3878        "Mac OS X" | "macOS" | "iPhone OS")
 3879            if [[ "${local_ip_interface[0]}" == "auto" ]]; then
 3880                interface="$(route get 1 | awk -F': ' '/interface/ {printf $2; exit}')"
 3881                local_ip="$(ipconfig getifaddr "$interface")"
 3882            else
 3883                for interface in "${local_ip_interface[@]}"; do
 3884                    local_ip="$(ipconfig getifaddr "$interface")"
 3885                    if [[ -n "$local_ip" ]]; then
 3886                        prin "$interface" "$local_ip"
 3887                    else
 3888                        err "Local IP: Could not detect local ip for $interface"
 3889                    fi
 3890                done
 3891            fi
 3892        ;;
 3893
 3894        "Windows")
 3895            local_ip="$(ipconfig | awk -F ': ' '/IPv4 Address/ {printf $2 ", "}')"
 3896            local_ip="${local_ip%\,*}"
 3897        ;;
 3898
 3899        "Haiku")
 3900            local_ip="$(ifconfig | awk -F ': ' '/Bcast/ {print $2}')"
 3901            local_ip="${local_ip/, Bcast}"
 3902        ;;
 3903    esac
 3904}
 3905
 3906get_public_ip() {
 3907    if [[ ! -n "$public_ip_host" ]] && type -p dig >/dev/null; then
 3908        public_ip="$(dig +time=1 +tries=1 +short myip.opendns.com @resolver1.opendns.com)"
 3909       [[ "$public_ip" =~ ^\; ]] && unset public_ip
 3910    fi
 3911
 3912    if [[ ! -n "$public_ip_host" ]] && [[ -z "$public_ip" ]] && type -p drill >/dev/null; then
 3913        public_ip="$(drill myip.opendns.com @resolver1.opendns.com | \
 3914                     awk '/^myip\./ && $3 == "IN" {print $5}')"
 3915    fi
 3916
 3917    if [[ -z "$public_ip" ]] && type -p curl >/dev/null; then
 3918        public_ip="$(curl -L --max-time "$public_ip_timeout" -w '\n' "$public_ip_host")"
 3919    fi
 3920
 3921    if [[ -z "$public_ip" ]] && type -p wget >/dev/null; then
 3922        public_ip="$(wget -T "$public_ip_timeout" -qO- "$public_ip_host")"
 3923    fi
 3924}
 3925
 3926get_users() {
 3927    users="$(who | awk '!seen[$1]++ {printf $1 ", "}')"
 3928    users="${users%\,*}"
 3929}
 3930
 3931get_locale() {
 3932    locale="$sys_locale"
 3933}
 3934
 3935get_gpu_driver() {
 3936    case $os in
 3937        "Linux")
 3938            gpu_driver="$(lspci -nnk | awk -F ': ' \
 3939                          '/Display|3D|VGA/{nr[NR+2]}; NR in nr {printf $2 ", "; exit}')"
 3940            gpu_driver="${gpu_driver%, }"
 3941
 3942            if [[ "$gpu_driver" == *"nvidia"* ]]; then
 3943                gpu_driver="$(< /proc/driver/nvidia/version)"
 3944                gpu_driver="${gpu_driver/*Module  }"
 3945                gpu_driver="NVIDIA ${gpu_driver/  *}"
 3946            fi
 3947        ;;
 3948
 3949        "Mac OS X"|"macOS")
 3950            if [[ "$(kextstat | grep "GeForceWeb")" != "" ]]; then
 3951                gpu_driver="NVIDIA Web Driver"
 3952            else
 3953                gpu_driver="macOS Default Graphics Driver"
 3954            fi
 3955        ;;
 3956    esac
 3957}
 3958
 3959get_cols() {
 3960    local blocks blocks2 cols
 3961
 3962    if [[ "$color_blocks" == "on" ]]; then
 3963        # Convert the width to space chars.
 3964        printf -v block_width "%${block_width}s"
 3965
 3966        # Generate the string.
 3967        for ((block_range[0]; block_range[0]<=block_range[1]; block_range[0]++)); do
 3968            case ${block_range[0]} in
 3969                [0-7])
 3970                    printf -v blocks  '%b\e[3%bm\e[4%bm%b' \
 3971                        "$blocks" "${block_range[0]}" "${block_range[0]}" "$block_width"
 3972                ;;
 3973
 3974                *)
 3975                    printf -v blocks2 '%b\e[38;5;%bm\e[48;5;%bm%b' \
 3976                        "$blocks2" "${block_range[0]}" "${block_range[0]}" "$block_width"
 3977                ;;
 3978            esac
 3979        done
 3980
 3981        # Convert height into spaces.
 3982        printf -v block_spaces "%${block_height}s"
 3983
 3984        # Convert the spaces into rows of blocks.
 3985        [[ "$blocks"  ]] && cols+="${block_spaces// /${blocks}nl}"
 3986        [[ "$blocks2" ]] && cols+="${block_spaces// /${blocks2}nl}"
 3987
 3988        # Add newlines to the string.
 3989        cols=${cols%%nl}
 3990        cols=${cols//nl/
 3991[${text_padding}C${zws}}
 3992
 3993        # Add block height to info height.
 3994        ((info_height+=block_range[1]>7?block_height+2:block_height+1))
 3995
 3996        case $col_offset in
 3997            "auto") printf '\n\e[%bC%b\n' "$text_padding" "${zws}${cols}" ;;
 3998            *) printf '\n\e[%bC%b\n' "$col_offset" "${zws}${cols}" ;;
 3999        esac
 4000    fi
 4001
 4002    unset -v blocks blocks2 cols
 4003
 4004    # Tell info() that we printed manually.
 4005    prin=1
 4006}
 4007
 4008# IMAGES
 4009
 4010image_backend() {
 4011    [[ "$image_backend" != "off" ]] && ! type -p convert &>/dev/null && \
 4012        { image_backend="ascii"; err "Image: Imagemagick not found, falling back to ascii mode."; }
 4013
 4014    case ${image_backend:-off} in
 4015        "ascii") print_ascii ;;
 4016        "off") image_backend="off" ;;
 4017
 4018        "caca" | "catimg" | "chafa" | "jp2a" | "iterm2" | "termpix" |\
 4019        "tycat" | "w3m" | "sixel" | "pixterm" | "kitty" | "pot", | "ueberzug" |\
 4020         "viu")
 4021            get_image_source
 4022
 4023            [[ ! -f "$image" ]] && {
 4024                to_ascii "Image: '$image_source' doesn't exist, falling back to ascii mode."
 4025                return
 4026            }
 4027            [[ "$image_backend" == "ueberzug" ]] && wait=true;
 4028
 4029            get_window_size
 4030
 4031            ((term_width < 1)) && {
 4032                to_ascii "Image: Failed to find terminal window size."
 4033                err "Image: Check the 'Images in the terminal' wiki page for more info,"
 4034                return
 4035            }
 4036
 4037            printf '\e[2J\e[H'
 4038            get_image_size
 4039            make_thumbnail
 4040            display_image || to_off "Image: $image_backend failed to display the image."
 4041        ;;
 4042
 4043        *)
 4044            err "Image: Unknown image backend specified '$image_backend'."
 4045            err "Image: Valid backends are: 'ascii', 'caca', 'catimg', 'chafa', 'jp2a', 'iterm2',
 4046                                            'kitty', 'off', 'sixel', 'pot', 'pixterm', 'termpix',
 4047                                            'tycat', 'w3m', 'viu')"
 4048            err "Image: Falling back to ascii mode."
 4049            print_ascii
 4050        ;;
 4051    esac
 4052
 4053    # Set cursor position next image/ascii.
 4054    [[ "$image_backend" != "off" ]] && printf '\e[%sA\e[9999999D' "${lines:-0}"
 4055}
 4056
 4057print_ascii() {
 4058    if [[ -f "$image_source" && ! "$image_source" =~ (png|jpg|jpeg|jpe|svg|gif) ]]; then
 4059        ascii_data="$(< "$image_source")"
 4060    elif [[ "$image_source" == "ascii" || $image_source == auto ]]; then
 4061        :
 4062    else
 4063        ascii_data="$image_source"
 4064    fi
 4065
 4066    # Set locale to get correct padding.
 4067    LC_ALL="$sys_locale"
 4068
 4069    # Calculate size of ascii file in line length / line count.
 4070    while IFS=$'\n' read -r line; do
 4071        line=${line//\\\\/\\}
 4072        line=${line//█/ }
 4073        ((++lines,${#line}>ascii_len)) && ascii_len="${#line}"
 4074    done <<< "${ascii_data//\$\{??\}}"
 4075
 4076    # Fallback if file not found.
 4077    ((lines==1)) && {
 4078        lines=
 4079        ascii_len=
 4080        image_source=auto
 4081        get_distro_ascii
 4082        print_ascii
 4083        return
 4084    }
 4085
 4086    # Colors.
 4087    ascii_data="${ascii_data//\$\{c1\}/$c1}"
 4088    ascii_data="${ascii_data//\$\{c2\}/$c2}"
 4089    ascii_data="${ascii_data//\$\{c3\}/$c3}"
 4090    ascii_data="${ascii_data//\$\{c4\}/$c4}"
 4091    ascii_data="${ascii_data//\$\{c5\}/$c5}"
 4092    ascii_data="${ascii_data//\$\{c6\}/$c6}"
 4093
 4094    ((text_padding=ascii_len+gap))
 4095    printf '%b\n' "$ascii_data${reset}"
 4096    LC_ALL=C
 4097}
 4098
 4099get_image_source() {
 4100    case $image_source in
 4101        "auto" | "wall" | "wallpaper")
 4102            get_wallpaper
 4103        ;;
 4104
 4105        *)
 4106            # Get the absolute path.
 4107            image_source="$(get_full_path "$image_source")"
 4108
 4109            if [[ -d "$image_source" ]]; then
 4110                shopt -s nullglob
 4111                files=("${image_source%/}"/*.{png,jpg,jpeg,jpe,gif,svg})
 4112                shopt -u nullglob
 4113                image="${files[RANDOM % ${#files[@]}]}"
 4114
 4115            else
 4116                image="$image_source"
 4117            fi
 4118        ;;
 4119    esac
 4120
 4121    err "Image: Using image '$image'"
 4122}
 4123
 4124get_wallpaper() {
 4125    case $os in
 4126        "Mac OS X"|"macOS")
 4127            image="$(osascript <<END
 4128                     tell application "System Events" to picture of current desktop
 4129END
 4130)"
 4131        ;;
 4132
 4133        "Windows")
 4134            case $distro in
 4135                "Windows XP")
 4136                    image="/c/Documents and Settings/${USER}"
 4137                    image+="/Local Settings/Application Data/Microsoft/Wallpaper1.bmp"
 4138
 4139                    [[ "$kernel_name" == *CYGWIN* ]] && image="/cygdrive${image}"
 4140                ;;
 4141
 4142                "Windows"*)
 4143                    image="${APPDATA}/Microsoft/Windows/Themes/TranscodedWallpaper.jpg"
 4144                ;;
 4145            esac
 4146        ;;
 4147
 4148        *)
 4149            # Get DE if user has disabled the function.
 4150            ((de_run != 1)) && get_de
 4151
 4152            type -p wal >/dev/null && [[ -f "${HOME}/.cache/wal/wal" ]] && \
 4153                { image="$(< "${HOME}/.cache/wal/wal")"; return; }
 4154
 4155            case $de in
 4156                "MATE"*)
 4157                    image="$(gsettings get org.mate.background picture-filename)"
 4158                ;;
 4159
 4160                "Xfce"*)
 4161                    image="$(xfconf-query -c xfce4-desktop -p \
 4162                             "/backdrop/screen0/monitor0/workspace0/last-image")"
 4163                ;;
 4164
 4165                "Cinnamon"*)
 4166                    image="$(gsettings get org.cinnamon.desktop.background picture-uri)"
 4167                    image="$(decode_url "$image")"
 4168                ;;
 4169
 4170                "GNOME"*)
 4171                    image="$(gsettings get org.gnome.desktop.background picture-uri)"
 4172                    image="$(decode_url "$image")"
 4173                ;;
 4174
 4175                "Plasma"*)
 4176                    image=$XDG_CONFIG_HOME/plasma-org.kde.plasma.desktop-appletsrc
 4177                    image=$(awk -F '=' '$1 == "Image" { print $2 }' "$image")
 4178                ;;
 4179
 4180                "LXQt"*)
 4181                    image="$XDG_CONFIG_HOME/pcmanfm-qt/lxqt/settings.conf"
 4182                    image="$(awk -F '=' '$1 == "Wallpaper" {print $2}' "$image")"
 4183                ;;
 4184
 4185                *)
 4186                    if type -p feh >/dev/null && [[ -f "${HOME}/.fehbg" ]]; then
 4187                        image="$(awk -F\' '/feh/ {printf $(NF-1)}' "${HOME}/.fehbg")"
 4188
 4189                    elif type -p setroot >/dev/null && \
 4190                         [[ -f "${XDG_CONFIG_HOME}/setroot/.setroot-restore" ]]; then
 4191                        image="$(awk -F\' '/setroot/ {printf $(NF-1)}' \
 4192                                 "${XDG_CONFIG_HOME}/setroot/.setroot-restore")"
 4193
 4194                    elif type -p nitrogen >/dev/null; then
 4195                        image="$(awk -F'=' '/file/ {printf $2;exit;}' \
 4196                                 "${XDG_CONFIG_HOME}/nitrogen/bg-saved.cfg")"
 4197
 4198                    else
 4199                        image="$(gsettings get org.gnome.desktop.background picture-uri)"
 4200                        image="$(decode_url "$image")"
 4201                    fi
 4202                ;;
 4203            esac
 4204
 4205            # Strip un-needed info from the path.
 4206            image="${image/file:\/\/}"
 4207            image="$(trim_quotes "$image")"
 4208        ;;
 4209    esac
 4210
 4211    # If image is an xml file, don't use it.
 4212    [[ "${image/*\./}" == "xml" ]] && image=""
 4213}
 4214
 4215get_w3m_img_path() {
 4216    # Find w3m-img path.
 4217    shopt -s nullglob
 4218    w3m_paths=({/usr/{local/,},~/.nix-profile/}{lib,libexec,lib64,libexec64}/w3m/w3mi*)
 4219    shopt -u nullglob
 4220
 4221    [[ -x "${w3m_paths[0]}" ]] && \
 4222        { w3m_img_path="${w3m_paths[0]}"; return; }
 4223
 4224    err "Image: w3m-img wasn't found on your system"
 4225}
 4226
 4227get_window_size() {
 4228    # This functions gets the current window size in
 4229    # pixels.
 4230    #
 4231    # We first try to use the escape sequence "\033[14t"
 4232    # to get the terminal window size in pixels. If this
 4233    # fails we then fallback to using "xdotool" or other
 4234    # programs.
 4235
 4236    # Tmux has a special way of reading escape sequences
 4237    # so we have to use a slightly different sequence to
 4238    # get the terminal size.
 4239    if [[ "$image_backend" == "tycat" ]]; then
 4240        printf '%b' '\e}qs\000'
 4241
 4242    elif [[ -z $VTE_VERSION ]]; then
 4243        case ${TMUX:-null} in
 4244            "null") printf '%b' '\e[14t' ;;
 4245            *)      printf '%b' '\ePtmux;\e\e[14t\e\\ ' ;;
 4246        esac
 4247    fi
 4248
 4249    # The escape codes above print the desired output as
 4250    # user input so we have to use read to store the out
 4251    # -put as a variable.
 4252    # The 1 second timeout is required for older bash
 4253    #
 4254    # False positive.
 4255    # shellcheck disable=2141
 4256    case $bash_version in
 4257        4|5) IFS=';t' read -d t -t 0.05 -sra term_size ;;
 4258        *)   IFS=';t' read -d t -t 1 -sra term_size ;;
 4259    esac
 4260    unset IFS
 4261
 4262    # Split the string into height/width.
 4263    if [[ "$image_backend" == "tycat" ]]; then
 4264        term_width="$((term_size[2] * term_size[0]))"
 4265        term_height="$((term_size[3] * term_size[1]))"
 4266
 4267    else
 4268        term_height="${term_size[1]}"
 4269        term_width="${term_size[2]}"
 4270    fi
 4271
 4272    # Get terminal width/height.
 4273    if (( "${term_width:-0}" < 50 )) && [[ "$DISPLAY" && $os != "Mac OS X" && $os != "macOS" ]]; then
 4274        if type -p xdotool &>/dev/null; then
 4275            IFS=$'\n' read -d "" -ra win \
 4276                <<< "$(xdotool getactivewindow getwindowgeometry --shell %1)"
 4277            term_width="${win[3]/WIDTH=}"
 4278            term_height="${win[4]/HEIGHT=}"
 4279
 4280        elif type -p xwininfo &>/dev/null; then
 4281            # Get the focused window's ID.
 4282            if type -p xdo &>/dev/null; then
 4283                current_window="$(xdo id)"
 4284
 4285            elif type -p xprop &>/dev/null; then
 4286                current_window="$(xprop -root _NET_ACTIVE_WINDOW)"
 4287                current_window="${current_window##* }"
 4288
 4289            elif type -p xdpyinfo &>/dev/null; then
 4290                current_window="$(xdpyinfo | grep -F "focus:")"
 4291                current_window="${current_window/*window }"
 4292                current_window="${current_window/,*}"
 4293            fi
 4294
 4295            # If the ID was found get the window size.
 4296            if [[ "$current_window" ]]; then
 4297                term_size=("$(xwininfo -id "$current_window")")
 4298                term_width="${term_size[0]#*Width: }"
 4299                term_width="${term_width/$'\n'*}"
 4300                term_height="${term_size[0]/*Height: }"
 4301                term_height="${term_height/$'\n'*}"
 4302            fi
 4303        fi
 4304    fi
 4305
 4306    term_width="${term_width:-0}"
 4307}
 4308
 4309
 4310get_term_size() {
 4311    # Get the terminal size in cells.
 4312    read -r lines columns <<< "$(stty size)"
 4313
 4314    # Calculate font size.
 4315    font_width="$((term_width / columns))"
 4316    font_height="$((term_height / lines))"
 4317}
 4318
 4319get_image_size() {
 4320    # This functions determines the size to make the thumbnail image.
 4321    get_term_size
 4322
 4323    case $image_size in
 4324        "auto")
 4325            image_size="$((columns * font_width / 2))"
 4326            term_height="$((term_height - term_height / 4))"
 4327
 4328            ((term_height < image_size)) && \
 4329                image_size="$term_height"
 4330        ;;
 4331
 4332        *"%")
 4333            percent="${image_size/\%}"
 4334            image_size="$((percent * term_width / 100))"
 4335
 4336            (((percent * term_height / 50) < image_size)) && \
 4337                image_size="$((percent * term_height / 100))"
 4338        ;;
 4339
 4340        "none")
 4341            # Get image size so that we can do a better crop.
 4342            read -r width height <<< "$(identify -format "%w %h" "$image")"
 4343
 4344            while ((width >= (term_width / 2) || height >= term_height)); do
 4345                ((width=width/2,height=height/2))
 4346            done
 4347
 4348            crop_mode="none"
 4349        ;;
 4350
 4351        *)  image_size="${image_size/px}" ;;
 4352    esac
 4353
 4354    # Check for terminal padding.
 4355    [[ "$image_backend" == "w3m" ]] && term_padding
 4356
 4357    width="${width:-$image_size}"
 4358    height="${height:-$image_size}"
 4359    text_padding="$(((width + padding + xoffset) / font_width + gap))"
 4360}
 4361
 4362make_thumbnail() {
 4363    # Name the thumbnail using variables so we can
 4364    # use it later.
 4365    image_name="${crop_mode}-${crop_offset}-${width}-${height}-${image//\/}"
 4366
 4367    # Handle file extensions.
 4368    case ${image##*.} in
 4369        "eps"|"pdf"|"svg"|"gif"|"png")
 4370            image_name+=".png" ;;
 4371        *)  image_name+=".jpg" ;;
 4372    esac
 4373
 4374    # Create the thumbnail dir if it doesn't exist.
 4375    mkdir -p "${thumbnail_dir:=${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch}"
 4376
 4377    if [[ ! -f "${thumbnail_dir}/${image_name}" ]]; then
 4378        # Get image size so that we can do a better crop.
 4379        [[ -z "$size" ]] && {
 4380            read -r og_width og_height <<< "$(identify -format "%w %h" "$image")"
 4381            ((og_height > og_width)) && size="$og_width" || size="$og_height"
 4382        }
 4383
 4384        case $crop_mode in
 4385            "fit")
 4386                c="$(convert "$image" \
 4387                    -colorspace srgb \
 4388                    -format "%[pixel:p{0,0}]" info:)"
 4389
 4390                convert \
 4391                    -background none \
 4392                    "$image" \
 4393                    -trim +repage \
 4394                    -gravity south \
 4395                    -background "$c" \
 4396                    -extent "${size}x${size}" \
 4397                    -scale "${width}x${height}" \
 4398                    "${thumbnail_dir}/${image_name}"
 4399            ;;
 4400
 4401            "fill")
 4402                convert \
 4403                    -background none \
 4404                    "$image" \
 4405                    -trim +repage \
 4406                    -scale "${width}x${height}^" \
 4407                    -extent "${width}x${height}" \
 4408                    "${thumbnail_dir}/${image_name}"
 4409            ;;
 4410
 4411            "none")
 4412                cp "$image" "${thumbnail_dir}/${image_name}"
 4413            ;;
 4414
 4415            *)
 4416                convert \
 4417                    -background none \
 4418                    "$image" \
 4419                    -strip \
 4420                    -gravity "$crop_offset" \
 4421                    -crop "${size}x${size}+0+0" \
 4422                    -scale "${width}x${height}" \
 4423                    "${thumbnail_dir}/${image_name}"
 4424            ;;
 4425        esac
 4426    fi
 4427
 4428    # The final image.
 4429    image="${thumbnail_dir}/${image_name}"
 4430}
 4431
 4432display_image() {
 4433    case $image_backend in
 4434        "caca")
 4435            img2txt \
 4436                -W "$((width / font_width))" \
 4437                -H "$((height / font_height))" \
 4438                --gamma=0.6 \
 4439            "$image"
 4440        ;;
 4441
 4442
 4443        "ueberzug")
 4444            if [ "$wait" = true ];then
 4445                wait=false;
 4446            else
 4447                ueberzug layer --parser bash 0< <(
 4448                    declare -Ap ADD=(\
 4449                        [action]="add"\
 4450                        [identifier]="neofetch"\
 4451                        [x]=$xoffset [y]=$yoffset\
 4452                        [path]=$image\
 4453                    )
 4454                    read -rs
 4455                )
 4456            fi
 4457        ;;
 4458
 4459        "catimg")
 4460            catimg -w "$((width*catimg_size / font_width))" -r "$catimg_size" "$image"
 4461        ;;
 4462
 4463        "chafa")
 4464            chafa --stretch --size="$((width / font_width))x$((height / font_height))" "$image"
 4465        ;;
 4466
 4467        "jp2a")
 4468            jp2a \
 4469                --colors \
 4470                --width="$((width / font_width))" \
 4471                --height="$((height / font_height))" \
 4472            "$image"
 4473        ;;
 4474
 4475        "kitty")
 4476            kitty +kitten icat \
 4477                --align left \
 4478                --place "$((width/font_width))x$((height/font_height))@${xoffset}x${yoffset}" \
 4479            "$image"
 4480        ;;
 4481
 4482        "pot")
 4483            pot \
 4484                "$image" \
 4485                --size="$((width / font_width))x$((height / font_height))"
 4486        ;;
 4487
 4488        "pixterm")
 4489            pixterm \
 4490                -tc "$((width / font_width))" \
 4491                -tr "$((height / font_height))" \
 4492            "$image"
 4493        ;;
 4494
 4495        "sixel")
 4496            img2sixel \
 4497                -w "$width" \
 4498                -h "$height" \
 4499            "$image"
 4500        ;;
 4501
 4502        "termpix")
 4503            termpix \
 4504                --width "$((width / font_width))" \
 4505                --height "$((height / font_height))" \
 4506            "$image"
 4507        ;;
 4508
 4509        "iterm2")
 4510            printf -v iterm_cmd '\e]1337;File=width=%spx;height=%spx;inline=1:%s' \
 4511                "$width" "$height" "$(base64 < "$image")"
 4512
 4513            # Tmux requires an additional escape sequence for this to work.
 4514            [[ -n "$TMUX" ]] && printf -v iterm_cmd '\ePtmux;\e%b\e'\\ "$iterm_cmd"
 4515
 4516            printf '%b\a\n' "$iterm_cmd"
 4517        ;;
 4518
 4519        "tycat")
 4520            tycat \
 4521                -g "${width}x${height}" \
 4522            "$image"
 4523        ;;
 4524
 4525        "viu")
 4526            viu \
 4527                -t -w "$((width / font_width))" -h "$((height / font_height))" \
 4528            "$image"
 4529        ;;
 4530
 4531        "w3m")
 4532            get_w3m_img_path
 4533            zws='\xE2\x80\x8B\x20'
 4534
 4535            # Add a tiny delay to fix issues with images not
 4536            # appearing in specific terminal emulators.
 4537            ((bash_version>3)) && sleep 0.05
 4538            printf '%b\n%s;\n%s\n' "0;1;$xoffset;$yoffset;$width;$height;;;;;$image" 3 4 |\
 4539            "${w3m_img_path:-false}" -bg "$background_color" &>/dev/null
 4540        ;;
 4541    esac
 4542}
 4543
 4544to_ascii() {
 4545    err "$1"
 4546    image_backend="ascii"
 4547    print_ascii
 4548
 4549    # Set cursor position next image/ascii.
 4550    printf '\e[%sA\e[9999999D' "${lines:-0}"
 4551}
 4552
 4553to_off() {
 4554    err "$1"
 4555    image_backend="off"
 4556    text_padding=
 4557}
 4558
 4559
 4560# TEXT FORMATTING
 4561
 4562info() {
 4563    # Save subtitle value.
 4564    [[ "$2" ]] && subtitle="$1"
 4565
 4566    # Make sure that $prin is unset.
 4567    unset -v prin
 4568
 4569    # Call the function.
 4570    "get_${2:-$1}"
 4571
 4572    # If the get_func function called 'prin' directly, stop here.
 4573    [[ "$prin" ]] && return
 4574
 4575    # Update the variable.
 4576    if [[ "$2" ]]; then
 4577        output="$(trim "${!2}")"
 4578    else
 4579        output="$(trim "${!1}")"
 4580    fi
 4581
 4582    if [[ "$2" && "${output// }" ]]; then
 4583        prin "$1" "$output"
 4584
 4585    elif [[ "${output// }" ]]; then
 4586        prin "$output"
 4587
 4588    else
 4589        err "Info: Couldn't detect ${1}."
 4590    fi
 4591
 4592    unset -v subtitle
 4593}
 4594
 4595prin() {
 4596    # If $2 doesn't exist we format $1 as info.
 4597    if [[ "$(trim "$1")" && "$2" ]]; then
 4598        [[ "$json" ]] && { printf '    %s\n' "\"${1}\": \"${2}\","; return; }
 4599
 4600        string="${1}${2:+: $2}"
 4601    else
 4602        string="${2:-$1}"
 4603        local subtitle_color="$info_color"
 4604    fi
 4605
 4606    string="$(trim "${string//$'\e[0m'}")"
 4607    length="$(strip_sequences "$string")"
 4608    length="${#length}"
 4609
 4610    # Format the output.
 4611    string="${string/:/${reset}${colon_color}${separator:=:}${info_color}}"
 4612    string="${subtitle_color}${bold}${string}"
 4613
 4614    # Print the info.
 4615    printf '%b\n' "${text_padding:+\e[${text_padding}C}${zws}${string//\\n}${reset} "
 4616
 4617    # Calculate info height.
 4618    ((++info_height))
 4619
 4620    # Log that prin was used.
 4621    prin=1
 4622}
 4623
 4624get_underline() {
 4625    [[ "$underline_enabled" == "on" ]] && {
 4626        printf -v underline "%${length}s"
 4627        printf '%b%b\n' "${text_padding:+\e[${text_padding}C}${zws}${underline_color}" \
 4628                        "${underline// /$underline_char}${reset} "
 4629    }
 4630
 4631    ((++info_height))
 4632    length=
 4633    prin=1
 4634}
 4635
 4636get_bold() {
 4637    case $ascii_bold in
 4638        "on")  ascii_bold='\e[1m' ;;
 4639        "off") ascii_bold="" ;;
 4640    esac
 4641
 4642    case $bold in
 4643        "on")  bold='\e[1m' ;;
 4644        "off") bold="" ;;
 4645    esac
 4646}
 4647
 4648trim() {
 4649    set -f
 4650    # shellcheck disable=2048,2086
 4651    set -- $*
 4652    printf '%s\n' "${*//[[:space:]]/}"
 4653    set +f
 4654}
 4655
 4656trim_quotes() {
 4657    trim_output="${1//\'}"
 4658    trim_output="${trim_output//\"}"
 4659    printf "%s" "$trim_output"
 4660}
 4661
 4662strip_sequences() {
 4663    strip="${1//$'\e['3[0-9]m}"
 4664    strip="${strip//$'\e['[0-9]m}"
 4665    strip="${strip//\\e\[[0-9]m}"
 4666    strip="${strip//$'\e['38\;5\;[0-9]m}"
 4667    strip="${strip//$'\e['38\;5\;[0-9][0-9]m}"
 4668    strip="${strip//$'\e['38\;5\;[0-9][0-9][0-9]m}"
 4669
 4670    printf '%s\n' "$strip"
 4671}
 4672
 4673# COLORS
 4674
 4675set_colors() {
 4676    c1="$(color "$1")${ascii_bold}"
 4677    c2="$(color "$2")${ascii_bold}"
 4678    c3="$(color "$3")${ascii_bold}"
 4679    c4="$(color "$4")${ascii_bold}"
 4680    c5="$(color "$5")${ascii_bold}"
 4681    c6="$(color "$6")${ascii_bold}"
 4682
 4683    [[ "$color_text" != "off" ]] && set_text_colors "$@"
 4684}
 4685
 4686set_text_colors() {
 4687    if [[ "${colors[0]}" == "distro" ]]; then
 4688        title_color="$(color "$1")"
 4689        at_color="$reset"
 4690        underline_color="$reset"
 4691        subtitle_color="$(color "$2")"
 4692        colon_color="$reset"
 4693        info_color="$reset"
 4694
 4695        # If the ascii art uses 8 as a color, make the text the fg.
 4696        ((${1:-1} == 8)) && title_color="$reset"
 4697        ((${2:-7} == 8)) && subtitle_color="$reset"
 4698
 4699        # If the second color is white use the first for the subtitle.
 4700        ((${2:-7} == 7)) && subtitle_color="$(color "$1")"
 4701        ((${1:-1} == 7)) && title_color="$reset"
 4702    else
 4703        title_color="$(color "${colors[0]}")"
 4704        at_color="$(color "${colors[1]}")"
 4705        underline_color="$(color "${colors[2]}")"
 4706        subtitle_color="$(color "${colors[3]}")"
 4707        colon_color="$(color "${colors[4]}")"
 4708        info_color="$(color "${colors[5]}")"
 4709    fi
 4710
 4711    # Bar colors.
 4712    if [[ "$bar_color_elapsed" == "distro" ]]; then
 4713        bar_color_elapsed="$(color fg)"
 4714    else
 4715        bar_color_elapsed="$(color "$bar_color_elapsed")"
 4716    fi
 4717
 4718    case ${bar_color_total}${1} in
 4719        distro[736]) bar_color_total=$(color "$1") ;;
 4720        distro[0-9]) bar_color_total=$(color "$2") ;;
 4721        *)           bar_color_total=$(color "$bar_color_total") ;;
 4722    esac
 4723}
 4724
 4725color() {
 4726    case $1 in
 4727        [0-6])    printf '%b\e[3%sm'   "$reset" "$1" ;;
 4728        7 | "fg") printf '\e[37m%b'    "$reset" ;;
 4729        *)        printf '\e[38;5;%bm' "$1" ;;
 4730    esac
 4731}
 4732
 4733# OTHER
 4734
 4735stdout() {
 4736    image_backend="off"
 4737    unset subtitle_color colon_color info_color underline_color bold title_color at_color \
 4738          text_padding zws reset color_blocks bar_color_elapsed bar_color_total \
 4739          c1 c2 c3 c4 c5 c6 c7 c8
 4740}
 4741
 4742err() {
 4743    err+="$(color 1)[!]${reset} $1
 4744"
 4745}
 4746
 4747get_full_path() {
 4748    # This function finds the absolute path from a relative one.
 4749    # For example "Pictures/Wallpapers" --> "/home/dylan/Pictures/Wallpapers"
 4750
 4751    # If the file exists in the current directory, stop here.
 4752    [[ -f "${PWD}/${1}" ]] && { printf '%s\n' "${PWD}/${1}"; return; }
 4753
 4754    ! cd "${1%/*}" && {
 4755        err "Error: Directory '${1%/*}' doesn't exist or is inaccessible"
 4756        err "       Check that the directory exists or try another directory."
 4757        exit 1
 4758    }
 4759
 4760    local full_dir="${1##*/}"
 4761
 4762    # Iterate down a (possible) chain of symlinks.
 4763    while [[ -L "$full_dir" ]]; do
 4764        full_dir="$(readlink "$full_dir")"
 4765        cd "${full_dir%/*}" || exit
 4766        full_dir="${full_dir##*/}"
 4767    done
 4768
 4769    # Final directory.
 4770    full_dir="$(pwd -P)/${1/*\/}"
 4771
 4772    [[ -e "$full_dir" ]] && printf '%s\n' "$full_dir"
 4773}
 4774
 4775get_user_config() {
 4776    # --config /path/to/config.conf
 4777    if [[ -f "$config_file" ]]; then
 4778        source "$config_file"
 4779        err "Config: Sourced user config. (${config_file})"
 4780        return
 4781
 4782    elif [[ -f "${XDG_CONFIG_HOME}/neofetch/config.conf" ]]; then
 4783        source "${XDG_CONFIG_HOME}/neofetch/config.conf"
 4784        err "Config: Sourced user config.    (${XDG_CONFIG_HOME}/neofetch/config.conf)"
 4785
 4786    elif [[ -f "${XDG_CONFIG_HOME}/neofetch/config" ]]; then
 4787        source "${XDG_CONFIG_HOME}/neofetch/config"
 4788        err "Config: Sourced user config.    (${XDG_CONFIG_HOME}/neofetch/config)"
 4789
 4790    elif [[ -z "$no_config" ]]; then
 4791        config_file="${XDG_CONFIG_HOME}/neofetch/config.conf"
 4792
 4793        # The config file doesn't exist, create it.
 4794        mkdir -p "${XDG_CONFIG_HOME}/neofetch/"
 4795        printf '%s\n' "$config" > "$config_file"
 4796    fi
 4797}
 4798
 4799bar() {
 4800    # Get the values.
 4801    elapsed="$(($1 * bar_length / $2))"
 4802
 4803    # Create the bar with spaces.
 4804    printf -v prog  "%${elapsed}s"
 4805    printf -v total "%$((bar_length - elapsed))s"
 4806
 4807    # Set the colors and swap the spaces for $bar_char_.
 4808    bar+="${bar_color_elapsed}${prog// /${bar_char_elapsed}}"
 4809    bar+="${bar_color_total}${total// /${bar_char_total}}"
 4810
 4811    # Borders.
 4812    [[ "$bar_border" == "on" ]] && \
 4813        bar="$(color fg)[${bar}$(color fg)]"
 4814
 4815    printf "%b" "${bar}${info_color}"
 4816}
 4817
 4818cache() {
 4819    if [[ "$2" ]]; then
 4820        mkdir -p "${cache_dir}/neofetch"
 4821        printf "%s" "${1/*-}=\"$2\"" > "${cache_dir}/neofetch/${1/*-}"
 4822    fi
 4823}
 4824
 4825get_cache_dir() {
 4826    case $os in
 4827        "Mac OS X"|"macOS") cache_dir="/Library/Caches" ;;
 4828        *)          cache_dir="/tmp" ;;
 4829    esac
 4830}
 4831
 4832kde_config_dir() {
 4833    # If the user is using KDE get the KDE
 4834    # configuration directory.
 4835    if [[ "$kde_config_dir" ]]; then
 4836        return
 4837
 4838    elif type -p kf5-config &>/dev/null; then
 4839        kde_config_dir="$(kf5-config --path config)"
 4840
 4841    elif type -p kde4-config &>/dev/null; then
 4842        kde_config_dir="$(kde4-config --path config)"
 4843
 4844    elif type -p kde-config &>/dev/null; then
 4845        kde_config_dir="$(kde-config --path config)"
 4846
 4847    elif [[ -d "${HOME}/.kde4" ]]; then
 4848        kde_config_dir="${HOME}/.kde4/share/config"
 4849
 4850    elif [[ -d "${HOME}/.kde3" ]]; then
 4851        kde_config_dir="${HOME}/.kde3/share/config"
 4852    fi
 4853
 4854    kde_config_dir="${kde_config_dir/$'/:'*}"
 4855}
 4856
 4857term_padding() {
 4858    # Get terminal padding to properly align cursor.
 4859    [[ -z "$term" ]] && get_term
 4860
 4861    case $term in
 4862        urxvt*|rxvt-unicode)
 4863            [[ $xrdb ]] || xrdb=$(xrdb -query)
 4864
 4865            [[ $xrdb != *internalBorder:* ]] &&
 4866                return
 4867
 4868            padding=${xrdb/*internalBorder:}
 4869            padding=${padding/$'\n'*}
 4870
 4871            [[ $padding =~ ^[0-9]+$ ]] ||
 4872                padding=
 4873        ;;
 4874    esac
 4875}
 4876
 4877dynamic_prompt() {
 4878    [[ "$image_backend" == "off" ]]   && { printf '\n'; return; }
 4879    [[ "$image_backend" != "ascii" ]] && ((lines=(height + yoffset) / font_height + 1))
 4880    [[ "$image_backend" == "w3m" ]]   && ((lines=lines + padding / font_height + 1))
 4881
 4882    # If the ascii art is taller than the info.
 4883    ((lines=lines>info_height?lines-info_height+1:1))
 4884
 4885    printf -v nlines "%${lines}s"
 4886    printf "%b" "${nlines// /\\n}"
 4887}
 4888
 4889cache_uname() {
 4890    # Cache the output of uname so we don't
 4891    # have to spawn it multiple times.
 4892    IFS=" " read -ra uname <<< "$(uname -srm)"
 4893
 4894    kernel_name="${uname[0]}"
 4895    kernel_version="${uname[1]}"
 4896    kernel_machine="${uname[2]}"
 4897
 4898    if [[ "$kernel_name" == "Darwin" ]]; then
 4899        # macOS can report incorrect versions unless this is 0.
 4900        # https://github.com/dylanaraps/neofetch/issues/1607
 4901        export SYSTEM_VERSION_COMPAT=0
 4902
 4903        IFS=$'\n' read -d "" -ra sw_vers <<< "$(awk -F'<|>' '/key|string/ {print $3}' \
 4904                            "/System/Library/CoreServices/SystemVersion.plist")"
 4905        for ((i=0;i<${#sw_vers[@]};i+=2)) {
 4906            case ${sw_vers[i]} in
 4907                ProductName)          darwin_name=${sw_vers[i+1]} ;;
 4908                ProductVersion)       osx_version=${sw_vers[i+1]} ;;
 4909                ProductBuildVersion)  osx_build=${sw_vers[i+1]}   ;;
 4910            esac
 4911        }
 4912    fi
 4913}
 4914
 4915get_ppid() {
 4916    # Get parent process ID of PID.
 4917    case $os in
 4918        "Windows")
 4919            ppid="$(ps -p "${1:-$PPID}" | awk '{printf $2}')"
 4920            ppid="${ppid/PPID}"
 4921        ;;
 4922
 4923        "Linux")
 4924            ppid="$(grep -i -F "PPid:" "/proc/${1:-$PPID}/status")"
 4925            ppid="$(trim "${ppid/PPid:}")"
 4926        ;;
 4927
 4928        *)
 4929            ppid="$(ps -p "${1:-$PPID}" -o ppid=)"
 4930        ;;
 4931    esac
 4932
 4933    printf "%s" "$ppid"
 4934}
 4935
 4936get_process_name() {
 4937    # Get PID name.
 4938    case $os in
 4939        "Windows")
 4940            name="$(ps -p "${1:-$PPID}" | awk '{printf $8}')"
 4941            name="${name/COMMAND}"
 4942            name="${name/*\/}"
 4943        ;;
 4944
 4945        "Linux")
 4946            name="$(< "/proc/${1:-$PPID}/comm")"
 4947        ;;
 4948
 4949        *)
 4950            name="$(ps -p "${1:-$PPID}" -o comm=)"
 4951        ;;
 4952    esac
 4953
 4954    printf "%s" "$name"
 4955}
 4956
 4957decode_url() {
 4958    decode="${1//+/ }"
 4959    printf "%b" "${decode//%/\\x}"
 4960}
 4961
 4962# FINISH UP
 4963
 4964usage() { printf "%s" "\
 4965Usage: neofetch func_name --option \"value\" --option \"value\"
 4966
 4967Neofetch is a CLI system information tool written in BASH. Neofetch
 4968displays information about your system next to an image, your OS logo,
 4969or any ASCII file of your choice.
 4970
 4971NOTE: Every launch flag has a config option.
 4972
 4973Options:
 4974
 4975INFO:
 4976    func_name                   Specify a function name (second part of info() from config) to
 4977                                quickly display only that function's information.
 4978
 4979                                Example: neofetch uptime --uptime_shorthand tiny
 4980
 4981                                Example: neofetch uptime disk wm memory
 4982
 4983                                This can be used in bars and scripts like so:
 4984
 4985                                memory=\"\$(neofetch memory)\"; memory=\"\${memory##*: }\"
 4986
 4987                                For multiple outputs at once (each line of info in an array):
 4988
 4989                                IFS=\$'\\n' read -d \"\" -ra info < <(neofetch memory uptime wm)
 4990
 4991                                info=(\"\${info[@]##*: }\")
 4992
 4993    --disable infoname          Allows you to disable an info line from appearing
 4994                                in the output. 'infoname' is the function name from the
 4995                                'print_info()' function inside the config file.
 4996                                For example: 'info \"Memory\" memory' would be '--disable memory'
 4997
 4998                                NOTE: You can supply multiple args. eg. 'neofetch --disable cpu gpu'
 4999
 5000    --title_fqdn on/off         Hide/Show Fully Qualified Domain Name in title.
 5001    --package_managers on/off   Hide/Show Package Manager names . (on, tiny, off)
 5002    --os_arch on/off            Hide/Show OS architecture.
 5003    --speed_type type           Change the type of cpu speed to display.
 5004                                Possible values: current, min, max, bios,
 5005                                scaling_current, scaling_min, scaling_max
 5006
 5007                                NOTE: This only supports Linux with cpufreq.
 5008
 5009    --speed_shorthand on/off    Whether or not to show decimals in CPU speed.
 5010
 5011                                NOTE: This flag is not supported in systems with CPU speed less than
 5012                                1 GHz.
 5013
 5014    --cpu_brand on/off          Enable/Disable CPU brand in output.
 5015    --cpu_cores type            Whether or not to display the number of CPU cores
 5016                                Possible values: logical, physical, off
 5017
 5018                                NOTE: 'physical' doesn't work on BSD.
 5019
 5020    --cpu_speed on/off          Hide/Show cpu speed.
 5021    --cpu_temp C/F/off          Hide/Show cpu temperature.
 5022
 5023                                NOTE: This only works on Linux and BSD.
 5024
 5025                                NOTE: For FreeBSD and NetBSD-based systems, you need to enable
 5026                                coretemp kernel module. This only supports newer Intel processors.
 5027
 5028    --distro_shorthand on/off   Shorten the output of distro (on, tiny, off)
 5029
 5030                                NOTE: This option won't work in Windows (Cygwin)
 5031
 5032    --kernel_shorthand on/off   Shorten the output of kernel
 5033
 5034                                NOTE: This option won't work in BSDs (except PacBSD and PC-BSD)
 5035
 5036    --uptime_shorthand on/off   Shorten the output of uptime (on, tiny, off)
 5037    --refresh_rate on/off       Whether to display the refresh rate of each monitor
 5038                                Unsupported on Windows
 5039    --gpu_brand on/off          Enable/Disable GPU brand in output. (AMD/NVIDIA/Intel)
 5040    --gpu_type type             Which GPU to display. (all, dedicated, integrated)
 5041
 5042                                NOTE: This only supports Linux.
 5043
 5044    --de_version on/off         Show/Hide Desktop Environment version
 5045    --gtk_shorthand on/off      Shorten output of gtk theme/icons
 5046    --gtk2 on/off               Enable/Disable gtk2 theme/font/icons output
 5047    --gtk3 on/off               Enable/Disable gtk3 theme/font/icons output
 5048    --shell_path on/off         Enable/Disable showing \$SHELL path
 5049    --shell_version on/off      Enable/Disable showing \$SHELL version
 5050    --disk_show value           Which disks to display.
 5051                                Possible values: '/', '/dev/sdXX', '/path/to/mount point'
 5052
 5053                                NOTE: Multiple values can be given. (--disk_show '/' '/dev/sdc1')
 5054
 5055    --disk_subtitle type        What information to append to the Disk subtitle.
 5056                                Takes: name, mount, dir, none
 5057
 5058                                'name' shows the disk's name (sda1, sda2, etc)
 5059
 5060                                'mount' shows the disk's mount point (/, /mnt/Local Disk, etc)
 5061
 5062                                'dir' shows the basename of the disks's path. (/, Local Disk, etc)
 5063
 5064                                'none' shows only 'Disk' or the configured title.
 5065
 5066    --disk_percent on/off       Hide/Show disk percent.
 5067
 5068    --ip_host url               URL to query for public IP
 5069    --ip_timeout int            Public IP timeout (in seconds).
 5070    --ip_interface value        Interface(s) to use for local IP
 5071    --song_format format        Print the song data in a specific format (see config file).
 5072    --song_shorthand on/off     Print the Artist/Album/Title on separate lines.
 5073    --memory_percent on/off     Display memory percentage.
 5074    --memory_unit kib/mib/gib   Memory output unit.
 5075    --music_player player-name  Manually specify a player to use.
 5076                                Available values are listed in the config file
 5077
 5078TEXT FORMATTING:
 5079    --colors x x x x x x        Changes the text colors in this order:
 5080                                title, @, underline, subtitle, colon, info
 5081    --underline on/off          Enable/Disable the underline.
 5082    --underline_char char       Character to use when underlining title
 5083    --bold on/off               Enable/Disable bold text
 5084    --separator string          Changes the default ':' separator to the specified string.
 5085
 5086COLOR BLOCKS:
 5087    --color_blocks on/off       Enable/Disable the color blocks
 5088    --col_offset auto/num       Left-padding of color blocks
 5089    --block_width num           Width of color blocks in spaces
 5090    --block_height num          Height of color blocks in lines
 5091    --block_range num num       Range of colors to print as blocks
 5092
 5093BARS:
 5094    --bar_char 'elapsed char' 'total char'
 5095                                Characters to use when drawing bars.
 5096    --bar_border on/off         Whether or not to surround the bar with '[]'
 5097    --bar_length num            Length in spaces to make the bars.
 5098    --bar_colors num num        Colors to make the bar.
 5099                                Set in this order: elapsed, total
 5100    --memory_display mode       Bar mode.
 5101                                Possible values: bar, infobar, barinfo, off
 5102    --battery_display mode      Bar mode.
 5103                                Possible values: bar, infobar, barinfo, off
 5104    --disk_display mode         Bar mode.
 5105                                Possible values: bar, infobar, barinfo, off
 5106
 5107IMAGE BACKEND:
 5108    --backend backend           Which image backend to use.
 5109                                Possible values: 'ascii', 'caca', 'catimg', 'chafa', 'jp2a',
 5110                                'iterm2', 'off', 'sixel', 'tycat', 'w3m', 'kitty', 'viu'
 5111    --source source             Which image or ascii file to use.
 5112                                Possible values: 'auto', 'ascii', 'wallpaper', '/path/to/img',
 5113                                '/path/to/ascii', '/path/to/dir/', 'command output' [ascii]
 5114
 5115    --ascii source              Shortcut to use 'ascii' backend.
 5116
 5117                                NEW: neofetch --ascii \"\$(fortune | cowsay -W 30)\"
 5118
 5119    --caca source               Shortcut to use 'caca' backend.
 5120    --catimg source             Shortcut to use 'catimg' backend.
 5121    --chafa source              Shortcut to use 'chafa' backend.
 5122    --iterm2 source             Shortcut to use 'iterm2' backend.
 5123    --jp2a source               Shortcut to use 'jp2a' backend.
 5124    --kitty source              Shortcut to use 'kitty' backend.
 5125    --pot source                Shortcut to use 'pot' backend.
 5126    --pixterm source            Shortcut to use 'pixterm' backend.
 5127    --sixel source              Shortcut to use 'sixel' backend.
 5128    --termpix source            Shortcut to use 'termpix' backend.
 5129    --tycat source              Shortcut to use 'tycat' backend.
 5130    --w3m source                Shortcut to use 'w3m' backend.
 5131    --ueberzug source           Shortcut to use 'ueberzug' backend
 5132    --viu source                Shortcut to use 'viu' backend
 5133    --off                       Shortcut to use 'off' backend (Disable ascii art).
 5134
 5135    NOTE: 'source; can be any of the following: 'auto', 'ascii', 'wallpaper', '/path/to/img',
 5136    '/path/to/ascii', '/path/to/dir/'
 5137
 5138ASCII:
 5139    --ascii_colors x x x x x x  Colors to print the ascii art
 5140    --ascii_distro distro       Which Distro's ascii art to print
 5141
 5142                                NOTE: AIX, Hash, Alpine, AlterLinux, Amazon, Anarchy, Android,
 5143                                instantOS, Antergos, antiX, \"AOSC OS\", \"AOSC OS/Retro\",
 5144                                Apricity, ArchCraft, ArcoLinux, ArchBox, ARCHlabs, ArchStrike,
 5145                                XFerience, ArchMerge, Arch, Artix, Arya, Bedrock, Bitrig,
 5146                                BlackArch, BLAG, BlankOn, BlueLight, Bodhi, bonsai, BSD, BunsenLabs,
 5147                                Calculate, Carbs, CentOS, Chakra, ChaletOS, Chapeau, Chrom,
 5148                                Cleanjaro, ClearOS, Clear_Linux, Clover, Condres, Container_Linux,
 5149                                Crystal Linux, CRUX, Cucumber, dahlia, Debian, Deepin, DesaOS, Devuan,
 5150                                DracOS, DarkOs, Itc, DragonFly, Drauger, Elementary, EndeavourOS, Endless,
 5151                                EuroLinux, Exherbo, Fedora, Feren, FreeBSD, FreeMiNT, Frugalware,
 5152                                Funtoo, GalliumOS, Garuda, Gentoo, Pentoo, gNewSense, GNOME, GNU,
 5153                                GoboLinux, Grombyang, Guix, Haiku, Huayra, Hyperbola, iglunix, janus, Kali,
 5154                                KaOS, KDE_neon, Kibojoe, Kogaion, Korora, KSLinux, Kubuntu, LEDE,
 5155                                LaxerOS, LibreELEC, LFS, Linux_Lite, LMDE, Lubuntu, Lunar, macos,
 5156                                Mageia, MagpieOS, Mandriva, Manjaro, TeArch, Maui, Mer, Minix, LinuxMint,
 5157                                Live_Raizo, MX_Linux, Namib, Neptune, NetBSD, Netrunner, Nitrux,
 5158                                NixOS, Nurunner, NuTyX, OBRevenge, OpenBSD, openEuler, OpenIndiana,
 5159                                openmamba, OpenMandriva, OpenStage, OpenWrt, osmc, Oracle,
 5160                                OS Elbrus, PacBSD, Parabola, Pardus, Parrot, Parsix, TrueOS,
 5161                                PCLinuxOS, Pengwin, Peppermint, Pisi, popos, Porteus, PostMarketOS,
 5162                                Proxmox, PuffOS, Puppy, PureOS, Qubes, Qubyt, Quibian, Radix, Raspbian, Reborn_OS,
 5163                                Redstar, Redcore, Redhat, Refracted_Devuan, Regata, Regolith, Rosa,
 5164                                sabotage, Sabayon, Sailfish, SalentOS, Scientific, Septor,
 5165                                SereneLinux, SharkLinux, Siduction, Slackware, SliTaz, SmartOS,
 5166                                Solus, Source_Mage, Sparky, Star, SteamOS, SunOS, openSUSE_Leap,
 5167                                t2, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails, Trisquel,
 5168                                Ubuntu-Cinnamon, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE,
 5169                                Ubuntu-Studio, Ubuntu, Univention, Venom, Void, VNux, LangitKetujuh, semc,
 5170                                Obarun, windows10, Windows7, Xubuntu, Zorin, and IRIX have ascii logos.
 5171
 5172                                NOTE: Arch, Ubuntu, Redhat, Fedora and Dragonfly have 'old' logo variants.
 5173
 5174                                NOTE: Use '{distro name}_old' to use the old logos.
 5175
 5176                                NOTE: Ubuntu has flavor variants.
 5177
 5178                                NOTE: Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME,
 5179                                Ubuntu-Studio, Ubuntu-Mate  or Ubuntu-Budgie to use the flavors.
 5180
 5181                                NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu,
 5182                                CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android,
 5183                                Artix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola,
 5184                                Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS,
 5185                                Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian,
 5186                                postmarketOS, and Void have a smaller logo variant.
 5187
 5188                                NOTE: Use '{distro name}_small' to use the small variants.
 5189
 5190    --ascii_bold on/off         Whether or not to bold the ascii logo.
 5191    -L, --logo                  Hide the info text and only show the ascii logo.
 5192
 5193IMAGE:
 5194    --loop                      Redraw the image constantly until Ctrl+C is used. This fixes issues
 5195                                in some terminals emulators when using image mode.
 5196    --size 00px | --size 00%    How to size the image.
 5197                                Possible values: auto, 00px, 00%, none
 5198    --catimg_size 1/2           Change the resolution of catimg.
 5199    --crop_mode mode            Which crop mode to use
 5200                                Takes the values: normal, fit, fill
 5201    --crop_offset value         Change the crop offset for normal mode.
 5202                                Possible values: northwest, north, northeast,
 5203                                west, center, east, southwest, south, southeast
 5204
 5205    --xoffset px                How close the image will be to the left edge of the
 5206                                window. This only works with w3m.
 5207    --yoffset px                How close the image will be to the top edge of the
 5208                                window. This only works with w3m.
 5209    --bg_color color            Background color to display behind transparent image.
 5210                                This only works with w3m.
 5211    --gap num                   Gap between image and text.
 5212
 5213                                NOTE: --gap can take a negative value which will move the text
 5214                                closer to the left side.
 5215
 5216    --clean                     Delete cached files and thumbnails.
 5217
 5218OTHER:
 5219    --config /path/to/config    Specify a path to a custom config file
 5220    --config none               Launch the script without a config file
 5221    --no_config                 Don't create the user config file.
 5222    --print_config              Print the default config file to stdout.
 5223    --stdout                    Turn off all colors and disables any ASCII/image backend.
 5224    --help                      Print this text and exit
 5225    --version                   Show neofetch version
 5226    -v                          Display error messages.
 5227    -vv                         Display a verbose log for error reporting.
 5228
 5229DEVELOPER:
 5230    --gen-man                   Generate a manpage for Neofetch in your PWD. (Requires GNU help2man)
 5231
 5232
 5233Report bugs to https://github.com/dylanaraps/neofetch/issues
 5234
 5235"
 5236exit 1
 5237}
 5238
 5239get_args() {
 5240    # Check the commandline flags early for '--config'.
 5241    [[ "$*" != *--config* && "$*" != *--no_config* ]] && get_user_config
 5242
 5243    while [[ "$1" ]]; do
 5244        case $1 in
 5245            # Info
 5246            "--title_fqdn") title_fqdn="$2" ;;
 5247            "--package_managers") package_managers="$2" ;;
 5248            "--os_arch") os_arch="$2" ;;
 5249            "--cpu_cores") cpu_cores="$2" ;;
 5250            "--cpu_speed") cpu_speed="$2" ;;
 5251            "--speed_type") speed_type="$2" ;;
 5252            "--speed_shorthand") speed_shorthand="$2" ;;
 5253            "--distro_shorthand") distro_shorthand="$2" ;;
 5254            "--kernel_shorthand") kernel_shorthand="$2" ;;
 5255            "--uptime_shorthand") uptime_shorthand="$2" ;;
 5256            "--cpu_brand") cpu_brand="$2" ;;
 5257            "--gpu_brand") gpu_brand="$2" ;;
 5258            "--gpu_type") gpu_type="$2" ;;
 5259            "--refresh_rate") refresh_rate="$2" ;;
 5260            "--de_version") de_version="$2" ;;
 5261            "--gtk_shorthand") gtk_shorthand="$2" ;;
 5262            "--gtk2") gtk2="$2" ;;
 5263            "--gtk3") gtk3="$2" ;;
 5264            "--shell_path") shell_path="$2" ;;
 5265            "--shell_version") shell_version="$2" ;;
 5266            "--ip_host") public_ip_host="$2" ;;
 5267            "--ip_timeout") public_ip_timeout="$2" ;;
 5268            "--ip_interface")
 5269                unset local_ip_interface
 5270                for arg in "$@"; do
 5271                    case "$arg" in
 5272                        "--ip_interface") ;;
 5273                        "-"*) break ;;
 5274                        *) local_ip_interface+=("$arg") ;;
 5275                    esac
 5276                done
 5277            ;;
 5278
 5279            "--song_format") song_format="$2" ;;
 5280            "--song_shorthand") song_shorthand="$2" ;;
 5281            "--music_player") music_player="$2" ;;
 5282            "--memory_percent") memory_percent="$2" ;;
 5283            "--memory_unit") memory_unit="$2" ;;
 5284            "--cpu_temp")
 5285                cpu_temp="$2"
 5286                [[ "$cpu_temp" == "on" ]] && cpu_temp="C"
 5287            ;;
 5288
 5289            "--disk_subtitle") disk_subtitle="$2" ;;
 5290            "--disk_percent")  disk_percent="$2" ;;
 5291            "--disk_show")
 5292                unset disk_show
 5293                for arg in "$@"; do
 5294                    case $arg in
 5295                        "--disk_show") ;;
 5296                        "-"*) break ;;
 5297                        *) disk_show+=("$arg") ;;
 5298                    esac
 5299                done
 5300            ;;
 5301
 5302            "--disable")
 5303                for func in "$@"; do
 5304                    case $func in
 5305                        "--disable") continue ;;
 5306                        "-"*) break ;;
 5307                        *)
 5308                            ((bash_version >= 4)) && func="${func,,}"
 5309                            unset -f "get_$func"
 5310                        ;;
 5311                    esac
 5312                done
 5313            ;;
 5314
 5315            # Text Colors
 5316            "--colors")
 5317                unset colors
 5318                for arg in "$2" "$3" "$4" "$5" "$6" "$7"; do
 5319                    case $arg in
 5320                        "-"*) break ;;
 5321                        *) colors+=("$arg") ;;
 5322                    esac
 5323                done
 5324                colors+=(7 7 7 7 7 7)
 5325            ;;
 5326
 5327            # Text Formatting
 5328            "--underline") underline_enabled="$2" ;;
 5329            "--underline_char") underline_char="$2" ;;
 5330            "--bold") bold="$2" ;;
 5331            "--separator") separator="$2" ;;
 5332
 5333            # Color Blocks
 5334            "--color_blocks") color_blocks="$2" ;;
 5335            "--block_range") block_range=("$2" "$3") ;;
 5336            "--block_width") block_width="$2" ;;
 5337            "--block_height") block_height="$2" ;;
 5338            "--col_offset") col_offset="$2" ;;
 5339
 5340            # Bars
 5341            "--bar_char")
 5342                bar_char_elapsed="$2"
 5343                bar_char_total="$3"
 5344            ;;
 5345
 5346            "--bar_border") bar_border="$2" ;;
 5347            "--bar_length") bar_length="$2" ;;
 5348            "--bar_colors")
 5349                bar_color_elapsed="$2"
 5350                bar_color_total="$3"
 5351            ;;
 5352
 5353            "--memory_display") memory_display="$2" ;;
 5354            "--battery_display") battery_display="$2" ;;
 5355            "--disk_display") disk_display="$2" ;;
 5356
 5357            # Image backend
 5358            "--backend") image_backend="$2" ;;
 5359            "--source") image_source="$2" ;;
 5360            "--ascii" | "--caca" | "--catimg" | "--chafa" | "--jp2a" | "--iterm2" | "--off" |\
 5361            "--pot" | "--pixterm" | "--sixel" | "--termpix" | "--tycat" | "--w3m" | "--kitty" |\
 5362            "--ueberzug" | "--viu")
 5363                image_backend="${1/--}"
 5364                case $2 in
 5365                    "-"* | "") ;;
 5366                    *) image_source="$2" ;;
 5367                esac
 5368            ;;
 5369
 5370            # Image options
 5371            "--loop") image_loop="on" ;;
 5372            "--image_size" | "--size") image_size="$2" ;;
 5373            "--catimg_size") catimg_size="$2" ;;
 5374            "--crop_mode") crop_mode="$2" ;;
 5375            "--crop_offset") crop_offset="$2" ;;
 5376            "--xoffset") xoffset="$2" ;;
 5377            "--yoffset") yoffset="$2" ;;
 5378            "--background_color" | "--bg_color") background_color="$2" ;;
 5379            "--gap") gap="$2" ;;
 5380            "--clean")
 5381                [[ -d "$thumbnail_dir" ]] && rm -rf "$thumbnail_dir"
 5382                rm -rf "/Library/Caches/neofetch/"
 5383                rm -rf "/tmp/neofetch/"
 5384                exit
 5385            ;;
 5386
 5387            "--ascii_colors")
 5388                unset ascii_colors
 5389                for arg in "$2" "$3" "$4" "$5" "$6" "$7"; do
 5390                    case $arg in
 5391                        "-"*) break ;;
 5392                        *) ascii_colors+=("$arg")
 5393                    esac
 5394                done
 5395                ascii_colors+=(7 7 7 7 7 7)
 5396            ;;
 5397
 5398            "--ascii_distro")
 5399                image_backend="ascii"
 5400                ascii_distro="$2"
 5401            ;;
 5402
 5403            "--ascii_bold") ascii_bold="$2" ;;
 5404            "--logo" | "-L")
 5405                image_backend="ascii"
 5406                print_info() { printf '\n'; }
 5407            ;;
 5408
 5409            # Other
 5410            "--config")
 5411                case $2 in
 5412                    "none" | "off" | "") ;;
 5413                    *)
 5414                        config_file="$(get_full_path "$2")"
 5415                        get_user_config
 5416                    ;;
 5417                esac
 5418            ;;
 5419            "--no_config") no_config="on" ;;
 5420            "--stdout") stdout="on" ;;
 5421            "-v") verbose="on" ;;
 5422            "--print_config") printf '%s\n' "$config"; exit ;;
 5423            "-vv") set -x; verbose="on" ;;
 5424            "--help") usage ;;
 5425            "--version")
 5426                printf '%s\n' "Neofetch $version"
 5427                exit 1
 5428            ;;
 5429            "--gen-man")
 5430                help2man -n "A fast, highly customizable system info script" \
 5431                          -N ./neofetch -o neofetch.1
 5432                exit 1
 5433            ;;
 5434
 5435            "--json")
 5436                json="on"
 5437                unset -f get_title get_cols get_underline
 5438
 5439                printf '{\n'
 5440                print_info 2>/dev/null
 5441                printf '    %s\n' "\"Version\": \"${version}\""
 5442                printf '}\n'
 5443                exit
 5444            ;;
 5445
 5446            "--travis")
 5447                print_info() {
 5448                    info title
 5449                    info underline
 5450
 5451                    info "OS" distro
 5452                    info "Host" model
 5453                    info "Kernel" kernel
 5454                    info "Uptime" uptime
 5455                    info "Packages" packages
 5456                    info "Shell" shell
 5457                    info "Resolution" resolution
 5458                    info "DE" de
 5459                    info "WM" wm
 5460                    info "WM Theme" wm_theme
 5461                    info "Theme" theme
 5462                    info "Icons" icons
 5463                    info "Terminal" term
 5464                    info "Terminal Font" term_font
 5465                    info "CPU" cpu
 5466                    info "GPU" gpu
 5467                    info "GPU Driver" gpu_driver
 5468                    info "Memory" memory
 5469
 5470                    info "Disk" disk
 5471                    info "Battery" battery
 5472                    info "Font" font
 5473                    info "Song" song
 5474                    info "Local IP" local_ip
 5475                    info "Public IP" public_ip
 5476                    info "Users" users
 5477
 5478                    info cols
 5479
 5480                    # Testing.
 5481                    prin "prin"
 5482                    prin "prin" "prin"
 5483
 5484                    # Testing no subtitles.
 5485                    info uptime
 5486                    info disk
 5487                }
 5488
 5489                refresh_rate="on"
 5490                shell_version="on"
 5491                memory_display="infobar"
 5492                disk_display="infobar"
 5493                cpu_temp="C"
 5494
 5495                # Known implicit unused variables.
 5496                mpc_args=()
 5497                printf '%s\n' "$kernel $icons $font $battery $locale ${mpc_args[*]}"
 5498            ;;
 5499        esac
 5500
 5501        shift
 5502    done
 5503}
 5504
 5505get_simple() {
 5506    while [[ "$1" ]]; do
 5507        [[ "$(type -t "get_$1")" == "function" ]] && {
 5508            get_distro
 5509            stdout
 5510            simple=1
 5511            info "$1" "$1"
 5512        }
 5513        shift
 5514    done
 5515    ((simple)) && exit
 5516}
 5517
 5518old_functions() {
 5519    # Removed functions for backwards compatibility.
 5520    get_line_break() { :; }
 5521    get_cpu_usage() { :; }
 5522}
 5523
 5524get_distro_ascii() {
 5525    # This function gets the distro ascii art and colors.
 5526    #
 5527    # $ascii_distro is the same as $distro.
 5528    case $(trim "$ascii_distro") in
 5529        "AIX"*)
 5530            set_colors 2 7
 5531            read -rd '' ascii_data <<'EOF'
 5532${c1}           `:+ssssossossss+-`
 5533        .oys///oyhddddhyo///sy+.
 5534      /yo:+hNNNNNNNNNNNNNNNNh+:oy/
 5535    :h/:yNNNNNNNNNNNNNNNNNNNNNNy-+h:
 5536  `ys.yNNNNNNNNNNNNNNNNNNNNNNNNNNy.ys
 5537 `h+-mNNNNNNNNNNNNNNNNNNNNNNNNNNNNm-oh
 5538 h+-NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN.oy
 5539/d`mNNNNNNN/::mNNNd::m+:/dNNNo::dNNNd`m:
 5540h//NNNNNNN: . .NNNh  mNo  od. -dNNNNN:+y
 5541N.sNNNNNN+ -N/ -NNh  mNNd.   sNNNNNNNo-m
 5542N.sNNNNNs  +oo  /Nh  mNNs` ` /mNNNNNNo-m
 5543h//NNNNh  ossss` +h  md- .hm/ `sNNNNN:+y
 5544:d`mNNN+/yNNNNNd//y//h//oNNNNy//sNNNd`m-
 5545 yo-NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNm.ss
 5546 `h+-mNNNNNNNNNNNNNNNNNNNNNNNNNNNNm-oy
 5547   sy.yNNNNNNNNNNNNNNNNNNNNNNNNNNs.yo
 5548    :h+-yNNNNNNNNNNNNNNNNNNNNNNs-oh-
 5549      :ys:/yNNNNNNNNNNNNNNNmy/:sy:
 5550        .+ys///osyhhhhys+///sy+.
 5551            -/osssossossso/-
 5552EOF
 5553        ;;
 5554
 5555	"Aperio GNU/Linux"*)
 5556	    set_colors 255
 5557	    read -rd '' ascii_data <<'EOF'
 5558${c2}
 5559 _.._  _ ._.. _
 5560(_][_)(/,[  |(_)
 5561   |   GNU/Linux
 5562EOF
 5563	;;
 5564
 5565        "Hash"*)
 5566            set_colors 123
 5567            read -rd '' ascii_data <<'EOF'
 5568${c1}
 5569
 5570      +   ######   +
 5571    ###   ######   ###
 5572  #####   ######   #####
 5573 ######   ######   ######
 5574
 5575####### '"###### '"########
 5576#######   ######   ########
 5577#######   ######   ########
 5578
 5579 ###### '"###### '"######
 5580  #####   ######   #####
 5581    ###   ######   ###
 5582      ~   ######   ~
 5583
 5584EOF
 5585        ;;
 5586
 5587        "AlmaLinux"*)
 5588            set_colors 1 3 4 2 6
 5589            read -rd '' ascii_data <<'EOF'
 5590${c1}         'c:.
 5591${c1}        lkkkx, ..       ${c2}..   ,cc,
 5592${c1}        okkkk:ckkx'  ${c2}.lxkkx.okkkkd
 5593${c1}        .:llcokkx'  ${c2}:kkkxkko:xkkd,
 5594${c1}      .xkkkkdood:  ${c2};kx,  .lkxlll;
 5595${c1}       xkkx.       ${c2}xk'     xkkkkk:
 5596${c1}       'xkx.       ${c2}xd      .....,.
 5597${c3}      .. ${c1}:xkl'     ${c2}:c      ..''..
 5598${c3}    .dkx'  ${c1}.:ldl:'. ${c2}'  ${c4}':lollldkkxo;
 5599${c3}  .''lkkko'                     ${c4}ckkkx.
 5600${c3}'xkkkd:kkd.       ..  ${c5};'        ${c4}:kkxo.
 5601${c3},xkkkd;kk'      ,d;    ${c5}ld.   ${c4}':dkd::cc,
 5602${c3} .,,.;xkko'.';lxo.      ${c5}dx,  ${c4}:kkk'xkkkkc
 5603${c3}     'dkkkkkxo:.        ${c5};kx  ${c4}.kkk:;xkkd.
 5604${c3}       .....   ${c5}.;dk:.   ${c5}lkk.  ${c4}:;,
 5605             ${c5}:kkkkkkkdoxkkx
 5606              ,c,,;;;:xkkd.
 5607                ;kkkkl...
 5608                ;kkkkl
 5609                 ,od;
 5610EOF
 5611        ;;
 5612
 5613        "alpine_small")
 5614            set_colors 4 7
 5615            read -rd '' ascii_data <<'EOF'
 5616${c1}   /\\ /\\
 5617  /${c2}/ ${c1}\\  \\
 5618 /${c2}/   ${c1}\\  \\
 5619/${c2}//    ${c1}\\  \\
 5620${c2}//      ${c1}\\  \\
 5621         \\
 5622EOF
 5623        ;;
 5624
 5625        "Alpine"*)
 5626            set_colors 4 5 7 6
 5627            read -rd '' ascii_data <<'EOF'
 5628${c1}       .hddddddddddddddddddddddh.
 5629      :dddddddddddddddddddddddddd:
 5630     /dddddddddddddddddddddddddddd/
 5631    +dddddddddddddddddddddddddddddd+
 5632  `sdddddddddddddddddddddddddddddddds`
 5633 `ydddddddddddd++hdddddddddddddddddddy`
 5634.hddddddddddd+`  `+ddddh:-sdddddddddddh.
 5635hdddddddddd+`      `+y:    .sddddddddddh
 5636ddddddddh+`   `//`   `.`     -sddddddddd
 5637ddddddh+`   `/hddh/`   `:s-    -sddddddd
 5638ddddh+`   `/+/dddddh/`   `+s-    -sddddd
 5639ddd+`   `/o` :dddddddh/`   `oy-    .yddd
 5640hdddyo+ohddyosdddddddddho+oydddy++ohdddh
 5641.hddddddddddddddddddddddddddddddddddddh.
 5642 `yddddddddddddddddddddddddddddddddddy`
 5643  `sdddddddddddddddddddddddddddddddds`
 5644    +dddddddddddddddddddddddddddddd+
 5645     /dddddddddddddddddddddddddddd/
 5646      :dddddddddddddddddddddddddd:
 5647       .hddddddddddddddddddddddh.
 5648EOF
 5649        ;;
 5650
 5651        "Alter"*)
 5652            set_colors 6 6
 5653            read -rd '' ascii_data <<'EOF'
 5654${c1}                      %,
 5655                    ^WWWw
 5656                   'wwwwww
 5657                  !wwwwwwww
 5658                 #`wwwwwwwww
 5659                @wwwwwwwwwwww
 5660               wwwwwwwwwwwwwww
 5661              wwwwwwwwwwwwwwwww
 5662             wwwwwwwwwwwwwwwwwww
 5663            wwwwwwwwwwwwwwwwwwww,
 5664           w~1i.wwwwwwwwwwwwwwwww,
 5665         3~:~1lli.wwwwwwwwwwwwwwww.
 5666        :~~:~?ttttzwwwwwwwwwwwwwwww
 5667       #<~:~~~~?llllltO-.wwwwwwwwwww
 5668      #~:~~:~:~~?ltlltlttO-.wwwwwwwww
 5669     @~:~~:~:~:~~(zttlltltlOda.wwwwwww
 5670    @~:~~: ~:~~:~:(zltlltlO    a,wwwwww
 5671   8~~:~~:~~~~:~~~~_1ltltu          ,www
 5672  5~~:~~:~~:~~:~~:~~~_1ltq             N,,
 5673 g~:~~:~~~:~~:~~:~:~~~~1q                N,
 5674EOF
 5675        ;;
 5676
 5677        "Amazon"*)
 5678            set_colors 3 7
 5679            read -rd '' ascii_data <<'EOF'
 5680${c1}             `-/oydNNdyo:.`
 5681      `.:+shmMMMMMMMMMMMMMMmhs+:.`
 5682    -+hNNMMMMMMMMMMMMMMMMMMMMMMNNho-
 5683.``      -/+shmNNMMMMMMNNmhs+/-      ``.
 5684dNmhs+:.       `.:/oo/:.`       .:+shmNd
 5685dMMMMMMMNdhs+:..        ..:+shdNMMMMMMMd
 5686dMMMMMMMMMMMMMMNds    odNMMMMMMMMMMMMMMd
 5687dMMMMMMMMMMMMMMMMh    yMMMMMMMMMMMMMMMMd
 5688dMMMMMMMMMMMMMMMMh    yMMMMMMMMMMMMMMMMd
 5689dMMMMMMMMMMMMMMMMh    yMMMMMMMMMMMMMMMMd
 5690dMMMMMMMMMMMMMMMMh    yMMMMMMMMMMMMMMMMd
 5691dMMMMMMMMMMMMMMMMh    yMMMMMMMMMMMMMMMMd
 5692dMMMMMMMMMMMMMMMMh    yMMMMMMMMMMMMMMMMd
 5693dMMMMMMMMMMMMMMMMh    yMMMMMMMMMMMMMMMMd
 5694dMMMMMMMMMMMMMMMMh    yMMMMMMMMMMMMMMMMd
 5695dMMMMMMMMMMMMMMMMh    yMMMMMMMMMMMMMMMMd
 5696.:+ydNMMMMMMMMMMMh    yMMMMMMMMMMMNdy+:.
 5697     `.:+shNMMMMMh    yMMMMMNhs+:``
 5698            `-+shy    shs+:`
 5699EOF
 5700        ;;
 5701        "Anarchy"*)
 5702            set_colors 7 4
 5703            read -rd '' ascii_data <<'EOF'
 5704                         ${c2}..${c1}
 5705                        ${c2}..${c1}
 5706                      ${c2}:..${c1}
 5707                    ${c2}:+++.${c1}
 5708              .:::++${c2}++++${c1}+::.
 5709          .:+######${c2}++++${c1}######+:.
 5710       .+#########${c2}+++++${c1}##########:.
 5711     .+##########${c2}+++++++${c1}##${c2}+${c1}#########+.
 5712    +###########${c2}+++++++++${c1}############:
 5713   +##########${c2}++++++${c1}#${c2}++++${c1}#${c2}+${c1}###########+
 5714  +###########${c2}+++++${c1}###${c2}++++${c1}#${c2}+${c1}###########+
 5715 :##########${c2}+${c1}#${c2}++++${c1}####${c2}++++${c1}#${c2}+${c1}############:
 5716 ###########${c2}+++++${c1}#####${c2}+++++${c1}#${c2}+${c1}###${c2}++${c1}######+
 5717.##########${c2}++++++${c1}#####${c2}++++++++++++${c1}#######.
 5718.##########${c2}+++++++++++++++++++${c1}###########.
 5719 #####${c2}++++++++++++++${c1}###${c2}++++++++${c1}#########+
 5720 :###${c2}++++++++++${c1}#########${c2}+++++++${c1}#########:
 5721  +######${c2}+++++${c1}##########${c2}++++++++${c1}#######+
 5722   +####${c2}+++++${c1}###########${c2}+++++++++${c1}#####+
 5723    :##${c2}++++++${c1}############${c2}++++++++++${c1}##:
 5724     .${c2}++++++${c1}#############${c2}++++++++++${c1}+.
 5725      :${c2}++++${c1}###############${c2}+++++++${c1}::
 5726     .${c2}++. .:+${c1}##############${c2}+++++++${c1}..
 5727     ${c2}.:.${c1}      ..::++++++::..:${c2}++++${c1}+.
 5728     ${c2}.${c1}                       ${c2}.:+++${c1}.
 5729                                ${c2}.:${c1}:
 5730                                   ${c2}..${c1}
 5731                                    ${c2}..${c1}
 5732EOF
 5733        ;;
 5734
 5735        "android_small"*)
 5736            set_colors 2 7
 5737            read -rd '' ascii_data <<'EOF'
 5738${c1}  ;,           ,;
 5739   ';,.-----.,;'
 5740  ,'           ',
 5741 /    O     O    \\
 5742|                 |
 5743'-----------------'
 5744EOF
 5745        ;;
 5746
 5747        "Android"*)
 5748            set_colors 2 7
 5749            read -rd '' ascii_data <<'EOF'
 5750${c1}         -o          o-
 5751          +hydNNNNdyh+
 5752        +mMMMMMMMMMMMMm+
 5753      `dMM${c2}m:${c1}NMMMMMMN${c2}:m${c1}MMd`
 5754      hMMMMMMMMMMMMMMMMMMh
 5755  ..  yyyyyyyyyyyyyyyyyyyy  ..
 5756.mMMm`MMMMMMMMMMMMMMMMMMMM`mMMm.
 5757:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM:
 5758:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM:
 5759:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM:
 5760:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM:
 5761-MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM-
 5762 +yy+ MMMMMMMMMMMMMMMMMMMM +yy+
 5763      mMMMMMMMMMMMMMMMMMMm
 5764      `/++MMMMh++hMMMM++/`
 5765          MMMMo  oMMMM
 5766          MMMMo  oMMMM
 5767          oNMm-  -mMNs
 5768EOF
 5769        ;;
 5770
 5771    "instantOS"*)
 5772        set_colors 4 6
 5773        read -rd '' ascii_data <<'EOF'
 5774
 5775${c1}
 5776     'cx0XWWMMWNKOd:'.
 5777  .;kNMMMMMMMMMMMMMWNKd'
 5778 'kNMMMMMMWNNNWMMMMMMMMXo.
 5779,0MMMMMW0o;'..,:dKWMMMMMWx.
 5780OMMMMMXl.        .xNMMMMMNo
 5781WMMMMNl           .kWWMMMMO'
 5782MMMMMX;            oNWMMMMK,
 5783NMMMMWo           .OWMMMMMK,
 5784kWMMMMNd.        ,kWMMMMMMK,
 5785'kWMMMMWXxl:;;:okNMMMMMMMMK,
 5786 .oXMMMMMMMWWWMMMMMMMMMMMMK,
 5787   'oKWMMMMMMMMMMMMMMMMMMMK,
 5788     .;lxOKXXXXXXXXXXXXXXXO;......
 5789          ................,d0000000kd:.
 5790                          .kMMMMMMMMMW0;
 5791                          .kMMMMMMMMMMMX
 5792                          .xMMMMMMMMMMMW
 5793                           cXMMMMMMMMMM0
 5794                            :0WMMMMMMNx,
 5795                             .o0NMWNOc.
 5796EOF
 5797        ;;
 5798
 5799        "Antergos"*)
 5800            set_colors 4 6
 5801            read -rd '' ascii_data <<'EOF'
 5802${c2}              `.-/::/-``
 5803            .-/osssssssso/.
 5804           :osyysssssssyyys+-
 5805        `.+yyyysssssssssyyyyy+.
 5806       `/syyyyyssssssssssyyyyys-`
 5807      `/yhyyyyysss${c1}++${c2}ssosyyyyhhy/`
 5808     .ohhhyyyys${c1}o++/+o${c2}so${c1}+${c2}syy${c1}+${c2}shhhho.
 5809    .shhhhys${c1}oo++//+${c2}sss${c1}+++${c2}yyy${c1}+s${c2}hhhhs.
 5810   -yhhhhs${c1}+++++++o${c2}ssso${c1}+++${c2}yyy${c1}s+o${c2}hhddy:
 5811  -yddhhy${c1}o+++++o${c2}syyss${c1}++++${c2}yyy${c1}yooy${c2}hdddy-
 5812 .yddddhs${c1}o++o${c2}syyyyys${c1}+++++${c2}yyhh${c1}sos${c2}hddddy`
 5813`odddddhyosyhyyyyyy${c1}++++++${c2}yhhhyosddddddo
 5814.dmdddddhhhhhhhyyyo${c1}+++++${c2}shhhhhohddddmmh.
 5815ddmmdddddhhhhhhhso${c1}++++++${c2}yhhhhhhdddddmmdy
 5816dmmmdddddddhhhyso${c1}++++++${c2}shhhhhddddddmmmmh
 5817-dmmmdddddddhhys${c1}o++++o${c2}shhhhdddddddmmmmd-
 5818.smmmmddddddddhhhhhhhhhdddddddddmmmms.
 5819   `+ydmmmdddddddddddddddddddmmmmdy/.
 5820      `.:+ooyyddddddddddddyyso+:.`
 5821EOF
 5822        ;;
 5823
 5824        "antiX"*)
 5825            set_colors 1 7 3
 5826            read -rd '' ascii_data <<'EOF'
 5827${c1}
 5828                    \
 5829         , - ~ ^ ~ - \        /
 5830     , '              \ ' ,  /
 5831   ,                   \   '/
 5832  ,                     \  / ,
 5833 ,___,                   \/   ,
 5834 /   |   _  _  _|_ o     /\   ,
 5835|,   |  / |/ |  |  |    /  \  ,
 5836 \,_/\_/  |  |_/|_/|_/_/    \,
 5837   ,                  /     ,\
 5838     ,               /  , '   \
 5839      ' - , _ _ _ ,  '
 5840EOF
 5841        ;;
 5842
 5843        "AOSC OS/Retro"*)
 5844            set_colors 4 7 1 3
 5845            read -rd '' ascii_data <<'EOF'
 5846${c2}          .........
 5847     ...................
 5848   .....................${c1}################${c2}
 5849 ..............     ....${c1}################${c2}
 5850..............       ...${c1}################${c2}
 5851.............         ..${c1}****************${c2}
 5852............     .     .${c1}****************${c2}
 5853...........     ...     ${c1}................${c2}
 5854..........     .....     ${c1}...............${c2}
 5855.........     .......     ...
 5856 .${c3}......                   ${c2}.
 5857  ${c3}.....      .....${c2}....    ${c4}...........
 5858  ${c3}....      ......${c2}.       ${c4}...........
 5859  ${c3}...      .......        ${c4}...........
 5860  ${c3}................        ${c4}***********
 5861  ${c3}................        ${c4}###########
 5862  ${c3}****************
 5863  ${c3}################
 5864EOF
 5865        ;;
 5866
 5867        "AOSC OS"*)
 5868            set_colors 4 7 1
 5869            read -rd '' ascii_data <<'EOF'
 5870${c2}             .:+syhhhhys+:.
 5871         .ohNMMMMMMMMMMMMMMNho.
 5872      `+mMMMMMMMMMMmdmNMMMMMMMMm+`
 5873     +NMMMMMMMMMMMM/   `./smMMMMMN+
 5874   .mMMMMMMMMMMMMMMo        -yMMMMMm.
 5875  :NMMMMMMMMMMMMMMMs          .hMMMMN:
 5876 .NMMMMhmMMMMMMMMMMm+/-         oMMMMN.
 5877 dMMMMs  ./ymMMMMMMMMMMNy.       sMMMMd
 5878-MMMMN`      oMMMMMMMMMMMN:      `NMMMM-
 5879/MMMMh       NMMMMMMMMMMMMm       hMMMM/
 5880/MMMMh       NMMMMMMMMMMMMm       hMMMM/
 5881-MMMMN`      :MMMMMMMMMMMMy.     `NMMMM-
 5882 dMMMMs       .yNMMMMMMMMMMMNy/. sMMMMd
 5883 .NMMMMo         -/+sMMMMMMMMMMMmMMMMN.
 5884  :NMMMMh.          .MMMMMMMMMMMMMMMN:
 5885   .mMMMMMy-         NMMMMMMMMMMMMMm.
 5886     +NMMMMMms/.`    mMMMMMMMMMMMN+
 5887      `+mMMMMMMMMNmddMMMMMMMMMMm+`
 5888         .ohNMMMMMMMMMMMMMMNho.
 5889             .:+syhhhhys+:.
 5890EOF
 5891        ;;
 5892
 5893        "Apricity"*)
 5894            set_colors 4 7 1
 5895            read -rd '' ascii_data <<'EOF'
 5896${c2}                                    ./o-
 5897          ``...``              `:. -/:
 5898     `-+ymNMMMMMNmho-`      :sdNNm/
 5899   `+dMMMMMMMMMMMMMMMmo` sh:.:::-
 5900  /mMMMMMMMMMMMMMMMMMMMm/`sNd/
 5901 oMMMMMMMMMMMMMMMMMMMMMMMs -`
 5902:MMMMMMMMMMMMMMMMMMMMMMMMM/
 5903NMMMMMMMMMMMMMMMMMMMMMMMMMd
 5904MMMMMMMmdmMMMMMMMMMMMMMMMMd
 5905MMMMMMy` .mMMMMMMMMMMMmho:`
 5906MMMMMMNo/sMMMMMMMNdy+-.`-/
 5907MMMMMMMMMMMMNdy+:.`.:ohmm:
 5908MMMMMMMmhs+-.`.:+ymNMMMy.
 5909MMMMMM/`.-/ohmNMMMMMMy-
 5910MMMMMMNmNNMMMMMMMMmo.
 5911MMMMMMMMMMMMMMMms:`
 5912MMMMMMMMMMNds/.
 5913dhhyys+/-`
 5914EOF
 5915        ;;
 5916
 5917        "Archcraft"*)
 5918            set_colors 6 6 7 1
 5919            read -rd '' ascii_data <<'EOF'
 5920${c1}                   -m:
 5921                  :NMM+      .+
 5922                 +MMMMMo    -NMy
 5923                sMMMMMMMy  -MMMMh`
 5924               yMMMMMMMMMd` oMMMMd`
 5925             `dMMMMMMMMMMMm. /MMMMm-
 5926            .mMMMMMm-dMMMMMN- :NMMMN:
 5927           -NMMMMMd`  yMMMMMN: .mMMMM/
 5928          :NMMMMMy     sMMMMMM+ `dMMMMo
 5929         +MMMMMMs       +MMMMMMs `hMMMMy
 5930        oMMMMMMMds-      :NMMMMMy  sMMMMh`
 5931       yMMMMMNoydMMmo`    -NMMMMMd` +MMMMd.
 5932     `dMMMMMN-   `:yNNs`   .mMMMMMm. /MMMMm-
 5933    .mMMMMMm.        :hN/   `dMMMMMN- -NMMMN:
 5934   -NMMMMMd`           -hh`  `yMMMMMN: .mMMMM/
 5935  :NMMMMMy         `s`   :h.   oMMMMMM+ `-----
 5936 +MMMMMMo         .dMm.   `o.   +MMMMMMo
 5937sMMMMMM+         .mMMMN:    :`   :NMMMMMy
 5938EOF
 5939        ;;
 5940
 5941        "arcolinux_small"*)
 5942            set_colors 7 4
 5943            read -rd '' ascii_data <<'EOF'
 5944${c2}          A
 5945         ooo
 5946        ooooo
 5947       ooooooo
 5948      ooooooooo
 5949     ooooo ooooo
 5950    ooooo   ooooo
 5951   ooooo     ooooo
 5952  ooooo  ${c1}<oooooooo>${c2}
 5953 ooooo      ${c1}<oooooo>${c2}
 5954ooooo          ${c1}<oooo>${c2}
 5955EOF
 5956        ;;
 5957
 5958        "ArcoLinux"*)
 5959            set_colors 7 4
 5960            read -rd '' ascii_data <<'EOF'
 5961${c2}                    /-
 5962                   ooo:
 5963                  yoooo/
 5964                 yooooooo
 5965                yooooooooo
 5966               yooooooooooo
 5967             .yooooooooooooo
 5968            .oooooooooooooooo
 5969           .oooooooarcoooooooo
 5970          .ooooooooo-oooooooooo
 5971         .ooooooooo-  oooooooooo
 5972        :ooooooooo.    :ooooooooo
 5973       :ooooooooo.      :ooooooooo
 5974      :oooarcooo         .oooarcooo
 5975     :ooooooooy           .ooooooooo
 5976    :ooooooooo   ${c1}/ooooooooooooooooooo${c2}
 5977   :ooooooooo      ${c1}.-ooooooooooooooooo.${c2}
 5978  ooooooooo-             ${c1}-ooooooooooooo.${c2}
 5979 ooooooooo-                 ${c1}.-oooooooooo.${c2}
 5980ooooooooo.                     ${c1}-ooooooooo${c2}
 5981EOF
 5982        ;;
 5983
 5984        "arch_small")
 5985            set_colors 6 7 1
 5986            read -rd '' ascii_data <<'EOF'
 5987${c1}      /\\
 5988     /  \\
 5989    /\\   \\
 5990${c2}   /      \\
 5991  /   ,,   \\
 5992 /   |  |  -\\
 5993/_-''    ''-_\\
 5994EOF
 5995        ;;
 5996
 5997        "arch_old")
 5998            set_colors 6 7 1
 5999            read -rd '' ascii_data <<'EOF'
 6000${c1}             __
 6001         _=(SDGJT=_
 6002       _GTDJHGGFCVS)
 6003      ,GTDJGGDTDFBGX0
 6004${c1}     JDJDIJHRORVFSBSVL${c2}-=+=,_
 6005${c1}    IJFDUFHJNXIXCDXDSV,${c2}  "DEBL
 6006${c1}   [LKDSDJTDU=OUSCSBFLD.${c2}   '?ZWX,
 6007${c1}  ,LMDSDSWH'     `DCBOSI${c2}     DRDS],
 6008${c1}  SDDFDFH'         !YEWD,${c2}   )HDROD
 6009${c1} !KMDOCG            &GSU|${c2}\_GFHRGO\'
 6010${c1} HKLSGP'${c2}           __${c1}\TKM0${c2}\GHRBV)'
 6011${c1}JSNRVW'${c2}       __+MNAEC${c1}\IOI,${c2}\BN'
 6012${c1}HELK['${c2}    __,=OFFXCBGHC${c1}\FD)
 6013${c1}?KGHE ${c2}\_-#DASDFLSV='${c1}    'EF
 6014'EHTI                    !H
 6015 `0F'                    '!
 6016EOF
 6017        ;;
 6018
 6019        "ArchBox"*)
 6020            set_colors 2 7 1
 6021            read -rd '' ascii_data <<'EOF'
 6022${c1}              ...:+oh/:::..
 6023         ..-/oshhhhhh`   `::::-.
 6024     .:/ohhhhhhhhhhhh`        `-::::.
 6025 .+shhhhhhhhhhhhhhhhh`             `.::-.
 6026 /`-:+shhhhhhhhhhhhhh`            .-/+shh
 6027 /      .:/ohhhhhhhhh`       .:/ohhhhhhhh
 6028 /           `-:+shhh`  ..:+shhhhhhhhhhhh
 6029 /                 .:ohhhhhhhhhhhhhhhhhhh
 6030 /                  `hhhhhhhhhhhhhhhhhhhh
 6031 /                  `hhhhhhhhhhhhhhhhhhhh
 6032 /                  `hhhhhhhhhhhhhhhhhhhh
 6033 /                  `hhhhhhhhhhhhhhhhhhhh
 6034 /      .+o+        `hhhhhhhhhhhhhhhhhhhh
 6035 /     -hhhhh       `hhhhhhhhhhhhhhhhhhhh
 6036 /     ohhhhho      `hhhhhhhhhhhhhhhhhhhh
 6037 /:::+`hhhhoos`     `hhhhhhhhhhhhhhhhhs+`
 6038    `--/:`   /:     `hhhhhhhhhhhho/-
 6039             -/:.   `hhhhhhs+:-`
 6040                ::::/ho/-`
 6041EOF
 6042        ;;
 6043
 6044        "ARCHlabs"*)
 6045            set_colors 6 6 7 1
 6046            read -rd '' ascii_data <<'EOF'
 6047${c1}                     'c'
 6048                    'kKk,
 6049                   .dKKKx.
 6050                  .oKXKXKd.
 6051                 .l0XXXXKKo.
 6052                 c0KXXXXKX0l.
 6053                :0XKKOxxOKX0l.
 6054               :OXKOc. .c0XX0l.
 6055              :OK0o. ${c4}...${c1}'dKKX0l.
 6056             :OX0c  ${c4};xOx'${c1}'dKXX0l.
 6057            :0KKo.${c4}.o0XXKd'.${c1}lKXX0l.
 6058           c0XKd.${c4}.oKXXXXKd..${c1}oKKX0l.
 6059         .c0XKk;${c4}.l0K0OO0XKd..${c1}oKXXKo.
 6060        .l0XXXk:${c4},dKx,.'l0XKo.${c1}.kXXXKo.
 6061       .o0XXXX0d,${c4}:x;   .oKKx'${c1}.dXKXXKd.
 6062      .oKXXXXKK0c.${c4};.    :00c'${c1}cOXXXXXKd.
 6063     .dKXXXXXXXXk,${c4}.     cKx'${c1}'xKXXXXXXKx'
 6064    'xKXXXXK0kdl:.     ${c4}.ok; ${c1}.cdk0KKXXXKx'
 6065   'xKK0koc,..         ${c4}'c, ${c1}    ..,cok0KKk,
 6066  ,xko:'.             ${c4}.. ${c1}           .':okx;
 6067 .,'.                                   .',.
 6068EOF
 6069        ;;
 6070
 6071        "ArchStrike"*)
 6072            set_colors 8 6
 6073            read -rd '' ascii_data <<'EOF'
 6074${c1}                   *   
 6075                  **.
 6076                 ****
 6077                ******
 6078                *******
 6079              ** *******
 6080             **** *******
 6081            ${c1}****${c2}_____${c1}***${c2}/${c1}*
 6082           ***${c2}/${c1}*******${c2}//${c1}***
 6083          **${c2}/${c1}********${c2}///${c1}*${c2}/${c1}**
 6084         **${c2}/${c1}*******${c2}////${c1}***${c2}/${c1}**
 6085        **${c2}/${c1}****${c2}//////.,${c1}****${c2}/${c1}**
 6086       ***${c2}/${c1}*****${c2}/////////${c1}**${c2}/${c1}***
 6087      ****${c2}/${c1}****    ${c2}/////${c1}***${c2}/${c1}****
 6088     ******${c2}/${c1}***  ${c2}////   ${c1}**${c2}/${c1}******
 6089    ********${c2}/${c1}* ${c2}///      ${c1}*${c2}/${c1}********
 6090  ,******     ${c2}// ______ /    ${c1}******,
 6091EOF
 6092        ;;
 6093
 6094        *"XFerience"*)
 6095            set_colors 6 6 7 1
 6096            read -rd '' ascii_data <<'EOF'
 6097${c1}           ``--:::::::-.`
 6098        .-/+++ooooooooo+++:-`
 6099     `-/+oooooooooooooooooo++:.
 6100    -/+oooooo/+ooooooooo+/ooo++:`
 6101  `/+oo++oo.   .+oooooo+.-: +:-o+-
 6102 `/+o/.  -o.    :oooooo+ ```:.+oo+-
 6103`:+oo-    -/`   :oooooo+ .`-`+oooo/.
 6104.+ooo+.    .`   `://///+-+..oooooo+:`
 6105-+ooo:`                ``.-+oooooo+/`
 6106-+oo/`                       :+oooo/.
 6107.+oo:            ..-/. .      -+oo+/`
 6108`/++-         -:::++::/.      -+oo+-
 6109 ./o:          `:///+-     `./ooo+:`
 6110  .++-         `` /-`   -:/+oooo+:`
 6111   .:+/:``          `-:ooooooo++-
 6112     ./+o+//:...../+oooooooo++:`
 6113       `:/++ooooooooooooo++/-`
 6114          `.-//++++++//:-.`
 6115               ``````
 6116EOF
 6117        ;;
 6118
 6119        "ArchMerge"*)
 6120            set_colors 6 6 7 1
 6121            read -rd '' ascii_data <<'EOF'
 6122${c1}                    y:
 6123                  sMN-
 6124                 +MMMm`
 6125                /MMMMMd`
 6126               :NMMMMMMy
 6127              -NMMMMMMMMs
 6128             .NMMMMMMMMMM+
 6129            .mMMMMMMMMMMMM+
 6130            oNMMMMMMMMMMMMM+
 6131          `+:-+NMMMMMMMMMMMM+
 6132          .sNMNhNMMMMMMMMMMMM/
 6133        `hho/sNMMMMMMMMMMMMMMM/
 6134       `.`omMMmMMMMMMMMMMMMMMMM+
 6135      .mMNdshMMMMd+::oNMMMMMMMMMo
 6136     .mMMMMMMMMM+     `yMMMMMMMMMs
 6137    .NMMMMMMMMM/        yMMMMMMMMMy
 6138   -NMMMMMMMMMh         `mNMMMMMMMMd`
 6139  /NMMMNds+:.`             `-/oymMMMm.
 6140 +Mmy/.                          `:smN:
 6141/+.                                  -o.
 6142EOF
 6143        ;;
 6144
 6145        "Arch"*)
 6146            set_colors 6 6 7 1
 6147            read -rd '' ascii_data <<'EOF'
 6148${c1}                   -`
 6149                  .o+`
 6150                 `ooo/
 6151                `+oooo:
 6152               `+oooooo:
 6153               -+oooooo+:
 6154             `/:-:++oooo+:
 6155            `/++++/+++++++:
 6156           `/++++++++++++++:
 6157          `/+++o${c2}oooooooo${c1}oooo/`
 6158${c2}         ${c1}./${c2}ooosssso++osssssso${c1}+`
 6159${c2}        .oossssso-````/ossssss+`
 6160       -osssssso.      :ssssssso.
 6161      :osssssss/        osssso+++.
 6162     /ossssssss/        +ssssooo/-
 6163   `/ossssso+/:-        -:/+osssso+-
 6164  `+sso+:-`                 `.-/+oso:
 6165 `++:.                           `-/+/
 6166 .`                                 `/
 6167EOF
 6168        ;;
 6169
 6170        "artix_small"*)
 6171            set_colors 6 6 7 1
 6172            read -rd '' ascii_data <<'EOF'
 6173${c1}      /\\
 6174     /  \\
 6175    /`'.,\\
 6176   /     ',
 6177  /      ,`\\
 6178 /   ,.'`.  \\
 6179/.,'`     `'.\\
 6180EOF
 6181        ;;
 6182
 6183        "Artix"*)
 6184            set_colors 6 6 7 1
 6185            read -rd '' ascii_data <<'EOF'
 6186${c1}                   '
 6187                  'o'
 6188                 'ooo'
 6189                'ooxoo'
 6190               'ooxxxoo'
 6191              'oookkxxoo'
 6192             'oiioxkkxxoo'
 6193            ':;:iiiioxxxoo'
 6194               `'.;::ioxxoo'
 6195          '-.      `':;jiooo'
 6196         'oooio-..     `'i:io'
 6197        'ooooxxxxoio:,.   `'-;'
 6198       'ooooxxxxxkkxoooIi:-.  `'
 6199      'ooooxxxxxkkkkxoiiiiiji'
 6200     'ooooxxxxxkxxoiiii:'`     .i'
 6201    'ooooxxxxxoi:::'`       .;ioxo'
 6202   'ooooxooi::'`         .:iiixkxxo'
 6203  'ooooi:'`                `'';ioxxo'
 6204 'i:'`                          '':io'
 6205'`                                   `'
 6206EOF
 6207        ;;
 6208
 6209        "Arya"*)
 6210            set_colors 2 1
 6211            read -rd '' ascii_data <<'EOF'
 6212${c1}                `oyyy/${c2}-yyyyyy+
 6213${c1}               -syyyy/${c2}-yyyyyy+
 6214${c1}              .syyyyy/${c2}-yyyyyy+
 6215${c1}              :yyyyyy/${c2}-yyyyyy+
 6216${c1}           `/ :yyyyyy/${c2}-yyyyyy+
 6217${c1}          .+s :yyyyyy/${c2}-yyyyyy+
 6218${c1}         .oys :yyyyyy/${c2}-yyyyyy+
 6219${c1}        -oyys :yyyyyy/${c2}-yyyyyy+
 6220${c1}       :syyys :yyyyyy/${c2}-yyyyyy+
 6221${c1}      /syyyys :yyyyyy/${c2}-yyyyyy+
 6222${c1}     +yyyyyys :yyyyyy/${c2}-yyyyyy+
 6223${c1}   .oyyyyyyo. :yyyyyy/${c2}-yyyyyy+ ---------
 6224${c1}  .syyyyyy+`  :yyyyyy/${c2}-yyyyy+-+syyyyyyyy
 6225${c1} -syyyyyy/    :yyyyyy/${c2}-yyys:.syyyyyyyyyy
 6226${c1}:syyyyyy/     :yyyyyy/${c2}-yyo.:syyyyyyyyyyy
 6227EOF
 6228        ;;
 6229
 6230        "AsteroidOS"*)
 6231            set_colors 160 208 202 214
 6232            read -rd '' ascii_data <<'EOF'
 6233${c1}                    ***
 6234${c1}                   *****
 6235${c1}                **********
 6236${c1}              ***************
 6237${c1}           *///****////****////.
 6238${c2}         (/////// /////// ///////(
 6239${c2}      /(((((//*     //,     //((((((.
 6240${c2}    (((((((((((     (((        ((((((((
 6241${c2} *(((((((((((((((((((((((        ((((((((
 6242${c3}    (((((#(((((((#(((((        ((#(((((
 6243${c3}     (#(#(#####(#(#,       ####(#(#
 6244${c3}         #########        ########
 6245${c3}           /########   ########
 6246${c4}              #######%#######
 6247${c4}                (#%%%%%%%#
 6248${c4}                   %%%%%
 6249${c4}                    %%%
 6250EOF
 6251        ;;
 6252
 6253        "Bedrock"*)
 6254            set_colors 8 7
 6255            read -rd '' ascii_data <<'EOF'
 6256${c1}--------------------------------------
 6257--------------------------------------
 6258--------------------------------------
 6259---${c2}\\\\\\\\\\\\\\\\\\\\\\\\${c1}-----------------------
 6260----${c2}\\\\\\      \\\\\\${c1}----------------------
 6261-----${c2}\\\\\\      \\\\\\${c1}---------------------
 6262------${c2}\\\\\\      \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\${c1}------
 6263-------${c2}\\\\\\                    \\\\\\${c1}-----
 6264--------${c2}\\\\\\                    \\\\\\${c1}----
 6265---------${c2}\\\\\\        ______      \\\\\\${c1}---
 6266----------${c2}\\\\\\                   ///${c1}---
 6267-----------${c2}\\\\\\                 ///${c1}----
 6268------------${c2}\\\\\\               ///${c1}-----
 6269-------------${c2}\\\\\\////////////////${c1}------
 6270--------------------------------------
 6271--------------------------------------
 6272--------------------------------------
 6273EOF
 6274        ;;
 6275
 6276        "Bitrig"*)
 6277            set_colors 2 7
 6278            read -rd '' ascii_data <<'EOF'
 6279${c1}   `hMMMMN+
 6280   -MMo-dMd`
 6281   oMN- oMN`
 6282   yMd  /NM:
 6283  .mMmyyhMMs
 6284  :NMMMhsmMh
 6285  +MNhNNoyMm-
 6286  hMd.-hMNMN:
 6287  mMmsssmMMMo
 6288 .MMdyyhNMMMd
 6289 oMN.`/dMddMN`
 6290 yMm/hNm+./MM/
 6291.dMMMmo.``.NMo
 6292:NMMMNmmmmmMMh
 6293/MN/-------oNN:
 6294hMd.       .dMh
 6295sm/         /ms
 6296EOF
 6297        ;;
 6298
 6299        "BlackArch"*)
 6300            set_colors 1 1 0 1
 6301            read -rd '' ascii_data <<'EOF'
 6302${c3}                   00
 6303                   11
 6304                  ====${c1}
 6305                  .${c3}//${c1}
 6306                 `o${c3}//${c1}:
 6307                `+o${c3}//${c1}o:
 6308               `+oo${c3}//${c1}oo:
 6309               -+oo${c3}//${c1}oo+:
 6310             `/:-:+${c3}//${c1}ooo+:
 6311            `/+++++${c3}//${c1}+++++:
 6312           `/++++++${c3}//${c1}++++++:
 6313          `/+++o${c2}ooo${c3}//${c2}ooo${c1}oooo/`
 6314${c2}         ${c1}./${c2}ooosssso${c3}//${c2}osssssso${c1}+`
 6315${c2}        .oossssso-`${c3}//${c1}`/ossssss+`
 6316       -osssssso.  ${c3}//${c1}  :ssssssso.
 6317      :osssssss/   ${c3}//${c1}   osssso+++.
 6318     /ossssssss/   ${c3}//${c1}   +ssssooo/-
 6319   `/ossssso+/:-   ${c3}//${c1}   -:/+osssso+-
 6320  `+sso+:-`        ${c3}//${c1}       `.-/+oso:
 6321 `++:.             ${c3}//${c1}            `-/+/
 6322 .`                ${c3}/${c1}                `/
 6323EOF
 6324        ;;
 6325
 6326        "BLAG"*)
 6327            set_colors 5 7
 6328            read -rd '' ascii_data <<'EOF'
 6329${c1}             d
 6330            ,MK:
 6331            xMMMX:
 6332           .NMMMMMX;
 6333           lMMMMMMMM0clodkO0KXWW:
 6334           KMMMMMMMMMMMMMMMMMMX'
 6335      .;d0NMMMMMMMMMMMMMMMMMMK.
 6336 .;dONMMMMMMMMMMMMMMMMMMMMMMx
 6337'dKMMMMMMMMMMMMMMMMMMMMMMMMl
 6338   .:xKWMMMMMMMMMMMMMMMMMMM0.
 6339       .:xNMMMMMMMMMMMMMMMMMK.
 6340          lMMMMMMMMMMMMMMMMMMK.
 6341          ,MMMMMMMMWkOXWMMMMMM0
 6342          .NMMMMMNd.     `':ldko
 6343           OMMMK:
 6344           oWk,
 6345           ;:
 6346EOF
 6347        ;;
 6348
 6349        "BlankOn"*)
 6350            set_colors 1 7 3
 6351            read -rd '' ascii_data <<'EOF'
 6352${c2}        `./ohdNMMMMNmho+.` ${c1}       .+oo:`
 6353${c2}      -smMMMMMMMMMMMMMMMMmy-`    ${c1}`yyyyy+
 6354${c2}   `:dMMMMMMMMMMMMMMMMMMMMMMd/`  ${c1}`yyyyys
 6355${c2}  .hMMMMMMMNmhso/++symNMMMMMMMh- ${c1}`yyyyys
 6356${c2} -mMMMMMMms-`         -omMMMMMMN-${c1}.yyyyys
 6357${c2}.mMMMMMMy.              .yMMMMMMm:${c1}yyyyys
 6358${c2}sMMMMMMy                 `sMMMMMMh${c1}yyyyys
 6359${c2}NMMMMMN:                  .NMMMMMN${c1}yyyyys
 6360${c2}MMMMMMm.                   NMMMMMN${c1}yyyyys
 6361${c2}hMMMMMM+                  /MMMMMMN${c1}yyyyys
 6362${c2}:NMMMMMN:                :mMMMMMM+${c1}yyyyys
 6363${c2} oMMMMMMNs-            .sNMMMMMMs.${c1}yyyyys
 6364${c2}  +MMMMMMMNho:.`  `.:ohNMMMMMMNo ${c1}`yyyyys
 6365${c2}   -hMMMMMMMMNNNmmNNNMMMMMMMMh-  ${c1}`yyyyys
 6366${c2}     :yNMMMMMMMMMMMMMMMMMMNy:`   ${c1}`yyyyys
 6367${c2}       .:sdNMMMMMMMMMMNds/.      ${c1}`yyyyyo
 6368${c2}           `.:/++++/:.`           ${c1}:oys+.
 6369EOF
 6370        ;;
 6371
 6372        "BlueLight"*)
 6373            set_colors 7 4
 6374            read -rd '' ascii_data <<'EOF'
 6375${c1}              oMMNMMMMMMMMMMMMMMMMMMMMMM
 6376              oMMMMMMMMMMMMMMMMMMMMMMMMM
 6377              oMMMMMMMMMMMMMMMMMMMMMMMMM
 6378              oMMMMMMMMMMMMMMMMMMMMMMMMM
 6379              -+++++++++++++++++++++++mM${c2}
 6380             ```````````````````````..${c1}dM${c2}
 6381           ```````````````````````....${c1}dM${c2}
 6382         ```````````````````````......${c1}dM${c2}
 6383       ```````````````````````........${c1}dM${c2}
 6384     ```````````````````````..........${c1}dM${c2}
 6385   ```````````````````````............${c1}dM${c2}
 6386.::::::::::::::::::::::-..............${c1}dM${c2}
 6387 `-+yyyyyyyyyyyyyyyyyyyo............${c1}+mMM${c2}
 6388     -+yyyyyyyyyyyyyyyyo..........${c1}+mMMMM${c2}
 6389        ./syyyyyyyyyyyyo........${c1}+mMMMMMM${c2}
 6390           ./oyyyyyyyyyo......${c1}+mMMMMMMMM${c2}
 6391              omdyyyyyyo....${c1}+mMMMMMMMMMM${c2}
 6392              ${c1}oMMM${c2}mdhyyo..${c1}+mMMMMMMMMMMMM
 6393              oNNNNNNm${c2}dso${c1}mMMMMMMMMMMMMMM
 6394EOF
 6395        ;;
 6396
 6397       "Bodhi"*)
 6398           set_colors 7 11 2
 6399           read -rd '' ascii_data <<'EOF'
 6400${c1}|           ${c2},,mmKKKKKKKKWm,,
 6401 ${c1}'      ${c2},aKKP${c1}LL**********|L*${c2}TKp,
 6402   ${c1}t  ${c2}aKP${c1}L**```          ```**L${c2}*Kp
 6403    IX${c1}EL${c3}L,wwww,              ${c1}``*||${c2}Kp
 6404  ,#P${c1}L|${c3}KKKpPP@IPPTKmw,          ${c1}`*||${c2}K
 6405 ,K${c1}LL*${c3}{KKKKKKPPb$KPhpKKPKp        ${c1}`||${c2}K
 6406 #${c1}PL  ${c3}!KKKKKKPhKPPP$KKEhKKKKp      ${c1}`||${c2}K
 6407!H${c1}L*   ${c3}1KKKKKKKphKbPKKKKKK$KKp      ${c1}`|I${c2}W
 6408$${c1}bL     ${c3}KKKKKKKKBQKhKbKKKKKKKK       ${c1}|I${c2}N
 6409$${c1}bL     ${c3}!KKKKKKKKKKNKKKKKKKPP`       ${c1}|I${c2}b
 6410TH${c1}L*     ${c3}TKKKKKK##KKKN@KKKK^         ${c1}|I${c2}M
 6411 K@${c1}L      ${c3}*KKKKKKKKKKKEKE5          ${c1}||${c2}K
 6412 `NL${c1}L      ${c3}`KKKKKKKKKK"```|L       ${c1}||${c2}#P
 6413  `K@${c1}LL       ${c3}`"**"`        ${c1}'.   :||${c2}#P
 6414    Yp${c1}LL                      ${c1}' |L${c2}$M`
 6415     `Tp${c1}pLL,                ,|||${c2}p'L
 6416        "Kpp${c1}LL++,.,    ,,|||$${c2}#K*   ${c1}'.
 6417           ${c2}`"MKWpppppppp#KM"`        ${c1}`h,
 6418EOF
 6419       ;;
 6420
 6421       "bonsai"*)
 6422           set_colors 6 2 3
 6423           read -rd '' ascii_data <<'EOF'
 6424${c2}   ,####,
 6425   ${c2}#######,  ${c2},#####,
 6426   ${c2}#####',#  ${c2}'######
 6427    ${c2}''###'${c3}';,,,'${c2}###'
 6428   ${c3}       ,;  ''''
 6429   ${c3}      ;;;   ${c2},#####,
 6430   ${c3}     ;;;'  ,,;${c2};;###
 6431   ${c3}     ';;;;''${c2}'####'
 6432   ${c3}      ;;;
 6433   ${c3}   ,.;;';'',,,
 6434   ${c3}  '     '
 6435${c1} #
 6436 #                        O
 6437 ##, ,##,',##, ,##  ,#,   ,
 6438 # # #  # #''# #,,  # #   #
 6439 '#' '##' #  #  ,,# '##;, #
 6440EOF
 6441       ;;
 6442
 6443       "BSD")
 6444            set_colors 1 7 4 3 6
 6445            read -rd '' ascii_data <<'EOF'
 6446${c1}             ,        ,
 6447            /(        )`
 6448            \ \___   / |
 6449            /- _  `-/  '
 6450           (${c2}/\/ \ ${c1}\   /\
 6451           ${c2}/ /   | `    ${c1}\
 6452           ${c3}O O   ${c2}) ${c1}/    |
 6453           ${c2}`-^--'${c1}`<     '
 6454          (_.)  _  )   /
 6455           `.___/`    /
 6456             `-----' /
 6457${c4}<----.     __ / __   \
 6458${c4}<----|====${c1}O)))${c4}==${c1}) \) /${c4}====|
 6459<----'    ${c1}`--' `.__,' \
 6460             |        |
 6461              \       /       /\
 6462         ${c5}______${c1}( (_  / \______/
 6463       ${c5},'  ,-----'   |
 6464       `--{__________)
 6465EOF
 6466        ;;
 6467
 6468        "BunsenLabs"*)
 6469            set_colors fg 7
 6470            read -rd '' ascii_data <<'EOF'
 6471${c1}        `++
 6472      -yMMs
 6473    `yMMMMN`
 6474   -NMMMMMMm.
 6475  :MMMMMMMMMN-
 6476 .NMMMMMMMMMMM/
 6477 yMMMMMMMMMMMMM/
 6478`MMMMMMNMMMMMMMN.
 6479-MMMMN+ /mMMMMMMy
 6480-MMMm`   `dMMMMMM
 6481`MMN.     .NMMMMM.
 6482 hMy       yMMMMM`
 6483 -Mo       +MMMMN
 6484  /o       +MMMMs
 6485           +MMMN`
 6486           hMMM:
 6487          `NMM/
 6488          +MN:
 6489          mh.
 6490         -/
 6491EOF
 6492        ;;
 6493
 6494        "Calculate"*)
 6495            set_colors 7 3
 6496            read -rd '' ascii_data <<'EOF'
 6497${c1}                              ......
 6498                           ,,+++++++,.
 6499                         .,,,....,,,${c2}+**+,,.${c1}
 6500                       ............,${c2}++++,,,${c1}
 6501                      ...............
 6502                    ......,,,........
 6503                  .....+*#####+,,,*+.
 6504              .....,*###############,..,,,,,,..
 6505           ......,*#################*..,,,,,..,,,..
 6506         .,,....*####################+***+,,,,...,++,
 6507       .,,..,..*#####################*,
 6508     ,+,.+*..*#######################.
 6509   ,+,,+*+..,########################*
 6510.,++++++.  ..+##**###################+
 6511.....      ..+##***#################*.
 6512           .,.*#*****##############*.
 6513           ..,,*********#####****+.
 6514     ${c2}.,++*****+++${c1}*****************${c2}+++++,.${c1}
 6515      ${c2},++++++**+++++${c1}***********${c2}+++++++++,${c1}
 6516     ${c2}.,,,,++++,..  .,,,,,.....,+++,.,,${c1}
 6517EOF
 6518        ;;
 6519    "Carbs"*)
 6520        set_colors 4 5 4 4 4 4
 6521        read -rd '' ascii_data <<'EOF'
 6522${c2}             ..........
 6523          ..,;:ccccccc:;'..
 6524       ..,clllc:;;;;;:cllc,.
 6525      .,cllc,...     ..';;'.
 6526     .;lol;..           ..
 6527    .,lol;.
 6528    .coo:.
 6529   .'lol,.
 6530   .,lol,.
 6531   .,lol,.
 6532    'col;.
 6533    .:ooc'.
 6534    .'col:.
 6535     .'cllc'..          .''.
 6536      ..:lolc,'.......',cll,.
 6537        ..;cllllccccclllc;'.
 6538          ...',;;;;;;,,...
 6539                .....
 6540EOF
 6541        ;;
 6542
 6543    "CBL-Mariner"*)
 6544        set_colors 6
 6545        read -rd '' ascii_data <<'EOF'
 6546${c1}                    .
 6547                  :-  .
 6548                :==. .=:
 6549              :===:  -==:
 6550            :-===:  .====:
 6551          :-====-   -=====:
 6552         -======   :=======:
 6553        -======.  .=========:
 6554       -======:   -==========.
 6555      -======-    -===========.
 6556     :======-      :===========.
 6557    :=======.       .-==========.
 6558   :=======:          -==========.
 6559  :=======-            :==========.
 6560 :=======-              .-========-
 6561:--------.                :========-
 6562                    ..:::--=========-
 6563            ..::---================-=-
 6564EOF
 6565        ;;
 6566
 6567        "CelOS"*)
 6568            set_colors 4 6 0 5
 6569            read -rd '' ascii_data <<'EOF'
 6570
 6571${c4}                     .,cmmmmmmmmmmmc,.
 6572                .,cmMMMMMMMMMMMMMMMMMMMMmc.
 6573             .cMMMMMMMMMMMMMMMMMMMMMMMMMMMmc.
 6574           .cMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMc.
 6575         ,:MMM ${c3}####################################${c4}
 6576        cMMMMMMmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmc.
 6577       .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM.
 6578      .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMc
 6579      "******************************MMMMMMMMMMMMMc:
 6580${c3}#################################### ${c4}MMMMMMMMMMMMMc
 6581      "MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM:
 6582       "MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
 6583       'MMMMMMMMM*******************************:
 6584        \"MMMMMM ${c3}#####################################
 6585         ${c4}`:MMMMMMmmmmmmmmmmmmmmmmmmmmmmmmmmmmm;
 6586           `"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
 6587             `":MMMMMMMMMMMMMMMMMMMMMMMMM;'
 6588                `":MMMMMMMMMMMMMMMMMMM:"
 6589                     "************"
 6590
 6591
 6592
 6593
 6594EOF
 6595        ;;
 6596
 6597        "centos_small"*)
 6598            set_colors 3 2 4 5 7
 6599            read -rd '' ascii_data <<'EOF'
 6600${c2} ____${c1}^${c4}____
 6601${c2} |\\  ${c1}|${c4}  /|
 6602${c2} | \\ ${c1}|${c4} / |
 6603${c4}<---- ${c3}---->
 6604${c3} | / ${c2}|${c1} \\ |
 6605${c3} |/__${c2}|${c1}__\\|
 6606${c2}     v
 6607EOF
 6608        ;;
 6609
 6610        "CentOS"*)
 6611            set_colors 3 2 4 5 7
 6612            read -rd '' ascii_data <<'EOF'
 6613${c1}                 ..
 6614               .PLTJ.
 6615              <><><><>
 6616     ${c2}KKSSV' 4KKK ${c1}LJ${c4} KKKL.'VSSKK
 6617     ${c2}KKV' 4KKKKK ${c1}LJ${c4} KKKKAL 'VKK
 6618     ${c2}V' ' 'VKKKK ${c1}LJ${c4} KKKKV' ' 'V
 6619     ${c2}.4MA.' 'VKK ${c1}LJ${c4} KKV' '.4Mb.
 6620${c4}   . ${c2}KKKKKA.' 'V ${c1}LJ${c4} V' '.4KKKKK ${c3}.
 6621${c4} .4D ${c2}KKKKKKKA.'' ${c1}LJ${c4} ''.4KKKKKKK ${c3}FA.
 6622${c4}<QDD ++++++++++++  ${c3}++++++++++++ GFD>
 6623${c4} 'VD ${c3}KKKKKKKK'.. ${c2}LJ ${c1}..'KKKKKKKK ${c3}FV
 6624${c4}   ' ${c3}VKKKKK'. .4 ${c2}LJ ${c1}K. .'KKKKKV ${c3}'
 6625     ${c3} 'VK'. .4KK ${c2}LJ ${c1}KKA. .'KV'
 6626     ${c3}A. . .4KKKK ${c2}LJ ${c1}KKKKA. . .4
 6627     ${c3}KKA. 'KKKKK ${c2}LJ ${c1}KKKKK' .4KK
 6628     ${c3}KKSSA. VKKK ${c2}LJ ${c1}KKKV .4SSKK
 6629${c2}              <><><><>
 6630               'MKKM'
 6631                 ''
 6632EOF
 6633        ;;
 6634
 6635        "Chakra"*)
 6636            set_colors 4 5 7 6
 6637            read -rd '' ascii_data <<'EOF'
 6638${c1}     _ _ _        "kkkkkkkk.
 6639   ,kkkkkkkk.,    'kkkkkkkkk,
 6640   ,kkkkkkkkkkkk., 'kkkkkkkkk.
 6641  ,kkkkkkkkkkkkkkkk,'kkkkkkkk,
 6642 ,kkkkkkkkkkkkkkkkkkk'kkkkkkk.
 6643  "''"''',;::,,"''kkk''kkkkk;   __
 6644      ,kkkkkkkkkk, "k''kkkkk' ,kkkk
 6645    ,kkkkkkk' ., ' .: 'kkkk',kkkkkk
 6646  ,kkkkkkkk'.k'   ,  ,kkkk;kkkkkkkkk
 6647 ,kkkkkkkk';kk 'k  "'k',kkkkkkkkkkkk
 6648.kkkkkkkkk.kkkk.'kkkkkkkkkkkkkkkkkk'
 6649;kkkkkkkk''kkkkkk;'kkkkkkkkkkkkk''
 6650'kkkkkkk; 'kkkkkkkk.,""''"''""
 6651  ''kkkk;  'kkkkkkkkkk.,
 6652     ';'    'kkkkkkkkkkkk.,
 6653             ';kkkkkkkkkk'
 6654               ';kkkkkk'
 6655                  "''"
 6656EOF
 6657        ;;
 6658
 6659        "ChaletOS"*)
 6660            set_colors 4 7 1
 6661            read -rd '' ascii_data <<'EOF'
 6662${c1}             `.//+osso+/:``
 6663         `/sdNNmhyssssydmNNdo:`
 6664       :hNmy+-`          .-+hNNs-
 6665     /mMh/`       `+:`       `+dMd:
 6666   .hMd-        -sNNMNo.  /yyy  /mMs`
 6667  -NM+       `/dMd/--omNh::dMM   `yMd`
 6668 .NN+      .sNNs:/dMNy:/hNmo/s     yMd`
 6669 hMs    `/hNd+-smMMMMMMd+:omNy-    `dMo
 6670:NM.  .omMy:/hNMMMMMMMMMMNy:/hMd+`  :Md`
 6671/Md` `sm+.omMMMMMMMMMMMMMMMMd/-sm+  .MN:
 6672/Md`      MMMMMMMMMMMMMMMMMMMN      .MN:
 6673:NN.      MMMMMMm....--NMMMMMN      -Mm.
 6674`dMo      MMMMMMd      mMMMMMN      hMs
 6675 -MN:     MMMMMMd      mMMMMMN     oMm`
 6676  :NM:    MMMMMMd      mMMMMMN    +Mm-
 6677   -mMy.  mmmmmmh      dmmmmmh  -hMh.
 6678     oNNs-                    :yMm/
 6679      .+mMdo:`            `:smMd/`
 6680         -ohNNmhsoo++osshmNNh+.
 6681            `./+syyhhyys+:``
 6682EOF
 6683        ;;
 6684
 6685        "Chapeau"*)
 6686            set_colors 2 7
 6687            read -rd '' ascii_data <<'EOF'
 6688${c1}               .-/-.
 6689            ////////.
 6690          ////////${c2}y+${c1}//.
 6691        ////////${c2}mMN${c1}/////.
 6692      ////////${c2}mMN+${c1}////////.
 6693    ////////////////////////.
 6694  /////////+${c2}shhddhyo${c1}+////////.
 6695 ////////${c2}ymMNmdhhdmNNdo${c1}///////.
 6696///////+${c2}mMms${c1}////////${c2}hNMh${c1}///////.
 6697///////${c2}NMm+${c1}//////////${c2}sMMh${c1}///////
 6698//////${c2}oMMNmmmmmmmmmmmmMMm${c1}///////
 6699//////${c2}+MMmssssssssssssss+${c1}///////
 6700`//////${c2}yMMy${c1}////////////////////
 6701 `//////${c2}smMNhso++oydNm${c1}////////
 6702  `///////${c2}ohmNMMMNNdy+${c1}///////
 6703    `//////////${c2}++${c1}//////////
 6704       `////////////////.
 6705           -////////-
 6706EOF
 6707        ;;
 6708
 6709        "Chrom"*)
 6710            set_colors 2 1 3 4 7
 6711            read -rd '' ascii_data <<'EOF'
 6712${c2}            .,:loool:,.
 6713        .,coooooooooooooc,.
 6714     .,lllllllllllllllllllll,.
 6715    ;ccccccccccccccccccccccccc;
 6716${c1}  '${c2}ccccccccccccccccccccccccccccc.
 6717${c1} ,oo${c2}c::::::::okO${c5}000${c3}0OOkkkkkkkkkkk:
 6718${c1}.ooool${c2};;;;:x${c5}K0${c4}kxxxxxk${c5}0X${c3}K0000000000.
 6719${c1}:oooool${c2};,;O${c5}K${c4}ddddddddddd${c5}KX${c3}000000000d
 6720${c1}lllllool${c2};l${c5}N${c4}dllllllllllld${c5}N${c3}K000000000
 6721${c1}lllllllll${c2}o${c5}M${c4}dccccccccccco${c5}W${c3}K000000000
 6722${c1};cllllllllX${c5}X${c4}c:::::::::c${c5}0X${c3}000000000d
 6723${c1}.ccccllllllO${c5}Nk${c4}c;,,,;cx${c5}KK${c3}0000000000.
 6724${c1} .cccccclllllxOO${c5}OOO${c1}Okx${c3}O0000000000;
 6725${c1}  .:ccccccccllllllllo${c3}O0000000OOO,
 6726${c1}    ,:ccccccccclllcd${c3}0000OOOOOOl.
 6727${c1}      '::ccccccccc${c3}dOOOOOOOkx:.
 6728${c1}        ..,::cccc${c3}xOOOkkko;.
 6729${c1}            ..,:${c3}dOkxl:.
 6730EOF
 6731        ;;
 6732
 6733        "cleanjaro_small"*)
 6734            set_colors 7 7
 6735            read -rd '' ascii_data <<'EOF'
 6736${c1}█████ ██████████
 6737█████ ██████████
 6738█████
 6739█████
 6740█████
 6741████████████████
 6742████████████████
 6743EOF
 6744        ;;
 6745
 6746        "Cleanjaro"*)
 6747            set_colors 7 7
 6748            read -rd '' ascii_data <<'EOF'
 6749${c1}███████▌ ████████████████
 6750███████▌ ████████████████
 6751███████▌ ████████████████
 6752███████▌
 6753███████▌
 6754███████▌
 6755███████▌
 6756███████▌
 6757█████████████████████████
 6758█████████████████████████
 6759█████████████████████████
 6760▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
 6761EOF
 6762        ;;
 6763
 6764        "ClearOS"*)
 6765            set_colors 2
 6766            read -rd '' ascii_data <<'EOF'
 6767${c1}             `.--::::::--.`
 6768         .-:////////////////:-.
 6769      `-////////////////////////-`
 6770     -////////////////////////////-
 6771   `//////////////-..-//////////////`
 6772  ./////////////:      ://///////////.
 6773 `//////:..-////:      :////-..-//////`
 6774 ://////`    -///:.``.:///-`    ://///:
 6775`///////:.     -////////-`    `:///////`
 6776.//:--////:.     -////-`    `:////--://.
 6777./:    .////:.     --`    `:////-    :/.
 6778`//-`    .////:.        `:////-    `-//`
 6779 :///-`    .////:.    `:////-    `-///:
 6780 `/////-`    -///:    :///-    `-/////`
 6781  `//////-   `///:    :///`   .//////`
 6782   `:////:   `///:    :///`   -////:`
 6783     .://:   `///:    :///`   -//:.
 6784       .::   `///:    :///`   -:.
 6785             `///:    :///`
 6786              `...    ...`
 6787EOF
 6788        ;;
 6789
 6790        "Clear Linux OS"* | "Clear_Linux"*)
 6791            set_colors 4 3 7 6
 6792            read -rd '' ascii_data <<'EOF'
 6793${c1}          BBB
 6794       BBBBBBBBB
 6795     BBBBBBBBBBBBBBB
 6796   BBBBBBBBBBBBBBBBBBBB
 6797   BBBBBBBBBBB         BBB
 6798  BBBBBBBB${c2}YYYYY
 6799${c1}  BBBBBBBB${c2}YYYYYY
 6800${c1}  BBBBBBBB${c2}YYYYYYY
 6801${c1}  BBBBBBBBB${c2}YYYYY${c3}W
 6802${c4} GG${c1}BBBBBBBY${c2}YYYY${c3}WWW
 6803${c4} GGG${c1}BBBBBBB${c2}YY${c3}WWWWWWWW
 6804${c4} GGGGGG${c1}BBBBBB${c3}WWWWWWWW
 6805${c4} GGGGGGGG${c1}BBBB${c3}WWWWWWWW
 6806${c4}GGGGGGGGGGG${c1}BBB${c3}WWWWWWW
 6807${c4}GGGGGGGGGGGGG${c1}B${c3}WWWWWW
 6808${c4}GGGGGGGG${c3}WWWWWWWWWWW
 6809${c4}GG${c3}WWWWWWWWWWWWWWWW
 6810 WWWWWWWWWWWWWWWW
 6811      WWWWWWWWWW
 6812          WWW
 6813EOF
 6814        ;;
 6815
 6816        "Clover"*)
 6817            set_colors 2 6
 6818            read -rd '' ascii_data <<'EOF'
 6819${c1}               `omo``omo`
 6820             `oNMMMNNMMMNo`
 6821           `oNMMMMMMMMMMMMNo`
 6822          oNMMMMMMMMMMMMMMMMNo
 6823          `sNMMMMMMMMMMMMMMNs`
 6824     `omo`  `sNMMMMMMMMMMNs`  `omo`
 6825   `oNMMMNo`  `sNMMMMMMNs`  `oNMMMNo`
 6826 `oNMMMMMMMNo`  `oNMMNs`  `oNMMMMMMMNo`
 6827oNMMMMMMMMMMMNo`  `sy`  `oNMMMMMMMMMMMNo
 6828`sNMMMMMMMMMMMMNo.${c2}oNNs${c1}.oNMMMMMMMMMMMMNs`
 6829`oNMMMMMMMMMMMMNs.${c2}oNNs${c1}.oNMMMMMMMMMMMMNo`
 6830oNMMMMMMMMMMMNs`  `sy`  `oNMMMMMMMMMMMNo
 6831 `oNMMMMMMMNs`  `oNMMNo`  `oNMMMMMMMNs`
 6832   `oNMMMNs`  `sNMMMMMMNs`  `oNMMMNs`
 6833     `oNs`  `sNMMMMMMMMMMNs`  `oNs`
 6834          `sNMMMMMMMMMMMMMMNs`
 6835          +NMMMMMMMMMMMMMMMMNo
 6836           `oNMMMMMMMMMMMMNo`
 6837             `oNMMMNNMMMNs`
 6838               `omo``oNs`
 6839EOF
 6840        ;;
 6841
 6842        "Condres"*)
 6843            set_colors 2 3 6
 6844            read -rd '' ascii_data <<'EOF'
 6845${c1}syyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy+${c3}.+.
 6846${c1}`oyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy+${c3}:++.
 6847${c2}/o${c1}+oyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/${c3}oo++.
 6848${c2}/y+${c1}syyyyyyyyyyyyyyyyyyyyyyyyyyyyy${c3}+ooo++.
 6849${c2}/hy+${c1}oyyyhhhhhhhhhhhhhhyyyyyyyyy${c3}+oo+++++.
 6850${c2}/hhh+${c1}shhhhhdddddhhhhhhhyyyyyyy${c3}+oo++++++.
 6851${c2}/hhdd+${c1}oddddddddddddhhhhhyyyys${c3}+oo+++++++.
 6852${c2}/hhddd+${c1}odmmmdddddddhhhhyyyy${c3}+ooo++++++++.
 6853${c2}/hhdddmo${c1}odmmmdddddhhhhhyyy${c3}+oooo++++++++.
 6854${c2}/hdddmmms${c1}/dmdddddhhhhyyys${c3}+oooo+++++++++.
 6855${c2}/hddddmmmy${c1}/hdddhhhhyyyyo${c3}+oooo++++++++++:
 6856${c2}/hhdddmmmmy${c1}:yhhhhyyyyy+${c3}+oooo+++++++++++:
 6857${c2}/hhddddddddy${c1}-syyyyyys+${c3}ooooo++++++++++++:
 6858${c2}/hhhddddddddy${c1}-+yyyy+${c3}/ooooo+++++++++++++:
 6859${c2}/hhhhhdddddhhy${c1}./yo:${c3}+oooooo+++++++++++++/
 6860${c2}/hhhhhhhhhhhhhy${c1}:-.${c3}+sooooo+++++++++++///:
 6861${c2}:sssssssssssso++${c1}${c3}`:/:--------.````````
 6862EOF
 6863        ;;
 6864
 6865        "Container Linux by CoreOS"* | "Container_Linux"*)
 6866            set_colors 4 7 1
 6867            read -rd '' ascii_data <<'EOF'
 6868${c1}                .....
 6869          .';:cccccccc:;'.
 6870        ':ccccclc${c3}lllllllll${c1}cc:.
 6871     .;cccccccc${c3}lllllllllllllll${c1}c,
 6872    ;clllccccc${c3}llllllllllllllllll${c1}c,
 6873  .cllclccccc${c3}lllll${c2}lll${c3}llllllllllll${c1}c:
 6874  ccclclcccc${c3}cllll${c2}kWMMNKk${c3}llllllllll${c1}c:
 6875 :ccclclcccc${c3}llll${c2}oWMMMMMMWO${c3}lllllllll${c1}c,
 6876.ccllllllccc${c3}clll${c2}OMMMMMMMMM0${c3}lllllllll${c1}c
 6877.lllllclcccc${c3}llll${c2}KMMMMMMMMMMo${c3}llllllll${c1}c.
 6878.lllllllcccc${c3}clll${c2}KMMMMMMMMN0${c3}lllllllll${c1}c.
 6879.cclllllcccc${c3}lllld${c2}xkkxxdo${c3}llllllllllc${c1}lc
 6880 :cccllllllcccc${c3}lllccllllcclccc${c1}cccccc;
 6881 .ccclllllllcccccccc${c3}lll${c1}ccccclccccccc
 6882  .cllllllllllclcccclccclccllllcllc
 6883    :cllllllllccclcllllllllllllcc;
 6884     .cccccccccccccclcccccccccc:.
 6885       .;cccclccccccllllllccc,.
 6886          .';ccccclllccc:;..
 6887                .....
 6888EOF
 6889        ;;
 6890
 6891        "crux_small"|KISS*)
 6892            set_colors 4 5 7 6
 6893            read -rd '' ascii_data <<'EOF'
 6894${c1}    ___
 6895   (${c3}.· ${c1}|
 6896   (${c2}<> ${c1}|
 6897  / ${c3}__  ${c1}\\
 6898 ( ${c3}/  \\ ${c1}/|
 6899${c2}_${c1}/\\ ${c3}__)${c1}/${c2}_${c1})
 6900${c2}\/${c1}-____${c2}\/
 6901EOF
 6902        ;;
 6903
 6904        "CRUX"*)
 6905            set_colors 4 5 7 6
 6906            read -rd '' ascii_data <<'EOF'
 6907${c1}         odddd
 6908      oddxkkkxxdoo
 6909     ddcoddxxxdoool
 6910     xdclodod  olol
 6911     xoc  xdd  olol
 6912     xdc  ${c2}k00${c1}Okdlol
 6913     xxd${c2}kOKKKOkd${c1}ldd
 6914     xdco${c2}xOkdlo${c1}dldd
 6915     ddc:cl${c2}lll${c1}oooodo
 6916   odxxdd${c3}xkO000kx${c1}ooxdo
 6917  oxdd${c3}x0NMMMMMMWW0od${c1}kkxo
 6918 oooxd${c3}0WMMMMMMMMMW0o${c1}dxkx
 6919docldkXW${c3}MMMMMMMWWN${c1}Odolco
 6920xx${c2}dx${c1}kxxOKN${c3}WMMWN${c1}0xdoxo::c
 6921${c2}xOkkO${c1}0oo${c3}odOW${c2}WW${c1}XkdodOxc:l
 6922${c2}dkkkxkkk${c3}OKX${c2}NNNX0Oxx${c1}xc:cd
 6923${c2} odxxdx${c3}xllod${c2}ddooxx${c1}dc:ldo
 6924${c2}   lodd${c1}dolccc${c2}ccox${c1}xoloo
 6925EOF
 6926        ;;
 6927
 6928        *"Crystal Linux"*)
 6929            set_colors 13 5
 6930            read -rd '' ascii_data <<'EOF'
 6931${c1}                        mysssym
 6932${c1}                      mysssym
 6933${c1}                    mysssym
 6934${c1}                  mysssym
 6935${c1}                mysssyd
 6936${c1}              mysssyd    N
 6937${c1}            mysssyd    mysym
 6938${c1}          mysssyd      dysssym
 6939${c1}        mysssyd          dysssym
 6940${c1}      mysssyd              dysssym
 6941${c1}      mysssyd              dysssym
 6942${c1}        mysssyd          dysssym
 6943${c1}          mysssyd      dysssym
 6944${c1}            mysym    dysssym
 6945${c1}              N    dysssym
 6946${c1}                 dysssym
 6947${c1}               dysssym
 6948${c1}             dysssym
 6949${c1}           dysssym
 6950${c1}         dysssym
 6951EOF
 6952        ;;
 6953
 6954        *"Cucumber"*)
 6955            set_colors 2 3
 6956            read -rd '' ascii_data <<'EOF'
 6957${c1}           `.-://++++++//:-.`
 6958        `:/+//${c2}::--------${c1}:://+/:`
 6959      -++/:${c2}----..........----${c1}:/++-
 6960    .++:${c2}---...........-......---${c1}:++.
 6961   /+:${c2}---....-::/:/--//:::-....---${c1}:+/
 6962 `++:${c2}--.....:---::/--/::---:.....--${c1}:++`
 6963 /+:${c2}--.....--.--::::-/::--.--.....--${c1}:+/
 6964-o:${c2}--.......-:::://--/:::::-.......--${c1}:o-
 6965/+:${c2}--...-:-::---:::..:::---:--:-...--${c1}:+/
 6966o/:${c2}-...-:.:.-/:::......::/:.--.:-...-${c1}:/o
 6967o/${c2}--...::-:/::/:-......-::::::-/-...-${c1}:/o
 6968/+:${c2}--..-/:/:::--:::..:::--::////-..--${c1}:+/
 6969-o:${c2}--...----::/:::/--/:::::-----...--${c1}:o-
 6970 /+:${c2}--....://:::.:/--/:.::://:....--${c1}:+/
 6971 `++:${c2}--...-:::.--.:..:.--.:/:-...--${c1}:++`
 6972   /+:${c2}---....----:-..-:----....---${c1}:+/
 6973    .++:${c2}---..................---${c1}:++.
 6974      -/+/:${c2}----..........----${c1}:/+/-
 6975        `:/+//${c2}::--------:::${c1}/+/:`
 6976           `.-://++++++//:-.`
 6977EOF
 6978        ;;
 6979
 6980        "CyberOS"*)
 6981            set_colors 50 32 57
 6982            read -rd '' ascii_data <<'EOF'
 6983${c3}             !M$EEEEEEEEEEEP
 6984            .MMMMM000000Nr.
 6985            ${c3}&MMMMMM${c2}MMMMMMMMMMMMM9
 6986           ${c3}~MMM${c1}MMMM${c2}MMMMMMMMMMMMC
 6987      ${c1}"    ${c3}M${c1}MMMMMMM${c2}MMMMMMMMMMs
 6988    ${c1}iM${c2}MMM&&${c1}MMMMMMMM${c2}MMMMMMMM\\
 6989   ${c1}BMMM${c2}MMMMM${c1}MMMMMMM${c2}MMMMMM${c3}"
 6990  ${c1}9MMMMM${c2}MMMMMMM${c1}MMMM${c2}MMMM${c3}MMMf-
 6991        ${c2}sMMMMMMMM${c1}MM${c2}M${c3}MMMMMMMMM3_
 6992         ${c2}+ffffffff${c1}P${c3}MMMMMMMMMMMM0
 6993                    ${c2}CMMMMMMMMMMM
 6994                      }MMMMMMMMM
 6995                        ~MMMMMMM
 6996                          "RMMMM
 6997                            .PMB
 6998EOF
 6999        ;;
 7000
 7001                "dahlia"*)
 7002                    set_colors 1 7 3
 7003                    read -rd '' ascii_data <<'EOF'
 7004${c1}
 7005                  .#.
 7006                *%@@@%*
 7007        .,,,,,(&@@@@@@@&/,,,,,.
 7008       ,#@@@@@@@@@@@@@@@@@@@@@#.
 7009       ,#@@@@@@@&#///#&@@@@@@@#.
 7010     ,/%&@@@@@%/,    .,(%@@@@@&#/.
 7011   *#&@@@@@@#,.         .*#@@@@@@&#,
 7012 .&@@@@@@@@@(            .(@@@@@@@@@&&.
 7013#@@@@@@@@@@(               )@@@@@@@@@@@#
 7014 °@@@@@@@@@@(            .(@@@@@@@@@@@°
 7015   *%@@@@@@@(.           ,#@@@@@@@%*
 7016     ,(&@@@@@@%*.     ./%@@@@@@%(,
 7017       ,#@@@@@@@&(***(&@@@@@@@#.
 7018       ,#@@@@@@@@@@@@@@@@@@@@@#.
 7019        ,*****#&@@@@@@@&(*****,
 7020               ,/%@@@%/.
 7021                  ,#,
 7022EOF
 7023                ;;
 7024
 7025        "debian_small")
 7026            set_colors 1 7 3
 7027            read -rd '' ascii_data <<'EOF'
 7028${c1}  _____
 7029 /  __ \\
 7030|  /    |
 7031|  \\___-
 7032-_
 7033  --_
 7034EOF
 7035        ;;
 7036
 7037        "Debian"*)
 7038            set_colors 1 7 3
 7039            read -rd '' ascii_data <<'EOF'
 7040${c2}       _,met$$$$$gg.
 7041    ,g$$$$$$$$$$$$$$$P.
 7042  ,g$$P"        """Y$$.".
 7043 ,$$P'              `$$$.
 7044',$$P       ,ggs.     `$$b:
 7045`d$$'     ,$P"'   ${c1}.${c2}    $$$
 7046 $$P      d$'     ${c1},${c2}    $$P
 7047 $$:      $$.   ${c1}-${c2}    ,d$$'
 7048 $$;      Y$b._   _,d$P'
 7049 Y$$.    ${c1}`.${c2}`"Y$$$$P"'
 7050${c2} `$$b      ${c1}"-.__
 7051${c2}  `Y$$
 7052   `Y$$.
 7053     `$$b.
 7054       `Y$$b.
 7055          `"Y$b._
 7056              `"""
 7057EOF
 7058        ;;
 7059
 7060        "Deepin"*)
 7061            set_colors 2 7
 7062            read -rd '' ascii_data <<'EOF'
 7063${c1}             ............
 7064         .';;;;;.       .,;,.
 7065      .,;;;;;;;.       ';;;;;;;.
 7066    .;::::::::'     .,::;;,''''',.
 7067   ,'.::::::::    .;;'.          ';
 7068  ;'  'cccccc,   ,' :: '..        .:
 7069 ,,    :ccccc.  ;: .c, '' :.       ,;
 7070.l.     cllll' ., .lc  :; .l'       l.
 7071.c       :lllc  ;cl:  .l' .ll.      :'
 7072.l        'looc. .   ,o:  'oo'      c,
 7073.o.         .:ool::coc'  .ooo'      o.
 7074 ::            .....   .;dddo      ;c
 7075  l:...            .';lddddo.     ,o
 7076   lxxxxxdoolllodxxxxxxxxxc      :l
 7077    ,dxxxxxxxxxxxxxxxxxxl.     'o,
 7078      ,dkkkkkkkkkkkkko;.    .;o;
 7079        .;okkkkkdl;.    .,cl:.
 7080            .,:cccccccc:,.
 7081EOF
 7082        ;;
 7083
 7084        "DesaOS")
 7085            set_colors 2 7
 7086            read -rd '' ascii_data <<'EOF'
 7087${c1}███████████████████████
 7088███████████████████████
 7089███████████████████████
 7090███████████████████████
 7091████████               ███████
 7092████████               ███████
 7093████████               ███████
 7094████████               ███████
 7095████████               ███████
 7096████████               ███████
 7097████████               ███████
 7098██████████████████████████████
 7099██████████████████████████████
 7100████████████████████████
 7101████████████████████████
 7102████████████████████████
 7103EOF
 7104        ;;
 7105
 7106        "Devuan"*)
 7107            set_colors 5 7
 7108            read -rd '' ascii_data <<'EOF'
 7109${c1}   ..,,;;;::;,..
 7110           `':ddd;:,.
 7111                 `'dPPd:,.
 7112                     `:b$$b`.
 7113                        'P$$$d`
 7114                         .$$$$$`
 7115                         ;$$$$$P
 7116                      .:P$$$$$$`
 7117                  .,:b$$$$$$$;'
 7118             .,:dP$$$$$$$$b:'
 7119      .,:;db$$$$$$$$$$Pd'`
 7120 ,db$$$$$$$$$$$$$$b:'`
 7121:$$$$$$$$$$$$b:'`
 7122 `$$$$$bd:''`
 7123   `'''`
 7124EOF
 7125        ;;
 7126
 7127        "DracOS"*)
 7128            set_colors 1 7 3
 7129            read -rd '' ascii_data <<'EOF'
 7130${c1}       `-:/-
 7131          -os:
 7132            -os/`
 7133              :sy+-`
 7134               `/yyyy+.
 7135                 `+yyyyo-
 7136                   `/yyyys:
 7137`:osssoooo++-        +yyyyyy/`
 7138   ./yyyyyyo         yo`:syyyy+.
 7139      -oyyy+         +-   :yyyyyo-
 7140        `:sy:        `.    `/yyyyys:
 7141           ./o/.`           .oyyso+oo:`
 7142              :+oo+//::::///:-.`     `.`
 7143EOF
 7144        ;;
 7145
 7146        "DarkOs")
 7147            set_colors 1 6 5 3 2
 7148            read -rd '' ascii_data <<'EOF'
 7149
 7150${c3}⠀⠀⠀⠀  ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
 7151${c1}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣶⠋⡆⢹⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
 7152${c5}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡆⢀⣤⢛⠛⣠⣿⠀⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
 7153${c6}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣶⣿⠟⣡⠊⣠⣾⣿⠃⣠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
 7154${c2}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣯⣿⠀⠊⣤⣿⣿⣿⠃⣴⣧⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
 7155${c1}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣿⣿⡟⣠⣶⣿⣿⣿⢋⣤⠿⠛⠉⢁⣭⣽⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
 7156${c4}  ⠀⠀⠀⠀⠀⠀ ⠀⣠⠖⡭⢉⣿⣯⣿⣯⣿⣿⣿⣟⣧⠛⢉⣤⣶⣾⣿⣿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
 7157${c5}⠀⠀⠀⠀⠀⠀⠀⠀⣴⣫⠓⢱⣯⣿⢿⠋⠛⢛⠟⠯⠶⢟⣿⣯⣿⣿⣿⣿⣿⣿⣦⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
 7158${c2}⠀⠀⠀⠀⠀⠀⢀⡮⢁⣴⣿⣿⣿⠖⣠⠐⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠛⠛⠛⢿⣶⣄⠀⠀⠀⠀⠀⠀⠀
 7159${c3}⠀⠀⠀⠀⢀⣤⣷⣿⣿⠿⢛⣭⠒⠉⠀⠀⠀⣀⣀⣄⣤⣤⣴⣶⣶⣶⣿⣿⣿⣿⣿⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀
 7160${c1}⠀⢀⣶⠏⠟⠝⠉⢀⣤⣿⣿⣶⣾⣿⣿⣿⣿⣿⣿⣟⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
 7161${c6}⢴⣯⣤⣶⣿⣿⣿⣿⣿⡿⣿⣯⠉⠉⠉⠉⠀⠀⠀⠈⣿⡀⣟⣿⣿⢿⣿⣿⣿⣿⣿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
 7162${c5}⠀⠀⠀⠉⠛⣿⣧⠀⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠃⣿⣿⣯⣿⣦⡀⠀⠉⠻⣿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀
 7163${c3}⠀⠀⠀⠀⠀⠀⠉⢿⣮⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⠀⣯⠉⠉⠛⢿⣿⣷⣄⠀⠈⢻⣆⠀⠀⠀⠀⠀⠀⠀⠀
 7164${c2}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠢⠀⠀⠀⠀⠀⠀⠀⢀⢡⠃⣾⣿⣿⣦⠀⠀⠀⠙⢿⣿⣤⠀⠙⣄⠀⠀⠀⠀⠀⠀⠀
 7165${c6}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢋⡟⢠⣿⣿⣿⠋⢿⣄⠀⠀⠀⠈⡄⠙⣶⣈⡄⠀⠀⠀⠀⠀⠀
 7166${c1}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠚⢲⣿⠀⣾⣿⣿⠁⠀⠀⠉⢷⡀⠀⠀⣇⠀⠀⠈⠻⡀⠀⠀⠀⠀⠀
 7167${c4}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢢⣀⣿⡏⠀⣿⡿⠀⠀⠀⠀⠀⠀⠙⣦⠀⢧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
 7168${c3}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠿⣧⣾⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣮⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
 7169${c5}⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
 7170
 7171EOF
 7172        ;;
 7173
 7174        "Itc"*)
 7175            set_colors 1
 7176            read -rd '' ascii_data <<'EOF'
 7177${c1}....................-==============+...
 7178${c1}....................-==============:...
 7179${c1}...:===========-....-==============:...
 7180${c1}...-===========:....-==============-...
 7181${c1}....*==========+........-::********-...
 7182${c1}....*===========+.:*====**==*+-.-......
 7183${c1}....:============*+-..--:+**====*---...
 7184${c1}......::--........................::...
 7185${c1}..+-:+-.+::*:+::+:-++::++-.:-.*.:++:++.
 7186${c1}..:-:-++++:-::--:+::-::.:++-++:++--:-:.    ⠀⠀⠀⠀⠀
 7187⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
 7188EOF
 7189        ;;
 7190
 7191        "dragonfly_old"*)
 7192            set_colors 1 7 3
 7193            read -rd '' ascii_data <<'EOF'
 7194     ${c1}                   .-.
 7195                 ${c3} ()${c1}I${c3}()
 7196            ${c1} "==.__:-:__.=="
 7197            "==.__/~|~\__.=="
 7198            "==._(  Y  )_.=="
 7199 ${c2}.-'~~""~=--...,__${c1}\/|\/${c2}__,...--=~""~~'-.
 7200(               ..=${c1}\\=${c1}/${c2}=..               )
 7201 `'-.        ,.-"`;${c1}/=\\${c2};"-.,_        .-'`
 7202     `~"-=-~` .-~` ${c1}|=|${c2} `~-. `~-=-"~`
 7203          .-~`    /${c1}|=|${c2}\    `~-.
 7204       .~`       / ${c1}|=|${c2} \       `~.
 7205   .-~`        .'  ${c1}|=|${c2}  `.        `~-.
 7206 (`     _,.-="`  ${c1}  |=|${c2}    `"=-.,_     `)
 7207  `~"~"`        ${c1}   |=|${c2}           `"~"~`
 7208                 ${c1}  /=\\
 7209                   \\=/
 7210                    ^
 7211EOF
 7212        ;;
 7213
 7214        "dragonfly_small"*)
 7215            set_colors 1 7 3
 7216            read -rd '' ascii_data <<'EOF'
 7217${c2}   ,${c1}_${c2},
 7218('-_${c1}|${c2}_-')
 7219 >--${c1}|${c2}--<
 7220(_-'${c1}|${c2}'-_)
 7221    ${c1}|
 7222    |
 7223    |
 7224EOF
 7225        ;;
 7226
 7227        "DragonFly"*)
 7228            set_colors 1 7 3
 7229            read -rd '' ascii_data <<'EOF'
 7230${c2},--,           ${c1}|           ${c2},--,
 7231${c2}|   `-,       ${c1},^,       ${c2},-'   |
 7232${c2} `,    `-,   ${c3}(/ \)   ${c2},-'    ,'
 7233${c2}   `-,    `-,${c1}/   \${c2},-'    ,-'
 7234${c2}      `------${c1}(   )${c2}------'
 7235${c2}  ,----------${c1}(   )${c2}----------,
 7236${c2} |        _,-${c1}(   )${c2}-,_        |
 7237${c2}  `-,__,-'   ${c1}\   /${c2}   `-,__,-'
 7238${c1}              | |
 7239              | |
 7240              | |
 7241              | |
 7242              | |
 7243              | |
 7244              `|'
 7245EOF
 7246        ;;
 7247
 7248        "Drauger"*)
 7249            set_colors 1 7
 7250            read -rd '' ascii_data <<'EOF'
 7251${c1}                  -``-
 7252                `:+``+:`
 7253               `/++``++/.
 7254              .++/.  ./++.
 7255             :++/`    `/++:
 7256           `/++:        :++/`
 7257          ./+/-          -/+/.
 7258         -++/.            ./++-
 7259        :++:`              `:++:
 7260      `/++-                  -++/`
 7261     ./++.                    ./+/.
 7262    -++/`                      `/++-
 7263   :++:`                        `:++:
 7264 `/++-                            -++/`
 7265.:-.`..............................`.-:.
 7266`.-/++++++++++++++++++++++++++++++++/-.`
 7267EOF
 7268        ;;
 7269
 7270        "elementary_small"*)
 7271            set_colors 4 7 1
 7272            read -rd '' ascii_data <<'EOF'
 7273${c2}  _______
 7274 / ____  \\
 7275/  |  /  /\\
 7276|__\\ /  / |
 7277\\   /__/  /
 7278 \\_______/
 7279EOF
 7280        ;;
 7281
 7282        "Elementary"*)
 7283            set_colors 4 7 1
 7284            read -rd '' ascii_data <<'EOF'
 7285${c2}         eeeeeeeeeeeeeeeee
 7286      eeeeeeeeeeeeeeeeeeeeeee
 7287    eeeee  eeeeeeeeeeee   eeeee
 7288  eeee   eeeee       eee     eeee
 7289 eeee   eeee          eee     eeee
 7290eee    eee            eee       eee
 7291eee   eee            eee        eee
 7292ee    eee           eeee       eeee
 7293ee    eee         eeeee      eeeeee
 7294ee    eee       eeeee      eeeee ee
 7295eee   eeee   eeeeee      eeeee  eee
 7296eee    eeeeeeeeee     eeeeee    eee
 7297 eeeeeeeeeeeeeeeeeeeeeeee    eeeee
 7298  eeeeeeee eeeeeeeeeeee      eeee
 7299    eeeee                 eeeee
 7300      eeeeeee         eeeeeee
 7301         eeeeeeeeeeeeeeeee
 7302EOF
 7303        ;;
 7304
 7305        "EndeavourOS"*)
 7306            set_colors 1 5 4
 7307            read -rd '' ascii_data <<'EOF'
 7308${c1}                     ./${c2}o${c3}.
 7309${c1}                   ./${c2}sssso${c3}-
 7310${c1}                 `:${c2}osssssss+${c3}-
 7311${c1}               `:+${c2}sssssssssso${c3}/.
 7312${c1}             `-/o${c2}ssssssssssssso${c3}/.
 7313${c1}           `-/+${c2}sssssssssssssssso${c3}+:`
 7314${c1}         `-:/+${c2}sssssssssssssssssso${c3}+/.
 7315${c1}       `.://o${c2}sssssssssssssssssssso${c3}++-
 7316${c1}      .://+${c2}ssssssssssssssssssssssso${c3}++:
 7317${c1}    .:///o${c2}ssssssssssssssssssssssssso${c3}++:
 7318${c1}  `:////${c2}ssssssssssssssssssssssssssso${c3}+++.
 7319${c1}`-////+${c2}ssssssssssssssssssssssssssso${c3}++++-
 7320${c1} `..-+${c2}oosssssssssssssssssssssssso${c3}+++++/`
 7321   ./++++++++++++++++++++++++++++++/:.
 7322  `:::::::::::::::::::::::::------``
 7323EOF
 7324        ;;
 7325
 7326        "Endless"*)
 7327            set_colors 1 7
 7328            read -rd '' ascii_data <<'EOF'
 7329${c1}           `:+yhmNMMMMNmhy+:`
 7330        -odMMNhso//////oshNMMdo-
 7331      /dMMh+.              .+hMMd/
 7332    /mMNo`                    `oNMm:
 7333  `yMMo`                        `oMMy`
 7334 `dMN-                            -NMd`
 7335 hMN.                              .NMh
 7336/MM/                  -os`          /MM/
 7337dMm    `smNmmhs/- `:sNMd+   ``       mMd
 7338MMy    oMd--:+yMMMMMNo.:ohmMMMNy`    yMM
 7339MMy    -NNyyhmMNh+oNMMMMMy:.  dMo    yMM
 7340dMm     `/++/-``/yNNh+/sdNMNddMm-    mMd
 7341/MM/          `dNy:       `-::-     /MM/
 7342 hMN.                              .NMh
 7343 `dMN-                            -NMd`
 7344  `yMMo`                        `oMMy`
 7345    /mMNo`                    `oNMm/
 7346      /dMMh+.              .+hMMd/
 7347        -odMMNhso//////oshNMMdo-
 7348           `:+yhmNMMMMNmhy+:`
 7349EOF
 7350        ;;
 7351
 7352        "EuroLinux"*)
 7353            set_colors 4 7
 7354            read -rd '' ascii_data <<'EOF'
 7355${c1}                __
 7356         -wwwWWWWWWWWWwww-
 7357        -WWWWWWWWWWWWWWWWWWw-
 7358          \WWWWWWWWWWWWWWWWWWW-
 7359  _Ww      `WWWWWWWWWWWWWWWWWWWw
 7360 -W${c2}E${c1}Www                -WWWWWWWWW-
 7361_WW${c2}U${c1}WWWW-                _WWWWWWWW
 7362_WW${c2}R${c1}WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW-
 7363wWW${c2}O${c1}WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
 7364WWW${c2}L${c1}WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWw
 7365WWW${c2}I${c1}WWWWWWWWWWWWWWWWWWWWWWWWWWWWww-
 7366wWW${c2}N${c1}WWWWw
 7367 WW${c2}U${c1}WWWWWWw
 7368 wW${c2}X${c1}WWWWWWWWww
 7369   wWWWWWWWWWWWWWWWw
 7370    wWWWWWWWWWWWWWWWw
 7371       WWWWWWWWWWWWWw
 7372           wWWWWWWWw
 7373EOF
 7374        ;;
 7375
 7376        "Exherbo"*)
 7377            set_colors 4 7 1
 7378            read -rd '' ascii_data <<'EOF'
 7379${c2} ,
 7380OXo.
 7381NXdX0:    .cok0KXNNXXK0ko:.
 7382KX  '0XdKMMK;.xMMMk, .0MMMMMXx;  ...
 7383'NO..xWkMMx   kMMM    cMMMMMX,NMWOxOXd.
 7384  cNMk  NK    .oXM.   OMMMMO. 0MMNo  kW.
 7385  lMc   o:       .,   .oKNk;   ;NMMWlxW'
 7386 ;Mc    ..   .,,'    .0M${c1}g;${c2}WMN'dWMMMMMMO
 7387 XX        ,WMMMMW.  cM${c1}cfli${c2}WMKlo.   .kMk
 7388.Mo        .WM${c1}GD${c2}MW.   XM${c1}WO0${c2}MMk        oMl
 7389,M:         ,XMMWx::,''oOK0x;          NM.
 7390'Ml      ,kNKOxxxxxkkO0XXKOd:.         oMk
 7391 NK    .0Nxc${c3}:::::::::::::::${c2}fkKNk,      .MW
 7392 ,Mo  .NXc${c3}::${c2}qXWXb${c3}::::::::::${c2}oo${c3}::${c2}lNK.    .MW
 7393  ;Wo oMd${c3}:::${c2}oNMNP${c3}::::::::${c2}oWMMMx${c3}:${c2}c0M;   lMO
 7394   'NO;W0c${c3}:::::::::::::::${c2}dMMMMO${c3}::${c2}lMk  .WM'
 7395     xWONXdc${c3}::::::::::::::${c2}oOOo${c3}::${c2}lXN. ,WMd
 7396      'KWWNXXK0Okxxo,${c3}:::::::${c2},lkKNo  xMMO
 7397        :XMNxl,';:lodxkOO000Oxc. .oWMMo
 7398          'dXMMXkl;,.        .,o0MMNo'
 7399             ':d0XWMMMMWNNNNMMMNOl'
 7400                   ':okKXWNKkl'
 7401EOF
 7402        ;;
 7403
 7404        "fedora_small")
 7405            set_colors 12
 7406            read -rd '' ascii_data <<'EOF'
 7407${c1}        ,'''''.
 7408       |   ,.  |
 7409       |  |  '_'
 7410  ,....|  |..
 7411.'  ,_;|   ..'
 7412|  |   |  |
 7413|  ',_,'  |
 7414 '.     ,'
 7415   '''''
 7416EOF
 7417        ;;
 7418
 7419        "Fedora_old"* | "RFRemix"*)
 7420            set_colors 4 7 1
 7421            read -rd '' ascii_data <<'EOF'
 7422${c1}          /:-------------:\\
 7423       :-------------------::
 7424     :-----------${c2}/shhOHbmp${c1}---:\\
 7425   /-----------${c2}omMMMNNNMMD  ${c1}---:
 7426  :-----------${c2}sMMMMNMNMP${c1}.    ---:
 7427 :-----------${c2}:MMMdP${c1}-------    ---\\
 7428,------------${c2}:MMMd${c1}--------    ---:
 7429:------------${c2}:MMMd${c1}-------    .---:
 7430:----    ${c2}oNMMMMMMMMMNho${c1}     .----:
 7431:--     .${c2}+shhhMMMmhhy++${c1}   .------/
 7432:-    -------${c2}:MMMd${c1}--------------:
 7433:-   --------${c2}/MMMd${c1}-------------;
 7434:-    ------${c2}/hMMMy${c1}------------:
 7435:--${c2} :dMNdhhdNMMNo${c1}------------;
 7436:---${c2}:sdNMMMMNds:${c1}------------:
 7437:------${c2}:://:${c1}-------------::
 7438:---------------------://
 7439EOF
 7440        ;;
 7441
 7442        "Fedora"*)
 7443            set_colors 12 7
 7444            read -rd '' ascii_data <<'EOF'
 7445${c1}             .',;::::;,'.
 7446         .';:cccccccccccc:;,.
 7447      .;cccccccccccccccccccccc;.
 7448    .:cccccccccccccccccccccccccc:.
 7449  .;ccccccccccccc;${c2}.:dddl:.${c1};ccccccc;.
 7450 .:ccccccccccccc;${c2}OWMKOOXMWd${c1};ccccccc:.
 7451.:ccccccccccccc;${c2}KMMc${c1};cc;${c2}xMMc${c1};ccccccc:.
 7452,cccccccccccccc;${c2}MMM.${c1};cc;${c2};WW:${c1};cccccccc,
 7453:cccccccccccccc;${c2}MMM.${c1};cccccccccccccccc:
 7454:ccccccc;${c2}oxOOOo${c1};${c2}MMM0OOk.${c1};cccccccccccc:
 7455cccccc;${c2}0MMKxdd:${c1};${c2}MMMkddc.${c1};cccccccccccc;
 7456ccccc;${c2}XM0'${c1};cccc;${c2}MMM.${c1};cccccccccccccccc'
 7457ccccc;${c2}MMo${c1};ccccc;${c2}MMW.${c1};ccccccccccccccc;
 7458ccccc;${c2}0MNc.${c1}ccc${c2}.xMMd${c1};ccccccccccccccc;
 7459cccccc;${c2}dNMWXXXWM0:${c1};cccccccccccccc:,
 7460cccccccc;${c2}.:odl:.${c1};cccccccccccccc:,.
 7461:cccccccccccccccccccccccccccc:'.
 7462.:cccccccccccccccccccccc:;,..
 7463  '::cccccccccccccc::;,.
 7464EOF
 7465        ;;
 7466
 7467        "Feren"*)
 7468            set_colors 4 7 1
 7469            read -rd '' ascii_data <<'EOF'
 7470${c1} `----------`
 7471 :+ooooooooo+.
 7472-o+oooooooooo+-
 7473..`/+++++++++++/...`````````````````
 7474   .++++++++++++++++++++++++++/////-
 7475    ++++++++++++++++++++++++++++++++//:`
 7476    -++++++++++++++++++++++++++++++/-`
 7477     ++++++++++++++++++++++++++++:.
 7478     -++++++++++++++++++++++++/.
 7479      +++++++++++++++++++++/-`
 7480      -++++++++++++++++++//-`
 7481        .:+++++++++++++//////-
 7482           .:++++++++//////////-
 7483             `-++++++---:::://///.
 7484           `.:///+++.             `
 7485          `.........
 7486EOF
 7487        ;;
 7488
 7489        "freebsd_small")
 7490            set_colors 1 7 3
 7491            read -rd '' ascii_data <<'EOF'
 7492${c1}/\\,-'''''-,/\\
 7493\\_)       (_/
 7494|           |
 7495|           |
 7496 ;         ;
 7497  '-_____-'
 7498EOF
 7499        ;;
 7500
 7501        FreeBSD*|HardenedBSD*)
 7502            case $ascii_distro in
 7503                *HardenedBSD*) set_colors 4 7 3 ;;
 7504                *)             set_colors 1 7 3
 7505            esac
 7506
 7507            read -rd '' ascii_data <<'EOF'
 7508   ${c2}```                        ${c1}`
 7509  ${c2}` `.....---...${c1}....--.```   -/
 7510  ${c2}+o   .--`         ${c1}/y:`      +.
 7511  ${c2} yo`:.            ${c1}:o      `+-
 7512    ${c2}y/               ${c1}-/`   -o/
 7513   ${c2}.-                  ${c1}::/sy+:.
 7514   ${c2}/                     ${c1}`--  /
 7515  ${c2}`:                          ${c1}:`
 7516  ${c2}`:                          ${c1}:`
 7517   ${c2}/                          ${c1}/
 7518   ${c2}.-                        ${c1}-.
 7519    ${c2}--                      ${c1}-.
 7520     ${c2}`:`                  ${c1}`:`
 7521       .--             `--.
 7522          .---.....----.
 7523EOF
 7524        ;;
 7525
 7526        "FreeMiNT"*)
 7527            set_colors 7
 7528            read -rd '' ascii_data <<'EOF'
 7529${c1}          ##
 7530          ##         #########
 7531                    ####      ##
 7532            ####  ####        ##
 7533####        ####  ##        ##
 7534        ####    ####      ##  ##
 7535        ####  ####  ##  ##  ##
 7536            ####  ######
 7537        ######  ##  ##  ####
 7538      ####    ################
 7539    ####        ##  ####
 7540    ##            ####  ######
 7541    ##      ##    ####  ####
 7542    ##    ##  ##    ##  ##  ####
 7543      ####  ##          ##  ##
 7544EOF
 7545        ;;
 7546
 7547        "Frugalware"*)
 7548            set_colors 4 7 1
 7549            read -rd '' ascii_data <<'EOF'
 7550${c1}          `++/::-.`
 7551         /o+++++++++/::-.`
 7552        `o+++++++++++++++o++/::-.`
 7553        /+++++++++++++++++++++++oo++/:-.``
 7554       .o+ooooooooooooooooooosssssssso++oo++/:-`
 7555       ++osoooooooooooosssssssssssssyyo+++++++o:
 7556      -o+ssoooooooooooosssssssssssssyyo+++++++s`
 7557      o++ssoooooo++++++++++++++sssyyyyo++++++o:
 7558     :o++ssoooooo${c2}/-------------${c1}+syyyyyo+++++oo
 7559    `o+++ssoooooo${c2}/-----${c1}+++++ooosyyyyyyo++++os:
 7560    /o+++ssoooooo${c2}/-----${c1}ooooooosyyyyyyyo+oooss
 7561   .o++++ssooooos${c2}/------------${c1}syyyyyyhsosssy-
 7562   ++++++ssooooss${c2}/-----${c1}+++++ooyyhhhhhdssssso
 7563  -s+++++syssssss${c2}/-----${c1}yyhhhhhhhhhhhddssssy.
 7564  sooooooyhyyyyyh${c2}/-----${c1}hhhhhhhhhhhddddyssy+
 7565 :yooooooyhyyyhhhyyyyyyhhhhhhhhhhdddddyssy`
 7566 yoooooooyhyyhhhhhhhhhhhhhhhhhhhddddddysy/
 7567-ysooooooydhhhhhhhhhhhddddddddddddddddssy
 7568 .-:/+osssyyyysyyyyyyyyyyyyyyyyyyyyyyssy:
 7569       ``.-/+oosysssssssssssssssssssssss
 7570               ``.:/+osyysssssssssssssh.
 7571                        `-:/+osyyssssyo
 7572                                .-:+++`
 7573EOF
 7574        ;;
 7575
 7576        "Funtoo"*)
 7577            set_colors 5 7
 7578            read -rd '' ascii_data <<'EOF'
 7579${c1}   .dKXXd                         .
 7580  :XXl;:.                      .OXo
 7581.'OXO''  .''''''''''''''''''''':XNd..'oco.lco,
 7582xXXXXXX, cXXXNNNXXXXNNXXXXXXXXNNNNKOOK; d0O .k
 7583  kXX  xXo  KNNN0  KNN.       'xXNo   :c; 'cc.
 7584  kXX  xNo  KNNN0  KNN. :xxxx. 'NNo
 7585  kXX  xNo  loooc  KNN. oNNNN. 'NNo
 7586  kXX  xN0:.       KNN' oNNNX' ,XNk
 7587  kXX  xNNXNNNNNNNNXNNNNNNNNXNNOxXNX0Xl
 7588  ...  ......................... .;cc;.
 7589EOF
 7590        ;;
 7591
 7592        "GalliumOS"*)
 7593            set_colors 4 7 1
 7594            read -rd '' ascii_data <<'EOF'
 7595${c1}sooooooooooooooooooooooooooooooooooooo+:
 7596yyooooooooooooooooooooooooooooooooo+/:::
 7597yyysoooooooooooooooooooooooooooo+/::::::
 7598yyyyyoooooooooooooooooooooooo+/:::::::::
 7599yyyyyysoooooooooooooooooo++/::::::::::::
 7600yyyyyyysoooooooooooooo++/:::::::::::::::
 7601yyyyyyyyysoooooo${c2}sydddys${c1}+/:::::::::::::::
 7602yyyyyyyyyysooo${c2}smMMMMMMMNd${c1}+::::::::::::::
 7603yyyyyyyyyyyyo${c2}sMMMMMMMMMMMN${c1}/:::::::::::::
 7604yyyyyyyyyyyyy${c2}dMMMMMMMMMMMM${c1}o//:::::::::::
 7605yyyyyyyyyyyyy${c2}hMMMMMMMMMMMm${c1}--//::::::::::
 7606yyyyyyyyyyyyyy${c2}hmMMMMMMMNy${c1}:..-://::::::::
 7607yyyyyyyyyyyyyyy${c2}yyhhyys+:${c1}......://:::::::
 7608yyyyyyyyyyyyyyys+:--...........-///:::::
 7609yyyyyyyyyyyys+:--................://::::
 7610yyyyyyyyyo+:-.....................-//:::
 7611yyyyyyo+:-..........................://:
 7612yyyo+:-..............................-//
 7613o/:-...................................:
 7614EOF
 7615        ;;
 7616
 7617        "Garuda"*)
 7618            set_colors 7 7 3 7 2 4
 7619            read -rd '' ascii_data <<'EOF'
 7620
 7621${c3}
 7622                     .%;888:8898898:
 7623                   x;XxXB%89b8:b8%b88:
 7624                .8Xxd                8X:.
 7625              .8Xx;                    8x:.
 7626            .tt8x          ${c6}.d${c3}            x88;
 7627         .@8x8;          ${c6}.db:${c3}              xx@;
 7628       ${c4},tSXX°          .bbbbbbbbbbbbbbbbbbbB8x@;
 7629     .SXxx            bBBBBBBBBBBBBBBBBBBBbSBX8;
 7630   ,888S                                     pd!
 7631  8X88/                                       q
 7632  GBB.
 7633   ${c5}x%88        d888@8@X@X@X88X@@XX@@X@8@X.
 7634     dxXd    dB8b8b8B8B08bB88b998888b88x.
 7635      dxx8o                      .@@;.
 7636        dx88                   .t@x.
 7637          d:SS@8ba89aa67a853Sxxad.
 7638            .d988999889889899dd.
 7639
 7640EOF
 7641
 7642        ;;
 7643
 7644        "gentoo_small")
 7645            set_colors 5 7
 7646            read -rd '' ascii_data <<'EOF'
 7647${c1} _-----_
 7648(       \\
 7649\    0   \\
 7650${c2} \        )
 7651 /      _/
 7652(     _-
 7653\____-
 7654EOF
 7655        ;;
 7656
 7657        "Gentoo"*)
 7658            set_colors 5 7
 7659            read -rd '' ascii_data <<'EOF'
 7660${c1}         -/oyddmdhs+:.
 7661     -o${c2}dNMMMMMMMMNNmhy+${c1}-`
 7662   -y${c2}NMMMMMMMMMMMNNNmmdhy${c1}+-
 7663 `o${c2}mMMMMMMMMMMMMNmdmmmmddhhy${c1}/`
 7664 om${c2}MMMMMMMMMMMN${c1}hhyyyo${c2}hmdddhhhd${c1}o`
 7665.y${c2}dMMMMMMMMMMd${c1}hs++so/s${c2}mdddhhhhdm${c1}+`
 7666 oy${c2}hdmNMMMMMMMN${c1}dyooy${c2}dmddddhhhhyhN${c1}d.
 7667  :o${c2}yhhdNNMMMMMMMNNNmmdddhhhhhyym${c1}Mh
 7668    .:${c2}+sydNMMMMMNNNmmmdddhhhhhhmM${c1}my
 7669       /m${c2}MMMMMMNNNmmmdddhhhhhmMNh${c1}s:
 7670    `o${c2}NMMMMMMMNNNmmmddddhhdmMNhs${c1}+`
 7671  `s${c2}NMMMMMMMMNNNmmmdddddmNMmhs${c1}/.
 7672 /N${c2}MMMMMMMMNNNNmmmdddmNMNdso${c1}:`
 7673+M${c2}MMMMMMNNNNNmmmmdmNMNdso${c1}/-
 7674yM${c2}MNNNNNNNmmmmmNNMmhs+/${c1}-`
 7675/h${c2}MMNNNNNNNNMNdhs++/${c1}-`
 7676`/${c2}ohdmmddhys+++/:${c1}.`
 7677  `-//////:--.
 7678EOF
 7679        ;;
 7680
 7681        "Pentoo"*)
 7682            set_colors 5 7
 7683            read -rd '' ascii_data <<'EOF'
 7684${c2}           `:oydNNMMMMNNdyo:`
 7685        :yNMMMMMMMMMMMMMMMMNy:
 7686      :dMMMMMMMMMMMMMMMMMMMMMMd:
 7687     oMMMMMMMho/-....-/ohMMMMMMMo
 7688    oMMMMMMy.            .yMMMMMMo
 7689   .MMMMMMo                oMMMMMM.
 7690   +MMMMMm                  mMMMMM+
 7691   oMMMMMh                  hMMMMMo
 7692 //hMMMMMm//${c1}`${c2}          ${c1}`${c2}////mMMMMMh//
 7693MMMMMMMMMMM${c1}/${c2}      ${c1}/o/`${c2}  ${c1}.${c2}smMMMMMMMMMMM
 7694MMMMMMMMMMm      ${c1}`NMN:${c2}    ${c1}.${c2}yMMMMMMMMMM
 7695MMMMMMMMMMMh${c1}:.${c2}              dMMMMMMMMM
 7696MMMMMMMMMMMMMy${c1}.${c2}            ${c1}-${c2}NMMMMMMMMM
 7697MMMMMMMMMMMd:${c1}`${c2}           ${c1}-${c2}yNMMMMMMMMMM
 7698MMMMMMMMMMh${c1}`${c2}          ${c1}./${c2}hNMMMMMMMMMMMM
 7699MMMMMMMMMM${c1}s${c2}        ${c1}.:${c2}ymMMMMMMMMMMMMMMM
 7700MMMMMMMMMMN${c1}s:..-/${c2}ohNMMMMMMMMMMMMMMMMMM
 7701MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
 7702MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
 7703 MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
 7704
 7705EOF
 7706        ;;
 7707
 7708        "glaucus"*)
 7709            set_colors 5
 7710            read -rd '' ascii_data <<'EOF'
 7711${c1}             ,,        ,d88P
 7712           ,d8P    ,ad8888*
 7713         ,888P    d88888*     ,,ad8888P*
 7714    d   d888P   a88888P*  ,ad8888888*
 7715  .d8  d8888:  d888888* ,d888888P*
 7716 .888; 88888b d8888888b8888888P
 7717 d8888J888888a88888888888888P*    ,d
 7718 88888888888888888888888888P   ,,d8*
 7719 888888888888888888888888888888888*
 7720 *8888888888888888888888888888888*
 7721  Y888888888P* `*``*888888888888*
 7722   *^888^*            *Y888P**
 7723EOF
 7724        ;;
 7725
 7726        "gNewSense"*)
 7727            set_colors 4 5 7 6
 7728            read -rd '' ascii_data <<'EOF'
 7729${c1}                     ..,,,,..
 7730               .oocchhhhhhhhhhccoo.
 7731        .ochhlllllllc hhhhhh ollllllhhco.
 7732    ochlllllllllll hhhllllllhhh lllllllllllhco
 7733 .cllllllllllllll hlllllo  +hllh llllllllllllllc.
 7734ollllllllllhco''  hlllllo  +hllh  ``ochllllllllllo
 7735hllllllllc'       hllllllllllllh       `cllllllllh
 7736ollllllh          +llllllllllll+          hllllllo
 7737 `cllllh.           ohllllllho           .hllllc'
 7738    ochllc.            ++++            .cllhco
 7739       `+occooo+.                .+ooocco+'
 7740              `+oo++++      ++++oo+'
 7741EOF
 7742        ;;
 7743
 7744        "GNOME"*)
 7745            set_colors 4
 7746            read -rd '' ascii_data <<'EOF'
 7747${c1}                               ,@@@@@@@@,
 7748                 @@@@@@      @@@@@@@@@@@@
 7749        ,@@.    @@@@@@@    *@@@@@@@@@@@@
 7750       @@@@@%   @@@@@@(    @@@@@@@@@@@&
 7751       @@@@@@    @@@@*     @@@@@@@@@#
 7752@@@@*   @@@@,              *@@@@@%
 7753@@@@@.
 7754 @@@@#         @@@@@@@@@@@@@@@@
 7755         ,@@@@@@@@@@@@@@@@@@@@@@@,
 7756      ,@@@@@@@@@@@@@@@@@@@@@@@@@@&
 7757    .@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 7758    @@@@@@@@@@@@@@@@@@@@@@@@@@@
 7759   @@@@@@@@@@@@@@@@@@@@@@@@(
 7760   @@@@@@@@@@@@@@@@@@@@%
 7761    @@@@@@@@@@@@@@@@
 7762     @@@@@@@@@@@@*        @@@@@@@@/
 7763      &@@@@@@@@@@        @@@@@@@@@*
 7764        @@@@@@@@@@@,    @@@@@@@@@*
 7765          ,@@@@@@@@@@@@@@@@@@@@&
 7766              &@@@@@@@@@@@@@@
 7767                     ...
 7768EOF
 7769        ;;
 7770
 7771        "GNU")
 7772            set_colors fg 7
 7773            read -rd '' ascii_data <<'EOF'
 7774${c1}    _-`````-,           ,- '- .
 7775  .'   .- - |          | - -.  `.
 7776 /.'  /                     `.   \
 7777:/   :      _...   ..._      ``   :
 7778::   :     /._ .`:'_.._\.    ||   :
 7779::    `._ ./  ,`  :    \ . _.''   .
 7780`:.      /   |  -.  \-. \\_      /
 7781  \:._ _/  .'   .@)  \@) ` `\ ,.'
 7782     _/,--'       .- .\,-.`--`.
 7783       ,'/''     (( \ `  )
 7784        /'/'  \    `-'  (
 7785         '/''  `._,-----'
 7786          ''/'    .,---'
 7787           ''/'      ;:
 7788             ''/''  ''/
 7789               ''/''/''
 7790                 '/'/'
 7791                  `;
 7792EOF
 7793        ;;
 7794
 7795        "GoboLinux"*)
 7796            set_colors 5 4 6 2
 7797            read -rd '' ascii_data <<'EOF'
 7798${c1}  _____       _
 7799 / ____|     | |
 7800| |  __  ___ | |__   ___
 7801| | |_ |/ _ \| '_ \ / _ \
 7802| |__| | (_) | |_) | (_) |
 7803 \_____|\___/|_.__/ \___/
 7804EOF
 7805        ;;
 7806
 7807        "Grombyang"*)
 7808            set_colors 4 2 1
 7809            read -rd '' ascii_data <<'EOF'
 7810${c1}            eeeeeeeeeeee
 7811         eeeeeeeeeeeeeeeee
 7812      eeeeeeeeeeeeeeeeeeeeeee
 7813    eeeee       ${c2}.o+       ${c1}eeee
 7814  eeee         ${c2}`ooo/         ${c1}eeee
 7815 eeee         ${c2}`+oooo:         ${c1}eeee
 7816eee          ${c2}`+oooooo:          ${c1}eee
 7817eee          ${c2}-+oooooo+:         ${c1}eee
 7818ee         ${c2}`/:oooooooo+:         ${c1}ee
 7819ee        ${c2}`/+   +++    +:        ${c1}ee
 7820ee              ${c2}+o+\             ${c1}ee
 7821eee             ${c2}+o+\            ${c1}eee
 7822eee        ${c2}//  \\ooo/  \\\        ${c1}eee
 7823 eee      ${c2}//++++oooo++++\\\     ${c1}eee
 7824  eeee    ${c2}::::++oooo+:::::   ${c1}eeee
 7825    eeeee   ${c3}Grombyang OS ${c1}  eeee
 7826      eeeeeeeeeeeeeeeeeeeeeee
 7827         eeeeeeeeeeeeeeeee
 7828EOF
 7829        ;;
 7830
 7831        "guix_small"*)
 7832            set_colors 3 7 6 1 8
 7833            read -rd '' ascii_data <<'EOF'
 7834${c1}|.__          __.|
 7835|__ \\        / __|
 7836   \\ \\      / /
 7837    \\ \\    / /
 7838     \\ \\  / /
 7839      \\ \\/ /
 7840       \\__/
 7841EOF
 7842        ;;
 7843
 7844        "Guix"*)
 7845            set_colors 3 7 6 1 8
 7846            read -rd '' ascii_data <<'EOF'
 7847${c1} ..                             `.
 7848 `--..```..`           `..```..--`
 7849   .-:///-:::.       `-:::///:-.
 7850      ````.:::`     `:::.````
 7851           -//:`    -::-
 7852            ://:   -::-
 7853            `///- .:::`
 7854             -+++-:::.
 7855              :+/:::-
 7856              `-....`
 7857EOF
 7858        ;;
 7859
 7860        "haiku_small"*)
 7861            set_colors 2 8
 7862            read -rd '' ascii_data <<'EOF'
 7863${c1}       ,^,
 7864      /   \\
 7865*--_ ;     ; _--*
 7866\\   '"     "'   /
 7867 '.           .'
 7868.-'"         "'-.
 7869 '-.__.   .__.-'
 7870       |_|
 7871EOF
 7872        ;;
 7873
 7874        "Haiku"*)
 7875            set_colors 1 3 7 2
 7876            read -rd '' ascii_data <<'EOF'
 7877${c3}
 7878
 7879           MMMM              MMMM
 7880           MMMM              MMMM
 7881           MMMM              MMMM
 7882           MMMM              MMMM
 7883           MMMM${c4}       .ciO| /YMMMMM*"
 7884${c3}           MMMM${c4}   .cOMMMMM|/MMMMM/`
 7885 ,         ,iMM|/MMMMMMMMMMMMMMM*
 7886  `*.__,-cMMMMMMMMMMMMMMMMM/`${c3}.MMM
 7887           MM${c4}MMMMMMM/`:MMM/  ${c3}MMMM
 7888           MMMM              MMMM
 7889           MMMM              MMMM
 7890           """"              """"
 7891EOF
 7892        ;;
 7893
 7894        "Huayra"*)
 7895            set_colors 4 7
 7896            read -rd '' ascii_data <<'EOF'
 7897${c2}                     `
 7898            .       .       `
 7899       ``    -      .      .
 7900        `.`   -` `. -  `` .`
 7901          ..`-`-` + -  / .`     ```
 7902          .--.+--`+:- :/.` .-``.`
 7903            -+/so::h:.d-`./:`.`
 7904              :hNhyMomy:os-...-.  ````
 7905               .dhsshNmNhoo+:-``.```
 7906                ${c1}`ohy:-${c2}NMds+::-.``
 7907            ````${c1}.hNN+`${c2}mMNho/:-....````
 7908       `````     `../dmNhoo+/:..``
 7909    ````            .dh++o/:....`
 7910.+s/`                `/s-.-.:.`` ````
 7911::`                    `::`..`
 7912                          .` `..
 7913                                ``
 7914EOF
 7915        ;;
 7916
 7917        "HydroOS"*)
 7918            set_colors 1 2 3 4 5
 7919            read -rd '' ascii_data <<'EOF'
 7920${c1}
 7921  _    _           _            ____   _____
 7922 | |  | |         | |          / __ \ / ____|
 7923 | |__| |_   _  __| |_ __ ___ | |  | | (___
 7924 |  __  | | | |/ _` | '__/ _ \| |  | |\___ \
 7925 | |  | | |_| | (_| | | | (_) | |__| |____) |
 7926 |_|  |_|\__, |\__,_|_|  \___/ \____/|_____/
 7927          __/ |
 7928         |___/
 7929EOF
 7930        ;;
 7931
 7932        "hyperbola_small"*)
 7933            set_colors 8
 7934            read -rd '' ascii_data <<'EOF'
 7935${c1}    |`__.`/
 7936    \____/
 7937    .--.
 7938   /    \\
 7939  /  ___ \\
 7940 / .`   `.\\
 7941/.`      `.\\
 7942EOF
 7943        ;;
 7944
 7945        "Hyperbola"*)
 7946            set_colors 8
 7947            read -rd '' ascii_data <<'EOF'
 7948${c1}                     WW
 7949                     KX              W
 7950                    WO0W          NX0O
 7951                    NOO0NW  WNXK0OOKW
 7952                    W0OOOOOOOOOOOOKN
 7953                     N0OOOOOOO0KXW
 7954                       WNXXXNW
 7955                 NXK00000KN
 7956             WNK0OOOOOOOOOO0W
 7957           NK0OOOOOOOOOOOOOO0W
 7958         X0OOOOOOO00KK00OOOOOK
 7959       X0OOOO0KNWW      WX0OO0W
 7960     X0OO0XNW              KOOW
 7961   N00KNW                   KOW
 7962 NKXN                       W0W
 7963WW                           W
 7964EOF
 7965        ;;
 7966
 7967        "iglunix"*|"iglu"*)
 7968            set_colors 8
 7969            read -rd '' ascii_data <<'EOF'
 7970${c1}     |
 7971     |        |
 7972              |
 7973|    ________
 7974|  /\   |    \
 7975  /  \  |     \  |
 7976 /    \        \ |
 7977/      \________\
 7978\      /        /
 7979 \    /        /
 7980  \  /        /
 7981   \/________/
 7982EOF
 7983        ;;
 7984
 7985        "januslinux"*|"janus"*|"Ataraxia Linux"*|"Ataraxia"*)
 7986            set_colors 4 5 6 2
 7987            read -rd '' ascii_data <<'EOF'
 7988${c1}               'l:
 7989        loooooo
 7990          loooo coooool
 7991 looooooooooooooooooool
 7992  looooooooooooooooo
 7993         lool   cooo
 7994        coooooooloooooooo
 7995     clooooo  ;lood  cloooo
 7996  :loooocooo cloo      loooo
 7997 loooo  :ooooool       loooo
 7998looo    cooooo        cooooo
 7999looooooooooooo      ;loooooo ${c2}looooooc
 8000${c1}looooooooo loo   cloooooool    ${c2}looooc
 8001${c1} cooo       cooooooooooo       ${c2}looolooooool
 8002${c1}            cooo:     ${c2}coooooooooooooooooool
 8003                       loooooooooooolc:   loooc;
 8004                             cooo:    loooooooooooc
 8005                            ;oool         looooooo:
 8006                           coool          olc,
 8007                          looooc   ,,
 8008                        coooooc    loc
 8009                       :oooool,    coool:, looool:,
 8010                       looool:      ooooooooooooooo:
 8011                       cooolc        .ooooooooooool
 8012EOF
 8013        ;;
 8014
 8015        "Kaisen"*)
 8016            set_colors 1 7 3
 8017            read -rd '' ascii_data <<'EOF'
 8018${c1}                          `
 8019                  `:+oyyho.
 8020             `+:`sdddddd/
 8021        `+` :ho oyo++ohds-`
 8022       .ho :dd.  .: `sddddddhhyso+/-
 8023       ody.ddd-:yd- +hysssyhddddddddho`
 8024       yddddddhddd` ` `--`   -+hddddddh.
 8025       hddy-+dddddy+ohh/..+sddddy/:::+ys
 8026      :ddd/sdddddddddd- oddddddd       `
 8027     `yddddddddddddddd/ /ddddddd/
 8028:.  :ydddddddddddddddddo..sddddddy/`
 8029odhdddddddo- `ddddh+-``....-+hdddddds.
 8030-ddddddhd:   /dddo  -ydddddddhdddddddd-
 8031 /hdy:o - `:sddds   .`./hdddddddddddddo
 8032  `/-  `+hddyosy+       :dddddddy-.-od/
 8033      :sydds           -hddddddd`    /
 8034       .+shd-      `:ohddddddddd`
 8035                `:+ooooooooooooo:
 8036EOF
 8037        ;;
 8038
 8039        "Kali"*)
 8040            set_colors 4 8
 8041            read -rd '' ascii_data <<'EOF'
 8042${c1}..............
 8043            ..,;:ccc,.
 8044          ......''';lxO.
 8045.....''''..........,:ld;
 8046           .';;;:::;,,.x,
 8047      ..'''.            0Xxoc:,.  ...
 8048  ....                ,ONkc;,;cokOdc',.
 8049 .                   OMo           ':${c2}dd${c1}o.
 8050                    dMc               :OO;
 8051                    0M.                 .:o.
 8052                    ;Wd
 8053                     ;XO,
 8054                       ,d0Odlc;,..
 8055                           ..',;:cdOOd::,.
 8056                                    .:d;.':;.
 8057                                       'd,  .'
 8058                                         ;l   ..
 8059                                          .o
 8060                                            c
 8061                                            .'
 8062                                             .
 8063EOF
 8064        ;;
 8065
 8066        "KaOS"*)
 8067            set_colors 4 7 1
 8068            read -rd '' ascii_data <<'EOF'
 8069${c1}                     ..
 8070  .....         ..OSSAAAAAAA..
 8071 .KKKKSS.     .SSAAAAAAAAAAA.
 8072.KKKKKSO.    .SAAAAAAAAAA...
 8073KKKKKKS.   .OAAAAAAAA.
 8074KKKKKKS.  .OAAAAAA.
 8075KKKKKKS. .SSAA..
 8076.KKKKKS..OAAAAAAAAAAAA........
 8077 DKKKKO.=AA=========A===AASSSO..
 8078  AKKKS.==========AASSSSAAAAAASS.
 8079  .=KKO..========ASS.....SSSSASSSS.
 8080    .KK.       .ASS..O.. =SSSSAOSS:
 8081     .OK.      .ASSSSSSSO...=A.SSA.
 8082       .K      ..SSSASSSS.. ..SSA.
 8083                 .SSS.AAKAKSSKA.
 8084                    .SSS....S..
 8085EOF
 8086        ;;
 8087
 8088        "KDE"*)
 8089            set_colors 2 7
 8090            read -rd '' ascii_data <<'EOF'
 8091${c1}             `..---+/---..`
 8092         `---.``   ``   `.---.`
 8093      .--.`        ``        `-:-.
 8094    `:/:     `.----//----.`     :/-
 8095   .:.    `---`          `--.`    .:`
 8096  .:`   `--`                .:-    `:.
 8097 `/    `:.      `.-::-.`      -:`   `/`
 8098 /.    /.     `:++++++++:`     .:    .:
 8099`/    .:     `+++++++++++/      /`   `+`
 8100/+`   --     .++++++++++++`     :.   .+:
 8101`/    .:     `+++++++++++/      /`   `+`
 8102 /`    /.     `:++++++++:`     .:    .:
 8103 ./    `:.      `.:::-.`      -:`   `/`
 8104  .:`   `--`                .:-    `:.
 8105   .:.    `---`          `--.`    .:`
 8106    `:/:     `.----//----.`     :/-
 8107      .-:.`        ``        `-:-.
 8108         `---.``   ``   `.---.`
 8109             `..---+/---..`
 8110EOF
 8111        ;;
 8112
 8113        "Kibojoe"*)
 8114            set_colors 2 7 4
 8115            read -rd '' ascii_data <<'EOF'
 8116            ${c3}           ./+oooooo+/.
 8117           -/+ooooo+/:.`
 8118          ${c1}`${c3}yyyo${c2}+++/++${c3}osss${c1}.
 8119         ${c1}+NMN${c3}yssssssssssss${c1}.
 8120       ${c1}.dMMMMN${c3}sssssssssssy${c1}Ns`
 8121      +MMMMMMMm${c3}sssssssssssh${c1}MNo`
 8122    `hMMMMMNNNMd${c3}sssssssssssd${c1}MMN/
 8123   .${c3}syyyssssssy${c1}NNmmmmd${c3}sssss${c1}hMMMMd:
 8124  -NMmh${c3}yssssssssyhhhhyssyh${c1}mMMMMMMMy`
 8125 -NMMMMMNN${c3}mdhyyyyyyyhdm${c1}NMMMMMMMMMMMN+
 8126`NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd.
 8127ods+/:-----://+oyydmNMMMMMMMMMMMMMMMMMN-
 8128`                     .-:+osyhhdmmNNNmdo
 8129EOF
 8130        ;;
 8131
 8132        "Kogaion"*)
 8133            set_colors 4 7 1
 8134            read -rd '' ascii_data <<'EOF'
 8135${c1}            ;;      ,;
 8136           ;;;     ,;;
 8137         ,;;;;     ;;;;
 8138      ,;;;;;;;;    ;;;;
 8139     ;;;;;;;;;;;   ;;;;;
 8140    ,;;;;;;;;;;;;  ';;;;;,
 8141    ;;;;;;;;;;;;;;, ';;;;;;;
 8142    ;;;;;;;;;;;;;;;;;, ';;;;;
 8143;    ';;;;;;;;;;;;;;;;;;, ;;;
 8144;;;,  ';;;;;;;;;;;;;;;;;;;,;;
 8145;;;;;,  ';;;;;;;;;;;;;;;;;;,
 8146;;;;;;;;,  ';;;;;;;;;;;;;;;;,
 8147;;;;;;;;;;;;, ';;;;;;;;;;;;;;
 8148';;;;;;;;;;;;; ';;;;;;;;;;;;;
 8149 ';;;;;;;;;;;;;, ';;;;;;;;;;;
 8150  ';;;;;;;;;;;;;  ;;;;;;;;;;
 8151    ';;;;;;;;;;;; ;;;;;;;;
 8152        ';;;;;;;; ;;;;;;
 8153           ';;;;; ;;;;
 8154             ';;; ;;
 8155EOF
 8156        ;;
 8157
 8158        "Korora"*)
 8159            set_colors 4 7 1
 8160            read -rd '' ascii_data <<'EOF'
 8161${c2}                ____________
 8162             _add55555555554${c1}:
 8163           _w?'${c1}``````````'${c2})k${c1}:
 8164          _Z'${c1}`${c2}            ]k${c1}:
 8165          m(${c1}`${c2}             )k${c1}:
 8166     _.ss${c1}`${c2}m[${c1}`${c2},            ]e${c1}:
 8167   .uY"^`${c1}`${c2}Xc${c1}`${c2}?Ss.         d(${c1}`
 8168  jF'${c1}`${c2}    `@.  ${c1}`${c2}Sc      .jr${c1}`
 8169 jr${c1}`${c2}       `?n_ ${c1}`${c2}$;   _a2"${c1}`
 8170.m${c1}:${c2}          `~M${c1}`${c2}1k${c1}`${c2}5?!`${c1}`
 8171:#${c1}:${c2}             ${c1}`${c2})e${c1}```
 8172:m${c1}:${c2}             ,#'${c1}`
 8173:#${c1}:${c2}           .s2'${c1}`
 8174:m,________.aa7^${c1}`
 8175:#baaaaaaas!J'${c1}`
 8176 ```````````
 8177EOF
 8178        ;;
 8179
 8180        "KSLinux"*)
 8181            set_colors 4 7 1
 8182            read -rd '' ascii_data <<'EOF'
 8183${c1} K   K U   U RRRR   ooo
 8184 K  K  U   U R   R o   o
 8185 KKK   U   U RRRR  o   o
 8186 K  K  U   U R  R  o   o
 8187 K   K  UUU  R   R  ooo
 8188
 8189${c2}  SSS   AAA  W   W  AAA
 8190 S     A   A W   W A   A
 8191  SSS  AAAAA W W W AAAAA
 8192     S A   A WW WW A   A
 8193  SSS  A   A W   W A   A
 8194EOF
 8195        ;;
 8196
 8197        "Kubuntu"*)
 8198            set_colors 4 7 1
 8199            read -rd '' ascii_data <<'EOF'
 8200${c1}           `.:/ossyyyysso/:.
 8201        .:oyyyyyyyyyyyyyyyyyyo:`
 8202      -oyyyyyyyo${c2}dMMy${c1}yyyyyyysyyyyo-
 8203    -syyyyyyyyyy${c2}dMMy${c1}oyyyy${c2}dmMMy${c1}yyyys-
 8204   oyyys${c2}dMy${c1}syyyy${c2}dMMMMMMMMMMMMMy${c1}yyyyyyo
 8205 `oyyyy${c2}dMMMMy${c1}syysoooooo${c2}dMMMMy${c1}yyyyyyyyo`
 8206 oyyyyyy${c2}dMMMMy${c1}yyyyyyyyyyys${c2}dMMy${c1}sssssyyyo
 8207-yyyyyyyy${c2}dMy${c1}syyyyyyyyyyyyyys${c2}dMMMMMy${c1}syyy-
 8208oyyyysoo${c2}dMy${c1}yyyyyyyyyyyyyyyyyy${c2}dMMMMy${c1}syyyo
 8209yyys${c2}dMMMMMy${c1}yyyyyyyyyyyyyyyyyysosyyyyyyyy
 8210yyys${c2}dMMMMMy${c1}yyyyyyyyyyyyyyyyyyyyyyyyyyyyy
 8211oyyyyysos${c2}dy${c1}yyyyyyyyyyyyyyyyyy${c2}dMMMMy${c1}syyyo
 8212-yyyyyyyy${c2}dMy${c1}syyyyyyyyyyyyyys${c2}dMMMMMy${c1}syyy-
 8213 oyyyyyy${c2}dMMMy${c1}syyyyyyyyyyys${c2}dMMy${c1}oyyyoyyyo
 8214 `oyyyy${c2}dMMMy${c1}syyyoooooo${c2}dMMMMy${c1}oyyyyyyyyo
 8215   oyyysyyoyyyys${c2}dMMMMMMMMMMMy${c1}yyyyyyyo
 8216    -syyyyyyyyy${c2}dMMMy${c1}syyy${c2}dMMMy${c1}syyyys-
 8217      -oyyyyyyy${c2}dMMy${c1}yyyyyysosyyyyo-
 8218        ./oyyyyyyyyyyyyyyyyyyo/.
 8219           `.:/oosyyyysso/:.`
 8220EOF
 8221        ;;
 8222
 8223        "LEDE"*)
 8224            set_colors 4 7 1
 8225            read -rd '' ascii_data <<'EOF'
 8226    ${c1} _________
 8227    /        /\
 8228   /  LE    /  \
 8229  /    DE  /    \
 8230 /________/  LE  \
 8231 \        \   DE /
 8232  \    LE  \    /
 8233   \  DE    \  /
 8234    \________\/
 8235EOF
 8236        ;;
 8237
 8238        "LaxerOS"*)
 8239            set_colors 7 4
 8240            read -rd '' ascii_data <<'EOF'
 8241${c2}
 8242                    /.
 8243                 `://:-
 8244                `//////:
 8245               .////////:`
 8246              -//////////:`
 8247             -/////////////`
 8248            :///////////////.
 8249          `://////.```-//////-
 8250         `://///:`     .//////-
 8251        `//////:        `//////:
 8252       .//////-          `://///:`
 8253      -//////-            `://///:`
 8254     -//////.               ://////`
 8255    ://////`                 -//////.
 8256   `/////:`                   ./////:
 8257    .-::-`                     .:::-`
 8258
 8259.:://////////////////////////////////::.
 8260////////////////////////////////////////
 8261.:////////////////////////////////////:.
 8262
 8263EOF
 8264        ;;
 8265
 8266        "LibreELEC"*)
 8267            set_colors 2 3 7 14 13
 8268            read -rd '' ascii_data <<'EOF'
 8269${c1}          :+ooo/.      ${c2}./ooo+:
 8270${c1}        :+ooooooo/.  ${c2}./ooooooo+:
 8271${c1}      :+ooooooooooo:${c2}:ooooooooooo+:
 8272${c1}    :+ooooooooooo+-  ${c2}-+ooooooooooo+:
 8273${c1}  :+ooooooooooo+-  ${c3}--  ${c2}-+ooooooooooo+:
 8274${c1}.+ooooooooooo+-  ${c3}:+oo+:  ${c2}-+ooooooooooo+-
 8275${c1}-+ooooooooo+-  ${c3}:+oooooo+:  ${c2}-+oooooooooo-
 8276${c1}  :+ooooo+-  ${c3}:+oooooooooo+:  ${c2}-+oooooo:
 8277${c1}    :+o+-  ${c3}:+oooooooooooooo+:  ${c2}-+oo:
 8278${c4}     ./   ${c3}:oooooooooooooooooo:   ${c5}/.
 8279${c4}   ./oo+:  ${c3}-+oooooooooooooo+-  ${c5}:+oo/.
 8280${c4} ./oooooo+:  ${c3}-+oooooooooo+-  ${c5}:+oooooo/.
 8281${c4}-oooooooooo+:  ${c3}-+oooooo+-  ${c5}:+oooooooooo-
 8282${c4}.+ooooooooooo+:  ${c3}-+oo+-  ${c5}:+ooooooooooo+.
 8283${c4}  -+ooooooooooo+:  ${c3}..  ${c5}:+ooooooooooo+-
 8284${c4}    -+ooooooooooo+:  ${c5}:+ooooooooooo+-
 8285${c4}      -+oooooooooo+:${c5}:+oooooooooo+-
 8286${c4}        -+oooooo+:    ${c5}:+oooooo+-
 8287${c4}          -+oo+:        ${c5}:+oo+-
 8288${c4}            ..            ${c5}..
 8289EOF
 8290        ;;
 8291
 8292        "Linux")
 8293            set_colors fg 8 3
 8294            read -rd '' ascii_data <<'EOF'
 8295${c2}        #####
 8296${c2}       #######
 8297${c2}       ##${c1}O${c2}#${c1}O${c2}##
 8298${c2}       #${c3}#####${c2}#
 8299${c2}     ##${c1}##${c3}###${c1}##${c2}##
 8300${c2}    #${c1}##########${c2}##
 8301${c2}   #${c1}############${c2}##
 8302${c2}   #${c1}############${c2}###
 8303${c3}  ##${c2}#${c1}###########${c2}##${c3}#
 8304${c3}######${c2}#${c1}#######${c2}#${c3}######
 8305${c3}#######${c2}#${c1}#####${c2}#${c3}#######
 8306${c3}  #####${c2}#######${c3}#####
 8307EOF
 8308        ;;
 8309
 8310        "linuxlite_small"*)
 8311            set_colors 3 7
 8312            read -rd '' ascii_data <<'EOF'
 8313${c1}   /\\
 8314  /  \\
 8315 / ${c2}/ ${c1}/
 8316> ${c2}/ ${c1}/
 8317\\ ${c2}\\ ${c1}\\
 8318 \\_${c2}\\${c1}_\\
 8319${c2}    \\
 8320EOF
 8321        ;;
 8322
 8323        "Linux Lite"* | "Linux_Lite"*)
 8324            set_colors 3 7
 8325            read -rd '' ascii_data <<'EOF'
 8326${c1}          ,xXc
 8327      .l0MMMMMO
 8328   .kNMMMMMWMMMN,
 8329   KMMMMMMKMMMMMMo
 8330  'MMMMMMNKMMMMMM:
 8331  kMMMMMMOMMMMMMO
 8332 .MMMMMMX0MMMMMW.
 8333 oMMMMMMxWMMMMM:
 8334 WMMMMMNkMMMMMO
 8335:MMMMMMOXMMMMW
 8336.0MMMMMxMMMMM;
 8337:;cKMMWxMMMMO
 8338'MMWMMXOMMMMl
 8339 kMMMMKOMMMMMX:
 8340 .WMMMMKOWMMM0c
 8341  lMMMMMWO0MNd:'
 8342   oollXMKXoxl;.
 8343     ':. .: .'
 8344              ..
 8345                .
 8346EOF
 8347        ;;
 8348
 8349        "LMDE"*)
 8350            set_colors 2 7
 8351            read -rd '' ascii_data <<'EOF'
 8352         ${c2}`.-::---..
 8353${c1}      .:++++ooooosssoo:.
 8354    .+o++::.      `.:oos+.
 8355${c1}   :oo:.`             -+oo${c2}:
 8356${c1} ${c2}`${c1}+o/`    .${c2}::::::${c1}-.    .++-${c2}`
 8357${c1}${c2}`${c1}/s/    .yyyyyyyyyyo:   +o-${c2}`
 8358${c1}${c2}`${c1}so     .ss       ohyo` :s-${c2}:
 8359${c1}${c2}`${c1}s/     .ss  h  m  myy/ /s`${c2}`
 8360${c1}`s:     `oo  s  m  Myy+-o:`
 8361`oo      :+sdoohyoydyso/.
 8362 :o.      .:////////++:
 8363${c1} `/++        ${c2}-:::::-
 8364${c1}  ${c2}`${c1}++-
 8365${c1}   ${c2}`${c1}/+-
 8366${c1}     ${c2}.${c1}+/.
 8367${c1}       ${c2}.${c1}:+-.
 8368          `--.``
 8369EOF
 8370        ;;
 8371
 8372        "Lubuntu"*)
 8373            set_colors 4 7 1
 8374            read -rd '' ascii_data <<'EOF'
 8375${c1}           `.:/ossyyyysso/:.
 8376        `.:yyyyyyyyyyyyyyyyyy:.`
 8377      .:yyyyyyyyyyyyyyyyyyyyyyyy:.
 8378    .:yyyyyyyyyyyyyyyyyyyyyyyyyyyy:.
 8379   -yyyyyyyyyyyyyy${c2}+hNMMMNh+${c1}yyyyyyyyy-
 8380  :yy${c2}mNy+${c1}yyyyyyyy${c2}+Nmso++smMdhyysoo+${c1}yy:
 8381 -yy${c2}+MMMmmy${c1}yyyyyy${c2}hh${c1}yyyyyyyyyyyyyyyyyyy-
 8382.yyyy${c2}NMN${c1}yy${c2}shhs${c1}yyy${c2}+o${c1}yyyyyyyyyyyyyyyyyyyy.
 8383:yyyy${c2}oNM+${c1}yyyy${c2}+sso${c1}yyyyyyy${c2}ss${c1}yyyyyyyyyyyyy:
 8384:yyyyy${c2}+dNs${c1}yyyyyyy${c2}++${c1}yyyyy${c2}oN+${c1}yyyyyyyyyyyy:
 8385:yyyyy${c2}oMMmhysso${c1}yyyyyyyyyy${c2}mN+${c1}yyyyyyyyyyy:
 8386:yyyyyy${c2}hMm${c1}yyyyy${c2}+++${c1}yyyyyyy${c2}+MN${c1}yyyyyyyyyyy:
 8387.yyyyyyy${c2}ohmy+${c1}yyyyyyyyyyyyy${c2}NMh${c1}yyyyyyyyyy.
 8388 -yyyyyyyyyy${c2}++${c1}yyyyyyyyyyyy${c2}MMh${c1}yyyyyyyyy-
 8389  :yyyyyyyyyyyyyyyyyyyyy${c2}+mMN+${c1}yyyyyyyy:
 8390   -yyyyyyyyyyyyyyyyy${c2}+sdMMd+${c1}yyyyyyyy-
 8391    .:yyyyyyyyy${c2}hmdmmNMNdy+${c1}yyyyyyyy:.
 8392      .:yyyyyyy${c2}my${c1}yyyyyyyyyyyyyyy:.
 8393        `.:yyyy${c2}s${c1}yyyyyyyyyyyyy:.`
 8394           `.:/oosyyyysso/:.`
 8395EOF
 8396        ;;
 8397
 8398        "Lunar"*)
 8399            set_colors 4 7 3
 8400            read -rd '' ascii_data <<'EOF'
 8401${c1}`-.                                 `-.
 8402  -ohys/-`                    `:+shy/`
 8403     -omNNdyo/`          :+shmNNy/`
 8404             ${c3}      -
 8405                 /mMmo
 8406                 hMMMN`
 8407                 .NMMs
 8408    ${c1}  -:+oooo+//: ${c3}/MN${c1}. -///oooo+/-`
 8409     /:.`          ${c3}/${c1}           `.:/`
 8410${c3}          __
 8411         |  |   _ _ ___ ___ ___
 8412         |  |__| | |   | .'|  _|
 8413         |_____|___|_|_|__,|_|
 8414EOF
 8415        ;;
 8416
 8417        "mac"*"_small")
 8418            set_colors 2 3 1 5 4
 8419            read -rd '' ascii_data <<'EOF'
 8420${c1}       .:'
 8421    _ :'_
 8422${c2} .'`_`-'_``.
 8423:________.-'
 8424${c3}:_______:
 8425:_______:
 8426${c4} :_______`-;
 8427${c5}  `._.-._.'
 8428EOF
 8429        ;;
 8430
 8431        "mac"* | "Darwin")
 8432            set_colors 2 3 1 1 5 4
 8433            read -rd '' ascii_data <<'EOF'
 8434${c1}                    c.'
 8435                 ,xNMM.
 8436               .OMMMMo
 8437               lMM"
 8438     .;loddo:.  .olloddol;.
 8439   cKMMMMMMMMMMNWMMMMMMMMMM0:
 8440${c2} .KMMMMMMMMMMMMMMMMMMMMMMMWd.
 8441 XMMMMMMMMMMMMMMMMMMMMMMMX.
 8442${c3};MMMMMMMMMMMMMMMMMMMMMMMM:
 8443:MMMMMMMMMMMMMMMMMMMMMMMM:
 8444${c4}.MMMMMMMMMMMMMMMMMMMMMMMMX.
 8445 kMMMMMMMMMMMMMMMMMMMMMMMMWd.
 8446 ${c5}'XMMMMMMMMMMMMMMMMMMMMMMMMMMk
 8447  'XMMMMMMMMMMMMMMMMMMMMMMMMK.
 8448    ${c6}kMMMMMMMMMMMMMMMMMMMMMMd
 8449     ;KMMMMMMMWXXWMMMMMMMk.
 8450       "cooc*"    "*coo'"
 8451EOF
 8452        ;;
 8453
 8454        "mageia_small"*)
 8455            set_colors 6 7
 8456            read -rd '' ascii_data <<'EOF'
 8457${c1}   *
 8458    *
 8459   **
 8460${c2} /\\__/\\
 8461/      \\
 8462\\      /
 8463 \\____/
 8464EOF
 8465        ;;
 8466
 8467        "Mageia"*)
 8468            set_colors 6 7
 8469            read -rd '' ascii_data <<'EOF'
 8470${c1}        .°°.
 8471         °°   .°°.
 8472         .°°°. °°
 8473         .   .
 8474          °°° .°°°.
 8475      .°°°.   '___'
 8476${c2}     .${c1}'___'     ${c2}   .
 8477   :dkxc;'.  ..,cxkd;
 8478 .dkk. kkkkkkkkkk .kkd.
 8479.dkk.  ';cloolc;.  .kkd
 8480ckk.                .kk;
 8481xO:                  cOd
 8482xO:                  lOd
 8483lOO.                .OO:
 8484.k00.              .00x
 8485 .k00;            ;00O.
 8486  .lO0Kc;,,,,,,;c0KOc.
 8487     ;d00KKKKKK00d;
 8488        .,KKKK,.
 8489EOF
 8490        ;;
 8491
 8492        "MagpieOS"*)
 8493            set_colors 2 1 3 5
 8494            read -rd '' ascii_data <<'EOF'
 8495${c1}        ;00000     :000Ol
 8496     .x00kk00:    O0kk00k;
 8497    l00:   :00.  o0k   :O0k.
 8498  .k0k.     x${c2}d$dddd${c1}k'    .d00;
 8499  k0k.      ${c2}.dddddl       ${c1}o00,
 8500 o00.        ${c2}':cc:.        ${c1}d0O
 8501.00l                       ,00.
 8502l00.                       d0x
 8503k0O                     .:k0o
 8504O0k                 ;dO0000d.
 8505k0O               .O0O${c2}xxxxk${c1}00:
 8506o00.              k0O${c2}dddddd${c1}occ
 8507'00l              x0O${c2}dddddo${c3};..${c1}
 8508 x00.             .x00${c2}kxxd${c3}:..${c1}
 8509 .O0x               .:oxxx${c4}Okl.${c1}
 8510  .x0d                     ${c4},xx,${c1}
 8511    .:o.          ${c4}.xd       ckd${c1}
 8512       ..          ${c4}dxl     .xx;
 8513                    :xxolldxd'
 8514                      ;oxdl.
 8515EOF
 8516        ;;
 8517
 8518        "Mandriva"* | "Mandrake"*)
 8519            set_colors 4 3
 8520            read -rd '' ascii_data <<'EOF'
 8521${c2}                        ``
 8522                       `-.
 8523${c1}      `               ${c2}.---
 8524${c1}    -/               ${c2}-::--`
 8525${c1}  `++    ${c2}`----...```-:::::.
 8526${c1} `os.      ${c2}.::::::::::::::-```     `  `
 8527${c1} +s+         ${c2}.::::::::::::::::---...--`
 8528${c1}-ss:          ${c2}`-::::::::::::::::-.``.``
 8529${c1}/ss-           ${c2}.::::::::::::-.``   `
 8530${c1}+ss:          ${c2}.::::::::::::-
 8531${c1}/sso         ${c2}.::::::-::::::-
 8532${c1}.sss/       ${c2}-:::-.`   .:::::
 8533${c1} /sss+.    ${c2}..`${c1}  `--`    ${c2}.:::
 8534${c1}  -ossso+/:://+/-`        ${c2}.:`
 8535${c1}    -/+ooo+/-.              ${c2}`
 8536EOF
 8537        ;;
 8538
 8539        "manjaro_small"*)
 8540            set_colors 2 7
 8541            read -rd '' ascii_data <<'EOF'
 8542${c1}||||||||| ||||
 8543||||||||| ||||
 8544||||      ||||
 8545|||| |||| ||||
 8546|||| |||| ||||
 8547|||| |||| ||||
 8548|||| |||| ||||
 8549EOF
 8550        ;;
 8551
 8552        "Manjaro"*)
 8553            set_colors 2 7
 8554            read -rd '' ascii_data <<'EOF'
 8555${c1}██████████████████  ████████
 8556██████████████████  ████████
 8557██████████████████  ████████
 8558██████████████████  ████████
 8559████████            ████████
 8560████████  ████████  ████████
 8561████████  ████████  ████████
 8562████████  ████████  ████████
 8563████████  ████████  ████████
 8564████████  ████████  ████████
 8565████████  ████████  ████████
 8566████████  ████████  ████████
 8567████████  ████████  ████████
 8568████████  ████████  ████████
 8569EOF
 8570        ;;
 8571
 8572        "TeArch"*)
 8573            set_colors 39 7 1
 8574            read -rd '' ascii_data <<'EOF'
 8575${c1}          @@@@@@@@@@@@@@
 8576      @@@@@@@@@              @@@@@@
 8577     @@@@@                     @@@@@
 8578     @@                           @@
 8579      @%                         @@
 8580       @                         @
 8581       @@@@@@@@@@@@@@@@@@@@@@@@ @@
 8582       .@@@@@@@@@@@@/@@@@@@@@@@@@
 8583       @@@@@@@@@@@@///@@@@@@@@@@@@
 8584      @@@@@@@@@@@@@((((@@@@@@@@@@@@
 8585     @@@@@@@@@@@#(((((((#@@@@@@@@@@@
 8586    @@@@@@@@@@@#//////////@@@@@@@@@@&
 8587    @@@@@@@@@@////@@@@@////@@@@@@@@@@
 8588    @@@@@@@@//////@@@@@/////@@@@@@@@@
 8589    @@@@@@@//@@@@@@@@@@@@@@@//@@@@@@@
 8590 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 8591@@     .@@@@@@@@@@@@@@@@@@@@@@@@@      @
 8592 @@@@@@           @@@.           @@@@@@@
 8593   @@@@@@@&@@@@@@@#  #@@@@@@@@@@@@@@@@
 8594      @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 8595          @@@@@@@@@@@@@@@@@@@@@
 8596EOF
 8597        ;;
 8598
 8599        "Maui"*)
 8600            set_colors 6 7
 8601            read -rd '' ascii_data <<'EOF'
 8602${c1}             `.-://////:--`
 8603         .:/oooooooooooooooo+:.
 8604      `:+ooooooooooooooooooooooo:`
 8605    `:oooooooooooooooooooooooooooo/`
 8606    ..```-oooooo/-`` `:oooooo+:.` `--
 8607  :.      +oo+-`       /ooo/`       -/
 8608 -o.     `o+-          +o/`         -o:
 8609`oo`     ::`  :o/     `+.  .+o`     /oo.
 8610/o+      .  -+oo-     `   /oo/     `ooo/
 8611+o-        /ooo+`       .+ooo.     :ooo+
 8612++       .+oooo:       -oooo+     `oooo+
 8613:.      .oooooo`      :ooooo-     :oooo:
 8614`      .oooooo:      :ooooo+     `ooo+-`
 8615      .+oooooo`     -oooooo:     `o/-
 8616      +oooooo:     .ooooooo.
 8617     /ooooooo`     /ooooooo/       ..
 8618    `:oooooooo/:::/ooooooooo+:--:/:`
 8619      `:+oooooooooooooooooooooo+:`
 8620         .:+oooooooooooooooo+:.
 8621             `.-://////:-.`
 8622EOF
 8623        ;;
 8624
 8625        "Mer"*)
 8626            set_colors 4 7 1
 8627            read -rd '' ascii_data <<'EOF'
 8628${c1}                         dMs
 8629                         .-`
 8630                       `y`-o+`
 8631                        ``NMMy
 8632                      .--`:++.
 8633                    .hNNNNs
 8634                    /MMMMMN
 8635                    `ommmd/ +/
 8636                      ````  +/
 8637                     `:+sssso/-`
 8638  .-::. `-::-`     `smNMNmdmNMNd/      .://-`
 8639.ymNMNNdmNMMNm+`  -dMMh:.....+dMMs   `sNNMMNo
 8640dMN+::NMMy::hMM+  mMMo `ohhy/ `dMM+  yMMy::-
 8641MMm   yMM-  :MMs  NMN` `:::::--sMMh  dMM`
 8642MMm   yMM-  -MMs  mMM+ `ymmdsymMMMs  dMM`
 8643NNd   sNN-  -NNs  -mMNs-.--..:dMMh`  dNN
 8644---   .--`  `--.   .smMMmdddmMNdo`   .--
 8645                     ./ohddds+:`
 8646                     +h- `.:-.
 8647                     ./`.dMMMN+
 8648                        +MMMMMd
 8649                        `+dmmy-
 8650                      ``` .+`
 8651                     .dMNo-y.
 8652                     `hmm/
 8653                         .:`
 8654                         dMs
 8655EOF
 8656        ;;
 8657
 8658        "Minix"*)
 8659            set_colors 1 7 3
 8660            read -rd '' ascii_data <<'EOF'
 8661${c2}   -sdhyo+:-`                -/syymm:
 8662   sdyooymmNNy.     ``    .smNmmdysNd
 8663   odyoso+syNNmysoyhhdhsoomNmm+/osdm/
 8664    :hhy+-/syNNmddhddddddmNMNo:sdNd:
 8665     `smNNdNmmNmddddddddddmmmmmmmy`
 8666   `ohhhhdddddmmNNdmddNmNNmdddddmdh-
 8667   odNNNmdyo/:/-/hNddNy-`..-+ydNNNmd:
 8668 `+mNho:`   smmd/ sNNh :dmms`   -+ymmo.
 8669-od/       -m${c1}mm${c2}mo -NN+ +m${c1}mm${c2}m-       yms:
 8670+sms -.`    :so:  .NN+  :os/     .-`mNh:
 8671.-hyh+:////-     -sNNd:`    .--://ohNs-
 8672 `:hNNNNNNNMMd/sNMmhsdMMh/ymmNNNmmNNy/
 8673  -+sNNNNMMNNNsmNMo: :NNmymNNNNMMMms:
 8674    //oydNMMMMydMMNysNMMmsMMMMMNyo/`
 8675       ../-yNMMy--/::/-.sMMmos+.`
 8676           -+oyhNsooo+omy/```
 8677              `::ohdmds-`
 8678EOF
 8679        ;;
 8680
 8681        "linuxmint_small"*)
 8682            set_colors 2 7
 8683            read -rd '' ascii_data <<'EOF'
 8684${c1} ___________
 8685|_          \\
 8686  | ${c2}| _____ ${c1}|
 8687  | ${c2}| | | | ${c1}|
 8688  | ${c2}| | | | ${c1}|
 8689  | ${c2}\\__${c2}___/ ${c1}|
 8690  \\_________/
 8691EOF
 8692        ;;
 8693
 8694        "Linux Mint Old"* | "LinuxMintOld"* | "mint_old"*)
 8695            set_colors 2 7
 8696            read -rd '' ascii_data <<'EOF'
 8697${c1}MMMMMMMMMMMMMMMMMMMMMMMMMmds+.
 8698MMm----::-://////////////oymNMd+`
 8699MMd      ${c2}/++                ${c1}-sNMd:
 8700MMNso/`  ${c2}dMM    `.::-. .-::.` ${c1}.hMN:
 8701ddddMMh  ${c2}dMM   :hNMNMNhNMNMNh: ${c1}`NMm
 8702    NMm  ${c2}dMM  .NMN/-+MMM+-/NMN` ${c1}dMM
 8703    NMm  ${c2}dMM  -MMm  `MMM   dMM. ${c1}dMM
 8704    NMm  ${c2}dMM  -MMm  `MMM   dMM. ${c1}dMM
 8705    NMm  ${c2}dMM  .mmd  `mmm   yMM. ${c1}dMM
 8706    NMm  ${c2}dMM`  ..`   ...   ydm. ${c1}dMM
 8707    hMM- ${c2}+MMd/-------...-:sdds  ${c1}dMM
 8708    -NMm- ${c2}:hNMNNNmdddddddddy/`  ${c1}dMM
 8709     -dMNs-${c2}``-::::-------.``    ${c1}dMM
 8710      `/dMNmy+/:-------------:/yMMM
 8711         ./ydNMMMMMMMMMMMMMMMMMMMMM
 8712            .MMMMMMMMMMMMMMMMMMM
 8713EOF
 8714        ;;
 8715
 8716        "Linux Mint"* | "LinuxMint"* | "mint"*)
 8717            set_colors 2 7
 8718            read -rd '' ascii_data <<'EOF'
 8719${c2}             ...-:::::-...
 8720${c2}          .-MMMMMMMMMMMMMMM-.
 8721      .-MMMM${c1}`..-:::::::-..`${c2}MMMM-.
 8722    .:MMMM${c1}.:MMMMMMMMMMMMMMM:.${c2}MMMM:.
 8723   -MMM${c1}-M---MMMMMMMMMMMMMMMMMMM.${c2}MMM-
 8724 `:MMM${c1}:MM`  :MMMM:....::-...-MMMM:${c2}MMM:`
 8725 :MMM${c1}:MMM`  :MM:`  ``    ``  `:MMM:${c2}MMM:
 8726.MMM${c1}.MMMM`  :MM.  -MM.  .MM-  `MMMM.${c2}MMM.
 8727:MMM${c1}:MMMM`  :MM.  -MM-  .MM:  `MMMM-${c2}MMM:
 8728:MMM${c1}:MMMM`  :MM.  -MM-  .MM:  `MMMM:${c2}MMM:
 8729:MMM${c1}:MMMM`  :MM.  -MM-  .MM:  `MMMM-${c2}MMM:
 8730.MMM${c1}.MMMM`  :MM:--:MM:--:MM:  `MMMM.${c2}MMM.
 8731 :MMM${c1}:MMM-  `-MMMMMMMMMMMM-`  -MMM-${c2}MMM:
 8732  :MMM${c1}:MMM:`                `:MMM:${c2}MMM:
 8733   .MMM${c1}.MMMM:--------------:MMMM.${c2}MMM.
 8734     '-MMMM${c1}.-MMMMMMMMMMMMMMM-.${c2}MMMM-'
 8735       '.-MMMM${c1}``--:::::--``${c2}MMMM-.'
 8736${c2}            '-MMMMMMMMMMMMM-'
 8737${c2}               ``-:::::-``
 8738EOF
 8739        ;;
 8740
 8741        "Live Raizo"* | "Live_Raizo"*)
 8742            set_colors 3
 8743            read -rd '' ascii_data <<'EOF'
 8744${c1}             `......`
 8745        -+shmNMMMMMMNmhs/.
 8746     :smMMMMMmmhyyhmmMMMMMmo-
 8747   -hMMMMd+:. `----` .:odMMMMh-
 8748 `hMMMN+. .odNMMMMMMNdo. .yMMMMs`
 8749 hMMMd. -dMMMMmdhhdNMMMNh` .mMMMh
 8750oMMMm` :MMMNs.:sddy:-sMMMN- `NMMM+
 8751mMMMs  dMMMo sMMMMMMd yMMMd  sMMMm
 8752----`  .---` oNMMMMMh `---.  .----
 8753              .sMMy:
 8754               /MM/
 8755              +dMMms.
 8756             hMMMMMMN
 8757            `dMMMMMMm:
 8758      .+ss+sMNysMMoomMd+ss+.
 8759     +MMMMMMN` +MM/  hMMMMMNs
 8760     sMMMMMMm-hNMMMd-hMMMMMMd
 8761      :yddh+`hMMMMMMN :yddy/`
 8762             .hMMMMd:
 8763               `..`
 8764EOF
 8765        ;;
 8766
 8767        "mx_small"*)
 8768            set_colors 4 6 7
 8769            read -rd '' ascii_data <<'EOF'
 8770${c3}    \\\\  /
 8771     \\\\/
 8772      \\\\
 8773   /\\/ \\\\
 8774  /  \\  /\\
 8775 /    \\/  \\
 8776/__________\\
 8777EOF
 8778        ;;
 8779
 8780        "MX"*)
 8781            set_colors 4 6 7
 8782            read -rd '' ascii_data <<'EOF'
 8783${c3}MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNMMMMMMMMM
 8784MMMMMMMMMMNs..yMMMMMMMMMMMMMm: +NMMMMMMM
 8785MMMMMMMMMN+    :mMMMMMMMMMNo` -dMMMMMMMM
 8786MMMMMMMMMMMs.   `oNMMMMMMh- `sNMMMMMMMMM
 8787MMMMMMMMMMMMN/    -hMMMN+  :dMMMMMMMMMMM
 8788MMMMMMMMMMMMMMh-    +ms. .sMMMMMMMMMMMMM
 8789MMMMMMMMMMMMMMMN+`   `  +NMMMMMMMMMMMMMM
 8790MMMMMMMMMMMMMMNMMd:    .dMMMMMMMMMMMMMMM
 8791MMMMMMMMMMMMm/-hMd-     `sNMMMMMMMMMMMMM
 8792MMMMMMMMMMNo`   -` :h/    -dMMMMMMMMMMMM
 8793MMMMMMMMMd:       /NMMh-   `+NMMMMMMMMMM
 8794MMMMMMMNo`         :mMMN+`   `-hMMMMMMMM
 8795MMMMMMh.            `oNMMd:    `/mMMMMMM
 8796MMMMm/                -hMd-      `sNMMMM
 8797MMNs`                   -          :dMMM
 8798Mm:                                 `oMM
 8799MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
 8800EOF
 8801        ;;
 8802
 8803        "Namib"*)
 8804            set_colors 1
 8805            read -rd '' ascii_data <<'EOF'
 8806${c1}          .:+shysyhhhhysyhs+:.
 8807       -/yyys              syyy/-
 8808     -shy                      yhs-
 8809   -yhs                          shy-
 8810  +hy                              yh+
 8811 +ds                                sd+
 8812/ys                  so              sy/
 8813sh                 smMMNdyo           hs
 8814yo               ymMMMMNNMMNho        oy
 8815N             ydMMMNNMMMMMMMMMmy       N
 8816N         shmMMMMNNMMMMMMMMMMMMMNy     N
 8817yo  ooshmNMMMNNNNMMMMMMMMMMMMMMMMMms  oy
 8818sd yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy ds
 8819/ys                                  sy/
 8820 +ds                                sd+
 8821  +hy                              yh+
 8822   -yhs                          shy-
 8823     -shy                      yhs-
 8824       -/yyys              syyy/-
 8825          .:+shysyhyhhysyhs+:.
 8826EOF
 8827        ;;
 8828
 8829        "Neptune"*)
 8830            set_colors 7
 8831            read -rd '' ascii_data <<'EOF'
 8832${c1}            ./+sydddddddys/-.
 8833        .+ymNNdyooo/:+oooymNNmy/`
 8834     `/hNNh/.`             `-+dNNy:`
 8835    /mMd/.          .++.:oy/   .+mMd-
 8836  `sMN/             oMMmdy+.     `oNNo
 8837 `hMd.           `/ymy/.           :NMo
 8838 oMN-          `/dMd:               /MM-
 8839`mMy          -dMN+`                 mMs
 8840.MMo         -NMM/                   yMs
 8841 dMh         mMMMo:`                `NMo
 8842 /MM/        /ymMMMm-               sMN.
 8843  +Mm:         .hMMd`              oMN/
 8844   +mNs.      `yNd/`             -dMm-
 8845    .yMNs:    `/.`            `/yNNo`
 8846      .odNNy+-`           .:ohNNd/.
 8847         -+ymNNmdyyyyyyydmNNmy+.
 8848             `-//sssssss//.
 8849EOF
 8850        ;;
 8851
 8852        "netbsd_small"*)
 8853            set_colors 5 7
 8854            read -rd '' ascii_data <<'EOF'
 8855${c2}\\\\${c1}\`-______,----__
 8856${c2} \\\\        ${c1}__,---\`_
 8857${c2}  \\\\       ${c1}\`.____
 8858${c2}   \\\\${c1}-______,----\`-
 8859${c2}    \\\\
 8860     \\\\
 8861      \\\\
 8862EOF
 8863        ;;
 8864
 8865        "NetBSD"*)
 8866            set_colors 5 7
 8867            read -rd '' ascii_data <<'EOF'
 8868${c1}                     `-/oshdmNMNdhyo+:-`
 8869${c2}y${c1}/s+:-``    `.-:+oydNMMMMNhs/-``
 8870${c2}-m+${c1}NMMMMMMMMMMMMMMMMMMMNdhmNMMMmdhs+/-`
 8871 ${c2}-m+${c1}NMMMMMMMMMMMMMMMMMMMMmy+:`
 8872  ${c2}-N/${c1}dMMMMMMMMMMMMMMMds:`
 8873   ${c2}-N/${c1}hMMMMMMMMMmho:`
 8874    ${c2}-N/${c1}-:/++/:.`
 8875${c2}     :M+
 8876      :Mo
 8877       :Ms
 8878        :Ms
 8879         :Ms
 8880          :Ms
 8881           :Ms
 8882            :Ms
 8883             :Ms
 8884              :Ms
 8885EOF
 8886        ;;
 8887
 8888        "Netrunner"*)
 8889            set_colors 4 7 1
 8890            read -rd '' ascii_data <<'EOF'
 8891${c1}           .:oydmMMMMMMmdyo:`
 8892        -smMMMMMMMMMMMMMMMMMMds-
 8893      +mMMMMMMMMMMMMMMMMMMMMMMMMd+
 8894    /mMMMMMMMMMMMMMMMMMMMMMMMMMMMMm/
 8895  `hMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMy`
 8896 .mMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd`
 8897 dMMMMMMMMMMMMMMMMMMMMMMNdhmMMMMMMMMMMh
 8898+MMMMMMMMMMMMMNmhyo+/-.   -MMMMMMMMMMMM/
 8899mMMMMMMMMd+:.`           `mMMMMMMMMMMMMd
 8900MMMMMMMMMMMdy/.          yMMMMMMMMMMMMMM
 8901MMMMMMMMMMMMMMMNh+`     +MMMMMMMMMMMMMMM
 8902mMMMMMMMMMMMMMMMMMs    -NMMMMMMMMMMMMMMd
 8903+MMMMMMMMMMMMMMMMMN.  `mMMMMMMMMMMMMMMM/
 8904 dMMMMMMMMMMMMMMMMMy  hMMMMMMMMMMMMMMMh
 8905 `dMMMMMMMMMMMMMMMMM-+MMMMMMMMMMMMMMMd`
 8906  `hMMMMMMMMMMMMMMMMmMMMMMMMMMMMMMMMy
 8907    /mMMMMMMMMMMMMMMMMMMMMMMMMMMMMm:
 8908      +dMMMMMMMMMMMMMMMMMMMMMMMMd/
 8909        -odMMMMMMMMMMMMMMMMMMdo-
 8910           `:+ydmNMMMMNmhy+-`
 8911EOF
 8912        ;;
 8913
 8914        "Nitrux"*)
 8915            set_colors 4
 8916            read -rd '' ascii_data <<'EOF'
 8917${c1}`:/.
 8918`/yo
 8919`/yo
 8920`/yo      .+:.
 8921`/yo      .sys+:.`
 8922`/yo       `-/sys+:.`
 8923`/yo           ./sss+:.`
 8924`/yo              .:oss+:-`
 8925`/yo                 ./o///:-`
 8926`/yo              `.-:///////:`
 8927`/yo           `.://///++//-``
 8928`/yo       `.-:////++++/-`
 8929`/yo    `-://///++o+/-`
 8930`/yo `-/+o+++ooo+/-`
 8931`/s+:+oooossso/.`
 8932`//+sssssso:.
 8933`+syyyy+:`
 8934:+s+-
 8935EOF
 8936        ;;
 8937
 8938        "nixos_small")
 8939            set_colors 4 6
 8940            read -rd '' ascii_data <<'EOF'
 8941  ${c1}  \\\\  \\\\ //
 8942 ==\\\\__\\\\/ //
 8943   //   \\\\//
 8944==//     //==
 8945 //\\\\___//
 8946// /\\\\  \\\\==
 8947  // \\\\  \\\\
 8948EOF
 8949        ;;
 8950
 8951        "nixos_old"*)
 8952            set_colors 4 6
 8953            read -rd '' ascii_data <<'EOF'
 8954${c1}          ::::.    ${c2}':::::     ::::'
 8955${c1}          ':::::    ${c2}':::::.  ::::'
 8956${c1}            :::::     ${c2}'::::.:::::
 8957${c1}      .......:::::..... ${c2}::::::::
 8958${c1}     ::::::::::::::::::. ${c2}::::::    ${c1}::::.
 8959    ::::::::::::::::::::: ${c2}:::::.  ${c1}.::::'
 8960${c2}           .....           ::::' ${c1}:::::'
 8961${c2}          :::::            '::' ${c1}:::::'
 8962${c2} ........:::::               ' ${c1}:::::::::::.
 8963${c2}:::::::::::::                 ${c1}:::::::::::::
 8964${c2} ::::::::::: ${c1}..              ${c1}:::::
 8965${c2}     .::::: ${c1}.:::            ${c1}:::::
 8966${c2}    .:::::  ${c1}:::::          ${c1}'''''    ${c2}.....
 8967    :::::   ${c1}':::::.  ${c2}......:::::::::::::'
 8968     :::     ${c1}::::::. ${c2}':::::::::::::::::'
 8969${c1}            .:::::::: ${c2}'::::::::::
 8970${c1}           .::::''::::.     ${c2}'::::.
 8971${c1}          .::::'   ::::.     ${c2}'::::.
 8972${c1}         .::::      ::::      ${c2}'::::.
 8973EOF
 8974        ;;
 8975
 8976        "NixOS"*)
 8977            set_colors 4 6
 8978            read -rd '' ascii_data <<'EOF'
 8979${c1}          ▗▄▄▄       ${c2}▗▄▄▄▄    ▄▄▄▖
 8980${c1}          ▜███▙       ${c2}▜███▙  ▟███▛
 8981${c1}           ▜███▙       ${c2}▜███▙▟███▛
 8982${c1}            ▜███▙       ${c2}▜██████▛
 8983${c1}     ▟█████████████████▙ ${c2}▜████▛     ${c1}▟▙
 8984${c1}    ▟███████████████████▙ ${c2}▜███▙    ${c1}▟██▙
 8985${c2}           ▄▄▄▄▖           ▜███▙  ${c1}▟███▛
 8986${c2}          ▟███▛             ▜██▛ ${c1}▟███▛
 8987${c2}         ▟███▛               ▜▛ ${c1}▟███▛
 8988${c2}▟███████████▛                  ${c1}▟██████████▙
 8989${c2}▜██████████▛                  ${c1}▟███████████▛
 8990${c2}      ▟███▛ ${c1}▟▙               ▟███▛
 8991${c2}     ▟███▛ ${c1}▟██▙             ▟███▛
 8992${c2}    ▟███▛  ${c1}▜███▙           ▝▀▀▀▀
 8993${c2}    ▜██▛    ${c1}▜███▙ ${c2}▜██████████████████▛
 8994${c2}     ▜▛     ${c1}▟████▙ ${c2}▜████████████████▛
 8995${c1}           ▟██████▙       ${c2}▜███▙
 8996${c1}          ▟███▛▜███▙       ${c2}▜███▙
 8997${c1}         ▟███▛  ▜███▙       ${c2}▜███▙
 8998${c1}         ▝▀▀▀    ▀▀▀▀▘       ${c2}▀▀▀▘
 8999EOF
 9000        ;;
 9001
 9002        "Nurunner"*)
 9003            set_colors 4
 9004            read -rd '' ascii_data <<'EOF'
 9005${c1}                  ,xc
 9006                ;00cxXl
 9007              ;K0,   .xNo.
 9008            :KO'       .lXx.
 9009          cXk.    ;xl     cXk.
 9010        cXk.    ;k:.,xo.    cXk.
 9011     .lXx.    :x::0MNl,dd.    :KO,
 9012   .xNx.    cx;:KMMMMMNo'dx.    ;KK;
 9013 .dNl.    cd,cXMMMMMMMMMWd,ox'    'OK:
 9014;WK.    'K,.KMMMMMMMMMMMMMWc.Kx     lMO
 9015 'OK:    'dl'xWMMMMMMMMMM0::x:    'OK:
 9016   .kNo    .xo'xWMMMMMM0;:O:    ;KK;
 9017     .dXd.   .do,oNMMO;ck:    ;00,
 9018        oNd.   .dx,;'cO;    ;K0,
 9019          oNx.    okk;    ;K0,
 9020            lXx.        :KO'
 9021              cKk'    cXk.
 9022                ;00:lXx.
 9023                  ,kd.
 9024EOF
 9025        ;;
 9026
 9027        "NuTyX"*)
 9028            set_colors 4 1
 9029            read -rd '' ascii_data <<'EOF'
 9030${c1}                                      .
 9031                                    .
 9032                                 ...
 9033                               ...
 9034            ....     .........--.
 9035       ..-++-----....--++++++---.
 9036    .-++++++-.   .-++++++++++++-----..
 9037  .--...  .++..-+++--.....-++++++++++--..
 9038 .     .-+-. .**-            ....  ..-+----..
 9039     .+++.  .*+.         +            -++-----.
 9040   .+++++-  ++.         .*+.     .....-+++-----.
 9041  -+++-++. .+.          .-+***++***++--++++.  .
 9042 -+-. --   -.          -*- ......        ..--.
 9043.-. .+-    .          -+.
 9044.  .+-                +.
 9045   --                 --
 9046  -+----.              .-
 9047  -++-.+.                .
 9048 .++. --
 9049  +.  ----.
 9050  .  .+. ..
 9051      -  .
 9052      .
 9053EOF
 9054        ;;
 9055
 9056        "OBRevenge"*)
 9057            set_colors 1 7 3
 9058            read -rd '' ascii_data <<'EOF'
 9059${c1}   __   __
 9060     _@@@@   @@@g_
 9061   _@@@@@@   @@@@@@
 9062  _@@@@@@M   W@@@@@@_
 9063 j@@@@P        ^W@@@@
 9064 @@@@L____  _____Q@@@@
 9065Q@@@@@@@@@@j@@@@@@@@@@
 9066@@@@@    T@j@    T@@@@@
 9067@@@@@ ___Q@J@    _@@@@@
 9068@@@@@fMMM@@j@jggg@@@@@@
 9069@@@@@    j@j@^MW@P @@@@
 9070Q@@@@@ggg@@f@   @@@@@@L
 9071^@@@@WWMMP  ^    Q@@@@
 9072 @@@@@_         _@@@@l
 9073  W@@@@@g_____g@@@@@P
 9074   @@@@@@@@@@@@@@@@l
 9075    ^W@@@@@@@@@@@P
 9076       ^TMMMMTll
 9077EOF
 9078        ;;
 9079
 9080        "openbsd_small")
 9081            set_colors 3 7 6 1 8
 9082            read -rd '' ascii_data <<'EOF'
 9083${c1}      _____
 9084    \\-     -/
 9085 \\_/         \\
 9086 |        ${c2}O O${c1} |
 9087 |_  <   )  3 )
 9088 / \\         /
 9089    /-_____-\\
 9090EOF
 9091        ;;
 9092
 9093        "OpenBSD"*)
 9094            set_colors 3 7 6 1 8
 9095            read -rd '' ascii_data <<'EOF'
 9096${c3}                                     _
 9097                                    (_)
 9098${c1}              |    .
 9099${c1}          .   |L  /|   .         ${c3} _
 9100${c1}      _ . |\ _| \--+._/| .       ${c3}(_)
 9101${c1}     / ||\| Y J  )   / |/| ./
 9102    J  |)'( |        ` F`.'/       ${c3} _
 9103${c1}  -<|  F         __     .-<        ${c3}(_)
 9104${c1}    | /       .-'${c3}. ${c1}`.  /${c3}-. ${c1}L___
 9105    J \\      <    ${c3}\ ${c1} | | ${c5}O${c3}\\${c1}|.-' ${c3} _
 9106${c1}  _J \\  .-    \\${c3}/ ${c5}O ${c3}| ${c1}| \\  |${c1}F    ${c3}(_)
 9107${c1} '-F  -<_.     \\   .-'  `-' L__
 9108__J  _   _.     >-'  ${c1})${c4}._.   ${c1}|-'
 9109${c1} `-|.'   /_.          ${c4}\_|  ${c1} F
 9110  /.-   .                _.<
 9111 /'    /.'             .'  `\\
 9112  /L  /'   |/      _.-'-\\
 9113 /'J       ___.---'\|
 9114   |\  .--' V  | `. `
 9115   |/`. `-.     `._)
 9116      / .-.\\
 9117      \\ (  `\\
 9118       `.\\
 9119EOF
 9120        ;;
 9121
 9122        "openEuler"*)
 9123            set_colors 4 7 1
 9124            read -rd '' ascii_data <<'EOF'
 9125${c1}                 `.cc.`
 9126             ``.cccccccc..`
 9127          `.cccccccccccccccc.`
 9128      ``.cccccccccccccccccccccc.``
 9129   `..cccccccccccccccccccccccccccc..`
 9130`.ccccccccccccccc${c2}/++/${c1}ccccccccccccccccc.`
 9131.ccccccccccccccc${c2}mNMMNdo+oso+${c1}ccccccccccc.
 9132.cccccccccc${c2}/++odms+//+mMMMMm/:+syso/${c1}cccc
 9133.ccccccccc${c2}yNNMMMs:::/::+o+/:${c1}c${c2}dMMMMMm${c1}cccc
 9134.ccccccc${c2}:+NmdyyhNNmNNNd:${c1}ccccc${c1}${c2}:oyyyo:${c1}cccc
 9135.ccc${c2}:ohdmMs:${c1}cccc${c2}+mNMNmy${c1}ccccccccccccccccc
 9136.cc${c2}/NMMMMMo////:${c1}c${c2}:///:${c1}cccccccccccccccccc
 9137.cc${c2}:syysyNMNNNMNy${c1}ccccccccccccccccccccccc
 9138.cccccccc${c2}+MMMMMNy${c1}c${c2}:/+++/${c1}cccccccccccccccc
 9139.ccccccccc${c2}ohhhs/${c1}c${c2}omMMMMNh${c1}ccccccccccccccc
 9140.ccccccccccccccc${c2}:MMMMMMMM/${c1}cccccccccccccc
 9141.cccccccccccccccc${c2}sNNNNNd+${c1}cccccccccccccc.
 9142`..cccccccccccccccc${c2}/+/:${c1}cccccccccccccc..`
 9143   ``.cccccccccccccccccccccccccccc.``
 9144       `.cccccccccccccccccccccc.`
 9145          ``.cccccccccccccc.``
 9146              `.cccccccc.`
 9147                 `....`
 9148EOF
 9149        ;;
 9150
 9151        "OpenIndiana"*)
 9152            set_colors 4 7 1
 9153            read -rd '' ascii_data <<'EOF'
 9154${c2}                         .sy/
 9155                         .yh+
 9156
 9157           ${c1}-+syyyo+-     ${c2} /+.
 9158         ${c1}+ddo/---/sdh/   ${c2} ym-
 9159       ${c1}`hm+        `sms${c2}   ym-```````.-.
 9160       ${c1}sm+           sm/ ${c2} ym-         +s
 9161       ${c1}hm.           /mo ${c2} ym-         /h
 9162       ${c1}omo           ym: ${c2} ym-       `os`
 9163        ${c1}smo`       .ym+ ${c2}  ym-     .os-
 9164     ``  ${c1}:ymy+///oyms- ${c2}   ym-  .+s+.
 9165   ..`     ${c1}`:+oo+/-`  ${c2}    -//oyo-
 9166 -:`                   .:oys/.
 9167+-               `./oyys/.
 9168h+`      `.-:+oyyyo/-`
 9169`/ossssysso+/-.`
 9170EOF
 9171        ;;
 9172
 9173        "openmamba"*)
 9174            set_colors 7 2
 9175            read -rd '' ascii_data <<'EOF'
 9176${c1}                 `````
 9177           .-/+ooooooooo+/:-`
 9178        ./ooooooooooooooooooo+:.
 9179      -+oooooooooooooooooooooooo+-
 9180    .+ooooooooo+/:---::/+ooooooooo+.
 9181   :oooooooo/-`          `-/oo${c2}s´${c1}oooo.${c2}s´${c1}
 9182  :ooooooo/`                `${c2}sNds${c1}ooo${c2}sNds${c1}
 9183 -ooooooo-                   ${c2}:dmy${c1}ooo${c2}:dmy${c1}
 9184 +oooooo:                      :oooooo-
 9185.ooooooo                        .://:`
 9186:oooooo+                        ./+o+:`
 9187-ooooooo`                      `oooooo+
 9188`ooooooo:                      /oooooo+
 9189 -ooooooo:                    :ooooooo.
 9190  :ooooooo+.                .+ooooooo:
 9191   :oooooooo+-`          `-+oooooooo:
 9192    .+ooooooooo+/::::://oooooooooo+.
 9193      -+oooooooooooooooooooooooo+-
 9194        .:ooooooooooooooooooo+:.
 9195           `-:/ooooooooo+/:.`
 9196                 ``````
 9197EOF
 9198        ;;
 9199
 9200        "OpenMandriva"*)
 9201            set_colors 4
 9202            read -rd '' ascii_data <<'EOF'
 9203${c1}                  ``````
 9204            `-:/+++++++//:-.`
 9205         .:+++oooo+/:.``   ``
 9206      `:+ooooooo+:.  `-:/++++++/:.`
 9207     -+oooooooo:` `-++o+/::::://+o+/-
 9208   `/ooooooooo-  -+oo/.`        `-/oo+.
 9209  `+ooooooooo.  :os/`              .+so:
 9210  +sssssssss/  :ss/                 `+ss-
 9211 :ssssssssss`  sss`                  .sso
 9212 ossssssssss  `yyo                    sys
 9213`sssssssssss` `yys                   `yys
 9214`sssssssssss:  +yy/                  +yy:
 9215 oyyyyyyyyyys. `oyy/`              `+yy+
 9216 :yyyyyyyyyyyo. `+yhs:.         `./shy/
 9217  oyyyyyyyyyyys:` .oyhys+:----/+syhy+. `
 9218  `syyyyyyyyyyyyo-` .:osyhhhhhyys+:``.:`
 9219   `oyyyyyyyyyyyyys+-`` `.----.```./oo.
 9220     /yhhhhhhhhhhhhhhyso+//://+osyhy/`
 9221      `/yhhhhhhhhhhhhhhhhhhhhhhhhy/`
 9222        `:oyhhhhhhhhhhhhhhhhhhyo:`
 9223            .:+syhhhhhhhhys+:-`
 9224                 ``....``
 9225EOF
 9226        ;;
 9227
 9228        "OpenStage"*)
 9229            set_colors 2
 9230            read -rd '' ascii_data <<'EOF'
 9231${c1}                 /(/
 9232              .(((((((,
 9233             /(((((((((/
 9234           .(((((/,/(((((,
 9235          *(((((*   ,(((((/
 9236          (((((*      .*/((
 9237         *((((/  (//(/*
 9238         /((((*  ((((((((((,
 9239      .  /((((*  (((((((((((((.
 9240     ((. *((((/        ,((((((((
 9241   ,(((/  (((((/     **   ,((((((*
 9242  /(((((. .(((((/   //(((*  *(((((/
 9243 .(((((,    ((/   .(((((/.   .(((((,
 9244 /((((*        ,(((((((/      ,(((((
 9245 /(((((((((((((((((((/.  /(((((((((/
 9246 /(((((((((((((((((,   /(((((((((((/
 9247     */(((((//*.      */((/(/(/*
 9248EOF
 9249        ;;
 9250
 9251        "OpenWrt"*)
 9252            set_colors 4 7 1
 9253            read -rd '' ascii_data <<'EOF'
 9254${c1} _______
 9255|       |.-----.-----.-----.
 9256|   -   ||  _  |  -__|     |
 9257|_______||   __|_____|__|__|
 9258         |__|
 9259 ________        __
 9260|  |  |  |.----.|  |_
 9261|  |  |  ||   _||   _|
 9262|________||__|  |____|
 9263EOF
 9264        ;;
 9265
 9266        "Open Source Media Center"* | "osmc")
 9267            set_colors 4 7 1
 9268            read -rd '' ascii_data <<'EOF'
 9269${c1}            -+shdmNNNNmdhs+-
 9270        .+hMNho/:..``..:/ohNMh+.
 9271      :hMdo.                .odMh:
 9272    -dMy-                      -yMd-
 9273   sMd-                          -dMs
 9274  hMy       +.            .+       yMh
 9275 yMy        dMs.        .sMd        yMy
 9276:Mm         dMNMs`    `sMNMd        `mM:
 9277yM+         dM//mNs``sNm//Md         +My
 9278mM-         dM:  +NNNN+  :Md         -Mm
 9279mM-         dM: `oNN+    :Md         -Mm
 9280yM+         dM/+NNo`     :Md         +My
 9281:Mm`        dMMNs`       :Md        `mM:
 9282 yMy        dMs`         -ms        yMy
 9283  hMy       +.                     yMh
 9284   sMd-                          -dMs
 9285    -dMy-                      -yMd-
 9286      :hMdo.                .odMh:
 9287        .+hMNho/:..``..:/ohNMh+.
 9288            -+shdmNNNNmdhs+-
 9289EOF
 9290        ;;
 9291
 9292        "Oracle"*)
 9293            set_colors 1 7 3
 9294            read -rd '' ascii_data <<'EOF'
 9295${c1}
 9296      `-/+++++++++++++++++/-.`
 9297   `/syyyyyyyyyyyyyyyyyyyyyyys/.
 9298  :yyyyo/-...............-/oyyyy/
 9299 /yyys-                     .oyyy+
 9300.yyyy`                       `syyy-
 9301:yyyo                         /yyy/
 9302.yyyy`                       `syyy-
 9303 /yyys.                     .oyyyo
 9304  /yyyyo:-...............-:oyyyy/`
 9305   `/syyyyyyyyyyyyyyyyyyyyyyys+.
 9306     `.:/+ooooooooooooooo+/:.`
 9307EOF
 9308        ;;
 9309
 9310        "OS Elbrus"*)
 9311            set_colors 4 7 3
 9312            read -rd '' ascii_data <<'EOF'
 9313${c1}   ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
 9314   ██▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀██
 9315   ██                       ██
 9316   ██   ███████   ███████   ██
 9317   ██   ██   ██   ██   ██   ██
 9318   ██   ██   ██   ██   ██   ██
 9319   ██   ██   ██   ██   ██   ██
 9320   ██   ██   ██   ██   ██   ██
 9321   ██   ██   ███████   ███████
 9322   ██   ██                  ██
 9323   ██   ██▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄██
 9324   ██   ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀██
 9325   ██                       ██
 9326   ███████████████████████████
 9327EOF
 9328        ;;
 9329
 9330        "PacBSD"*)
 9331            set_colors 1 7 3
 9332            read -rd '' ascii_data <<'EOF'
 9333${c1}      :+sMs.
 9334  `:ddNMd-                         -o--`
 9335 -sMMMMh:                          `+N+``
 9336 yMMMMMs`     .....-/-...           `mNh/
 9337 yMMMMMmh+-`:sdmmmmmmMmmmmddy+-``./ddNMMm
 9338 yNMMNMMMMNdyyNNMMMMMMMMMMMMMMMhyshNmMMMm
 9339 :yMMMMMMMMMNdooNMMMMMMMMMMMMMMMMNmy:mMMd
 9340  +MMMMMMMMMmy:sNMMMMMMMMMMMMMMMMMMMmshs-
 9341  :hNMMMMMMN+-+MMMMMMMMMMMMMMMMMMMMMMMs.
 9342 .omysmNNhy/+yNMMMMMMMMMMNMMMMMMMMMNdNNy-
 9343 /hMM:::::/hNMMMMMMMMMMMm/-yNMMMMMMN.mMNh`
 9344.hMMMMdhdMMMMMMMMMMMMMMmo  `sMMMMMMN mMMm-
 9345:dMMMMMMMMMMMMMMMMMMMMMdo+  oMMMMMMN`smMNo`
 9346/dMMMMMMMMMMMMMMMMMMMMMNd/` :yMMMMMN:-hMMM.
 9347:dMMMMMMMMMMMMMMMMMMMMMNh`  oMMMMMMNo/dMNN`
 9348:hMMMMMMMMMMMMMMMMMMMMMMNs--sMMMMMMMNNmy++`
 9349 sNMMMMMMMMMMMMMMMMMMMMMMMmmNMMMMMMNho::o.
 9350 :yMMMMMMMMMMMMMNho+sydNNNNNNNmysso/` -//
 9351  /dMMMMMMMMMMMMMs-  ````````..``
 9352   .oMMMMMMMMMMMMNs`               ./y:`
 9353     +dNMMNMMMMMMMmy`          ``./ys.
 9354      `/hMMMMMMMMMMMNo-``    `.+yy+-`
 9355        `-/hmNMNMMMMMMmmddddhhy/-`
 9356            `-+oooyMMMdsoo+/:.
 9357EOF
 9358        ;;
 9359
 9360        "parabola_small"*)
 9361            set_colors 5 7
 9362            read -rd '' ascii_data <<'EOF'
 9363${c1}  __ __ __  _
 9364.`_//_//_/ / `.
 9365          /  .`
 9366         / .`
 9367        /.`
 9368       /`
 9369EOF
 9370        ;;
 9371
 9372        "Parabola"*)
 9373            set_colors 5 7
 9374            read -rd '' ascii_data <<'EOF'
 9375${c1}                          `.-.    `.
 9376                   `.`  `:++.   `-+o+.
 9377             `` `:+/. `:+/.   `-+oooo+
 9378        ``-::-.:+/. `:+/.   `-+oooooo+
 9379    `.-:///-  ..`   .-.   `-+oooooooo-
 9380 `..-..`                 `+ooooooooo:
 9381``                        :oooooooo/
 9382                          `ooooooo:
 9383                          `oooooo:
 9384                          -oooo+.
 9385                          +ooo/`
 9386                         -ooo-
 9387                        `+o/.
 9388                        /+-
 9389                       //`
 9390                      -.
 9391EOF
 9392        ;;
 9393
 9394        "Pardus"*)
 9395            set_colors 3 7 6 1 8
 9396            read -rd '' ascii_data <<'EOF'
 9397${c1} .smNdy+-    `.:/osyyso+:.`    -+ydmNs.
 9398/Md- -/ymMdmNNdhso/::/oshdNNmdMmy/. :dM/
 9399mN.     oMdyy- -y          `-dMo     .Nm
 9400.mN+`  sMy hN+ -:             yMs  `+Nm.
 9401 `yMMddMs.dy `+`               sMddMMy`
 9402   +MMMo  .`  .                 oMMM+
 9403   `NM/    `````.`    `.`````    +MN`
 9404   yM+   `.-:yhomy    ymohy:-.`   +My
 9405   yM:          yo    oy          :My
 9406   +Ms         .N`    `N.      +h sM+
 9407   `MN      -   -::::::-   : :o:+`NM`
 9408    yM/    sh   -dMMMMd-   ho  +y+My
 9409    .dNhsohMh-//: /mm/ ://-yMyoshNd`
 9410      `-ommNMm+:/. oo ./:+mMNmmo:`
 9411     `/o+.-somNh- :yy: -hNmos-.+o/`
 9412    ./` .s/`s+sMdd+``+ddMs+s`/s. `/.
 9413        : -y.  -hNmddmNy.  .y- :
 9414         -+       `..`       +-
 9415EOF
 9416        ;;
 9417
 9418        "Parrot"*)
 9419            set_colors 6 7
 9420            read -rd '' ascii_data <<'EOF'
 9421${c1}  `:oho/-`
 9422`mMMMMMMMMMMMNmmdhy-
 9423 dMMMMMMMMMMMMMMMMMMs`
 9424 +MMsohNMMMMMMMMMMMMMm/
 9425 .My   .+dMMMMMMMMMMMMMh.
 9426  +       :NMMMMMMMMMMMMNo
 9427           `yMMMMMMMMMMMMMm:
 9428             /NMMMMMMMMMMMMMy`
 9429              .hMMMMMMMMMMMMMN+
 9430                  ``-NMMMMMMMMMd-
 9431                     /MMMMMMMMMMMs`
 9432                      mMMMMMMMsyNMN/
 9433                      +MMMMMMMo  :sNh.
 9434                      `NMMMMMMm     -o/
 9435                       oMMMMMMM.
 9436                       `NMMMMMM+
 9437                        +MMd/NMh
 9438                         mMm -mN`
 9439                         /MM  `h:
 9440                          dM`   .
 9441                          :M-
 9442                           d:
 9443                           -+
 9444                            -
 9445EOF
 9446        ;;
 9447
 9448        "Parsix"*)
 9449            set_colors 3 1 7 8
 9450            read -rd '' ascii_data <<'EOF'
 9451                 ${c2}-/+/:.
 9452               ${c2}.syssssys.
 9453       ${c1}.--.    ${c2}ssssssssso${c1}   ..--.
 9454     :++++++:  ${c2}+ssssssss+${c1} ./++/+++:
 9455    /+++++++++.${c2}.yssooooy`${c1}-+///////o-
 9456    /++++++++++.${c2}+soooos:${c1}:+////////+-
 9457     :+++++////o-${c2}oooooo-${c1}+/////////-
 9458      `-/++//++-${c4}.-----.-${c1}:+/////:-
 9459  ${c3}-://::--${c1}-:/:${c4}.--.````.--.${c1}:::-${c3}--::::::.
 9460${c3}-/:::::::://:${c4}.:-`      `-:${c3}`:/:::::::--/-
 9461${c3}/::::::::::/-${c4}--.        .-.${c3}-/://///::::/
 9462${c3}-/:::::::::/:${c4}`:-.      .-:${c3}`:///////////-
 9463 `${c3}-::::--${c1}.-://.${c4}---....---${c1}`:+/:-${c3}--::::-`
 9464       ${c1}-/+///+o/-${c4}.----.${c1}.:oo+++o+.
 9465     ${c1}-+/////+++o:${c2}syyyyy.${c1}o+++++++++:
 9466    ${c1}.+////+++++-${c2}+sssssy+${c1}.++++++++++\
 9467    ${c1}.+:/++++++.${c2}.yssssssy-${c1}`+++++++++:
 9468     ${c1}:/+++++-  ${c2}+sssssssss  ${c1}-++++++-
 9469       ${c1}`--`    ${c2}+sssssssso    ${c1}`--`
 9470                ${c2}+sssssy+`
 9471                 ${c2}`.::-`
 9472EOF
 9473        ;;
 9474
 9475        "PCBSD"* | "TrueOS"*)
 9476            set_colors 1 7 3
 9477            read -rd '' ascii_data <<'EOF'
 9478${c1}                       ..
 9479                        s.
 9480                        +y
 9481                        yN
 9482                       -MN  `.
 9483                      :NMs `m
 9484                    .yMMm` `No
 9485            `-/+++sdMMMNs+-`+Ms
 9486        `:oo+-` .yMMMMy` `-+oNMh
 9487      -oo-     +NMMMM/       oMMh-
 9488    .s+` `    oMMMMM/     -  oMMMhy.
 9489   +s`- ::   :MMMMMd     -o `mMMMy`s+
 9490  y+  h .Ny+oNMMMMMN/    sh+NMMMMo  +y
 9491 s+ .ds  -NMMMMMMMMMMNdhdNMMMMMMh`   +s
 9492-h .NM`   `hMMMMMMMMMMMMMMNMMNy:      h-
 9493y- hMN`     hMMmMMMMMMMMMNsdMNs.      -y
 9494m` mMMy`    oMMNoNMMMMMMo`  sMMMo     `m
 9495m` :NMMMdyydMMMMo+MdMMMs     sMMMd`   `m
 9496h-  `+ymMMMMMMMM--M+hMMN/    +MMMMy   -h
 9497:y     `.sMMMMM/ oMM+.yMMNddNMMMMMm   y:
 9498 y:   `s  dMMN- .MMMM/ :MMMMMMMMMMh  :y
 9499 `h:  `mdmMMM/  yMMMMs  sMMMMMMMMN- :h`
 9500   so  -NMMMN   /mmd+  `dMMMMMMMm- os
 9501    :y: `yMMM`       `+NMMMMMMNo`:y:
 9502      /s+`.omy      /NMMMMMNh/.+s:
 9503        .+oo:-.     /mdhs+::oo+.
 9504            -/o+++++++++++/-
 9505EOF
 9506        ;;
 9507
 9508        "PCLinuxOS"*)
 9509            set_colors 4 7 1
 9510            read -rd '' ascii_data <<'EOF'
 9511${c1}            mhhhyyyyhhhdN
 9512        dyssyhhhhhhhhhhhssyhN
 9513     Nysyhhyo/:-.....-/oyhhhssd
 9514   Nsshhy+.              `/shhysm
 9515  dohhy/                    -shhsy
 9516 dohhs`                       /hhys
 9517N+hho   ${c2}+ssssss+-   .+syhys+   ${c1}/hhsy
 9518ohhh`   ${c2}ymmo++hmm+`smmy/::+y`   ${c1}shh+
 9519+hho    ${c2}ymm-  /mmy+mms          ${c1}:hhod
 9520/hh+    ${c2}ymmhhdmmh.smm/          ${c1}.hhsh
 9521+hhs    ${c2}ymm+::-`  /mmy`    `    ${c1}/hh+m
 9522yyhh-   ${c2}ymm-       /dmdyosyd`  ${c1}`yhh+
 9523 ohhy`  ${c2}://`         -/+++/-   ${c1}ohhom
 9524 N+hhy-                      `shhoh
 9525   sshho.                  `+hhyom
 9526    dsyhhs/.            `:ohhhoy
 9527      dysyhhhso///://+syhhhssh
 9528         dhyssyhhhhhhyssyyhN
 9529              mddhdhdmN
 9530EOF
 9531        ;;
 9532
 9533        "Pengwin"*)
 9534            set_colors 5 5 13
 9535            read -rd '' ascii_data <<'EOF'
 9536${c3}                     ...`
 9537${c3}                     `-///:-`
 9538${c3}                       .+${c2}ssys${c3}/
 9539${c3}                        +${c2}yyyyy${c3}o    ${c2}
 9540${c2}                        -yyyyyy:
 9541${c2}           `.:/+ooo+/:` -yyyyyy+
 9542${c2}         `:oyyyyyys+:-.`syyyyyy:
 9543${c2}        .syyyyyyo-`   .oyyyyyyo
 9544${c2}       `syyyyyy   `-+yyyyyyy/`
 9545${c2}       /yyyyyy+ -/osyyyyyyo/.
 9546${c2}       +yyyyyy-  `.-:::-.`
 9547${c2}       .yyyyyy-
 9548${c3}        :${c2}yyyyy${c3}o
 9549${c3}         .+${c2}ooo${c3}+
 9550${c3}           `.::/:.
 9551EOF
 9552        ;;
 9553
 9554        "Peppermint"*)
 9555            set_colors 1 15 3
 9556            read -rd '' ascii_data <<'EOF'
 9557${c1}               PPPPPPPPPPPPPP
 9558${c1}           PPPP${c2}MMMMMMM${c1}PPPPPPPPPPP
 9559${c1}         PPPP${c2}MMMMMMMMMM${c1}PPPPPPPP${c2}MM${c1}PP
 9560${c1}       PPPPPPPP${c2}MMMMMMM${c1}PPPPPPPP${c2}MMMMM${c1}PP
 9561${c1}     PPPPPPPPPPPP${c2}MMMMMM${c1}PPPPPPP${c2}MMMMMMM${c1}PP
 9562${c1}    PPPPPPPPPPPP${c2}MMMMMMM${c1}PPPP${c2}M${c1}P${c2}MMMMMMMMM${c1}PP
 9563${c1}   PP${c2}MMMM${c1}PPPPPPPPPP${c2}MMM${c1}PPPPP${c2}MMMMMMM${c1}P${c2}MM${c1}PPPP
 9564${c1}   P${c2}MMMMMMMMMM${c1}PPPPPP${c2}MM${c1}PPPPP${c2}MMMMMM${c1}PPPPPPPP
 9565${c1}  P${c2}MMMMMMMMMMMM${c1}PPPPP${c2}MM${c1}PP${c2}M${c1}P${c2}MM${c1}P${c2}MM${c1}PPPPPPPPPPP
 9566${c1}  P${c2}MMMMMMMMMMMMMMMM${c1}PP${c2}M${c1}P${c2}MMM${c1}PPPPPPPPPPPPPPPP
 9567${c1}  P${c2}MMM${c1}PPPPPPPPPPPPPPPPPPPPPPPPPPPPPP${c2}MMMMM${c1}P
 9568${c1}  PPPPPPPPPPPPPPPP${c2}MMM${c1}P${c2}M${c1}P${c2}MMMMMMMMMMMMMMMM${c1}PP
 9569${c1}  PPPPPPPPPPP${c2}MM${c1}P${c2}MM${c1}PPPP${c2}MM${c1}PPPPP${c2}MMMMMMMMMMM${c1}PP
 9570${c1}   PPPPPPPP${c2}MMMMMM${c1}PPPPP${c2}MM${c1}PPPPPP${c2}MMMMMMMMM${c1}PP
 9571${c1}   PPPP${c2}MM${c1}P${c2}MMMMMMM${c1}PPPPPP${c2}MM${c1}PPPPPPPPPP${c2}MMMM${c1}PP
 9572${c1}    PP${c2}MMMMMMMMM${c1}P${c2}M${c1}PPPP${c2}MMMMMM${c1}PPPPPPPPPPPPP
 9573${c1}     PP${c2}MMMMMMM${c1}PPPPPPP${c2}MMMMMM${c1}PPPPPPPPPPPP
 9574${c1}       PP${c2}MMMM${c1}PPPPPPPPP${c2}MMMMMMM${c1}PPPPPPPP
 9575${c1}         PP${c2}MM${c1}PPPPPPPP${c2}MMMMMMMMMM${c1}PPPP
 9576${c1}           PPPPPPPPPP${c2}MMMMMMMM${c1}PPPP
 9577${c1}               PPPPPPPPPPPPPP
 9578EOF
 9579        ;;
 9580
 9581        "Pisi"*)
 9582            set_colors 12 7 6 1 8
 9583            read -rd '' ascii_data <<'EOF'
 9584${c1}   \Fv/!-                      `:?lzC
 9585${c1}   Q!::=zFx!  ${c2}`;v6WBCicl;`  ${c1},vCC\!::#.
 9586${c1}  ,%:::,'` ${c2}+#%@@FQ@@.   ,cF%i${c1}``-',::a?
 9587${c1}  +m:,'```${c2}}3,/@@Q\@@       "af-${c1} `-'"7f
 9588  =o'.` ${c2}/m'   :Q@:Qg         ,kl${c1}  `.|o
 9589  :k` '${c2}$+      'Narm           >d,${c1}  ii
 9590   #`${c2}!p.        `C ,            'd+${c1} %'
 9591${c2}   !0m                           `6Kv
 9592   =a                              m+
 9593  !A     !\L|:            :|L\!     $:
 9594 .8`     Q''%Q#'        '#Q%''Q     `0-
 9595 :6      E|.6QQu        uQQ6.|E      p:
 9596  i{      \jts9?        ?9stj\      u\
 9597   |a`            -''.            `e>
 9598    ,m+     ${c1}'^ !`${c2}s@@@@a${c1}'"`+`${c2}     >e'
 9599      !3|${c1}`|=>>r-  ${c2}'U%:${c1}  '>>>=:`\3!
 9600       'xopE|      ${c2}`'${c1}     `ledoz-
 9601    `;=>>+`${c2}`^llci/|==|/iclc;`${c1}'>>>>:
 9602   `^`+~          ${c2}````${c1}          !!-^
 9603EOF
 9604        ;;
 9605
 9606        "PNM Linux"* | "WHPNM Linux"*)
 9607            set_colors 33 9 15 202
 9608            read -rd '' ascii_data <<'EOF'
 9609
 9610${c1}
 9611               ``.---..` `--`
 9612            ``.---........-:.${c2}-::`${c1}
 9613           ${c2}./::-${c1}........${c2}--::.````${c1}
 9614          ${c2}.:://:::${c1}----${c2}::::-..${c1}
 9615          ..${c2}--:::::--::::++-${c1}.`
 9616  ${c2}`-:-`${c1}   .-ohy+::${c2}-:::${c1}/sdmdd:.${c2}   `-:-
 9617   .-:::${c1}...${c3}sNNmds$y${c1}o/+${c3}sy+NN$m${c1}d+.`${c2}-:::-.
 9618     `.-:-${c1}./${c3}dN${c1}()${c3}yyooosd${c1}()${c3}$m${c1}dy${c2}-.::-.`${c1}
 9619      ${c2}`.${c1}-...-${c3}+hNdyyyyyydmy${c1}:......${c2}`${c1}
 9620 ``..--.....-${c3}yNNm${c4}hssssh${c3}mmdo${c1}.........```
 9621`-:://:.....${c3}hNNNNN${c4}mddm${c3}NNNmds${c1}.....//::--`
 9622  ```.:-...${c3}oNNNNNNNNNNNNNNmd/${c1}...:-.```
 9623      .....${c3}hNNNNNNNNNNNNNNmds${c1}....`
 9624      --...${c3}hNNNNNNNNNNNNNNmdo${c1}.....
 9625      .:...${c3}/NNNNNNNNNNNNNNdd${c1}:....`
 9626       `-...${c3}+mNNNNNNNNNNNmh${c1}:...-.
 9627     ${c4}.:+o+/:-${c1}:+oo+///++o+/:-${c4}:/+ooo/:.
 9628       ${c4}+oo/:o-            +oooooso.`
 9629       ${c4}.`   `             `/  .-//-
 9630EOF
 9631        ;;
 9632
 9633        "popos_small"* | "pop_os_small"*)
 9634            set_colors 6 7
 9635            read -rd '' ascii_data <<'EOF'
 9636${c1}______
 9637\\   _ \\        __
 9638 \\ \\ \\ \\      / /
 9639  \\ \\_\\ \\    / /
 9640   \\  ___\\  /_/
 9641    \\ \\    _
 9642   __\\_\\__(_)_
 9643  (___________)`
 9644EOF
 9645        ;;
 9646
 9647        "Pop!_OS"* | "popos"* | "pop_os"*)
 9648            set_colors 6 7
 9649            read -rd '' ascii_data <<'EOF'
 9650${c1}             /////////////
 9651         /////////////////////
 9652      ///////${c2}*767${c1}////////////////
 9653    //////${c2}7676767676*${c1}//////////////
 9654   /////${c2}76767${c1}//${c2}7676767${c1}//////////////
 9655  /////${c2}767676${c1}///${c2}*76767${c1}///////////////
 9656 ///////${c2}767676${c1}///${c2}76767${c1}.///${c2}7676*${c1}///////
 9657/////////${c2}767676${c1}//${c2}76767${c1}///${c2}767676${c1}////////
 9658//////////${c2}76767676767${c1}////${c2}76767${c1}/////////
 9659///////////${c2}76767676${c1}//////${c2}7676${c1}//////////
 9660////////////,${c2}7676${c1},///////${c2}767${c1}///////////
 9661/////////////*${c2}7676${c1}///////${c2}76${c1}////////////
 9662///////////////${c2}7676${c1}////////////////////
 9663 ///////////////${c2}7676${c1}///${c2}767${c1}////////////
 9664  //////////////////////${c2}'${c1}////////////
 9665   //////${c2}.7676767676767676767,${c1}//////
 9666    /////${c2}767676767676767676767${c1}/////
 9667      ///////////////////////////
 9668         /////////////////////
 9669             /////////////
 9670EOF
 9671        ;;
 9672
 9673        "Porteus"*)
 9674            set_colors 6 7
 9675            read -rd '' ascii_data <<'EOF'
 9676${c1}             `.-:::-.`
 9677         -+ydmNNNNNNNmdy+-
 9678      .+dNmdhs+//////+shdmdo.
 9679    .smmy+-`             ./sdy:
 9680  `omdo.    `.-/+osssso+/-` `+dy.
 9681 `yms.   `:shmNmdhsoo++osyyo-``oh.
 9682 hm/   .odNmds/.`    ``.....:::-+s
 9683/m:  `+dNmy:`   `./oyhhhhyyooo++so
 9684ys  `yNmy-    .+hmmho:-.`     ```
 9685s:  yNm+`   .smNd+.
 9686`` /Nm:    +dNd+`
 9687   yN+   `smNy.
 9688   dm    oNNy`
 9689   hy   -mNm.
 9690   +y   oNNo
 9691   `y`  sNN:
 9692    `:  +NN:
 9693     `  .mNo
 9694         /mm`
 9695          /my`
 9696           .sy`
 9697             .+:
 9698                `
 9699EOF
 9700        ;;
 9701
 9702        "postmarketos_small")
 9703            set_colors 2 7
 9704            read -rd '' ascii_data <<'EOF'
 9705${c1}        /\\
 9706       /  \\
 9707      /    \\
 9708      \\__   \\
 9709    /\\__ \\  _\\
 9710   /   /  \\/ __
 9711  /   / ____/  \\
 9712 /    \\ \\       \\
 9713/_____/ /________\\
 9714EOF
 9715        ;;
 9716
 9717        "PostMarketOS"*)
 9718            set_colors 2 7
 9719            read -rd '' ascii_data <<'EOF'
 9720${c1}                 /\\
 9721                /  \\
 9722               /    \\
 9723              /      \\
 9724             /        \\
 9725            /          \\
 9726            \\           \\
 9727          /\\ \\____       \\
 9728         /  \\____ \\       \\
 9729        /       /  \\       \\
 9730       /       /    \\    ___\\
 9731      /       /      \\  / ____
 9732     /       /        \\/ /    \\
 9733    /       / __________/      \\
 9734   /        \\ \\                 \\
 9735  /          \\ \\                 \\
 9736 /           / /                  \\
 9737/___________/ /____________________\\
 9738EOF
 9739        ;;
 9740
 9741        "PuffOS"*)
 9742            set_colors 3
 9743            read -rd '' ascii_data <<'EOF'
 9744${c1}
 9745              _,..._,m,
 9746            ,/'      '"";
 9747           /             ".
 9748         ,'mmmMMMMmm.      \
 9749       _/-"^^^^^"""%#%mm,   ;
 9750 ,m,_,'              "###)  ;,
 9751(###%                 \#/  ;##mm.
 9752 ^#/  __        ___    ;  (######)
 9753  ;  //.\\     //.\\   ;   \####/
 9754 _; (#\"//     \\"/#)  ;  ,/
 9755@##\ \##/   =   `"=" ,;mm/
 9756`\##>.____,...,____,<####@
 9757EOF
 9758        ;;
 9759
 9760        "Proxmox"*)
 9761            set_colors 7 202
 9762            read -rd '' ascii_data <<'EOF'
 9763${c1}         .://:`              `://:.
 9764       `hMMMMMMd/          /dMMMMMMh`
 9765        `sMMMMMMMd:      :mMMMMMMMs`
 9766${c2}`-/+oo+/:${c1}`.yMMMMMMMh-  -hMMMMMMMy.`${c2}:/+oo+/-`
 9767`:oooooooo/${c1}`-hMMMMMMMyyMMMMMMMh-`${c2}/oooooooo:`
 9768  `/oooooooo:${c1}`:mMMMMMMMMMMMMm:`${c2}:oooooooo/`
 9769    ./ooooooo+-${c1} +NMMMMMMMMN+ ${c2}-+ooooooo/.
 9770      .+ooooooo+-${c1}`oNMMMMNo`${c2}-+ooooooo+.
 9771        -+ooooooo/.${c1}`sMMs`${c2}./ooooooo+-
 9772          :oooooooo/${c1}`..`${c2}/oooooooo:
 9773          :oooooooo/`${c1}..${c2}`/oooooooo:
 9774        -+ooooooo/.`${c1}sMMs${c2}`./ooooooo+-
 9775      .+ooooooo+-`${c1}oNMMMMNo${c2}`-+ooooooo+.
 9776    ./ooooooo+-${c1} +NMMMMMMMMN+ ${c2}-+ooooooo/.
 9777  `/oooooooo:`${c1}:mMMMMMMMMMMMMm:${c2}`:oooooooo/`
 9778`:oooooooo/`${c1}-hMMMMMMMyyMMMMMMMh-${c2}`/oooooooo:`
 9779`-/+oo+/:`${c1}.yMMMMMMMh-  -hMMMMMMMy.${c2}`:/+oo+/-`
 9780${c1}        `sMMMMMMMm:      :dMMMMMMMs`
 9781       `hMMMMMMd/          /dMMMMMMh`
 9782         `://:`              `://:`
 9783EOF
 9784        ;;
 9785
 9786        "Puppy"* | "Quirky Werewolf"* | "Precise Puppy"*)
 9787            set_colors 4 7
 9788            read -rd '' ascii_data <<'EOF'
 9789${c1}           `-/osyyyysosyhhhhhyys+-
 9790  -ohmNNmh+/hMMMMMMMMNNNNd+dMMMMNM+
 9791 yMMMMNNmmddo/NMMMNNNNNNNNNo+NNNNNy
 9792.NNNNNNmmmddds:MMNNNNNNNNNNNh:mNNN/
 9793-NNNdyyyhdmmmd`dNNNNNmmmmNNmdd/os/
 9794.Nm+shddyooo+/smNNNNmmmmNh.   :mmd.
 9795 NNNNy:`   ./hmmmmmmmNNNN:     hNMh
 9796 NMN-    -++- +NNNNNNNNNNm+..-sMMMM-
 9797.MMo    oNNNNo hNNNNNNNNmhdNNNMMMMM+
 9798.MMs    /NNNN/ dNmhs+:-`  yMMMMMMMM+
 9799 mMM+     .. `sNN+.      hMMMMhhMMM-
 9800 +MMMmo:...:sNMMMMMms:` hMMMMm.hMMy
 9801  yMMMMMMMMMMMNdMMMMMM::/+o+//dMMd`
 9802   sMMMMMMMMMMN+:oyyo:sMMMNNMMMNy`
 9803    :mMMMMMMMMMMMmddNMMMMMMMMmh/
 9804      /dMMMMMMMMMMMMMMMMMMNdy/`
 9805        .+hNMMMMMMMMMNmdhs/.
 9806            .:/+ooo+/:-.
 9807EOF
 9808        ;;
 9809
 9810        "pureos_small"*)
 9811            set_colors 2 7 7
 9812            read -rd '' ascii_data <<'EOF'
 9813${c1} _____________
 9814|  _________  |
 9815| |         | |
 9816| |         | |
 9817| |_________| |
 9818|_____________|
 9819EOF
 9820        ;;
 9821
 9822        "PureOS"*)
 9823            set_colors 2 7 7
 9824            read -rd '' ascii_data <<'EOF'
 9825${c1}dmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmd
 9826dNm//////////////////////////////////mNd
 9827dNd                                  dNd
 9828dNd                                  dNd
 9829dNd                                  dNd
 9830dNd                                  dNd
 9831dNd                                  dNd
 9832dNd                                  dNd
 9833dNd                                  dNd
 9834dNd                                  dNd
 9835dNm//////////////////////////////////mNd
 9836dmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmd
 9837EOF
 9838        ;;
 9839
 9840        "Qubes"*)
 9841            set_colors 4 5 7 6
 9842            read -rd '' ascii_data <<'EOF'
 9843${c1}               `..--..`
 9844            `.----------.`
 9845        `..----------------..`
 9846     `.------------------------.``
 9847 `..-------------....-------------..`
 9848.::----------..``    ``..----------:+:
 9849:////:----..`            `..---:/ossso
 9850:///////:`                  `/osssssso
 9851:///////:                    /ssssssso
 9852:///////:                    /ssssssso
 9853:///////:                    /ssssssso
 9854:///////:                    /ssssssso
 9855:///////:                    /ssssssso
 9856:////////-`                .:sssssssso
 9857:///////////-.`        `-/osssssssssso
 9858`//////////////:-```.:+ssssssssssssso-
 9859  .-://////////////sssssssssssssso/-`
 9860     `.:///////////sssssssssssssso:.
 9861         .-:///////ssssssssssssssssss/`
 9862            `.:////ssss+/+ssssssssssss.
 9863                `--//-    `-/osssso/.
 9864EOF
 9865        ;;
 9866
 9867        "Qubyt"*)
 9868            set_colors 4 5 0 4
 9869            read -rd '' ascii_data <<'EOF'
 9870${c1}    ########################${c2}(${c3}ooo
 9871${c1}    ########################${c2}(${c3}ooo
 9872${c1}###${c2}(${c3}ooo                  ${c1}###${c2}(${c3}ooo
 9873${c1}###${c2}(${c3}ooo                  ${c1}###${c2}(${c3}ooo
 9874${c1}###${c2}(${c3}ooo                  ${c1}###${c2}(${c3}ooo
 9875${c1}###${c2}(${c3}ooo                  ${c1}###${c2}(${c3}ooo
 9876${c1}###${c2}(${c3}ooo                  ${c1}###${c2}(${c3}ooo
 9877${c1}###${c2}(${c3}ooo                  ${c1}###${c2}(${c3}ooo
 9878${c1}###${c2}(${c3}ooo           ${c1}##${c3}o    ${c2}((((${c3}ooo
 9879${c1}###${c2}(${c3}ooo          o${c2}((${c1}###   ${c3}oooooo
 9880${c1}###${c2}(${c3}ooo           oo${c2}((${c1}###${c3}o
 9881${c1}###${c2}(${c3}ooo             ooo${c2}((${c1}###
 9882${c1}################${c2}(${c3}oo    oo${c2}((((${c3}o
 9883${c2}(((((((((((((((((${c3}ooo     ooooo
 9884  oooooooooooooooooo        o
 9885EOF
 9886        ;;
 9887
 9888        "Quibian"*)
 9889            set_colors 3 7
 9890            read -rd '' ascii_data <<'EOF'
 9891${c1}            `.--::::::::--.`
 9892        `.-:::-..``   ``..-::-.`
 9893      .::::-`   .${c2}+${c1}:``       `.-::.`
 9894    .::::.`    -::::::-`       `.::.
 9895  `-:::-`    -:::::::::--..``     .::`
 9896 `::::-     .${c2}oy${c1}:::::::---.```.:    `::`
 9897 -::::  `.-:::::::::::-.```         `::
 9898.::::.`-:::::::::::::.               `:.
 9899-::::.:::::::::::::::                 -:
 9900::::::::::::::::::::`                 `:
 9901:::::::::::::::::::-                  `:
 9902:::::::::::::::::::                   --
 9903.:::::::::::::::::`                  `:`
 9904`:::::::::::::::::                   -`
 9905 .:::::::::::::::-                  -`
 9906  `::::::::::::::-                `.`
 9907    .::::::::::::-               ``
 9908      `.--:::::-.
 9909EOF
 9910        ;;
 9911
 9912        "Radix"*)
 9913            set_colors 1 2
 9914            read -rd '' ascii_data <<'EOF'
 9915${c2}                .:oyhdmNo
 9916             `/yhyoosdms`
 9917            -o+/ohmmho-
 9918           ..`.:/:-`
 9919     `.--:::-.``${c1}
 9920  .+ydNMMMMMMNmhs:`
 9921`omMMMMMMMMMMMMMMNh-
 9922oNMMMNmddhhyyhhhddmy.
 9923mMMMMNmmddhhysoo+/:-`
 9924yMMMMMMMMMMMMMMMMNNh.
 9925-dmmmmmNNMMMMMMMMMMs`
 9926 -+oossyhmMMMMMMMMd-
 9927 `sNMMMMMMMMMMMMMm:
 9928  `yMMMMMMNmdhhhh:
 9929   `sNMMMMMNmmho.
 9930    `+mMMMMMMMy.
 9931      .yNMMMm+`
 9932       `:yd+.
 9933EOF
 9934        ;;
 9935
 9936        "Raspbian_small"*)
 9937            set_colors 2 1
 9938            read -rd '' ascii_data <<'EOF'
 9939${c1}   ..    ,.
 9940  :oo: .:oo:
 9941  'o\\o o/o:
 9942${c2} :: . :: . ::
 9943:: :::  ::: ::
 9944:'  '',.''  ':
 9945 ::: :::: :::
 9946 ':,  ''  ,:'
 9947   ' ~::~ '
 9948EOF
 9949        ;;
 9950
 9951        "Raspbian"*)
 9952            set_colors 2 1
 9953            read -rd '' ascii_data <<'EOF'
 9954${c1}  `.::///+:/-.        --///+//-:``
 9955 `+oooooooooooo:   `+oooooooooooo:
 9956  /oooo++//ooooo:  ooooo+//+ooooo.
 9957  `+ooooooo:-:oo-  +o+::/ooooooo:
 9958   `:oooooooo+``    `.oooooooo+-
 9959     `:++ooo/.        :+ooo+/.`
 9960        ${c2}...`  `.----.` ``..
 9961     .::::-``:::::::::.`-:::-`
 9962    -:::-`   .:::::::-`  `-:::-
 9963   `::.  `.--.`  `` `.---.``.::`
 9964       .::::::::`  -::::::::` `
 9965 .::` .:::::::::- `::::::::::``::.
 9966-:::` ::::::::::.  ::::::::::.`:::-
 9967::::  -::::::::.   `-::::::::  ::::
 9968-::-   .-:::-.``....``.-::-.   -::-
 9969 .. ``       .::::::::.     `..`..
 9970   -:::-`   -::::::::::`  .:::::`
 9971   :::::::` -::::::::::` :::::::.
 9972   .:::::::  -::::::::. ::::::::
 9973    `-:::::`   ..--.`   ::::::.
 9974      `...`  `...--..`  `...`
 9975            .::::::::::
 9976             `.-::::-`
 9977EOF
 9978        ;;
 9979
 9980        "Reborn OS"* | "Reborn"*)
 9981            set_colors 2 2 8
 9982            read -rd '' ascii_data <<'EOF'
 9983${c3}
 9984        mMMMMMMMMM  MMMMMMMMMm
 9985       NM                    MN
 9986      MM  ${c1}dddddddd  dddddddd  ${c3}MN
 9987     mM  ${c1}dd                dd  ${c3}MM
 9988        ${c1}dd  hhhhhh   hhhhh  dd
 9989   ${c3}mM      ${c1}hh            hh      ${c3}Mm
 9990  NM  ${c1}hd       ${c3}mMMMMMMd       ${c1}dh  ${c3}MN
 9991 NM  ${c1}dd  hh   ${c3}mMMMMMMMMm   ${c1}hh  dd  ${c3}MN
 9992NM  ${c1}dd  hh   ${c3}mMMMMMMMMMMm   ${c1}hh  dd  ${c3}MN
 9993 NM  ${c1}dd  hh   ${c3}mMMMMMMMMm   ${c1}hh  dd  ${c3}MN
 9994  NM  ${c1}hd       ${c3}mMMMMMMm       ${c1}dh  ${c3}MN
 9995   mM      ${c1}hh            hh      ${c3}Mm
 9996        ${c1}dd  hhhhhh  hhhhhh  dd
 9997     ${c3}MM  ${c1}dd                dd  ${c3}MM
 9998      MM  ${c1}dddddddd  dddddddd  ${c3}MN
 9999       NM                    MN
10000        mMMMMMMMMM  MMMMMMMMMm
10001EOF
10002        ;;
10003
10004        "Red Star"* | "Redstar"*)
10005            set_colors 1 7 3
10006            read -rd '' ascii_data <<'EOF'
10007${c1}                    ..
10008                  .oK0l
10009                 :0KKKKd.
10010               .xKO0KKKKd
10011              ,Od' .d0000l
10012             .c;.   .'''...           ..'.
10013.,:cloddxxxkkkkOOOOkkkkkkkkxxxxxxxxxkkkx:
10014;kOOOOOOOkxOkc'...',;;;;,,,'',;;:cllc:,.
10015 .okkkkd,.lko  .......',;:cllc:;,,'''''.
10016   .cdo. :xd' cd:.  ..';'',,,'',,;;;,'.
10017      . .ddl.;doooc'..;oc;'..';::;,'.
10018        coo;.oooolllllllcccc:'.  .
10019       .ool''lllllccccccc:::::;.
10020       ;lll. .':cccc:::::::;;;;'
10021       :lcc:'',..';::::;;;;;;;,,.
10022       :cccc::::;...';;;;;,,,,,,.
10023       ,::::::;;;,'.  ..',,,,'''.
10024        ........          ......
10025EOF
10026        ;;
10027
10028        "Redcore"*)
10029            set_colors 1
10030            read -rd '' ascii_data <<'EOF'
10031${c1}                 RRRRRRRRR
10032               RRRRRRRRRRRRR
10033        RRRRRRRRRR      RRRRR
10034   RRRRRRRRRRRRRRRRRRRRRRRRRRR
10035 RRRRRRR  RRR         RRR RRRRRRRR
10036RRRRR    RR                 RRRRRRRRR
10037RRRR    RR     RRRRRRRR      RR RRRRRR
10038RRRR   R    RRRRRRRRRRRRRR   RR   RRRRR
10039RRRR   R  RRRRRRRRRRRRRRRRRR  R   RRRRR
10040RRRR     RRRRRRRRRRRRRRRRRRR  R   RRRR
10041 RRR     RRRRRRRRRRRRRRRRRRRR R   RRRR
10042  RRR    RRRRRRRRRRRRRRRRRRRR    RRRR
10043    RR   RRRRRRRRRRRRRRRRRRR    RRR
10044     RR   RRRRRRRRRRRRRRRRR    RRR
10045       RR   RRRRRRRRRRRRRR   RR
10046         R       RRRR      RR
10047EOF
10048        ;;
10049
10050        "redhat_old" | "rhel_old"*)
10051            set_colors 1 7 3
10052            read -rd '' ascii_data <<'EOF'
10053${c1}             `.-..........`
10054            `////////::.`-/.
10055            -: ....-////////.
10056            //:-::///////////`
10057     `--::: `-://////////////:
10058     //////-    ``.-:///////// .`
10059     `://////:-.`    :///////::///:`
10060       .-/////////:---/////////////:
10061          .-://////////////////////.
10062${c2}         yMN+`.-${c1}::///////////////-`
10063${c2}      .-`:NMMNMs`  `..-------..`
10064       MN+/mMMMMMhoooyysshsss
10065MMM    MMMMMMMMMMMMMMyyddMMM+
10066 MMMM   MMMMMMMMMMMMMNdyNMMh`     hyhMMM
10067  MMMMMMMMMMMMMMMMyoNNNMMM+.   MMMMMMMM
10068   MMNMMMNNMMMMMNM+ mhsMNyyyyMNMMMMsMM
10069EOF
10070        ;;
10071
10072        "Redhat"* | "Red Hat"* | "rhel"*)
10073            set_colors 1
10074            read -rd '' ascii_data <<'EOF'
10075${c1}           .MMM..:MMMMMMM
10076          MMMMMMMMMMMMMMMMMM
10077          MMMMMMMMMMMMMMMMMMMM.
10078         MMMMMMMMMMMMMMMMMMMMMM
10079        ,MMMMMMMMMMMMMMMMMMMMMM:
10080        MMMMMMMMMMMMMMMMMMMMMMMM
10081  .MMMM'  MMMMMMMMMMMMMMMMMMMMMM
10082 MMMMMM    `MMMMMMMMMMMMMMMMMMMM.
10083MMMMMMMM      MMMMMMMMMMMMMMMMMM .
10084MMMMMMMMM.       `MMMMMMMMMMMMM' MM.
10085MMMMMMMMMMM.                     MMMM
10086`MMMMMMMMMMMMM.                 ,MMMMM.
10087 `MMMMMMMMMMMMMMMMM.          ,MMMMMMMM.
10088    MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
10089      MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM:
10090         MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
10091            `MMMMMMMMMMMMMMMMMMMMMMMM:
10092                ``MMMMMMMMMMMMMMMMM'
10093EOF
10094        ;;
10095
10096        "Refracted Devuan"* | "Refracted_Devuan"*)
10097            set_colors 8 7
10098            read -rd '' ascii_data <<'EOF'
10099${c2}                             A
10100                            VW
10101                           VVW\\
10102                         .yWWW\\
10103 ,;,,u,;yy;;v;uyyyyyyy  ,WWWWW^
10104    *WWWWWWWWWWWWWWWW/  $VWWWWw      ,
10105        ^*%WWWWWWVWWX  $WWWW**    ,yy
10106        ,    "**WWW/' **'   ,yy/WWW*`
10107       &WWWWwy    `*`  <,ywWW%VWWW*
10108     yWWWWWWWWWW*    .,   "**WW%W
10109   ,&WWWWWM*"`  ,y/  &WWWww   ^*
10110  XWWX*^   ,yWWWW09 .WWWWWWWWwy,
10111 *`        &WWWWWM  WWWWWWWWWWWWWww,
10112           (WWWWW` /#####WWW***********
10113           ^WWWW
10114            VWW
10115            Wh.
10116            V/
10117EOF
10118        ;;
10119
10120        "Regata"*)
10121            set_colors 7 1 4 5 3 2
10122            read -rd '' ascii_data <<'EOF'
10123${c1}            ddhso+++++osydd
10124        dho/.`hh${c2}.:/+/:.${c1}hhh`:+yd
10125      do-hhhhhh${c2}/sssssss+`${c1}hhhhh./yd
10126    h/`hhhhhhh${c2}-sssssssss:${c1}hhhhhhhh-yd
10127  do`hhhhhhhhh${c2}`ossssssso.${c1}hhhhhhhhhh/d
10128 d/hhhhhhhhhhhh${c2}`/ossso/.${c1}hhhhhhhhhhhh.h
10129 /hhhhhhhhhhhh${c3}`-/osyso/-`${c1}hhhhhhhhhhhh.h
10130shh${c4}-/ooo+-${c1}hhh${c3}:syyso+osyys/`${c1}hhh${c5}`+oo`${c1}hhh/
10131h${c4}`ohhhhhhho`${c3}+yyo.${c1}hhhhh${c3}.+yyo`${c5}.sssssss.${c1}h`h
10132s${c4}:hhhhhhhhho${c3}yys`${c1}hhhhhhh${c3}.oyy/${c5}ossssssso-${c1}hs
10133s${c4}.yhhhhhhhy/${c3}yys`${c1}hhhhhhh${c3}.oyy/${c5}ossssssso-${c1}hs
10134hh${c4}./syyys+.${c1} ${c3}+yy+.${c1}hhhhh${c3}.+yyo`${c5}.ossssso/${c1}h`h
10135shhh${c4}``.`${c1}hhh${c3}`/syyso++oyys/`${c1}hhh${c5}`+++-`${c1}hh:h
10136d/hhhhhhhhhhhh${c3}`-/osyso+-`${c1}hhhhhhhhhhhh.h
10137 d/hhhhhhhhhhhh${c6}`/ossso/.${c1}hhhhhhhhhhhh.h
10138  do`hhhhhhhhh${c6}`ossssssso.${c1}hhhhhhhhhh:h
10139    h/`hhhhhhh${c6}-sssssssss:${c1}hhhhhhhh-yd
10140      h+.hhhhhh${c6}+sssssss+${c1}hhhhhh`/yd
10141        dho:.hhh${c6}.:+++/.${c1}hhh`-+yd
10142            ddhso+++++osyhd
10143EOF
10144        ;;
10145
10146        "Regolith"*)
10147            set_colors 1
10148            read -rd '' ascii_data <<'EOF'
10149${c1}
10150                 ``....```
10151            `.:/++++++/::-.`
10152          -/+++++++:.`
10153        -++++++++:`
10154      `/++++++++-
10155     `/++++++++.                    -/+/
10156     /++++++++/             ``   .:+++:.
10157    -+++++++++/          ./++++:+++/-`
10158    :+++++++++/         `+++++++/-`
10159    :++++++++++`      .-/+++++++`
10160   `:++++++++++/``.-/++++:-:::-`      `
10161 `:+++++++++++++++++/:.`            ./`
10162:++/-:+++++++++/:-..              -/+.
10163+++++++++/::-...:/+++/-..````..-/+++.
10164`......``.::/+++++++++++++++++++++/.
10165         -/+++++++++++++++++++++/.
10166           .:/+++++++++++++++/-`
10167              `.-:://////:-.
10168EOF
10169        ;;
10170
10171        "rocky_small"*)
10172            set_colors 2
10173                read -rd '' ascii_data <<'EOF'
10174${c1}    `-/+++++++++/-.`
10175 `-+++++++++++++++++-`
10176.+++++++++++++++++++++.
10177-+++++++++++++++++++++++.
10178+++++++++++++++/-/+++++++
10179+++++++++++++/.   ./+++++
10180+++++++++++:.       ./+++
10181+++++++++:`   `:/:`   .:/
10182-++++++:`   .:+++++:`
10183 .+++-`   ./+++++++++:`
10184  `-`   ./+++++++++++-
10185       -+++++++++:-.`
10186EOF
10187        ;;
10188
10189        "rocky"*)
10190            set_colors 35
10191            read -rd '' ascii_data <<'EOF'
10192${c1}          __wgliliiligw_,
10193       _williiiiiiliilililw,
10194     _%iiiiiilililiiiiiiiiiii_
10195   .Qliiiililiiiiiiililililiilm.
10196  _iiiiiliiiiiililiiiiiiiiiiliil,
10197 .lililiiilililiiiilililililiiiii,
10198_liiiiiiliiiiiiiliiiiiF{iiiiiilili,
10199jliililiiilililiiili@`  ~ililiiiiiL
10200iiiliiiiliiiiiiili>`      ~liililii
10201liliiiliiilililii`         -9liiiil
10202iiiiiliiliiiiii~             "4lili
102034ililiiiiilil~|      -w,       )4lf
10204-liiiiililiF'       _liig,       )'
10205 )iiiliii@`       _QIililig,
10206  )iiii>`       .Qliliiiililw
10207   )<>~       .mliiiiiliiiiiil,
10208            _gllilililiililii~
10209           giliiiiiiiiiiiiT`
10210          -^~$ililili@~~'
10211EOF
10212        ;;
10213
10214        "Rosa"*)
10215            set_colors 4 7 1
10216            read -rd '' ascii_data <<'EOF'
10217${c1}           ROSAROSAROSAROSAR
10218        ROSA               AROS
10219      ROS   SAROSAROSAROSAR   AROS
10220    RO   ROSAROSAROSAROSAROSAR   RO
10221  ARO  AROSAROSAROSARO      AROS  ROS
10222 ARO  ROSAROS         OSAR   ROSA  ROS
10223 RO  AROSA   ROSAROSAROSA    ROSAR  RO
10224RO  ROSAR  ROSAROSAROSAR  R  ROSARO  RO
10225RO  ROSA  AROSAROSAROSA  AR  ROSARO  AR
10226RO AROS  ROSAROSAROSA   ROS  AROSARO AR
10227RO AROS  ROSAROSARO   ROSARO  ROSARO AR
10228RO  ROS  AROSAROS   ROSAROSA AROSAR  AR
10229RO  ROSA  ROS     ROSAROSAR  ROSARO  RO
10230 RO  ROS     AROSAROSAROSA  ROSARO  AR
10231 ARO  ROSA   ROSAROSAROS   AROSAR  ARO
10232  ARO  OROSA      R      ROSAROS  ROS
10233    RO   AROSAROS   AROSAROSAR   RO
10234     AROS   AROSAROSAROSARO   AROS
10235        ROSA               SARO
10236           ROSAROSAROSAROSAR
10237EOF
10238        ;;
10239
10240        "sabotage"*)
10241            set_colors 4 7 1
10242            read -rd '' ascii_data <<'EOF'
10243${c2} .|'''.|      |     '||''|.    ..|''||
10244 ||..  '     |||     ||   ||  .|'    ||
10245  ''|||.    |  ||    ||'''|.  ||      ||
10246.     '||  .''''|.   ||    || '|.     ||
10247|'....|'  .|.  .||. .||...|'   ''|...|'
10248
10249|''||''|     |      ..|'''.|  '||''''|
10250   ||       |||    .|'     '   ||  .
10251   ||      |  ||   ||    ....  ||''|
10252   ||     .''''|.  '|.    ||   ||
10253  .||.   .|.  .||.  ''|...'|  .||.....|
10254EOF
10255        ;;
10256
10257        "Sabayon"*)
10258            set_colors 4 7 1
10259            read -rd '' ascii_data <<'EOF'
10260${c1}            ...........
10261         ..             ..
10262      ..                   ..
10263    ..           ${c2}o           ${c1}..
10264  ..            ${c2}:W'            ${c1}..
10265 ..             ${c2}.d.             ${c1}..
10266:.             ${c2}.KNO              ${c1}.:
10267:.             ${c2}cNNN.             ${c1}.:
10268:              ${c2}dXXX,              ${c1}:
10269:   ${c2}.          dXXX,       .cd,   ${c1}:
10270:   ${c2}'kc ..     dKKK.    ,ll;:'    ${c1}:
10271:     ${c2}.xkkxc;..dkkkc',cxkkl       ${c1}:
10272:.     ${c2}.,cdddddddddddddo:.       ${c1}.:
10273 ..         ${c2}:lllllll:           ${c1}..
10274   ..         ${c2}',,,,,          ${c1}..
10275     ..                     ..
10276        ..               ..
10277          ...............
10278EOF
10279        ;;
10280
10281        "Sailfish"*)
10282            set_colors 4 5 7 6
10283            read -rd '' ascii_data <<'EOF'
10284${c1}                 _a@b
10285              _#b (b
10286            _@@   @_         _,
10287          _#^@ _#*^^*gg,aa@^^
10288          #- @@^  _a@^^
10289          @_  *g#b
10290          ^@_   ^@_
10291            ^@_   @
10292             @(b (b
10293            #b(b#^
10294          _@_#@^
10295       _a@a*^
10296   ,a@*^
10297EOF
10298        ;;
10299
10300        "SalentOS"*)
10301            set_colors 2 1 3 7
10302            read -rd '' ascii_data <<'EOF'
10303${c1}                 ``..``
10304        .-:+oshdNMMMMMMNdhyo+:-.`
10305  -oydmMMMMMMMMMMMMMMMMMMMMMMMMMMNdhs/
10306${c4} +hdddm${c1}NMMMMMMMMMMMMMMMMMMMMMMMMN${c4}mdddh+`
10307${c2}`MMMMMN${c4}mdddddm${c1}MMMMMMMMMMMM${c4}mdddddm${c3}NMMMMM-
10308${c2} mMMMMMMMMMMMN${c4}ddddhyyhhddd${c3}NMMMMMMMMMMMM`
10309${c2} dMMMMMMMMMMMMMMMMM${c4}oo${c3}MMMMMMMMMMMMMMMMMN`
10310${c2} yMMMMMMMMMMMMMMMMM${c4}hh${c3}MMMMMMMMMMMMMMMMMd
10311${c2} +MMMMMMMMMMMMMMMMM${c4}hh${c3}MMMMMMMMMMMMMMMMMy
10312${c2} :MMMMMMMMMMMMMMMMM${c4}hh${c3}MMMMMMMMMMMMMMMMMo
10313${c2} .MMMMMMMMMMMMMMMMM${c4}hh${c3}MMMMMMMMMMMMMMMMM/
10314${c2} `NMMMMMMMMMMMMMMMM${c4}hh${c3}MMMMMMMMMMMMMMMMM-
10315${c2}  mMMMMMMMMMMMMMMMM${c4}hh${c3}MMMMMMMMMMMMMMMMN`
10316${c2}  hMMMMMMMMMMMMMMMM${c4}hh${c3}MMMMMMMMMMMMMMMMm
10317${c2}  /MMMMMMMMMMMMMMMM${c4}hh${c3}MMMMMMMMMMMMMMMMy
10318${c2}   .+hMMMMMMMMMMMMM${c4}hh${c3}MMMMMMMMMMMMMms:
10319${c2}      `:smMMMMMMMMM${c4}hh${c3}MMMMMMMMMNh+.
10320${c2}          .+hMMMMMM${c4}hh${c3}MMMMMMdo:
10321${c2}             `:smMM${c4}yy${c3}MMNy/`
10322                 ${c2}.- ${c4}`${c3}:.
10323EOF
10324        ;;
10325
10326        "Scientific"*)
10327            set_colors 4 7 1
10328            read -rd '' ascii_data <<'EOF'
10329${c1}                 =/;;/-
10330                +:    //
10331               /;      /;
10332              -X        H.
10333.//;;;:;;-,   X=        :+   .-;:=;:;#;.
10334M-       ,=;;;#:,      ,:#;;:=,       ,@
10335:#           :#.=/++++/=.$=           #=
10336 ,#;         #/:+/;,,/++:+/         ;+.
10337   ,+/.    ,;@+,        ,#H;,    ,/+,
10338      ;+;;/= @.  ${c3}.H${c2}#${c3}#X   ${c1}-X :///+;
10339      ;+=;;;.@,  ${c2}.X${c3}M${c2}@$.  ${c1}=X.//;=#/.
10340   ,;:      :@#=        =$H:     .+#-
10341 ,#=         #;-///==///-//         =#,
10342;+           :#-;;;:;;;;-X-           +:
10343@-      .-;;;;M-        =M/;;;-.      -X
10344 :;;::;;-.    #-        :+    ,-;;-;:==
10345              ,X        H.
10346               ;/      #=
10347                //    +;
10348                 '////'
10349EOF
10350        ;;
10351
10352        "Septor"*)
10353            set_colors 4 7 4
10354            read -rd '' ascii_data <<'EOF'
10355${c1}ssssssssssssssssssssssssssssssssssssssss
10356ssssssssssssssssssssssssssssssssssssssss
10357ssssssssssssssssssssssssssssssssssssssss
10358ssssssssssssssssssssssssssssssssssssssss
10359ssssssssss${c2};okOOOOOOOOOOOOOOko;${c1}ssssssssss
10360sssssssss${c2}oNWWWWWWWWWWWWWWWWWWNo${c1}sssssssss
10361ssssssss${c2}:WWWWWWWWWWWWWWWWWWWWWW:${c1}ssssssss
10362ssssssss${c2}lWWWWWk${c1}ssssssssss${c2}lddddd:${c1}ssssssss
10363ssssssss${c2}cWWWWWNKKKKKKKKKKKKOx:${c1}ssssssssss
10364${c3}yy${c1}sssssss${c2}OWWWWWWWWWWWWWWWWWWWWx${c1}sssssss${c3}yy
10365yyyyyyyyyy${c2}:kKNNNNNNNNNNNNWWWWWW:${c3}yyyyyyyy
10366yyyyyyyy${c2}sccccc;${c3}yyyyyyyyyy${c2}kWWWWW:${c3}yyyyyyyy
10367yyyyyyyy${c2}:WWWWWWNNNNNNNNNNWWWWWW;${c3}yyyyyyyy
10368yyyyyyyy${c2}.dWWWWWWWWWWWWWWWWWWWNd${c3}yyyyyyyyy
10369yyyyyyyyyy${c2}sdO0KKKKKKKKKKKK0Od;${c3}yyyyyyyyyy
10370yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
10371yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
10372yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
10373yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
10374yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
10375EOF
10376        ;;
10377
10378        "Serene"*)
10379            set_colors 6 6
10380            read -rd '' ascii_data <<'EOF'
10381${c1}              __---''''''---__
10382          .                      .
10383        :                          :
10384      -                       _______----_-
10385     s               __----'''     __----
10386 __h_            _-'           _-'     h
10387 '-._''--.._    ;           _-'         y
10388  :  ''-._  '-._/        _-'             :
10389  y       ':_       _--''                y
10390  m    .--'' '-._.;'                     m
10391  m   :        :                         m
10392  y    '.._     '-__                     y
10393  :        '--._    '''----___           :
10394   y            '--._         ''-- _    y
10395    h                '--._          :  h
10396     s                  __';         vs
10397      -         __..--''             -
10398        :_..--''                   :
10399          .                     _ .
10400            `''---______---''-``
10401EOF
10402        ;;
10403
10404        "SharkLinux"*)
10405            set_colors 4 7
10406            read -rd '' ascii_data <<'EOF'
10407${c1}                              `:shd/
10408                          `:yNMMMMs
10409                       `-smMMMMMMN.
10410                     .+dNMMMMMMMMs
10411                   .smNNMMMMMMMMm`
10412                 .sNNNNNNNMMMMMM/
10413               `omNNNNNNNMMMMMMm
10414              /dNNNNNNNNMMMMMMM+
10415            .yNNNNNNNNNMMMMMMMN`
10416           +mNNNNNNNNNMMMMMMMMh
10417         .hNNNNNNNNNNMMMMMMMMMs
10418        +mMNNNNNNNNMMMMMMMMMMMs
10419      .hNMMNNNNMMMMMMMMMMMMMMMd
10420    .oNNNNNNNNNNMMMMMMMMMMMMMMMo
10421 `:+syyssoo++++ooooossssssssssso:
10422EOF
10423        ;;
10424
10425        "Siduction"*)
10426            set_colors 4 4
10427            read -rd '' ascii_data <<'EOF'
10428${c1}                _aass,
10429               jQh: =$w
10430               QWmwawQW
10431               )$QQQQ@(   ..
10432         _a_a.   ~??^  syDY?Sa,
10433       _mW>-<$c       jWmi  imm.
10434       ]QQwayQE       4QQmgwmQQ`
10435        ?WWQWP'       -9QQQQQ@'._aas,
10436 _a%is.        .adYYs,. -"?!` aQB*~^3$c
10437_Qh;.nm       .QWc. {QL      ]QQp;..vmQ/
10438"QQmmQ@       -QQQggmQP      ]QQWmggmQQ(
10439 -???"         "$WQQQY`  __,  ?QQQQQQW!
10440        _yZ!?q,   -   .yWY!!Sw, "???^
10441       .QQa_=qQ       mQm>..vmm
10442        $QQWQQP       $QQQgmQQ@
10443         "???"   _aa, -9WWQQWY`
10444               _mB>~)$a  -~~
10445               mQms_vmQ.
10446               ]WQQQQQP
10447                -?T??"
10448EOF
10449        ;;
10450
10451        "slackware_small"*)
10452            set_colors 4 7 1
10453            read -rd '' ascii_data <<'EOF'
10454${c1}   ________
10455  /  ______|
10456  | |______
10457  \\______  \\
10458   ______| |
10459| |________/
10460|____________
10461EOF
10462        ;;
10463
10464        "Slackware"*)
10465            set_colors 4 7 1
10466            read -rd '' ascii_data <<'EOF'
10467${c1}                  :::::::
10468            :::::::::::::::::::
10469         :::::::::::::::::::::::::
10470       ::::::::${c2}cllcccccllllllll${c1}::::::
10471    :::::::::${c2}lc               dc${c1}:::::::
10472   ::::::::${c2}cl   clllccllll    oc${c1}:::::::::
10473  :::::::::${c2}o   lc${c1}::::::::${c2}co   oc${c1}::::::::::
10474 ::::::::::${c2}o    cccclc${c1}:::::${c2}clcc${c1}::::::::::::
10475 :::::::::::${c2}lc        cclccclc${c1}:::::::::::::
10476::::::::::::::${c2}lcclcc          lc${c1}::::::::::::
10477::::::::::${c2}cclcc${c1}:::::${c2}lccclc     oc${c1}:::::::::::
10478::::::::::${c2}o    l${c1}::::::::::${c2}l    lc${c1}:::::::::::
10479 :::::${c2}cll${c1}:${c2}o     clcllcccll     o${c1}:::::::::::
10480 :::::${c2}occ${c1}:${c2}o                  clc${c1}:::::::::::
10481  ::::${c2}ocl${c1}:${c2}ccslclccclclccclclc${c1}:::::::::::::
10482   :::${c2}oclcccccccccccccllllllllllllll${c1}:::::
10483    ::${c2}lcc1lcccccccccccccccccccccccco${c1}::::
10484      ::::::::::::::::::::::::::::::::
10485        ::::::::::::::::::::::::::::
10486           ::::::::::::::::::::::
10487                ::::::::::::
10488EOF
10489        ;;
10490
10491        "SliTaz"*)
10492            set_colors 3 3
10493            read -rd '' ascii_data <<'EOF'
10494${c1}        @    @(               @
10495      @@   @@                  @    @/
10496     @@   @@                   @@   @@
10497    @@  %@@                     @@   @@
10498   @@  %@@@       @@@@@.       @@@@  @@
10499  @@@    @@@@    @@@@@@@    &@@@    @@@
10500   @@@@@@@ %@@@@@@@@@@@@ &@@@% @@@@@@@/
10501       ,@@@@@@@@@@@@@@@@@@@@@@@@@
10502  .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/
10503@@@@@@.  @@@@@@@@@@@@@@@@@@@@@  /@@@@@@
10504@@    @@@@@  @@@@@@@@@@@@,  @@@@@   @@@
10505@@ @@@@.    @@@@@@@@@@@@@%    #@@@@ @@.
10506@@ ,@@      @@@@@@@@@@@@@      @@@  @@
10507@   @@.     @@@@@@@@@@@@@     @@@  *@
10508@    @@     @@@@@@@@@@@@      @@   @
10509      @      @@@@@@@@@.     #@
10510       @      ,@@@@@       @
10511EOF
10512        ;;
10513
10514        "SmartOS"*)
10515            set_colors 6 7
10516            read -rd '' ascii_data <<'EOF'
10517${c1}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
10518yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
10519yyyys             oyyyyyyyyyyyyyyyy
10520yyyys  yyyyyyyyy  oyyyyyyyyyyyyyyyy
10521yyyys  yyyyyyyyy  oyyyyyyyyyyyyyyyy
10522yyyys  yyyyyyyyy  oyyyyyyyyyyyyyyyy
10523yyyys  yyyyyyyyy  oyyyyyyyyyyyyyyyy
10524yyyys  yyyyyyyyyyyyyyyyyyyyyyyyyyyy
10525yyyyy                         syyyy
10526yyyyyyyyyyyyyyyyyyyyyyyyyyyy  syyyy
10527yyyyyyyyyyyyyyyy  syyyyyyyyy  syyyy
10528yyyyyyyyyyyyyyyy  oyyyyyyyyy  syyyy
10529yyyyyyyyyyyyyyyy  oyyyyyyyyy  syyyy
10530yyyyyyyyyyyyyyyy  syyyyyyyyy  syyyy
10531yyyyyyyyyyyyyyyy              yyyyy
10532yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
10533yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
10534EOF
10535        ;;
10536
10537        "SkiffOS"*)
10538            set_colors 4 7
10539            read -rd '' ascii_data <<'EOF'
10540${c2}
10541             ,@@@@@@@@@@@w,_
10542  ${c2}====~~~,,.${c2}A@@@@@@@@@@@@@@@@@W,_
10543  ${c1}`||||||||||||||L{${c2}"@$@@@@@@@@B"
10544   ${c1}`|||||||||||||||||||||L{${c2}"$D
10545     ${c2}@@@@@@@@@@@@@@@@@@@@@${c1}_||||}==,
10546      ${c2}*@@@@@@@@@@@@@@@@@@@@@@@@@p${c1}||||==,
10547        ${c1}`'||LLL{{""${c2}@$B@@@@@@@@@@@@@@@p${c1}||
10548            ${c1}`~=|||||||||||L"${c2}$@@@@@@@@@@@
10549                   ${c1}````'"""""""${c2}'""""""""
10550EOF
10551            ;;
10552
10553        "Solus"*)
10554            set_colors 4 7 1
10555            read -rd '' ascii_data <<'EOF'
10556${c2}            -```````````
10557          `-+/------------.`
10558       .---:mNo---------------.
10559     .-----yMMMy:---------------.
10560   `------oMMMMMm/----------------`
10561  .------/MMMMMMMN+----------------.
10562 .------/NMMMMMMMMm-+/--------------.
10563`------/NMMMMMMMMMN-:mh/-------------`
10564.-----/NMMMMMMMMMMM:-+MMd//oso/:-----.
10565-----/NMMMMMMMMMMMM+--mMMMh::smMmyo:--
10566----+NMMMMMMMMMMMMMo--yMMMMNo-:yMMMMd/.
10567.--oMMMMMMMMMMMMMMMy--yMMMMMMh:-yMMMy-`
10568`-sMMMMMMMMMMMMMMMMh--dMMMMMMMd:/Ny+y.
10569`-/+osyhhdmmNNMMMMMm-/MMMMMMMmh+/ohm+
10570  .------------:://+-/++++++${c1}oshddys:
10571   -hhhhyyyyyyyyyyyhhhhddddhysssso-
10572    `:ossssssyysssssssssssssssso:`
10573      `:+ssssssssssssssssssss+-
10574         `-/+ssssssssssso+/-`
10575              `.-----..`
10576EOF
10577        ;;
10578
10579        "Source Mage"* | "Source_Mage"*)
10580            set_colors 4 7 1
10581            read -rd '' ascii_data <<'EOF'
10582${c2}       :ymNMNho.
10583.+sdmNMMMMMMMMMMy`
10584.-::/yMMMMMMMMMMMm-
10585      sMMMMMMMMMMMm/
10586     /NMMMMMMMMMMMMMm:
10587    .MMMMMMMMMMMMMMMMM:
10588    `MMMMMMMMMMMMMMMMMN.
10589     NMMMMMMMMMMMMMMMMMd
10590     mMMMMMMMMMMMMMMMMMMo
10591     hhMMMMMMMMMMMMMMMMMM.
10592     .`/MMMMMMMMMMMMMMMMMs
10593        :mMMMMMMMMMMMMMMMN`
10594         `sMMMMMMMMMMMMMMM+
10595           /NMMMMMMMMMMMMMN`
10596             oMMMMMMMMMMMMM+
10597          ./sd.-hMMMMMMMMmmN`
10598      ./+oyyyh- `MMMMMMMMMmNh
10599                 sMMMMMMMMMmmo
10600                 `NMMMMMMMMMd:
10601                  -dMMMMMMMMMo
10602                    -shmNMMms.
10603EOF
10604        ;;
10605
10606        "Sparky"*)
10607            set_colors 1 7
10608            read -rd '' ascii_data <<'EOF'
10609${c1}
10610           .            `-:-`
10611          .o`       .-///-`
10612         `oo`    .:/++:.
10613         os+`  -/+++:` ``.........```
10614        /ys+`./+++/-.-::::::----......``
10615       `syyo`++o+--::::-::/+++/-``
10616       -yyy+.+o+`:/:-:sdmmmmmmmmdy+-`
10617::-`   :yyy/-oo.-+/`ymho++++++oyhdmdy/`
10618`/yy+-`.syyo`+o..o--h..osyhhddhs+//osyy/`
10619  -ydhs+-oyy/.+o.-: ` `  :/::+ydhy+```-os-
10620   .sdddy::syo--/:.     `.:dy+-ohhho    ./:
10621     :yddds/:+oo+//:-`- /+ +hy+.shhy:     ``
10622      `:ydmmdysooooooo-.ss`/yss--oyyo
10623        `./ossyyyyo+:-/oo:.osso- .oys
10624       ``..-------::////.-oooo/   :so
10625    `...----::::::::--.`/oooo:    .o:
10626           ```````     ++o+:`     `:`
10627                     ./+/-`        `
10628                   `-:-.
10629                   ``
10630EOF
10631        ;;
10632
10633        "Star"*)
10634            set_colors 7
10635            read -rd '' ascii_data <<'EOF'
10636${c1}                   ./
10637                  `yy-
10638                 `y.`y`
10639    ``           s-  .y            `
10640    +h//:..`    +/    /o    ``..:/so
10641     /o``.-::/:/+      o/://::-.`+o`
10642      :s`     `.        .`     `s/
10643       .y.                    .s-
10644        `y-                  :s`
10645      .-//.                  /+:.
10646   .:/:.                       .:/:.
10647-+o:.                             .:+:.
10648-///++///:::`              .-::::///+so-
10649       ``..o/              d-....```
10650           s.     `/.      d
10651           h    .+o-+o-    h.
10652           h  -o/`   `/o:  s:
10653          -s/o:`       `:o/+/
10654          /s-             -yo
10655EOF
10656        ;;
10657
10658        "SteamOS"*)
10659            set_colors 5 7
10660            read -rd '' ascii_data <<'EOF'
10661${c1}              .,,,,.
10662        .,'onNMMMMMNNnn',.
10663     .'oNMANKMMMMMMMMMMMNNn'.
10664   .'ANMMMMMMMXKNNWWWPFFWNNMNn.
10665  ;NNMMMMMMMMMMNWW'' ,.., 'WMMM,
10666 ;NMMMMV+##+VNWWW' .+;'':+, 'WMW,
10667,VNNWP+${c2}######${c1}+WW,  ${c2}+:    ${c1}:+, +MMM,
10668'${c2}+#############,   +.    ,+' ${c1}+NMMM
10669${c2}  '*#########*'     '*,,*' ${c1}.+NMMMM.
10670${c2}     `'*###*'          ,.,;###${c1}+WNM,
10671${c2}         .,;;,      .;##########${c1}+W
10672${c2},',.         ';  ,+##############'
10673 '###+. :,. .,; ,###############'
10674  '####.. `'' .,###############'
10675    '#####+++################'
10676      '*##################*'
10677         ''*##########*''
10678              ''''''
10679EOF
10680        ;;
10681
10682        "sunos_small" | "solaris_small")
10683            set_colors 3 7
10684            read -rd '' ascii_data <<'EOF'
10685${c1}       .   .;   .
10686   .   :;  ::  ;:   .
10687   .;. ..      .. .;.
10688..  ..             ..  ..
10689 .;,                 ,;.
10690EOF
10691        ;;
10692
10693        "SunOS" | "Solaris")
10694            set_colors 3 7
10695            read -rd '' ascii_data <<'EOF'
10696${c1}                 `-     `
10697          `--    `+-    .:
10698           .+:  `++:  -/+-     .
10699    `.::`  -++/``:::`./+/  `.-/.
10700      `++/-`.`          ` /++:`
10701  ``   ./:`                .: `..`.-
10702``./+/:-                     -+++:-
10703    -/+`                      :.
10704EOF
10705        ;;
10706
10707        "openSUSE Leap"* | "openSUSE_Leap"*)
10708            set_colors 2 7
10709            read -rd '' ascii_data <<'EOF'
10710${c2}                 `-++:`
10711               ./oooooo/-
10712            `:oooooooooooo:.
10713          -+oooooooooooooooo+-`
10714       ./oooooooooooooooooooooo/-
10715      :oooooooooooooooooooooooooo:
10716    `  `-+oooooooooooooooooooo/-   `
10717 `:oo/-   .:ooooooooooooooo+:`  `-+oo/.
10718`/oooooo:.   -/oooooooooo/.   ./oooooo/.
10719  `:+ooooo+-`  `:+oooo+-   `:oooooo+:`
10720     .:oooooo/.   .::`   -+oooooo/.
10721        -/oooooo:.    ./oooooo+-
10722          `:+ooooo+-:+oooooo:`
10723             ./oooooooooo/.
10724                -/oooo+:`
10725                  `:/.
10726EOF
10727        ;;
10728
10729        "t2"*)
10730            set_colors 7 4
10731            read -rd '' ascii_data <<'EOF'
10732${c2}
10733TTTTTTTTTT
10734    tt   ${c1}222${c2}
10735    tt  ${c1}2   2${c2}
10736    tt     ${c1}2${c2}
10737    tt    ${c1}2${c2}
10738    tt  ${c1}22222${c2}
10739EOF
10740        ;;
10741
10742        "openSUSE Tumbleweed"* | "openSUSE_Tumbleweed"*)
10743            set_colors 2 7
10744            read -rd '' ascii_data <<'EOF'
10745${c2}                                     ......
10746     .,cdxxxoc,.               .:kKMMMNWMMMNk:.
10747    cKMMN0OOOKWMMXo. ;        ;0MWk:.      .:OMMk.
10748  ;WMK;.       .lKMMNM,     :NMK,             .OMW;
10749 cMW;            'WMMMN   ,XMK,                 oMM'
10750.MMc               ..;l. xMN:                    KM0
10751'MM.                   'NMO                      oMM
10752.MM,                 .kMMl                       xMN
10753 KM0               .kMM0. .dl:,..               .WMd
10754 .XM0.           ,OMMK,    OMMMK.              .XMK
10755   oWMO:.    .;xNMMk,       NNNMKl.          .xWMx
10756     :ONMMNXMMMKx;          .  ,xNMWKkxllox0NMWk,
10757         .....                    .:dOOXXKOxl,
10758EOF
10759        ;;
10760
10761        "opensuse_small" | "suse_small"*)
10762            set_colors 2 7
10763            read -rd '' ascii_data <<'EOF'
10764${c1}  _______
10765__|   __ \\
10766     / .\\ \\
10767     \\__/ |
10768   _______|
10769   \\_______
10770__________/
10771EOF
10772        ;;
10773
10774        "openSUSE"* | "open SUSE"* | "SUSE"*)
10775            set_colors 2 7
10776            read -rd '' ascii_data <<'EOF'
10777${c2}           .;ldkO0000Okdl;.
10778       .;d00xl:^''''''^:ok00d;.
10779     .d00l'                'o00d.
10780   .d0Kd'${c1}  Okxol:;,.          ${c2}:O0d.
10781  .OK${c1}KKK0kOKKKKKKKKKKOxo:,      ${c2}lKO.
10782 ,0K${c1}KKKKKKKKKKKKKKK0P^${c2},,,${c1}^dx:${c2}    ;00,
10783.OK${c1}KKKKKKKKKKKKKKKk'${c2}.oOPPb.${c1}'0k.${c2}   cKO.
10784:KK${c1}KKKKKKKKKKKKKKK: ${c2}kKx..dd ${c1}lKd${c2}   'OK:
10785dKK${c1}KKKKKKKKKOx0KKKd ${c2}^0KKKO' ${c1}kKKc${c2}   dKd
10786dKK${c1}KKKKKKKKKK;.;oOKx,..${c2}^${c1}..;kKKK0.${c2}  dKd
10787:KK${c1}KKKKKKKKKK0o;...^cdxxOK0O/^^'  ${c2}.0K:
10788 kKK${c1}KKKKKKKKKKKKK0x;,,......,;od  ${c2}lKk
10789 '0K${c1}KKKKKKKKKKKKKKKKKKKK00KKOo^  ${c2}c00'
10790  'kK${c1}KKOxddxkOO00000Okxoc;''   ${c2}.dKk'
10791    l0Ko.                    .c00l'
10792     'l0Kk:.              .;xK0l'
10793        'lkK0xl:;,,,,;:ldO0kl'
10794            '^:ldxkkkkxdl:^'
10795EOF
10796        ;;
10797
10798        "SwagArch"*)
10799            set_colors 4 7 1
10800            read -rd '' ascii_data <<'EOF'
10801${c2}        .;ldkOKXXNNNNXXK0Oxoc,.
10802   ,lkXMMNK0OkkxkkOKWMMMMMMMMMM;
10803 'K0xo  ..,;:c:.     `'lKMMMMM0
10804     .lONMMMMMM'         `lNMk'
10805${c2}    ;WMMMMMMMMMO.              ${c1}....::...
10806${c2}    OMMMMMMMMMMMMKl.       ${c1}.,;;;;;ccccccc,
10807${c2}    `0MMMMMMMMMMMMMM0:         ${c1}.. .ccccccc.
10808${c2}      'kWMMMMMMMMMMMMMNo.   ${c1}.,:'  .ccccccc.
10809${c2}        `c0MMMMMMMMMMMMMN,${c1},:c;    :cccccc:
10810${c2} ckl.      `lXMMMMMMMMMX${c1}occcc:.. ;ccccccc.
10811${c2}dMMMMXd,     `OMMMMMMWk${c1}ccc;:''` ,ccccccc:
10812${c2}XMMMMMMMWKkxxOWMMMMMNo${c1}ccc;     .cccccccc.
10813${c2} `':ldxO0KXXXXXK0Okdo${c1}cccc.     :cccccccc.
10814                    :ccc:'     `cccccccc:,
10815                                   ''
10816EOF
10817        ;;
10818
10819        "Tails"*)
10820            set_colors 5 7
10821            read -rd '' ascii_data <<'EOF'
10822${c1}      ``
10823  ./yhNh
10824syy/Nshh         `:o/
10825N:dsNshh  █   `ohNMMd
10826N-/+Nshh      `yMMMMd
10827N-yhMshh       yMMMMd
10828N-s:hshh  █    yMMMMd so//.
10829N-oyNsyh       yMMMMd d  Mms.
10830N:hohhhd:.     yMMMMd  syMMM+
10831Nsyh+-..+y+-   yMMMMd   :mMM+
10832+hy-      -ss/`yMMMM     `+d+
10833  :sy/.     ./yNMMMMm      ``
10834    .+ys- `:+hNMMMMMMy/`
10835      `hNmmMMMMMMMMMMMMdo.
10836       dMMMMMMMMMMMMMMMMMNh:
10837       +hMMMMMMMMMMMMMMMMMmy.
10838         -oNMMMMMMMMMMmy+.`
10839           `:yNMMMds/.`
10840              .//`
10841EOF
10842        ;;
10843
10844        "Trisquel"*)
10845            set_colors 4 6
10846            read -rd '' ascii_data <<'EOF'
10847${c1}                         ▄▄▄▄▄▄
10848                      ▄█████████▄
10849      ▄▄▄▄▄▄         ████▀   ▀████
10850   ▄██████████▄     ████▀   ▄▄ ▀███
10851 ▄███▀▀   ▀▀████     ███▄   ▄█   ███
10852▄███   ▄▄▄   ████▄    ▀██████   ▄███
10853███   █▀▀██▄  █████▄     ▀▀   ▄████
10854▀███      ███  ███████▄▄  ▄▄██████
10855${c1} ▀███▄   ▄███  █████████████${c2}████▀
10856${c1}  ▀█████████    ███████${c2}███▀▀▀
10857    ▀▀███▀▀     ██████▀▀
10858               ██████▀   ▄▄▄▄
10859              █████▀   ████████
10860              █████   ███▀  ▀███
10861               ████▄   ██▄▄▄  ███
10862                █████▄   ▀▀  ▄██
10863                  ██████▄▄▄████
10864                     ▀▀█████▀▀
10865EOF
10866        ;;
10867
10868        "Ubuntu Cinnamon"* | "Ubuntu-Cinnamon"*)
10869            set_colors 1 7
10870            read -rd '' ascii_data <<'EOF'
10871${c1}            .-/+oooooooo+/-.
10872        `:+oooooooooooooooooo+:`
10873      -+oooooooooooooooooooooooo+-
10874    .ooooooooooooooooooo${c2}:ohNd${c1}oooooo.
10875   /oooooooooooo${c2}:/+oo++:/ohNd${c1}ooooooo/
10876  +oooooooooo${c2}:osNdhyyhdNNh+:+${c1}oooooooo+
10877 /ooooooooo${c2}/dN/${c1}ooooooooo${c2}/sNNo${c1}ooooooooo/
10878.ooooooooo${c2}oMd:${c1}oooooooooooo${c2}:yMy${c1}ooooooooo.
10879+ooooo${c2}:+o/Md${c1}oooooo${c2}:sm/${c1}oo/ooo${c2}yMo${c1}oooooooo+
10880ooo${c2}:sdMdosMo${c1}ooooo${c2}oNMd${c1}//${c2}dMd+${c1}o${c2}:so${c1}ooooooooo
10881oooo${c2}+ymdosMo${c1}ooo${c2}+mMm${c1}+/${c2}hMMMMMh+hs${c1}ooooooooo
10882+oooooo${c2}:${c1}:${c2}/Nm:${c1}/${c2}hMNo${c1}:y${c2}MMMMMMMMMM+${c1}oooooooo+
10883.ooooooooo${c2}/NNMNy${c1}:o${c2}NMMMMMMMMMMo${c1}ooooooooo.
10884/oooooooooo${c2}:yh:${c1}+m${c2}MMMMMMMMMMd/${c1}ooooooooo/
10885  +oooooooooo${c2}+${c1}/h${c2}mMMMMMMNds//o${c1}oooooooo+
10886   /oooooooooooo${c2}+:////:o/ymMd${c1}ooooooo/
10887    .oooooooooooooooooooo${c2}/sdh${c1}oooooo.
10888      -+oooooooooooooooooooooooo+-
10889        `:+oooooooooooooooooo+:`
10890            .-/+oooooooo+/-.
10891EOF
10892        ;;
10893
10894        "Ubuntu Budgie"* | "Ubuntu-Budgie"*)
10895            set_colors 4 7 1
10896            read -rd '' ascii_data <<'EOF'
10897${c2}           ./oydmMMMMMMmdyo/.
10898        :smMMMMMMMMMMMhs+:++yhs:
10899     `omMMMMMMMMMMMN+`        `odo`
10900    /NMMMMMMMMMMMMN-            `sN/
10901  `hMMMMmhhmMMMMMMh               sMh`
10902 .mMmo-     /yMMMMm`              `MMm.
10903 mN/       yMMMMMMMd-              MMMm
10904oN-        oMMMMMMMMMms+//+o+:    :MMMMo
10905m/          +NMMMMMMMMMMMMMMMMm. :NMMMMm
10906M`           .NMMMMMMMMMMMMMMMNodMMMMMMM
10907M-            sMMMMMMMMMMMMMMMMMMMMMMMMM
10908mm`           mMMMMMMMMMNdhhdNMMMMMMMMMm
10909oMm/        .dMMMMMMMMh:      :dMMMMMMMo
10910 mMMNyo/:/sdMMMMMMMMM+          sMMMMMm
10911 .mMMMMMMMMMMMMMMMMMs           `NMMMm.
10912  `hMMMMMMMMMMM.oo+.            `MMMh`
10913    /NMMMMMMMMMo                sMN/
10914     `omMMMMMMMMy.            :dmo`
10915        :smMMMMMMMh+-`   `.:ohs:
10916           ./oydmMMMMMMdhyo/.
10917EOF
10918        ;;
10919
10920        "Ubuntu-GNOME"*)
10921            set_colors 4 5 7 6
10922            read -rd '' ascii_data <<'EOF'
10923${c3}          ./o.
10924        .oooooooo
10925      .oooo```soooo
10926    .oooo`     `soooo
10927   .ooo`   ${c4}.o.${c3}   `\/ooo.
10928   :ooo   ${c4}:oooo.${c3}   `\/ooo.
10929    sooo    ${c4}`ooooo${c3}    \/oooo
10930     \/ooo    ${c4}`soooo${c3}    `ooooo
10931      `soooo    ${c4}`\/ooo${c3}    `soooo
10932${c4}./oo    ${c3}`\/ooo    ${c4}`/oooo.${c3}   `/ooo
10933${c4}`\/ooo.   ${c3}`/oooo.   ${c4}`/oooo.${c3}   ``
10934${c4}  `\/ooo.    ${c3}/oooo     ${c4}/ooo`
10935${c4}     `ooooo    ${c3}``    ${c4}.oooo
10936${c4}       `soooo.     .oooo`
10937         `\/oooooooooo`
10938            ``\/oo``
10939EOF
10940        ;;
10941
10942        "Ubuntu MATE"* | "Ubuntu-MATE"*)
10943            set_colors 2 7
10944            read -rd '' ascii_data <<'EOF'
10945${c1}            .:/+oossssoo+/:.`
10946        `:+ssssssssssssssssss+:`
10947      -+sssssssssssssss${c2}y${c1}ssssssss+-
10948    .osssssssssssss${c2}yy${c1}ss${c2}mMmh${c1}ssssssso.
10949   /sssssssss${c2}ydmNNNmmd${c1}s${c2}mMMMMNdy${c1}sssss/
10950 `+ssssssss${c2}hNNdy${c1}sssssss${c2}mMMMMNdy${c1}ssssss+`
10951 +sssssss${c2}yNNh${c1}ss${c2}hmNNNNm${c1}s${c2}mMmh${c1}s${c2}ydy${c1}sssssss+
10952-sssss${c2}y${c1}ss${c2}Nm${c1}ss${c2}hNNh${c1}ssssss${c2}y${c1}s${c2}hh${c1}ss${c2}mMy${c1}sssssss-
10953+ssss${c2}yMNdy${c1}ss${c2}hMd${c1}ssssssssss${c2}hMd${c1}ss${c2}NN${c1}sssssss+
10954sssss${c2}yMMMMMmh${c1}sssssssssssss${c2}NM${c1}ss${c2}dMy${c1}sssssss
10955sssss${c2}yMMMMMmhy${c1}ssssssssssss${c2}NM${c1}ss${c2}dMy${c1}sssssss
10956+ssss${c2}yMNdy${c1}ss${c2}hMd${c1}ssssssssss${c2}hMd${c1}ss${c2}NN${c1}sssssss+
10957-sssss${c2}y${c1}ss${c2}Nm${c1}ss${c2}hNNh${c1}ssssssss${c2}dh${c1}ss${c2}mMy${c1}sssssss-
10958 +sssssss${c2}yNNh${c1}ss${c2}hmNNNNm${c1}s${c2}mNmh${c1}s${c2}ymy${c1}sssssss+
10959  +ssssssss${c2}hNNdy${c1}sssssss${c2}mMMMMmhy${c1}ssssss+
10960   /sssssssss${c2}ydmNNNNmd${c1}s${c2}mMMMMNdh${c1}sssss/
10961    .osssssssssssss${c2}yy${c1}ss${c2}mMmdy${c1}sssssso.
10962      -+sssssssssssssss${c2}y${c1}ssssssss+-
10963        `:+ssssssssssssssssss+:`
10964            .:/+oossssoo+/:.
10965
10966EOF
10967        ;;
10968
10969        "ubuntu_old")
10970            set_colors 1 7 3
10971            read -rd '' ascii_data <<'EOF'
10972${c1}                         ./+o+-
10973${c2}                 yyyyy- ${c1}-yyyyyy+
10974${c2}              ${c2}://+//////${c1}-yyyyyyo
10975${c3}          .++ ${c2}.:/++++++/-${c1}.+sss/`
10976${c3}        .:++o:  ${c2}/++++++++/:--:/-
10977${c3}       o:+o+:++.${c2}`..```.-/oo+++++/
10978${c3}      .:+o:+o/.${c2}          `+sssoo+/
10979${c2} .++/+:${c3}+oo+o:`${c2}             /sssooo.
10980${c2}/+++//+:${c3}`oo+o${c2}               /::--:.
10981${c2}+/+o+++${c3}`o++o${c1}               ++////.
10982${c2} .++.o+${c3}++oo+:`${c1}             /dddhhh.
10983${c3}      .+.o+oo:.${c1}          `oddhhhh+
10984${c3}       +.++o+o`${c1}`-````.:ohdhhhhh+
10985${c3}        `:o+++ ${c1}`ohhhhhhhhyo++os:
10986${c3}          .o:${c1}`.syhhhhhhh/${c3}.oo++o`
10987${c1}              /osyyyyyyo${c3}++ooo+++/
10988${c1}                  ````` ${c3}+oo+++o:
10989${c3}                         `oo++.
10990EOF
10991        ;;
10992
10993        "Ubuntu Studio"* | "Ubuntu-Studio")
10994            set_colors 6 7
10995            read -rd '' ascii_data <<'EOF'
10996${c1}              ..-::::::-.`
10997         `.:+++++++++++${c2}ooo${c1}++:.`
10998       ./+++++++++++++${c2}sMMMNdyo${c1}+/.
10999     .++++++++++++++++${c2}oyhmMMMMms${c1}++.
11000   `/+++++++++${c2}osyhddddhys${c1}+${c2}osdMMMh${c1}++/`
11001  `+++++++++${c2}ydMMMMNNNMMMMNds${c1}+${c2}oyyo${c1}++++`
11002  +++++++++${c2}dMMNhso${c1}++++${c2}oydNMMmo${c1}++++++++`
11003 :+${c2}odmy${c1}+++${c2}ooysoohmNMMNmyoohMMNs${c1}+++++++:
11004 ++${c2}dMMm${c1}+${c2}oNMd${c1}++${c2}yMMMmhhmMMNs+yMMNo${c1}+++++++
11005`++${c2}NMMy${c1}+${c2}hMMd${c1}+${c2}oMMMs${c1}++++${c2}sMMN${c1}++${c2}NMMs${c1}+++++++.
11006`++${c2}NMMy${c1}+${c2}hMMd${c1}+${c2}oMMMo${c1}++++${c2}sMMN${c1}++${c2}mMMs${c1}+++++++.
11007 ++${c2}dMMd${c1}+${c2}oNMm${c1}++${c2}yMMNdhhdMMMs${c1}+y${c2}MMNo${c1}+++++++
11008 :+${c2}odmy${c1}++${c2}oo${c1}+${c2}ss${c1}+${c2}ohNMMMMmho${c1}+${c2}yMMMs${c1}+++++++:
11009  +++++++++${c2}hMMmhs+ooo+oshNMMms${c1}++++++++
11010  `++++++++${c2}oymMMMMNmmNMMMMmy+oys${c1}+++++`
11011   `/+++++++++${c2}oyhdmmmmdhso+sdMMMs${c1}++/
11012     ./+++++++++++++++${c2}oyhdNMMMms${c1}++.
11013       ./+++++++++++++${c2}hMMMNdyo${c1}+/.
11014         `.:+++++++++++${c2}sso${c1}++:.
11015              ..-::::::-..
11016EOF
11017        ;;
11018
11019        "ubuntu_small")
11020            set_colors 1 7 3
11021            read -rd '' ascii_data <<'EOF'
11022${c1}         _
11023     ---(_)
11024 _/  ---  \\
11025(_) |   |
11026  \\  --- _/
11027     ---(_)
11028EOF
11029        ;;
11030
11031        "Ubuntu"* | "i3buntu"*)
11032            set_colors 1 7 3
11033            read -rd '' ascii_data <<'EOF'
11034${c1}            .-/+oossssoo+\-.
11035        ´:+ssssssssssssssssss+:`
11036      -+ssssssssssssssssssyyssss+-
11037    .ossssssssssssssssss${c2}dMMMNy${c1}sssso.
11038   /sssssssssss${c2}hdmmNNmmyNMMMMh${c1}ssssss\
11039  +sssssssss${c2}hm${c1}yd${c2}MMMMMMMNddddy${c1}ssssssss+
11040 /ssssssss${c2}hNMMM${c1}yh${c2}hyyyyhmNMMMNh${c1}ssssssss\
11041.ssssssss${c2}dMMMNh${c1}ssssssssss${c2}hNMMMd${c1}ssssssss.
11042+ssss${c2}hhhyNMMNy${c1}ssssssssssss${c2}yNMMMy${c1}sssssss+
11043oss${c2}yNMMMNyMMh${c1}ssssssssssssss${c2}hmmmh${c1}ssssssso
11044oss${c2}yNMMMNyMMh${c1}sssssssssssssshmmmh${c1}ssssssso
11045+ssss${c2}hhhyNMMNy${c1}ssssssssssss${c2}yNMMMy${c1}sssssss+
11046.ssssssss${c2}dMMMNh${c1}ssssssssss${c2}hNMMMd${c1}ssssssss.
11047 \ssssssss${c2}hNMMM${c1}yh${c2}hyyyyhdNMMMNh${c1}ssssssss/
11048  +sssssssss${c2}dm${c1}yd${c2}MMMMMMMMddddy${c1}ssssssss+
11049   \sssssssssss${c2}hdmNNNNmyNMMMMh${c1}ssssss/
11050    .ossssssssssssssssss${c2}dMMMNy${c1}sssso.
11051      -+sssssssssssssssss${c2}yyy${c1}ssss+-
11052        `:+ssssssssssssssssss+:`
11053            .-\+oossssoo+/-.
11054EOF
11055        ;;
11056
11057        "Univention"*)
11058            set_colors 1 7
11059            read -rd '' ascii_data <<'EOF'
11060${c1}         ./osssssssssssssssssssssso+-
11061       `ohhhhhhhhhhhhhhhhhhhhhhhhhhhhy:
11062       shhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh-
11063   `-//${c2}sssss${c1}/hhhhhhhhhhhhhh+${c2}s${c1}.hhhhhhhhh+
11064 .ohhhy${c2}sssss${c1}.hhhhhhhhhhhhhh.${c2}sss${c1}+hhhhhhh+
11065.yhhhhy${c2}sssss${c1}.hhhhhhhhhhhhhh.${c2}ssss${c1}:hhhhhh+
11066+hhhhhy${c2}sssss${c1}.hhhhhhhhhhhhhh.${c2}sssss${c1}yhhhhh+
11067+hhhhhy${c2}sssss${c1}.hhhhhhhhhhhhhh.${c2}sssss${c1}yhhhhh+
11068+hhhhhy${c2}sssss${c1}.hhhhhhhhhhhhhh.${c2}sssss${c1}yhhhhh+
11069+hhhhhy${c2}sssss${c1}.hhhhhhhhhhhhhh.${c2}sssss${c1}yhhhhh+
11070+hhhhhy${c2}sssss${c1}.hhhhhhhhhhhhhh.${c2}sssss${c1}yhhhhh+
11071+hhhhhy${c2}sssss${c1}.hhhhhhhhhhhhhh.${c2}sssss${c1}yhhhhh+
11072+hhhhhy${c2}sssss${c1}.hhhhhhhhhhhhhh.${c2}sssss${c1}yhhhhh+
11073+hhhhhy${c2}ssssss${c1}+yhhhhhhhhhhy/${c2}ssssss${c1}yhhhhh+
11074+hhhhhh:${c2}sssssss${c1}:hhhhhhh+${c2}.ssssssss${c1}yhhhhy.
11075+hhhhhhh+`${c2}ssssssssssssssss${c1}hh${c2}sssss${c1}yhhho`
11076+hhhhhhhhhs+${c2}ssssssssssss${c1}+hh+${c2}sssss${c1}/:-`
11077-hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhho
11078 :yhhhhhhhhhhhhhhhhhhhhhhhhhhhh+`
11079   -+ossssssssssssssssssssss+:`
11080EOF
11081        ;;
11082
11083        "Venom"*)
11084            set_colors 8 4
11085            read -rd '' ascii_data <<'EOF'
11086${c1}   :::::::          :::::::
11087   mMMMMMMm        dMMMMMMm
11088   /MMMMMMMo      +MMMMMMM/
11089    yMMMMMMN      mMMMMMMy
11090     NMMMMMMs    oMMMMMMm
11091     +MMMMMMN:   NMMMMMM+
11092      hMMMMMMy  sMMMMMMy
11093      :NMMMMMM::NMMMMMN:
11094       oMMMMMMyyMMMMMM+
11095        dMMMMMMMMMMMMh
11096        /MMMMMMMMMMMN:
11097         sMMMMMMMMMMo
11098          mMMMMMMMMd
11099          +MMMMMMMN:
11100            ::::::
11101EOF
11102        ;;
11103
11104        "void_small")
11105            set_colors 2 8
11106            read -rd '' ascii_data <<'EOF'
11107${c1}    _______
11108 _ \\______ -
11109| \\  ___  \\ |
11110| | /   \ | |
11111| | \___/ | |
11112| \\______ \\_|
11113 -_______\\
11114EOF
11115        ;;
11116
11117        "Void"*)
11118            set_colors 2 8
11119            read -rd '' ascii_data <<'EOF'
11120${c1}                __.;=====;.__
11121            _.=+==++=++=+=+===;.
11122             -=+++=+===+=+=+++++=_
11123        .     -=:``     `--==+=++==.
11124       _vi,    `            --+=++++:
11125      .uvnvi.       _._       -==+==+.
11126     .vvnvnI`    .;==|==;.     :|=||=|.
11127${c2}+QmQQm${c1}pvvnv; ${c2}_yYsyQQWUUQQQm #QmQ#${c1}:${c2}QQQWUV$QQm.
11128${c2} -QQWQW${c1}pvvo${c2}wZ?.wQQQE${c1}==<${c2}QWWQ/QWQW.QQWW${c1}(: ${c2}jQWQE
11129${c2}  -$QQQQmmU'  jQQQ@${c1}+=<${c2}QWQQ)mQQQ.mQQQC${c1}+;${c2}jWQQ@'
11130${c2}   -$WQ8Y${c1}nI:   ${c2}QWQQwgQQWV${c1}`${c2}mWQQ.jQWQQgyyWW@!
11131${c1}     -1vvnvv.     `~+++`        ++|+++
11132      +vnvnnv,                 `-|===
11133       +vnvnvns.           .      :=-
11134        -Invnvvnsi..___..=sv=.     `
11135          +Invnvnvnnnnnnnnvvnn;.
11136            ~|Invnvnvvnvvvnnv}+`
11137               -~|{*l}*|~
11138EOF
11139
11140        ;;
11141
11142        "VNux"*)
11143        set_colors 11 8 15 1 7
11144            read -rd '' ascii_data <<'EOF'
11145${c1}              `
11146           ^[XOx~.
11147        ^_nwdbbkp0ti'
11148        <vJCZw0LQ0Uj>
11149${c2}          _j>!vC1,,
11150     ${c4},${c2}   ,CY${c3}O${c2}t${c3}O${c2}1(l;"
11151`${c4}~-{r(1I${c2} ^${c1}/zmwJuc:${c2}I^
11152'${c4}?)|${c1}U${c4}/}-${c2} ^${c3}f${c1}OCLLOw${c3}_${c2},;
11153 ,${c4}i,``. ${c2}",${c3}k%ooW@$d"${c2}I,'
11154  '    ;^${c3}u$$$$$$$$^<${c2}:^
11155   ` .>>${c3}($$${c5}$@@@@$$${c3}$nl${c2}[::
11156    `!}?${c3}B$${c5}%&WMMW&%$${c3}$1}-${c2}}":
11157    ^?j${c3}Z$${c5}WMMWWWWMMW$${c3}ofc${c2};;`
11158    <~x&${c3}$${c5}&MWWWWWWWWp${c3}-${c5}l>[<
11159${c1} 'ljmwn${c2}~tk8${c5}MWWWWM8O${c2}X${c1}r${c2}+]nC${c1}[
11160!JZqwwdX${c2}:^C8${c5}#MMMM@${c2}X${c1}Odpdpq0<
11161<wwwwmmpO${c2}1${c3}0@%%%%8${c2}d${c1}nqmwmqqqJl
11162?QOZmqqqpb${c2}t[run/?!${c1}0pwqqQj-,
11163 ^:l<{nUUv>      ^x00J("
11164                   ^"
11165EOF
11166
11167        ;;
11168
11169        "LangitKetujuh"*)
11170            set_colors 7 4
11171            read -rd '' ascii_data <<'EOF'
11172${c1}
11173   L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L
11174      'L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L
11175   L7L.   'L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L
11176   L7L7L7L                             L7L7L7L
11177   L7L7L7L                             L7L7L7L
11178   L7L7L7L             L7L7L7L7L7L7L7L7L7L7L7L
11179   L7L7L7L                'L7L7L7L7L7L7L7L7L7L
11180   L7L7L7L                    'L7L7L7L7L7L7L7L
11181   L7L7L7L                             L7L7L7L
11182   L7L7L7L                             L7L7L7L
11183   L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L.   'L7L
11184   L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L.
11185   L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L7L
11186${c2}
11187EOF
11188        ;;
11189
11190       "semc"*)
11191            set_colors 2 8 1
11192            read -rd '' ascii_data <<'EOF'
11193${c1}            /\
11194     ______/  \
11195    /      |()| ${c2}E M C
11196${c1}   |   (-- |  |
11197    \   \  |  |
11198.----)   | |__|
11199|_______/ / ${c3}"${c1}  \
11200              ${c3}"
11201            "
11202EOF
11203
11204        ;;
11205
11206        "Obarun"*)
11207            set_colors 6 6 7 1
11208            read -rd '' ascii_data <<'EOF'
11209${c1}                    ,;::::;
11210                ;cooolc;,
11211             ,coool;
11212           ,loool,
11213          loooo;
11214        :ooool
11215       cooooc            ,:ccc;
11216      looooc           :oooooool
11217     cooooo          ;oooooooooo,
11218    :ooooo;         :ooooooooooo
11219    oooooo          oooooooooooc
11220   :oooooo         :ooooooooool
11221   loooooo         ;oooooooool
11222   looooooc        .coooooooc
11223   cooooooo:           ,;co;
11224   ,ooooooool;       ,:loc
11225    cooooooooooooloooooc
11226     ;ooooooooooooool;
11227       ;looooooolc;
11228EOF
11229        ;;
11230
11231        *"[Windows 11]"*|*"on Windows 11"*|\
11232        "Windows 11"* |"windows11")
11233            set_colors 6 7
11234            read -rd '' ascii_data <<'EOF'
11235${c1}
11236################  ################
11237################  ################
11238################  ################
11239################  ################
11240################  ################
11241################  ################
11242################  ################
11243
11244################  ################
11245################  ################
11246################  ################
11247################  ################
11248################  ################
11249################  ################
11250################  ################
11251EOF
11252        ;;
11253
11254        *"[Windows 10]"*|*"on Windows 10"*|"Windows 8"*|\
11255        "Windows 10"* |"windows10"|"windows8")
11256            set_colors 6 7
11257            read -rd '' ascii_data <<'EOF'
11258${c1}                                ..,
11259                    ....,,:;+ccllll
11260      ...,,+:;  cllllllllllllllllll
11261,cclllllllllll  lllllllllllllllllll
11262llllllllllllll  lllllllllllllllllll
11263llllllllllllll  lllllllllllllllllll
11264llllllllllllll  lllllllllllllllllll
11265llllllllllllll  lllllllllllllllllll
11266llllllllllllll  lllllllllllllllllll
11267
11268llllllllllllll  lllllllllllllllllll
11269llllllllllllll  lllllllllllllllllll
11270llllllllllllll  lllllllllllllllllll
11271llllllllllllll  lllllllllllllllllll
11272llllllllllllll  lllllllllllllllllll
11273`'ccllllllllll  lllllllllllllllllll
11274       `' \\*::  :ccllllllllllllllll
11275                       ````''*::cll
11276                                 ``
11277EOF
11278        ;;
11279
11280        "Windows"*)
11281            set_colors 1 2 4 3
11282            read -rd '' ascii_data <<'EOF'
11283${c1}        ,.=:!!t3Z3z.,
11284       :tt:::tt333EE3
11285${c1}       Et:::ztt33EEEL${c2} @Ee.,      ..,
11286${c1}      ;tt:::tt333EE7${c2} ;EEEEEEttttt33#
11287${c1}     :Et:::zt333EEQ.${c2} $EEEEEttttt33QL
11288${c1}     it::::tt333EEF${c2} @EEEEEEttttt33F
11289${c1}    ;3=*^```"*4EEV${c2} :EEEEEEttttt33@.
11290${c3}    ,.=::::!t=., ${c1}`${c2} @EEEEEEtttz33QF
11291${c3}   ;::::::::zt33)${c2}   "4EEEtttji3P*
11292${c3}  :t::::::::tt33.${c4}:Z3z..${c2}  ``${c4} ,..g.
11293${c3}  i::::::::zt33F${c4} AEEEtttt::::ztF
11294${c3} ;:::::::::t33V${c4} ;EEEttttt::::t3
11295${c3} E::::::::zt33L${c4} @EEEtttt::::z3F
11296${c3}{3=*^```"*4E3)${c4} ;EEEtttt:::::tZ`
11297${c3}             `${c4} :EEEEtttt::::z7
11298                 "VEzjt:;;z>*`
11299EOF
11300        ;;
11301
11302        "Xubuntu"*)
11303            set_colors 4 7 1
11304            read -rd '' ascii_data <<'EOF'
11305${c1}           `.:/ossyyyysso/:.
11306        `.yyyyyyyyyyyyyyyyyyyy.`
11307      `yyyyyyyyyyyyyyyyyyyyyyyyyy`
11308    `yyyyyyyyyyyyyyyyyyyy${c2}::${c1}yyyyyyyy`
11309   .yyyyyyyyyyy${c2}/+:${c1}yyyyyyy${c2}ds${c1}yyy${c2}+y${c1}yyyy.
11310  yyyyyyy${c2}:o/${c1}yy${c2}dMMM+${c1}yyyyy${c2}/M+${c1}y${c2}:hM+${c1}yyyyyy
11311 yyyyyyy${c2}+MMMy${c1}y${c2}mMMMh${c1}yyyyy${c2}yM::mM+${c1}yyyyyyyy
11312`yyyyyyy${c2}+MMMMysMMMd${c1}yyyyy${c2}dh:mN+${c1}yyyyyyyyy`
11313yyyyyyyy${c2}:NMMMMmMMMMmmdhyy+/y:${c1}yyyyyyyyyyy
11314yyyyyyyy${c2}+MMMMMMMMMMMMMMMMMMNho:${c1}yyyyyyyyy
11315yyyyyyyy${c2}mMMMMMMMMMMMMMMMMMMMMMMy${c1}yyyyyyyy
11316yyyyyyy${c2}+MMMMMMMMMMMMMMMMMMMMMMMM/${c1}yyyyyyy
11317`yyyyyy${c2}sMMMMMMMMMMMMMMMMMMMMMMmo${c1}yyyyyyy`
11318 yyyyyy${c2}oMMMMMMMMMMMMMMMMMMMmy+${c1}yyyyyyyyy
11319  yyyyy${c2}:mMMMMMMMMMMMMMMNho/${c1}yyyyyyyyyyy
11320   .yyyy${c2}:yNMMMMMMMNdyo:${c1}yyyyyyyyyyyyy.
11321    `yyyyyy${c2}:/++/::${c1}yyyyyyyyyyyyyyyyy`
11322      `yyyyyyyyyyyyyyyyyyyyyyyyyy`
11323        `.yyyyyyyyyyyyyyyyyyyy.`
11324           `.:/oosyyyysso/:.`
11325EOF
11326        ;;
11327                "IRIX"*)
11328                    set_colors 4 7
11329                    read -rd '' ascii_data <<'EOF'
11330${c1}           ./ohmNd/  +dNmho/-
11331     `:+ydNMMMMMMMM.-MMMMMMMMMdyo:.
11332   `hMMMMMMNhs/sMMM-:MMM+/shNMMMMMMh`
11333   -NMMMMMmo-` /MMM-/MMM- `-omMMMMMN.
11334 `.`-+hNMMMMMNhyMMM-/MMMshmMMMMMmy+...`
11335+mMNds:-:sdNMMMMMMMyyMMMMMMMNdo:.:sdMMm+
11336dMMMMMMmy+.-/ymNMMMMMMMMNmy/-.+hmMMMMMMd
11337oMMMMmMMMMNds:.+MMMmmMMN/.-odNMMMMmMMMM+
11338.MMMM-/ymMMMMMmNMMy..hMMNmMMMMMmy/-MMMM.
11339 hMMM/ `/dMMMMMMMN////NMMMMMMMd/. /MMMh
11340 /MMMdhmMMMmyyMMMMMMMMMMMMhymMMMmhdMMM:
11341 `mMMMMNho//sdMMMMM//NMMMMms//ohNMMMMd
11342  `/so/:+ymMMMNMMMM` mMMMMMMMmh+::+o/`
11343     `yNMMNho-yMMMM` NMMMm.+hNMMNh`
11344     -MMMMd:  oMMMM. NMMMh  :hMMMM-
11345      -yNMMMmooMMMM- NMMMyomMMMNy-
11346        .omMMMMMMMM-`NMMMMMMMmo.
11347          `:hMMMMMM. NMMMMMh/`
11348             .odNm+  /dNms.
11349EOF
11350                ;;
11351        "Zorin"*)
11352            set_colors 4 6
11353            read -rd '' ascii_data <<'EOF'
11354${c1}        `osssssssssssssssssssso`
11355       .osssssssssssssssssssssso.
11356      .+oooooooooooooooooooooooo+.
11357
11358
11359  `::::::::::::::::::::::.         .:`
11360 `+ssssssssssssssssss+:.`     `.:+ssso`
11361.ossssssssssssssso/.       `-+ossssssso.
11362ssssssssssssso/-`      `-/osssssssssssss
11363.ossssssso/-`      .-/ossssssssssssssso.
11364 `+sss+:.      `.:+ssssssssssssssssss+`
11365  `:.         .::::::::::::::::::::::`
11366
11367
11368      .+oooooooooooooooooooooooo+.
11369       -osssssssssssssssssssssso-
11370        `osssssssssssssssssssso`
11371EOF
11372        ;;
11373
11374        *)
11375            case $kernel_name in
11376                *"BSD")
11377                    set_colors 1 7 4 3 6
11378                    read -rd '' ascii_data <<'EOF'
11379${c1}             ,        ,
11380            /(        )`
11381            \ \___   / |
11382            /- _  `-/  '
11383           (${c2}/\/ \ ${c1}\   /\
11384           ${c2}/ /   | `    ${c1}\
11385           ${c3}O O   ${c2}) ${c1}/    |
11386           ${c2}`-^--'${c1}`<     '
11387          (_.)  _  )   /
11388           `.___/`    /
11389             `-----' /
11390${c4}<----.     __ / __   \
11391${c4}<----|====${c1}O)))${c4}==${c1}) \) /${c4}====|
11392<----'    ${c1}`--' `.__,' \
11393             |        |
11394              \       /       /\
11395         ${c5}______${c1}( (_  / \______/
11396       ${c5},'  ,-----'   |
11397       `--{__________)
11398EOF
11399                ;;
11400
11401                "Darwin")
11402                    set_colors 2 3 1 1 5 4
11403                    read -rd '' ascii_data <<'EOF'
11404${c1}                    c.'
11405                 ,xNMM.
11406               .OMMMMo
11407               lMMM"
11408     .;loddo:.  .olloddol;.
11409   cKMMMMMMMMMMNWMMMMMMMMMM0:
11410${c2} .KMMMMMMMMMMMMMMMMMMMMMMMWd.
11411 XMMMMMMMMMMMMMMMMMMMMMMMX.
11412${c3};MMMMMMMMMMMMMMMMMMMMMMMM:
11413:MMMMMMMMMMMMMMMMMMMMMMMM:
11414${c4}.MMMMMMMMMMMMMMMMMMMMMMMMX.
11415 kMMMMMMMMMMMMMMMMMMMMMMMMWd.
11416 ${c5}'XMMMMMMMMMMMMMMMMMMMMMMMMMMk
11417  'XMMMMMMMMMMMMMMMMMMMMMMMMK.
11418    ${c6}kMMMMMMMMMMMMMMMMMMMMMMd
11419     ;KMMMMMMMWXXWMMMMMMMk.
11420       "cooc*"    "*coo'"
11421EOF
11422                ;;
11423
11424                "GNU"*)
11425                    set_colors fg 7
11426                    read -rd '' ascii_data <<'EOF'
11427${c1}    _-`````-,           ,- '- .
11428  .'   .- - |          | - -.  `.
11429 /.'  /                     `.   \
11430:/   :      _...   ..._      ``   :
11431::   :     /._ .`:'_.._\.    ||   :
11432::    `._ ./  ,`  :    \ . _.''   .
11433`:.      /   |  -.  \-. \\_      /
11434  \:._ _/  .'   .@)  \@) ` `\ ,.'
11435     _/,--'       .- .\,-.`--`.
11436       ,'/''     (( \ `  )
11437        /'/'  \    `-'  (
11438         '/''  `._,-----'
11439          ''/'    .,---'
11440           ''/'      ;:
11441             ''/''  ''/
11442               ''/''/''
11443                 '/'/'
11444                  `;
11445EOF
11446                ;;
11447
11448                "Linux")
11449                    set_colors fg 8 3
11450                    read -rd '' ascii_data <<'EOF'
11451${c2}        #####
11452${c2}       #######
11453${c2}       ##${c1}O${c2}#${c1}O${c2}##
11454${c2}       #${c3}#####${c2}#
11455${c2}     ##${c1}##${c3}###${c1}##${c2}##
11456${c2}    #${c1}##########${c2}##
11457${c2}   #${c1}############${c2}##
11458${c2}   #${c1}############${c2}###
11459${c3}  ##${c2}#${c1}###########${c2}##${c3}#
11460${c3}######${c2}#${c1}#######${c2}#${c3}######
11461${c3}#######${c2}#${c1}#####${c2}#${c3}#######
11462${c3}  #####${c2}#######${c3}#####
11463EOF
11464                ;;
11465        "Profelis SambaBOX"* | "SambaBOX"*)
11466            set_colors 3 6
11467            read -rd '' ascii_data <<'EOF'
11468${c1}
11469                    #
11470               *////#####
11471           /////////#########(
11472      .((((((/////    ,####(#(((((
11473  /#######(((*             (#(((((((((.
11474//((#(#(#,        ((##(        ,((((((//
11475//////        #(##########(       //////
11476//////    ((#(#(#(#(##########(/////////
11477/////(    (((((((#########(##((((((/////
11478/(((#(                             ((((/
11479####(#                             ((###
11480#########(((/////////(((((((((,    (#(#(
11481########(   /////////(((((((*      #####
11482####///,        *////(((         (((((((
11483.///////////                .//(((((((((
11484     ///////////,       *(/////((((*
11485         ,/(((((((((##########/.
11486             .((((((#######
11487                  ((##*
11488EOF
11489        ;;
11490
11491                "SunOS")
11492                    set_colors 3 7
11493                    read -rd '' ascii_data <<'EOF'
11494${c1}                 `-     `
11495          `--    `+-    .:
11496           .+:  `++:  -/+-     .
11497    `.::`  -++/``:::`./+/  `.-/.
11498      `++/-`.`          ` /++:`
11499  ``   ./:`                .: `..`.-
11500``./+/:-                     -+++:-
11501    -/+`                      :.
11502EOF
11503                ;;
11504
11505                "IRIX"*)
11506                    set_colors 4 7
11507                    read -rd '' ascii_data <<'EOF'
11508${c1}           ./ohmNd/  +dNmho/-
11509     `:+ydNMMMMMMMM.-MMMMMMMMMdyo:.
11510   `hMMMMMMNhs/sMMM-:MMM+/shNMMMMMMh`
11511   -NMMMMMmo-` /MMM-/MMM- `-omMMMMMN.
11512 `.`-+hNMMMMMNhyMMM-/MMMshmMMMMMmy+...`
11513+mMNds:-:sdNMMMMMMMyyMMMMMMMNdo:.:sdMMm+
11514dMMMMMMmy+.-/ymNMMMMMMMMNmy/-.+hmMMMMMMd
11515oMMMMmMMMMNds:.+MMMmmMMN/.-odNMMMMmMMMM+
11516.MMMM-/ymMMMMMmNMMy..hMMNmMMMMMmy/-MMMM.
11517 hMMM/ `/dMMMMMMMN////NMMMMMMMd/. /MMMh
11518 /MMMdhmMMMmyyMMMMMMMMMMMMhymMMMmhdMMM:
11519 `mMMMMNho//sdMMMMM//NMMMMms//ohNMMMMd
11520  `/so/:+ymMMMNMMMM` mMMMMMMMmh+::+o/`
11521     `yNMMNho-yMMMM` NMMMm.+hNMMNh`
11522     -MMMMd:  oMMMM. NMMMh  :hMMMM-
11523      -yNMMMmooMMMM- NMMMyomMMMNy-
11524        .omMMMMMMMM-`NMMMMMMMmo.
11525          `:hMMMMMM. NMMMMMh/`
11526             .odNm+  /dNms.
11527EOF
11528                ;;
11529
11530            esac
11531        ;;
11532    esac
11533
11534    # Overwrite distro colors if '$ascii_colors' doesn't
11535    # equal 'distro'.
11536    [[ ${ascii_colors[0]} != distro ]] && {
11537        color_text=off
11538        set_colors "${ascii_colors[@]}"
11539    }
11540}
11541
11542main() {
11543    cache_uname
11544    get_os
11545
11546    # Load default config.
11547    eval "$config"
11548
11549    get_args "$@"
11550    [[ $verbose != on ]] && exec 2>/dev/null
11551    get_simple "$@"
11552    get_distro
11553    get_bold
11554    get_distro_ascii
11555    [[ $stdout == on ]] && stdout
11556
11557    # Minix doesn't support these sequences.
11558    [[ $TERM != minix && $stdout != on ]] && {
11559        # If the script exits for any reason, unhide the cursor.
11560        trap 'printf "\e[?25h\e[?7h"' EXIT
11561
11562        # Hide the cursor and disable line wrap.
11563        printf '\e[?25l\e[?7l'
11564    }
11565
11566    image_backend
11567    get_cache_dir
11568    old_functions
11569    print_info
11570    dynamic_prompt
11571
11572    # w3m-img: Draw the image a second time to fix
11573    # rendering issues in specific terminal emulators.
11574    [[ $image_backend == *w3m* ]] && display_image
11575    [[ $image_backend == *ueberzug* ]] && display_image
11576
11577    # Add neofetch info to verbose output.
11578    err "Neofetch command: $0 $*"
11579    err "Neofetch version: $version"
11580
11581    [[ $verbose == on ]] && printf '%b\033[m' "$err" >&2
11582
11583    # If `--loop` was used, constantly redraw the image.
11584    while [[ $image_loop == on && $image_backend == w3m ]]; do
11585        display_image
11586        sleep 1
11587    done
11588
11589    return 0
11590}
11591
11592main "$@"