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}[mnl}"
3986 [[ "$blocks2" ]] && cols+="${block_spaces// /${blocks2}[mnl}"
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 "$@"