master ohmu/dihfiles / bin / confetch
ohmu  ·  2026-09-26
  1#!/bin/sh
  2
  3# This fetch never lies, so you should always trust it.
  4# No need to edit this file unless yuore STUPID and want it to break.
  5
  6version="version 1.6"
  7
  8bold=$(printf '\033[1m')
  9reset=$(printf '\033[0m')
 10
 11black=$(printf '\033[0;30m')
 12white=$(printf '\033[37m')
 13
 14purple=$(printf '\033[35m')
 15blue=$(printf '\033[34m')
 16cyan=$(printf '\033[36m')
 17green=$(printf '\033[32m')
 18yellow=$(printf '\033[33m')
 19red=$(printf '\033[31m')
 20
 21orange=$(printf '\033[38;5;208m')
 22
 23foreground=$(printf '\033[0m' printf '\033[1m')
 24
 25brightred=$(printf '\033[0;91m')
 26
 27# decides what modules are in the output. possible options are:
 28	# title wm kernel shell cpu gpu ram packages terminal uptime distro
 29# the order changes depending on this aswell just so yk
 30enabled="
 31title 
 32distro 
 33wm 
 34shell 
 35kernel 
 36packages 
 37uptime 
 38terminal 
 39ram 
 40cpu
 41"
 42
 43# remove a module from $enabled and put it into $disabled to disable it
 44disabled="
 45gpu
 46"
 47
 48# these are for the 2 different thinigies colours
 49# keep as auto for automatic colouring according to your distro
 50keycolour="auto"
 51accentcolour="auto"
 52
 53# gets your distro. Needed before logooption
 54. /etc/os-release
 55distro=$PRETTY_NAME
 56distroShort=$NAME
 57
 58# this is for changing the logo
 59# for a list of logos, use "confetch -h logo"
 60# i dont plan on making logos for forks unless i decide otherwise.
 61# this includes distros like mint, artix, pop, cachy, zorin, endeavor, etc.
 62logooption="$distro"
 63
 64# past here is where the ugly ugly magic happens. Do NOT go further unless youre me.
 65# when writing this, only me and god knew what i was writing. Now only i know.
 66
 67hostname=$(cat /etc/hostname)
 68lineCount=0
 69asciiLineCount=0
 70
 71addLine() {
 72    lineCount=$((lineCount + 1))
 73    eval "line_$lineCount=\$1"
 74}
 75
 76asciiAddLine() {
 77	asciiLineCount=$((asciiLineCount + 1))
 78	eval "ascii_$asciiLineCount=\$1"
 79}
 80
 81colouroption() {
 82    case "$2" in
 83        red)    eval "$1=\$red" ;;
 84        blue)   eval "$1=\$blue" ;;
 85        green)  eval "$1=\$green" ;;
 86        yellow) eval "$1=\$yellow" ;;
 87        cyan)   eval "$1=\$cyan" ;;
 88        purple) eval "$1=\$purple" ;;
 89        white)  eval "$1=\$white" ;;
 90        black)  eval "$1=\$black" ;;
 91        orange) eval "$1=\$orange" ;;
 92        foreground) eval "$1=\$foreground" ;;
 93        *)
 94            echo "whats that colour: '$2'?"
 95            exit 1
 96            ;;
 97    esac
 98}
 99
