├── LICENSE
├── Makefile
├── README.rst
└── disfetch
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 veleth
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | .POSIX:
2 | .SUFFIXES:
3 |
4 | PREFIX = /usr/local
5 | BINDIR = bin
6 |
7 | install:
8 | install -Dm755 disfetch $(DESTDIR)$(PREFIX)/$(BINDIR)/disfetch
9 |
10 | check:
11 | shellcheck disfetch
12 |
--------------------------------------------------------------------------------
/README.rst:
--------------------------------------------------------------------------------
1 | disfetch |lang| |aur| |nix| |alpine|
2 | ========
3 |
4 | Yet another **\*nix** distro fetching program, but less complex. Written
5 | in **POSIX shell**.
6 |
7 | Table of contents
8 | -----------------
9 |
10 | .. contents:: \
11 |
12 | Some examples
13 | -------------
14 |
15 | |screenshot 0|
16 |
17 | |screenshot 1|
18 |
19 | |screenshot 2|
20 |
21 | |screenshot 3|
22 |
23 | .. raw:: html
24 |
25 |
26 |
27 |
28 |
29 |
30 | |screenshot 4|
31 |
32 | |screenshot 5|
33 |
34 | Supported operating systems
35 | ---------------------------
36 |
37 | Here's the list of currently supported operating systems. "Supported" means having OS logo and packages layer available. Otherwise, **disfetch** will show default tux logo with no packages count.
38 |
39 | - Alpine Linux
40 | - Android
41 | - Astra Linux
42 | - ArchBang Linux
43 | - ArchLabs Linux
44 | - Arch Linux
45 | - ArcoLinux
46 | - Artix Linux
47 | - Bedrock Linux
48 | - CentOS
49 | - Debian
50 | - Elementary OS
51 | - EndeavourOS
52 | - Fedora
53 | - Garuda Linux
54 | - Gentoo Linux
55 | - Haiku OS
56 | - Kali Linux
57 | - Kubuntu
58 | - Linux Mint
59 | - lubuntu - **only packages**
60 | - Manjaro
61 | - MSYS2
62 | - MX Linux
63 | - NixOS
64 | - openSUSE
65 | - Parabola Linux-libre
66 | - postmarketOS
67 | - Qubes OS
68 | - Raspbian
69 | - Red Hat Enterprise Linux
70 | - Slackware Linux
71 | - Ubuntu
72 | - Void Linux
73 | - Zorin OS
74 |
75 | Installation
76 | ------------
77 |
78 | .. raw:: html
79 |
80 |
81 |
83 |
84 |
85 | - There's `a package in AUR
86 | `__.
87 |
88 | - There's `a package in MPR
89 | `__.
90 |
91 | - There's `a package in Alpine
92 | `__.
93 |
94 | - There's also `a package in Nixpkgs
95 | `__.
96 |
97 | - Grabbing the latest `release tarball
98 | `__ then running ``make install``
99 | should be enough.
100 |
101 | Feel free to contribute, create and maintain packages for disfetch for
102 | your favorite distros.
103 |
104 | Usage
105 | -----
106 |
107 | See ``disfetch -h``.
108 |
109 | ----
110 |
111 | |date|
112 |
113 | .. |screenshot 0| image:: https://i.imgur.com/dO88my5.jpg
114 | .. |screenshot 1| image:: https://i.imgur.com/TTSCQhk.jpg
115 | .. |screenshot 2| image:: https://i.imgur.com/ylr0G1U.jpg
116 | .. |screenshot 3| image:: https://i.imgur.com/HmZu33J.jpg
117 | .. |screenshot 4| image:: https://i.imgur.com/vS4GmTw.jpg
118 | .. |screenshot 5| image:: https://i.imgur.com/bsxtnBf.jpg
119 | .. |lang| image:: https://img.shields.io/badge/-shell-4CAA20?style=for-the-badge&logo=windowsterminal
120 | .. |aur| image:: https://img.shields.io/aur/version/disfetch?logo=archlinux&style=for-the-badge
121 | :target: https://aur.archlinux.org/packages/disfetch/
122 | .. |nix| image:: https://img.shields.io/badge/Nix-disfetch-4F73BC?style=for-the-badge&logo=nixos
123 | :target: https://search.nixos.org/packages?from=0&size=50&sort=relevance&query=disfetch
124 | .. |alpine| image:: https://img.shields.io/badge/dynamic/xml?color=0D597F&label=alpine&query=%2F%2Fbody%2Fdiv%2Fmain%2Fdiv[2]%2Fdiv[1]%2Fdiv[1]%2Fdiv[1]%2Ftable%2Ftr[2]%2Ftd%2Fstrong%2Fa&url=https%3A%2F%2Fpkgs.alpinelinux.org%2Fpackage%2Fedge%2Ftesting%2Fx86_64%2Fdisfetch&style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4Ij48cGF0aCBmaWxsPSIjRThFOEU4IiBkPSJNMzg0LjAyMTQ4NDQsMzQuMjc2ODg5OEgxMjcuOTc4NTA4TDAsMjU1Ljk5OTkwODRMMTI3Ljk3ODUwOCw0NzcuNzIzMTE0aDI1Ni4wNDI5Njg4TDUxMiwyNTUuOTk5OTA4NEwzODQuMDIxNDg0NCwzNC4yNzY4ODk4eiBNMTQ3LjE2MjA2MzYsMjk1LjQwMjA5OTZsMzguODQxNTgzMy0zOC44ODI4NzM1djUzLjk0MDIxNjFDMTcyLjM3NSwzMTAuMTY2NjU2NSwxNTkuMzIwODAwOCwzMDMuOTE2OTMxMiwxNDcuMTYyMDYzNiwyOTUuNDAyMDk5NnogTTI5OS43NjczMzQsMzA1Ljk3NTU4NTljLTIzLjc0Njc5NTctMjQuNDgxMjYyMi01NC4zMjcxOTQyLTU1LjE0MTcwODQtODcuNTM0NjgzMi04OC4xNzc3MzQ0bC04OC45Mzc0NTQyLDg3Ljk3NDczMTRDMTA5LjI3NjE2ODgsMzE1LjY0Mzg1OTksODUuODc1LDMwOC43NSw2Ny40NzQyMDUsMjk1LjM2NDE2NjNMMjEyLjU5MzgxMSwxNTEuODg0NzUwNGM0NS45MTQyMTUxLDQ4LjI5NDc5OTgsOTMuNTY5NDU4LDk2LjE5MzA4NDcsMTQzLjAzNTgyNzYsMTQzLjY3ODg3ODhDMzMxLjc3MjQ5MTUsMzEyLjY2NDk3OCwzMTAuMjUsMzEzLjg3NSwyOTkuNzY3MzM0LDMwNS45NzU1ODU5eiBNMzg0LjU4MTkzOTcsMzA1Ljk3NTU4NTlsLTcxLjMxODM4OTktNzEuMDc3OTQxOWwtNy4xMTQ3NzY2LDcuMTE0NzkxOWwtMzMuMjk4NDkyNC0zMi45MzQ4MTQ1bDQwLjQzMDQxOTktNDAuNDQwMjkyNGM0My4xMDYyMzE3LDQzLjQzMTY3MTEsODUuNDYxNDI1OCw4Ni4xNzY4NDk0LDEyNy4xNjM1MTMyLDEyNi45MjYzQzQxOS44NzUsMzEwLjMxMjUsMzk3LjA2MjUsMzE1LjM3NSwzODQuNTgxOTM5NywzMDUuOTc1NTg1OXoiLz48L3N2Zz4K
125 | :target: https://pkgs.alpinelinux.org/packages?name=disfetch
126 | .. |date| date:: %d.%m.%Y
127 |
--------------------------------------------------------------------------------
/disfetch:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # MIT License
4 | #
5 | # Copyright (c) 2020 veleth
6 | #
7 | # Permission is hereby granted, free of charge, to any person obtaining a copy
8 | # of this software and associated documentation files (the "Software"), to deal
9 | # in the Software without restriction, including without limitation the rights
10 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | # copies of the Software, and to permit persons to whom the Software is
12 | # furnished to do so, subject to the following conditions:
13 | #
14 | # The above copyright notice and this permission notice shall be included in all
15 | # copies or substantial portions of the Software.
16 | #
17 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | # SOFTWARE.
24 |
25 | # get variable by name stored in other variable
26 | deref() {
27 | eval echo "\$$1"
28 | }
29 |
30 | # get Nth string of a variable
31 | elem() {
32 | # shellcheck disable=SC2059 # the only way
33 | printf "$2" | sed "$1!d"
34 | }
35 |
36 | # help message
37 | help() {
38 | printf "disfetch is a CLI system information tool written in bash
39 |
40 | Usage: disfetch [options]
41 | Options:
42 | -h\t\tprint this help
43 | -l \tset distro logo
44 | -m\t\tdon't use colors and formatting
45 | -n\t\tdisable decorations, display only info
46 | \n"
47 | }
48 |
49 | # parse arguments
50 | while getopts "hl:mn" opt; do
51 | case "$opt" in
52 | h) help; exit 0;;
53 | l) LOGO="$OPTARG";;
54 | m) MONO=1;;
55 | n) INFO_ONLY=;;
56 | *) exit 1;;
57 | esac
58 | done
59 | shift $((OPTIND - 1))
60 |
61 | ###########################################
62 | # global stuff needed everywhere #
63 | ###########################################
64 | if [ -z "$MONO" ]; then
65 | # all colors
66 | blue="\033[34m"
67 | brightblue="\033[94m"
68 | cyan="\033[36m"
69 | brightcyan="\033[96m"
70 | #black="\033[30m" unused?
71 | brightblack="\033[90m"
72 | red="\033[31m"
73 | brightred="\033[91m"
74 | yellow="\033[33m"
75 | brightyellow="\033[93m"
76 | magenta="\033[35m"
77 | brightmagenta="\033[95m"
78 | green="\033[32m"
79 | brightgreen="\033[92m"
80 | white="\033[37m"
81 | brightwhite="\033[97m"
82 | xx="\033[0m" # reset
83 | zz="\033[1m" # bold
84 |
85 | # system colors palette
86 | PALETTE="\033[37mW\033[97mE$xx
87 | \033[31mR\033[91mD$xx
88 | \033[32mG\033[92mN$xx
89 | \033[33mY\033[93mW$xx
90 | \033[34mB\033[94mE$xx
91 | \033[35mM\033[95mA$xx
92 | \033[36mC\033[96mN$xx
93 | \033[30mB\033[90mK$xx"
94 | fi
95 |
96 | ###########################################
97 | # getting needed information #
98 | ###########################################
99 |
100 | # getting hostname
101 | if [ -f /etc/hostname ]; then
102 | HOSTNAME=$(cat /etc/hostname)
103 | else
104 | HOSTNAME=$(uname -n)
105 | fi
106 |
107 | # getting OS name
108 | if [ -f /etc/os-release ]; then
109 | # shellcheck source=/dev/null
110 | OS="$(. /etc/os-release && echo "$PRETTY_NAME" |
111 | tr '[:upper:]' '[:lower:]')"
112 | elif type lsb_release >/dev/null 2>&1; then
113 | OS="$(lsb_release -si | tr '[:upper:]' '[:lower:]')"
114 | else
115 | OS="$(uname -o | tr '[:upper:]' '[:lower:]')"
116 | fi
117 |
118 | # getting kernel version
119 | # shellcheck disable=SC2034 # actually used in eval
120 | [ "$OS" != haiku ] &&
121 | KERNEL="$(uname -r | tr '[:upper:]' '[:lower:]')"
122 |
123 | # getting kernel architecture
124 | # shellcheck disable=SC2034 # actually used in eval
125 | ARCH="$(uname -m | tr '[:upper:]' '[:lower:]')"
126 |
127 | # finding out if OS has uptime with prerrifying option
128 | # or hardcoding prettified uptime
129 | # shellcheck disable=SC2034 # actually used in eval
130 | UPTIME="$(
131 | if [ "$(uptime -p 2>/dev/null)" ]; then
132 | uptime -p | sed 's/up //; s/,//g'
133 | elif [ -f /proc/uptime ]; then
134 | awk '{
135 | uptime = $1;
136 | if (uptime >= 604800) {
137 | if (uptime >= 1209600) {
138 | printf "%s weeks ", int(uptime/604800);
139 | } else {
140 | printf "1 week ";
141 | }
142 | }
143 | if (uptime >= 86400) {
144 | if (int((uptime%604800)/86400) > 0) {
145 | if (int((uptime%604800)/86400) >= 2) {
146 | printf "%s days ", int((uptime%604800)/86400);
147 | } else {
148 | printf "1 day ";
149 | }
150 | }
151 | }
152 | if (uptime >= 3600) {
153 | if (int((uptime%86400)/3600) > 0) {
154 | if (int((uptime%86400)/3600) >= 2) {
155 | printf "%s hours ", int((uptime%86400)/3600);
156 | } else {
157 | printf "1 hour ";
158 | }
159 | }
160 | }
161 | if (uptime >= 60) {
162 | if (int((uptime%3600)/60) > 0) {
163 | if (int((uptime%3600)/60) >= 2) {
164 | printf "%s minutes ", int((uptime%3600)/60);
165 | } else {
166 | printf "1 minute ";
167 | }
168 | }
169 | }
170 | if (uptime >= 1 && 59 >= uptime) {
171 | if (int(uptime%60) > 0) {
172 | if (int(uptime%60) >= 2) {
173 | printf "%s seconds", int(uptime%60);
174 | } else {
175 | printf "1 second";
176 | }
177 | }
178 | }
179 | }' /proc/uptime | xargs
180 | else
181 | uptime | cut -f1 -d "," | sed -E -e 's/^[^,]*up *//' \
182 | -e 's/, *[[:digit:]]* users.*//; s/min/minutes/' \
183 | -e 's/([[:digit:]]+):0?([[:digit:]]+)/\1 hours \2 minutes/' |
184 | xargs
185 | fi
186 | )"
187 |
188 | # getting current shell name
189 | # shellcheck disable=SC2034 # actually used in eval
190 | SHELL="$(basename "$SHELL")"
191 |
192 | # getting DE and WM
193 | # trying XDG_CURRENT_DESKTOP, if it doesn't exists, use DESKTOP_SESSION
194 | # DESKTOP_SESSION is a full path so removing garbage
195 | # shellcheck disable=SC2034 # actually used in eval
196 | DESKTOP="$(
197 | if [ "$OS" != haiku ]; then
198 | de=$(echo "${XDG_CURRENT_DESKTOP:-$DESKTOP_SESSION}" | awk -F/ '{ print tolower($NF) }')
199 | if [ "$de" ] && echo "$de" | grep -Fq "none" || [ -z "$de" ]; then
200 | if [ "$WAYLAND_DISPLAY" ]; then
201 | wm="$(pgrep -lox "cage.*|cardboard|dwl|enlightenment|grefsen|
202 | |hikari|kwin|mutter|river|sway|velox|wayfire|waymonad|
203 | |weston|wio" | cut -d' ' -f2)"
204 | else
205 | # firstly getting root window id (WM) and then getting WM name, ignoring unimportant stuff
206 | # some WM do not have proper set atoms like _NET_SUPPORTING_WM_CHECK and _NET_WM_NAME
207 | # this workaround allows to detect such WM
208 | wm_id=$(xprop -root -notype _NET_SUPPORTING_WM_CHECK 2>/dev/null) &&
209 | wm="$(xprop -id "${wm_id##* }" _NET_WM_NAME 2>/dev/null |
210 | awk '{ print tolower($NF) }' | xargs)"
211 |
212 | [ "$wm" ] ||
213 | wm=$(ps -eo comm= | grep -m 1 -o -e "2bwm" \
214 | -e "catwm" \
215 | -e "dwm" \
216 | -e "fvwm" \
217 | -e "monsterwm" \
218 | -e "sowm" \
219 | -e "tinywm" \
220 | -e "wmaker" \
221 | -e "xmonad")
222 | fi
223 | echo "$wm"
224 | else
225 | echo "$de"
226 | fi
227 | fi
228 | )"
229 |
230 | ###########################################
231 | # defining distro logo and packages count #
232 | ###########################################
233 | # note for nixos: display only current user installed packages
234 | packages_apk() { apk info 2>/dev/null | wc -l; }
235 | packages_dpkg() { dpkg -l 2>/dev/null | grep -c "^ii"; }
236 | packages_haiku() { pkgman search -ia 2>/dev/null |
237 | awk 'FNR > 2 { print }' | wc -l; }
238 | packages_nix() { nix-store -q --requisites ~/.nix-profile 2>/dev/null | wc -l; }
239 | packages_pacman() { pacman -Qq 2>/dev/null | wc -l; }
240 | packages_rpm() { rpm -qa 2>/dev/null | wc -l; }
241 | packages_slack() { find /var/log/packages -mindepth 1 -maxdepth 1 2>/dev/null |
242 | wc -l; }
243 | packages_xbps() { xbps-query -l 2>/dev/null | wc -l; }
244 | packages_emerge() { find /var/db/pkg -mindepth 2 -maxdepth 2 2>/dev/null |
245 | wc -l; }
246 |
247 | # shellcheck disable=SC2034 # actually used in eval
248 | PACKAGES="$(
249 | case $OS in
250 | alpine*|postm*) packages_apk;;
251 | android*|astra*|*bian*|elementary*|*mint*|mx*|*ubuntu*|zorin*|kali*)
252 | packages_dpkg;;
253 | arc*|artix*|endeavour*|manjaro*|garuda*|msys2*|parabola*)
254 | packages_pacman;;
255 | fedora*|qubes*|cent*|redhat*|opensuse*) packages_rpm;;
256 | gentoo*) packages_emerge;;
257 | haiku*) packages_haiku;;
258 | nixos*) packages_nix;;
259 | slack*) packages_slack;;
260 | void*) packages_xbps;;
261 | esac
262 | )"
263 |
264 | # Bedrock linux workaround
265 | if [ "$(brl 2>/dev/null)" ]; then
266 | LOGO=bedrock
267 | OS=$(brl version | tr '[:upper:]' '[:lower:]')
268 | fi
269 |
270 | IFS= # preserve leading and trailing whitespaces
271 | case "${LOGO:-$OS}" in
272 | alpine*)
273 | motif="$blue"
274 | a="$blue"
275 | read -r LOGO <$xx $a\\\\\\\\$xx \n\
279 | $a//$xx $zz,$xx $zz\>,,$zz<^>,$xx $a\\\\\\\\$xx\n\
280 | $a\\\\\\\\$xx $zz$xx $zz\>$xx $zz\>$xx $a//$xx\n\
281 | $a\\\\\\\\$xx$zz$xx $zz/\\\\$xx $zz\>$xx $zz\\\\$xx$a//$xx \n\
282 | $a\\\\\\\\$xx $a//$xx \n\
283 | $a\\\\\\\\AAAAAAAAAAA//$xx \n
284 | EOF
285 | ;;
286 | android*)
287 | motif="$brightgreen"
288 | a="$green$zz"
289 | read -r LOGO <.....$xx\n\
307 | $a'<$xx,'$a:::::::$xx',$a>'$xx \n\
308 | $a<$xx,$a':::'$xx,$a>$xx \n\
309 | $a<$xx,$a'$xx,$a>^<$xx,$a'$xx,$a>$xx \n\
310 | $a<,> <,>$xx \n\
311 | $a\` \`$xx \n
312 | EOF
313 | ;;
314 | archbang*)
315 | motif="$brightblue"
316 | a="$blue"
317 | b="$brightwhite$zz"
318 | read -r LOGO < $a<$xx $a,\\\\$xx \n\
354 | $a/.>$xx $a<.\\\\$xx \n\
355 | $a/>$xx $a<\\\\$xx\n
356 | EOF
357 | ;;
358 | artix*)
359 | motif="$blue"
360 | a="$brightblue$zz"
361 | b="$blue"
362 | read -r LOGO < $b,$xx \n\
369 | $a/.b$xx${b}>\` $b\` $b\`<$a\\\\$xx\n
371 | EOF
372 | ;;
373 | bedrock*)
374 | motif="$brightblack"
375 | a="$brightblack"
376 | b="$white$zz"
377 | read -r LOGO <>>$xx$a====$xx\n\
382 | $a=====$xx$b\\\\\\\\$xx ${a}__$xx $b\\\\\\\\$xx$a==$xx\n\
383 | $a======$xx$b\\\\\ //$xx$a==$xx\n\
384 | $a=======$xx$b<<<<>>$xx$a====$xx\n\
385 | $a=================$xx\n
386 | EOF
387 | ;;
388 | cent*)
389 | motif="$brightyellow"
390 | a="$green"
391 | b="$magenta"
392 | c="$yellow"
393 | d="$blue"
394 | read -r LOGO <> << >>$xx \n\
482 | $b<<$xx $a$zz<$xx $c\\\\\\\\$xx \n\
483 | $b<<$xx $a$zz< I:::::::::$xx$c\\\\\\\\$xx\n\
484 | $b<<$xx \n\
485 | $b<<$xx $a$zz<<$xx $b<< << << <<.$xx\n\
486 | $c\\\\\\\\$xx $a$zz\\\\\\ >> >> <<$xx $b>>$xx \n\
487 | $c\\\\\\\\$xx $a$zz<<$xx $b>>$xx \n\
488 | $c\\\\\\\\$xx $b\\\\\\ \\\\\\ // // //$xx \n
489 | EOF
490 | ;;
491 | gentoo*)
492 | motif="$brightmagenta"
493 | a="$magenta$zz"
494 | read -r LOGO <'-'<:; .>.$xx\n\
527 | ${a}Y<., 'GQ:'$xx \n\
528 | ${a}__j//$xx \n\
529 | $a""z\\\\\\\\$xx \n\
530 | ${a}L<'\` ,JS:.$xx \n\
531 | ${a}U>,_,<:; '>'$xx\n\
532 | $a;/' "\\\\'$xx \n
533 | EOF
534 | ;;
535 | manjaro*)
536 | motif="$green"
537 | a="$green"
538 | read -r LOGO < // \\\\\\\\\\\\ * \n\
590 | <\`$a~~~~~$xx// \\\\\\\\\\\\\`$a~$xx\`> \n\
591 | <\`$a~~~~~~$xx//$a~$xx\`> <\\\\\\\\\\\\$a~~~$xx\`>\n
592 | EOF
593 | ;;
594 | nixos*)
595 | motif="$brightblue"
596 | a="$blue$zz"
597 | b="$brightcyan"
598 | read -r LOGO <$xx $a,\`$xx \n\
620 | $a\`,$xx $a,\`$xx \n\
621 | $a\`'*'\`$xx \n
622 | EOF
623 | ;;
624 | parabola*)
625 | motif="$brightblue"
626 | a="$blue$zz"
627 | read -r LOGO <$xx \n\
635 | $a,/$xx \n
636 | EOF
637 | ;;
638 | postmarket*)
639 | motif="$brightgreen"
640 | a="$green$zz"
641 | b="$brightblack"
642 | read -r LOGO <_$xx $a\\\\\\\\\\\\$xx \n\
646 | $a///$xx $b/$xx $b\\\\$xx $a\\\\\\\\\\\\$xx \n\
647 | $a///$xx $b/_$xx ${b}_\\\\$xx $a\KL$xx \n\
648 | $a///$xx $a/$xx ${a}__$xx \n\
649 | $a///__\\\\$xx $a\_____/\\\\\\\\\\\\$xx \n\
650 | $a/=====/$xx $a/=========\\\\$xx\n
651 | EOF
652 | ;;
653 | qubes*)
654 | motif="$brightblue"
655 | a="$blue$zz"
656 | read -r LOGO <.$xx \n\
658 | $a.<^>''<^>.$xx \n\
659 | $a<^><$xx $a><^>$xx\n\
660 | ${a}[:]$xx ${a}[:]$xx\n\
661 | ${a}[:]$xx ${a}[:]$xx\n\
662 | $a<:><$xx $a><:>$xx\n\
663 | $a<.>..<.>>$xx \n\
664 | $a\`<>\`$xx $a>$xx\n
665 | EOF
666 | ;;
667 | raspbian*)
668 | motif="$brightred"
669 | a="$red$zz"
670 | b="$green"
671 | read -r LOGO <'-',_,,_,$xx \n\
738 | $a\`'c'\`$xx \n
739 | EOF
740 | ;;
741 | zorin*)
742 | motif="$brightblue"
743 | a="$brightblue"
744 | read -r LOGO < <$xx${a}ZZZZ\\\\\\\\$xx\n\
749 | $a\\\\\\\\ZZZZ$xx$zz> <$xx${a}ZZZZZZZ//$xx\n\
750 | $zz\\\\\\\\\`\`$xx$zz\` \`\`\`\`\`\`\`//$xx \n\
751 | $zz\\\\\\\\.............//$xx \n\
752 | $a\\\\\\\\ZZZZZZZZZZZ//$xx \n
753 | EOF
754 | ;;
755 | *)
756 | motif="$brightyellow"
757 | a="$brightblack"
758 | b="$yellow"
759 | read -r LOGO <$xx${a}X$xx \n\
763 | ${a}XX${xx}X${a}XXXX${xx}X${a}XX$xx \n\
764 | ${a}XX${xx}XXXXXXXX${a}XX$xx \n\
765 | ${a}XX${xx}XXXXXXXXXX${a}XX$xx \n\
766 | ${b}I$xx${a}XXX${xx}XXXXXXXX${a}XXX$xx${b}I$xx\n\
767 | ${b}IL>$xx${a}XX${xx}XXXXXX$xx${a}XX$xx${b}