100setAutoColour() {
101    [ "$keycolour" = "auto" ] && keycolour=$1
102    [ "$accentcolour" = "auto" ] && accentcolour=$2
103}
104
105randomlogo() {
106	read -r up _ < /proc/uptime
107	num=$(( ${up%%.*} % 25 ))
108
109	case "$num" in
110    	0) logooption="tux" ;;
111	    1) logooption="debian" ;;
112	    2) logooption="void" ;;
113	    3) logooption="arch" ;;
114	    4) logooption="gentoo" ;;
115    	5) logooption="fedora" ;;
116	    6) logooption="nix" ;;
117	    7) logooption="alpine" ;;
118	    8) logooption="dragonfly" ;;
119	    9) logooption="suse" ;;
120	    10) logooption="netbsd" ;;
121	    11) logooption="freebsd" ;;
122	    12) logooption="openbsd" ;;
123	    13) logooption="plan9" ;;
124	    14) logooption="gnu" ;;
125	    15) logooption="guix" ;;
126	    16) logooption="crux" ;;
127	    17) logooption="exherbo" ;;
128	    18) logooption="nerv" ;;
129	    19) logooption="seele" ;;
130	    20) logooption="navi" ;;
131	    21) logooption="aperture" ;;
132	    22) logooption="lambda" ;;
133	    23) logooption="blackmesa" ;;
134    	*) logooption="trash" ;;
135	esac
136}
137
138helpoptions() {
139	case "$1" in
140		logo)
141			echo "  logo options:"
142			echo "    tux, debian, nix, void, arch, fedora, freebsd,"
143			echo "    alpine, slackware, dragonfly, suse, netbsd,"
144			echo "    openbsd, plan9, gentoo, gnu, guix, crux, exherbo,"
145			echo "    nerv, seele, navi, blackmesa, lambda, aperture,"
146			echo "    and trash (fallback)"
147			;;
148		accent)
149			echo "  accent options:"
150			echo "    white, purple, blue, cyan, green, yellow, red,"
151			echo "    orange, black, and foreground"
152			;;
153		key)
154			echo "  key options:"
155			echo "    white, purple, blue, cyan, green, yellow, red,"
156			echo "    orange, black, and foreground"			;;
157		version)
158			echo "  nothing to help with... what??"
159			echo "    are you stupid?"
160			;;
161		larp)
162			echo "  larp options:"
163			echo "    with logos: everything that --logo has"
164			echo "    ^^ except for the non distros like seele or lamda"
165			echo "    without correct logos: anything lol"
166			;;
167		confused)
168			echo "  i get that youre a lil confused"
169			echo "    but this doesnt have options"
170			;;
171		shorter)
172			echo "  no options buddy.."
173			echo "    will make a separate module flag in the future"
174			;;
175		*)
176			echo "  what? Wtf do you need help with??"
177			;;
178	esac
179}
180
181while [ $# -gt 0 ]; do
182	case "$1" in
183		--version|-v)
184			echo "$version"
185			exit 0
186			;;
187		--logo|-l)
188			logooption="$2"
189			shift 2
190			;;
191		--key|-k)
192			colouroption keycolour "$2"
193			shift 2
194			;;
195		--accent|-a)
196			colouroption accentcolour "$2"
197			shift 2
198			;;
199		--larp|-L)
200			logooption="$2"
201			distroShort="$2"
202			distro="$2"
203			shift 2
204			;;
205		--confused|-C)
206			randomlogo
207			shift
208			;;
209		--shorter|-s)
210			# how i usually run this (yes, i use this instead of fastfetch)
211			disabled="cpu gpu ram terminal"
212			shift
213			;;
214		--help|-h)
215			cat <<EOF
216			
217  Usage: confetch [options]
218
219    -h, --help FLAG       | helps you out
220    -v, --version         | prints the version
221    -l, --logo NAME       | well wtf do you THINK it does, huh??
222    -a, --accent COLOUR   | changes your accent irl
223    -k, --key COLOUR      | changes your house keys
224    -C, --confused        | confuses you
225    -s, --shorter         | gets rid of a few modules
226    -L. --larp NAME       | sudo W opsec. Larpity larp
227
228EOF
229			helpoptions "$2"
230			echo
231			exit 0
232			;;
233		*)
234			echo "that isnt a command buddy: $1"
235			exit 1
236			;;
237	esac
238done
239
240case "$distro" in 
241	*[Vv]oid*)
242		distroecho="$USER died to the void"
243		setAutoColour "$green" "$red"
244		;;
245	*[Aa]rch*)
246		distroecho="too minimal for the average, not minimal enough for the experienced"
247		setAutoColour "$blue" "$red"
248		;;
249	*[Dd]ebian*)
250		distroecho="packages from the jurassic period lol"
251		setAutoColour "$red" "$purple"
252		;;
253	*[Gg]entoo*)
254		distroecho="have a lot of freetime, yeah?"
255		setAutoColour "$purple" "$cyan"
256		;;
257	*[Ff]edora*)
258		distroecho="test rabbit for RHEL"
259		setAutoColour "$blue" "$green"
260		;;
261	*[Nn]ix*)
262		distroecho="soystemd land"
263		setAutoColour "$cyan" "$blue"
264		;;
265	*[Aa]lpine*)
266		distroecho="im musling it"
267		setAutoColour "$blue" "$yellow"
268		;;
269	*[Ss]use*)
270		distroecho="fedora EU edition"
271		setAutoColour "$green" "$yellow"
272		;;
273	*[Ss]lack*)
274		distroecho="okay grandpa"
275		setAutoColour "$blue" "$foreground"
276		;;
277	*[Nn]et[Bb][Ss][Dd]*)
278		distroecho="using it just to be niche icel"
279		setAutoColour "$red" "$foreground"
280		;;
281	*[Dd]ragonfly*)
282		distroecho="dont go flying little"
283		setAutoColour "$red" "$green"
284		;;
285	*[Ff]ree[Bb][Ss][Dd]*)
286		distroecho="$USER met the devil"
287		setAutoColour "$red" "$red"
288		;;
289	*[Oo]pen[Bb][Ss][Dd]*)
290		distroecho="paranoid, are we?"
291		setAutoColour "$yellow" "$blue"
292		;;
293	*[Pp]lan9*)
294		distroecho="tru unix.."
295		setAutoColour "$foreground" "$purple"
296		;;
297	*[Gg]uix*)
298		distroecho="nix, but better i suppose"
299		setAutoColour "$yellow" "$blue"
300		;;
301	*[Cc]rux*)
302		distroecho="funny little penguin.."
303		setAutoColour "$blue" "$yellow"
304		;;
305	*[Ee]xherbo*)
306		distroecho="ANYTHING to be niche ig"
307		setAutoColour "$blue" "$brightred"
308		;;
309	*KISS*)
310		distroecho="this kiss was painful"
311		setAutoColour "$purple" "$purple"
312		;;
313	*)
314		distroecho="ay this isnt supported! Stop using confetch!!"
315		setAutoColour "$red" "$red"
316		;;
317esac
318
319for module in $enabled; do
320	case " $disabled " in
321		*" $module "*) continue ;;
322	esac
323
324	case "$module" in
325
326		title)
327		  titlekey="sudo apt ddos"
328		  title="${bold}${accentcolour}$USER${reset}@${bold}${accentcolour}${hostname}${reset}"
329		  title="   ${reset}${titlekey}${reset} ${title}"
330		  addLine "$title"
331		;;
332
333		distro)
334			distrokey="${distroecho}"
335			distromod="${distroShort} user BTW"
336			distromod="${bold}${keycolour}${distrokey}${reset} = ${distromod}"
337		  	addLine "$distromod"
338		;;
339
340		wm)
341		 	id=$(xprop -root -notype _NET_SUPPORTING_WM_CHECK)
342			id=${id##* }
343			wm=$(xprop -id "$id" -notype -len 100 -f _NET_WM_NAME 8t)
344			wm=${wm/*WM_NAME = }
345			wm=${wm/\"}
346			wm=${wm/\"*}
347	 		case "$WAYLAND_DISPLAY" in
348	    		"")
349		        	server="I hope Xlibre"
350		        	wmkey="window manager"
351    		    ;;
352	    		*)
353		         	server=Wayland
354		         	wmkey="compositor"
355    		    ;;
356		 	esac
357	 		wm="${bold}${keycolour}${wmkey}${reset} = ${wm} (${server})"
358		  	addLine "$wm"
359		 ;;
360
361		shell)
362			shell="${SHELL##*/}"
363	 		shellkey="like.. a seashell?"
364		 	shell="${bold}${keycolour}${shellkey}${reset} = ${shell}"
365		 	addLine "$shell"
366		;;
367
368		kernel)
369			kernel=$(uname -r )
370			kernelkey="highest ranking non-General grade officer"
371			kernel="${bold}${keycolour}${kernelkey}${reset} = ${kernel}"
372		  	addLine "$kernel"
373		;;
374
375		uptime)
376			read -r uptime _ < /proc/uptime
377			uptime_seconds=${uptime%%.*}
378			uptime_minutes=$(( $uptime_seconds / 60 ))
379			uptime_hours=$(( $uptime_minutes / 60 ))
380			if [ "$uptime_hours" -ge 10 ]; then
381				uptimekey="ew get off your computer wtf. Youve been on for"
382				uptime="${uptime_hours} hours"
383			elif [ "$uptime_hours" -ge 5 ]; then
384				uptimekey="go touch some grass, ok?"
385				uptime="${uptime_hours} hours"
386			elif [ "$uptime_hours" -ge 2 ]; then 
387				uptimekey="get off soon, alr?"
388				uptime="${uptime_hours} hours"
389			elif [ "$uptime_hours" -ge 1 ]; then
390				uptimekey="keep on using that computer, computer boy."
391				uptime="${uptime_minutes} minutes"
392			elif [ "$uptime_minutes" -ge 30 ]; then
393				uptimekey="wow, not too much, huh? "
394				uptime="${uptime_minutes} minutes"
395			else 
396				uptimekey="computah, slime this guy out. "
397				uptime="${uptime_minutes} minutes"
398			fi
399			uptime="${bold}${keycolour}${uptimekey}${reset} ${uptime}"
400		  	addLine "$uptime"
401		;;
402
403		packages)
404			packages=$(
405				if command -v apt-get > /dev/null 2>&1; then
406		   			dpkg-query -f '.\n' -W | wc -l
407				elif command -v pacman > /dev/null 2>&1; then
408		   			pacman -Qq | wc -l
409				elif command -v dnf > /dev/null 2>&1; then
410		   			rpm -qa --queryformat '.\n' | wc -l
411				elif command -v zypper > /dev/null 2>&1; then
412		   			rpm -qa --queryformat '.\n' | wc -l
413				elif command -v xbps-query > /dev/null 2>&1; then
414					xbps-query -l | wc -l
415				elif command -v emerge > /dev/null 2>&1; then
416					ls /var/db/pkg/*/* -d | wc -l
417				elif command -v apk > /dev/null 2>&1; then
418					apk info | wc -l
419				elif command -v nix-env > /dev/null 2>&1; then
420					nix-env --query | wc -l
421                elif command -v kiss > /dev/null 2>&1; then
422                    kiss l | wc -l
423				else
424		   			echo "no"
425				fi
426			)
427
428			if [ "$packages" != "no" ]; then
429				packages_low=$(( $packages * 10 / 12 ))
430				packages_high=$(( $packages * 16 / 10 ))
431				packages="prolly like ${packages_low} to ${packages_high}"
432			else
433				packages="stop using a niche distro ya bum"
434			fi
435			packageskey="aliexpress packages"
436			packages="${bold}${keycolour}${packageskey}${reset} = ${packages}"
437		  	addLine "$packages"
438		;;
439
440		terminal)
441			case "$TERM" in
442				*foot*)
443					terminalkey="mghh.. feet :drooling_face: term"
444					terminal="yummy in my tummy"
445				;;
446				*kitty*)
447					terminalkey="kitty? i like them. term"
448					terminal="cat"
449				;;
450				*rxvt-unicode*)
451					terminalkey="the best x11 term btw. term"
452					terminal="urxvt"
453				;;
454				*xterm*)
455					terminalkey="why are you using this..? term"
456					terminal="$TERM"
457				;;
458				*)
459					terminalkey="prolly a bad term"
460					terminal="$TERM"
461				;;
462			esac
463			terminal="${bold}${keycolour}${terminalkey}${reset} = ${terminal}"
464		  	addLine "$terminal"
465		;;
466
467		cpu)
468	 		cpu=$( awk -F ': ' '/model name*:*/{print $2; exit}' /proc/cpuinfo )
469		 	cpukey="cpu"
470	 		cpu="${space}${bold}${keycolour}${cpukey}${reset} = ${cpu}"
471		  	addLine "$cpu"
472		;;
473
474		gpu)
475			if command -v lspci >/dev/null; then
476   				gpuNumber=$(lspci -k | grep -E "(VGA|3D|DISPLAY)" | awk '{print $1; exit}')
477    
478				gpu=$(lspci -v -s "${gpuNumber}" | awk -F': ' '/Subsystem:/{print $2}')
479				[ -z "$gpu" ] && gpu=$(lspci -mm -s "${gpuNumber}" | awk -F'"' '{print $6}' | cut -d'[' -f1)
480			else
481	    		gpu="you dont have one, you poor bastard"
482			fi
483			gpukey="gpu"
484			gpu="${bold}${keycolour}${gpukey}${reset} = ${gpu}"
485		  	addLine "$gpu"
486		;;
487		
488		ram)
489    		while read -r key value unit; do
490		        [ "$key" = "MemTotal:" ] && { ramTotal=$value; break; }
491		    done < /proc/meminfo
492		    while read -r key value unit; do
493        		[ "$key" = "MemAvailable:" ] && { ramAvail=$value; break; }
494		    done < /proc/meminfo
495		    
496    		ramTotal_GB_full=$(( ramTotal / 1000000 ))
497    		ramTotal_clean=$(( ramTotal / 1000000 * 1000000 ))
498
499    		ramUsed=$(( ramTotal_clean - ramAvail ))
500    		
501		    ramUsed_hundreth=$(( ramUsed / 10000 ))
502		    ramUsed_GB="$(( ramUsed_hundreth / 100 )).$(( ramUsed_hundreth % 100 ))"
503
504			ram=$(
505        		if [ "$ramTotal_GB_full" -ge 63 ]; then
506					echo "${ramUsed_GB}GB/${ramTotal_GB_full}GB?? sharing is caring btw"
507		        elif [ "$ramTotal_GB_full" -ge 31 ]; then
508					echo "${ramUsed_GB}GB/${ramTotal_GB_full}GB, a couple browser tabs worth"
509        		elif [ "$ramTotal_GB_full" -ge 15 ]; then
510					echo "${ramUsed_GB}GB/${ramTotal_GB_full}GB, pretty average tbh"
511        		elif [ "$ramTotal_GB_full" -ge 7 ]; then
512					echo "${ramUsed_GB}GB/${ramTotal_GB_full}GB, you better hope GTA 6 never releases"
513				else
514					echo "only ${ramUsed_GB}GB/${ramTotal_GB_full}GB..? treat yourself, please"
515				fi
516			)
517    		ramkey="ai food"
518    		ram="${bold}${keycolour}${ramkey}${reset} = ${ram}"
519    		addLine "$ram"
520    		;;
521
522	esac
523done
524
525case "$logooption" in 
526	[Tt]ux)
527		asciiAddLine "${bold}      .--.     "
528		asciiAddLine "${bold}     |@${yellow}_${foreground}@ |    "
529		asciiAddLine "${bold}     |${yellow}:_/${foreground} |    "
530		asciiAddLine "${bold}    //   \ \   "
531		asciiAddLine "${bold}   (J     l )  "
532		asciiAddLine "${bold}  /'\_   _/'\  "
533		asciiAddLine "${bold}  \___)=(___/  ${reset}"
534		space="               "
535		;;
536	*[Vv]oid*)
537		asciiAddLine "${bold}${green}     _*###*_    "
538		asciiAddLine "${bold}${green}            \\   "
539		asciiAddLine "${bold}${green}   $   ${foreground}/\`\ ${green}  $  "
540		asciiAddLine "${bold}${green}  |   ${foreground}| @ |${green}   | "
541		asciiAddLine "${bold}${green}   $   ${foreground}\_/${green}   $  "
542		asciiAddLine "${bold}${green}    \_          "
543		asciiAddLine "${bold}${green}      *###*\`    ${reset}"
544		space="                "
545		;;
546	*[Dd]ebian*)
547		asciiAddLine "${bold}${red}     ______    "
548		asciiAddLine "${bold}${red}    /  __  \   "
549		asciiAddLine "${bold}${red}   /  /  \  |  "
550		asciiAddLine "${bold}${red}  |  |     /   "
551		asciiAddLine "${bold}${red}   \  '-_-'    "
552		asciiAddLine "${bold}${red}    \          "
553		asciiAddLine "${bold}${red}     '-__      ${reset}"
554		space="               "
555		;;
556	*[Aa]rch*)
557		asciiAddLine "${bold}${blue}        /\        "
558		asciiAddLine "${bold}${blue}       /  \       "
559		asciiAddLine "${bold}${blue}      /    \      "
560		asciiAddLine "${bold}${blue}     /  __  \     "
561		asciiAddLine "${bold}${blue}    /  |  |  \    "
562		asciiAddLine "${bold}${blue}   / _/    \_ \   "
563		asciiAddLine "${bold}${blue}  /.'        '.\  ${reset}"
564		space="                  "
565		;;
566	*[Gg]entoo*)
567		asciiAddLine "${bold}${purple}    _-'''-_     "
568		asciiAddLine "${bold}${purple}   /       *    "
569		asciiAddLine "${bold}${purple}  |_    O   \   "
570		asciiAddLine "${bold}${purple}   _->       |> "
571		asciiAddLine "${bold}${purple}  |         /   "
572		asciiAddLine "${bold}${purple}   \_     _*    "
573		asciiAddLine "${bold}${purple}     -...-      ${reset}"
574		space="                "
575		;;
576	*[Ff]edora*)
577		asciiAddLine "${bold}${blue}     _*#####*_    "
578		asciiAddLine "${bold}${blue}    /${foreground}    __${blue}   \   "
579		asciiAddLine "${bold}${blue}   $ ${foreground}   |  |${blue}   $  "
580		asciiAddLine "${bold}${blue}  |  ${foreground} __|__|${blue}    |  "
581		asciiAddLine "${bold}${blue}  |  ${foreground}|  |${blue}      $  "
582		asciiAddLine "${bold}${blue}  |  ${foreground}|__|${blue}    _/   "
583		asciiAddLine "${bold}${blue}  \_________*     ${reset}"
584		space="                  "
585		;;
586	*[Nn]ix*)
587		asciiAddLine "${bold}${blue}    _**___${cyan}/\/\     "
588		asciiAddLine "${bold}${blue}   I______${cyan}\  /${blue}__   "
589		asciiAddLine "${bold}${cyan}    _/ /   \ ${blue}/ /   "
590		asciiAddLine "${bold}${cyan}   /  <    ${blue} > _/   "
591		asciiAddLine "${bold}${cyan}   /_/ ${blue}\\${cyan}___${blue}/${cyan}_${blue}/${cyan}_    "
592		asciiAddLine "${bold}${blue}     /  \\${cyan}___  _I   "
593		asciiAddLine "${bold}${blue}     \/\/ ${cyan}  **     ${reset}"
594		space="                   "
595		;;
596	*[Aa]lpine*)
597		asciiAddLine "${bold}${blue}        __            "
598		asciiAddLine "${bold}${blue}       /  \  __       "
599		asciiAddLine "${bold}${blue}      / /\ \/  \      "
600		asciiAddLine "${bold}${blue}     / /  \ \/\ \     "
601		asciiAddLine "${bold}${blue}    / /    \ \ \ \    "
602		asciiAddLine "${bold}${blue}   / /|     \ \ \ \   "
603		asciiAddLine "${bold}${blue}  /_/_|      \_\ \_\  ${reset}"
604		space="                      "
605		;;
606	*[Ss]use*)
607		asciiAddLine "${bold}${green}  |̈́'**--.__         "
608		asciiAddLine "${bold}${green}         ,_\`*--.    "
609		asciiAddLine "${bold}${green}        /__\    \   "
610		asciiAddLine "${bold}${green}   ____,\_./  ,__\  "
611		asciiAddLine "${bold}${green}   \*._ \`'-*'\`___,  "
612		asciiAddLine "${bold}${green}       \`'*--*' _./  "
613		asciiAddLine "${bold}${green}  --.,,,.----*'     ${reset}"
614		space="                    "
615		;;
616	*[Ss]lack*)
617		asciiAddLine "${bold}${blue}     ,-*##\$##*-,     "
618		asciiAddLine "${bold}${blue}    /  ${foreground},'\`\`'*I${blue}  \    "
619		asciiAddLine "${bold}${blue}   $   ${foreground}\`~--._${blue}    $   "
620		asciiAddLine "${bold}${blue}  |[         ${foreground}\`)${blue}  ]|  "
621		asciiAddLine "${bold}${blue}   $  ${foreground},I*.__.*\`${blue}  $   "
622		asciiAddLine "${bold}${blue}    \ ${foreground}|--------${blue} /    "
623		asciiAddLine "${bold}${blue}     '-*##\$##*-'     ${reset}"
624		space="                     "
625		;;
626	*[Ee]xherbo*)
627		asciiAddLine "${bold}${black}     (\.-~-.o      "
628		asciiAddLine "${bold}${black}     / ${blue}o   O${foreground} \     "
629		asciiAddLine "${bold}${black}     |${brightred}(${foreground}+${brightred}¨\`¨${foreground}*${brightred})${foreground}|     "
630		asciiAddLine "${bold}${black}      \-_:_-/      "
631		asciiAddLine "${bold}${black}   (=/---=== \)    "
632		asciiAddLine "${bold}${black}   _/ -'-´¨¨´  )_  "
633		asciiAddLine "${bold}${black}  | )¨-,_.,-=/´¨/  "
634		asciiAddLine "${bold}${black}   ´'/_/'---'|__|  "
635		space="                   "
636		;;
637	*[Cc]rux*)
638		asciiAddLine "${bold}${blue}     ,-\"\"-,      "
639		asciiAddLine "${bold}${blue}     |${foreground}+ ^${blue} |      "
640		asciiAddLine "${bold}${blue}     |${yellow}/_\ ${blue}|_     "
641		asciiAddLine "${bold}${blue}   ,'  ${foreground}__${blue}  ,\    "
642		asciiAddLine "${bold}${blue}   | -${foreground}|  \ ${blue}//|   "
643		asciiAddLine "${bold}${yellow}  /¨|${blue}¨-' ${yellow}|${blue}^${yellow}|${blue}¨|   "
644		asciiAddLine "${bold}${yellow}  \_\\${blue}¸${foreground}\__${yellow}\/${blue}_/    ${reset}"
645		space="                 "
646		;;
647	*[Gg]uix*)
648		asciiAddLine "${bold}${yellow}\`,'-_._          _._-',\`"
649		asciiAddLine "${bold}${yellow}  '-__ \_      _/ __-'  "
650		asciiAddLine "${bold}${yellow}      \  \    /  /      "
651		asciiAddLine "${bold}${yellow}       \  \  /  /       "
652		asciiAddLine "${bold}${yellow}        \  \/  /        "
653		asciiAddLine "${bold}${yellow}         \ /  /         "
654		asciiAddLine "${bold}${yellow}          V__/          ${reset}"
655		space="                        "
656		;;
657	[Gg]nu)
658		asciiAddLine "${bold}  _-;;==-     -==;;-_ "
659		asciiAddLine "${bold} |\/ _-;*\\\//*;+-.\/|"
660		asciiAddLine "${bold} \\\\\\\\\\^¨''¨V¨''¨^//// "
661		asciiAddLine "${bold}  \\\/     @)  \@) \-  "
662		asciiAddLine "${bold}  / .       ¸_ \|-_\  "
663		asciiAddLine "${bold} /_/;      /*  _,/ ¨- "
664		asciiAddLine "${bold} ¨ | ´,  ´\_-=_=\     "
665		asciiAddLine "${bold}    |  ',  ¨´´´/      "
666		asciiAddLine "${bold}     \   ',   >       "
667		asciiAddLine "${bold}           \#\\\      ${reset}"
668		space="                      "
669		;;
670	[Dd]ragonfly)
671		asciiAddLine "${bold} [ ¨',  o${red}^${foreground}o  ,'¨ ]  "
672		asciiAddLine "${bold}  ´-¸ '.,${red}#${foreground},.' ¸-´   "
673		asciiAddLine "${bold}  ¸___:=${red}|#|${foreground}=:___¸   "
674		asciiAddLine "${bold} (    ¸~${red}\#/${foreground}~¸    )  "
675		asciiAddLine "${bold}  ´'´    ${red}#${foreground}    ´'´   "
676		asciiAddLine "${bold}${red}         #          "
677		asciiAddLine "${bold}${red}         |          ${reset}"
678		space="                    "
679		;;
680	*[Ff]ree[Bb][Ss][Dd]*)
681		asciiAddLine "${bold}${red}  (^-_-*###*-_-^)   "
682		asciiAddLine "${bold}${red}   \/         \/    "
683		asciiAddLine "${bold}${red}   $   ¤   ¤   $    "
684		asciiAddLine "${bold}${red}  |   _______   |   "
685		asciiAddLine "${bold}${red}   $  \ |T| /  $    "
686		asciiAddLine "${bold}${red}    \_ '-_-' _/     "
687		asciiAddLine "${bold}${red}     '-*###*-'      ${reset}"
688		space="                    "
689		;;
690	*[Oo]pen[Bb][Ss][Dd]*)
691		asciiAddLine "${bold}${yellow}  \,.-|--./      "
692		asciiAddLine "${bold}${yellow}  /',   .  \__   "
693		asciiAddLine "${bold}${yellow} \  .  ${foreground}^  ^${yellow} /    "
694		asciiAddLine "${bold}${yellow} _| . c ${red}U${yellow} ɔ |    "
695		asciiAddLine "${bold}${yellow}  \    .  ,/     "
696		asciiAddLine "${bold}${yellow}  / ,  ,_.\      "
697		asciiAddLine "${bold}${yellow}  '|/\/ '        ${reset}"
698		space="                 "
699		;;
700	*[Nn]et[Bb][Ss][Dd]*)
701		asciiAddLine "${bold} |_\\${red}¨¨-__-¨¨--.__,.--,__     "
702		asciiAddLine "${bold}  |_\\${red}             _-¨-=='¨¨  "  
703		asciiAddLine "${bold}   |_\\${red}           ´´¨-,___    "
704		asciiAddLine "${bold}    |_\\${red}      _¨¨--__--''¨¨¨  "
705		asciiAddLine "${bold}     |_\\${red}--_-¨                "
706		asciiAddLine "${bold}      |_\                    "
707		asciiAddLine "${bold}       |_\                   "
708		asciiAddLine "${bold}        |_\                  ${reset}"
709		space="                             "
710		;;
711	[Pp]lan9)
712		asciiAddLine "${bold} |#\|#\.---.,     "
713		asciiAddLine "${bold}  \#\^¨      1    "
714		asciiAddLine "${bold}   ],    o   o}   "
715		asciiAddLine "${bold}    |      (*)[   "
716		asciiAddLine "${bold}    }       ¨ |   "
717		asciiAddLine "${bold}  ,.[         /   "
718		asciiAddLine "${bold}  <_\____,\_\-\   ${reset}"
719		space="                  "
720		;;
721	 [Ss]eele)
722		asciiAddLine "${bold}  ____________  "
723		asciiAddLine "${bold} -#@#-  | -#@#- "
724		asciiAddLine "${bold}   \    |   /   "
725		asciiAddLine "${bold} -#@#-  | -#@#- "
726		asciiAddLine "${bold}     \  | /     "
727		asciiAddLine "${bold} -#@#-\ |/-#@#- "
728		asciiAddLine "${bold}       \/       "
729		asciiAddLine "${bold}          -#@#- "
730		space="                "
731		;;
732	[Nn]erv)
733		asciiAddLine "${bold}${red}   ^,  ,_-';,   "
734		asciiAddLine "${bold}${red}    ´\\¸|  , ,'  "
735		asciiAddLine "${bold}${black} |\ | L${red}\\¸  ´;,  "
736		asciiAddLine "${bold}${black} | \| |_${red}´\\¸ ´;  "
737		asciiAddLine "${bold}${black}     |) \ ${red}´\\¸ } "
738		asciiAddLine "${bold}${black}     |\  \/ ${red}´\/ ${reset}"
739		space="                "
740		;;
741	[Nn]avi)
742		asciiAddLine "${bold}${cyan}         .         "
743		asciiAddLine "${bold}${cyan}   . ${blue}_+##\$##+_ ${cyan}.   "
744		asciiAddLine "${bold}${cyan}  / ${blue}/^ ${cyan}+#\$#+ ${blue}^\ ${cyan}\  "
745		asciiAddLine "${bold}${cyan} | ${blue}() ${cyan}#|${blue}(${cyan}@${blue})${cyan}|# ${blue}() ${cyan}| "
746		asciiAddLine "${bold}${cyan}  \ ${blue}\, ${cyan}\' '/ ${blue},/ ${cyan}/  "
747		asciiAddLine "${bold}${cyan} . ' ${blue}¨+${cyan}|${blue}#\$#${cyan}|${blue}+¨ ${cyan}' . "
748		asciiAddLine "${bold}${cyan}      ,|   |,      "
749		asciiAddLine "${bold}${cyan}                   ${reset}"
750		space="                   "
751		;;
752	[Aa]perture)
753		asciiAddLine "${bold}${blue}      _-----,_       "
754		asciiAddLine "${bold}${blue}   _¨´¨- _   \ ¨_    "
755		asciiAddLine "${bold}${blue}  /    _--¨-,\   \   "
756		asciiAddLine "${bold}${blue} /--¨;/       | / \  "
757		asciiAddLine "${bold}${blue} |  ,/        /´  |  "
758		asciiAddLine "${bold}${blue} \ / |       /;_--/  "
759		asciiAddLine "${bold}${blue}  \   \'-_--¨    /   "
760		asciiAddLine "${bold}${blue}   ¨_ \   ¨ -_¸_¨    "
761		asciiAddLine "${bold}${blue}      ¨^-----¨       "
762		space="                     "
763		;;
764	[bB]lack[Mm]esa)
765		asciiAddLine "${bold}    _*###*_    "
766		asciiAddLine "${bold}   /       \   "
767		asciiAddLine "${bold}  $         $  "
768		asciiAddLine "${bold} |[   .---. ]| "
769		asciiAddLine "${bold}  \$___|    \\$  "
770		asciiAddLine "${bold}   \_     _/   "
771		asciiAddLine "${bold}     *###*     "
772		space="               "
773		;;
774	[Ll]ambda)
775		asciiAddLine "${bold}${orange}    _*###*_    "
776		asciiAddLine "${bold}${orange}   /  _    \   "
777		asciiAddLine "${bold}${orange}  $    \    $  "
778		asciiAddLine "${bold}${orange} |[   / \   ]| "
779		asciiAddLine "${bold}${orange}  $  /   \_ $  "
780		asciiAddLine "${bold}${orange}   \_     _/   "
781		asciiAddLine "${bold}${orange}     *###*     "
782		space="               "
783		;;
784	*[Kk]iss*|*KISS*)
785	    asciiAddLine "${bold}${purple}    ___       "
786	    asciiAddLine "${bold}${purple}   (${white}..${purple} |      "
787	    asciiAddLine "${bold}${purple}   (${white}<>${purple} |      "
788	    asciiAddLine "${bold}${purple}  / ${white}__${purple}  \     "
789	    asciiAddLine "${bold}${purple} ( ${white}/  \\${purple} /|    "
790	    asciiAddLine "${bold}${purple}_/\\ ${white}__${purple})/_)    "
791	    asciiAddLine "${bold}${purple}\\/-____\\/     "
792	    space="              "
793	    ;;
794	*)
795		# this is a trash can btw
796		asciiAddLine "${bold}  ___________  "
797		asciiAddLine "${bold}  \X#X#X#X#X/  "
798		asciiAddLine "${bold}  \#X#X#X#X#/  "
799		asciiAddLine "${bold}  \X#X#X#X#X/  "
800		asciiAddLine "${bold}  \#X#X#X#X#/  "
801		asciiAddLine "${bold}  \X#X#X#X#X/  "
802		asciiAddLine "${bold}  |#X#X#X#X#|  ${reset}"
803		space="               "
804		;;
805esac
806
807i=2
808
809printf "%s\n" "$(eval "echo \"\$line_1\"")"
810
811while [ "$i" -le "$lineCount" ] || [ "$((i - 1))" -le "$asciiLineCount" ]; do
812    logo_line=$((i - 1))
813
814    eval "line=\${line_$i}"
815
816    if [ "$logo_line" -le "$asciiLineCount" ]; then
817        eval "logo=\${ascii_$logo_line}"
818    else
819        logo="$space"
820    fi
821
822    printf "%s %s\n" "$logo" "$line"
823    i=$((i + 1))
824done
825
826# Ik its badly made btw
827
828# to do list:
829	# more logos:
830		# derive
831		# bedrock
832		# kiss
833	# make more configurable
834	# make logos be 1 instead of 7
835	# more compatibility for distros
836	# bsd support
837	# config file instead of this file
838	# logo file instead of this file