aboutsummaryrefslogtreecommitdiff
path: root/fun
diff options
context:
space:
mode:
authorxero <x@xero.nu>2014-01-25 20:30:17 -0500
committerxero <x@xero.nu>2014-01-25 20:30:17 -0500
commit7e892df9b0e32673d5a635aca1ebfb079473a3f2 (patch)
tree84f1f05399d16bc611db54111dee9ca06b2e683d /fun
parentabb204ed8349b10dc53fc5884c8388c11d23776d (diff)
downloaddotfiles_ascii-7e892df9b0e32673d5a635aca1ebfb079473a3f2.tar.xz
dotfiles_ascii-7e892df9b0e32673d5a635aca1ebfb079473a3f2.zip
add fun color scripts mostly from http://crunchbang.org/forums/viewtopic.php?id=13645
Diffstat (limited to '')
-rwxr-xr-xfun/2spooky.lua79
-rwxr-xr-xfun/colors13
-rwxr-xr-xfun/colorscheme27
-rwxr-xr-xfun/dna46
-rwxr-xr-xfun/ghosts31
-rwxr-xr-xfun/invaders54
-rwxr-xr-xfun/pacman37
-rwxr-xr-xfun/pipes108
-rw-r--r--fun/pipes.sh108
-rwxr-xr-xfun/pipesx159
-rw-r--r--fun/pipesx.sh159
-rwxr-xr-xfun/rain100
-rw-r--r--fun/rain.sh100
-rwxr-xr-xfun/screenfetch1378
-rwxr-xr-xfun/skull70
-rwxr-xr-xfun/slendy35
16 files changed, 2504 insertions, 0 deletions
diff --git a/fun/2spooky.lua b/fun/2spooky.lua
new file mode 100755
index 0000000..a0ebc5d
--- /dev/null
+++ b/fun/2spooky.lua
@@ -0,0 +1,79 @@
+ --Definitely not my best work, first script I've done in Lua 5.2
+ function draw()
+ nissue = {
+ "\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[1;33m",
+ ",~~~~~~~~~~~~~, \027[0;31m..:::::::::.. \027[1;33m ,~~~~~~~~~~~~~,\027[1;33m",
+ "\027[1;33m:\027[1;32m .-======-,\027[1;33m : \027[0;31m ..:::\027[1;37maad8888888baa\027[0;31m:::.. \027[1;33m:\027[1;34mExploit-the \027[1;33m :\027[1;32m",
+ "\027[1;33m:\027[1;32m ||\027[0;31mH4CK3R\027[1;32m|# \027[1;33m : \027[0;31m .::::\027[1;37md:?88888888888?::8b\027[0;31m::::. \027[1;33m :\027[0;31m.-------,./|\027[1;33m :\027[1;32m",
+ "\027[1;33m:\027[1;32m ||______|| \027[1;33m :\027[1;34m&&&& \027[0;31m.:::\027[1;37md8888:?88888888??a888888b\027[0;31m:::. \027[1;34m &&&&\027[1;33m:\027[0;31m{ \027[1;33m VIRUS \027[0;31m /\027[1;33m :\027[1;33m",
+ "\027[1;33m:\027[1;32m | ___ | \027[1;33m : \027[1;34m + \027[0;31m.:::\027[1;37md8888888a8888888aa8888888888b\027[0;31m:::. \027[1;34m + \027[1;33m :\027[0;31m \\\027[1;33m DROPPER\027[0;31m 7\027[1;33m :\027[1;33m",
+ "\027[1;33m:\027[1;32m | |\027[1;35m[]\027[1;32m | | \027[1;33m : \027[1;34m &\027[0;31m::::\027[1;37mdP\027[0;31m\023\022\021\020\019\018\017\016\027[1;37m88888888888\027[0;31m\023\022\021\020\019\018\017\016\027[1;37mYb\027[0;31m::::\027[1;34m&&\027[1;33m :\027[0;31m ~. ,--.( \027[1;33m :\027[1;33m",
+ "\027[1;33m:\027[1;32m `-------' \027[1;33m : \027[0;31m::::\027[1;37mdP\027[0;31m\024:::::::\015\027[1;37mY888888888P\027[0;31m\024:::::::\015\027[1;37mYb\027[0;31m::::\027[1;33m : \027[0;31m '~ `;\027[1;33m :\027[1;33m",
+ "\027[1;33m:\027[0;31mReverse- \027[1;33m : \027[0;31m::::\027[1;37md8\027[0;31m\001:::::::::\014\027[1;37mY8888888P\027[0;31m\001:::::::::\014\027[1;37m8b\027[0;31m::::\027[1;33m :\027[1;34mNation's-\027[0;31mData\027[1;33m:\027[1;33m",
+ "\027[1;33m:\027[0;31mEngineering \027[1;33m: \027[0;31m.::::\027[1;37m88\027[0;31m\002\003\004\005\006\007\008\009\010\011\012\013\027[1;37mY88888P\027[0;31m\002\003\004\005\006\007\008\009\010\011\012\013\027[1;37m88\027[0;31m::::.\027[1;33m `~~~~~~~~~~~~'\027[1;33m",
+ "\027[1;33m `~~~~~~~~~~~~' \027[0;31m:::::\027[1;37mY8baaaaaaaaaa88P\027[0;31m:\027[1;37mT\027[0;31m:\027[1;37mY88aaaaaaaaaad8P\027[0;31m::::: \027[0;31m",
+ "\027[0;31m :::::::\027[1;37mY88888888888P\027[0;31m::\027[1;37m|\027[0;31m::\027[1;37mY88888888888P\027[0;31m::::::: \027[0;31m",
+ "\027[1;33m,~~~~~~~~~~~~~, \027[0;31m::::::::::::::::\027[1;37m888\027[0;31m:::\027[1;37m|\027[0;31m:::\027[1;37m888\027[0;31m::::::::::::::::\027[1;33m ,~~~~~~~~~~~~~,\027[1;33m",
+ "\027[1;33m:\027[1;34m R00T-KITS \027[1;33m : \027[0;31m`:::::::::::::::\027[1;37m8888888888888b\027[0;31m::::::::::::::' \027[1;33m :\027[0;31mHoM3-$w33t\027[1;33m :\027[1;37m",
+ "\027[1;33m:\027[0;31m ____ \027[1;37m __ \027[1;33m : \027[0;31m:::::::::::::::\027[1;37m88888888888888\027[0;31m:::::::::::::: \027[1;33m :\027[1;34m (I\027[1;33m :\027[1;33m",
+ "\027[1;33m: \027[0;31m| |\027[1;37m |\027[0;31m-_\027[1;37m| \027[1;33m:\027[0;31m :::::::::::::\027[1;37md88888888888888\027[0;31m::::::::::::: \027[1;33m :\027[1;36m^^^\027[1;34m |\027[1;36m ^^^\027[1;33m:\027[1;33m",
+ "\027[1;33m:\027[0;31m |____|\027[1;33m_\027[1;37m|\027[0;31m=_\027[1;37m|\027[1;33m :\027[0;31m ::::::::::::\027[1;37m88\027[0;31m::\027[1;37m88\027[0;31m::\027[1;37m88\027[0;31m:::\027[1;37m88\027[0;31m::::::::::::\027[1;33m :\027[1;34m|u|_\027[1;36m^^^^^\027[1;34m_|u|\027[1;33m:\027[1;33m",
+ "\027[1;33m:\027[1;37m ____\027[1;33m)\027[1;37m_\027[1;37m.\027[1;37m___\027[1;33m : \027[0;31m`::::::::::\027[1;37m88\027[0;31m::\027[1;37m88\027[0;31m::\027[1;37m88\027[0;31m:::\027[1;37m88\027[0;31m::::::::::' \027[1;33m :\027[1;34m|_ u _ u _|\027[1;33m:\027[1;33m",
+ "\027[1;33m: \027[1;37m/\027[1;34m:::::;\027[1;37m|\027[1;34m _\027[1;37m)\027[1;33m:\027[1;34m &\027[0;31m`:::::::::\027[1;37m88\027[0;31m::\027[1;37m88\027[0;31m::\027[1;37mP\027[0;31m::::\027[1;37m88\027[0;31m:::::::::'\027[1;34m& \027[1;33m:\027[1;34m |__|\027[1;37m;\027[1;34m|__| \027[1;33m :\027[1;33m",
+ "\027[1;33m:\027[1;37m `======'\027[1;34m |_|\027[1;33m: \027[1;34m+ \027[0;31m `:::::::\027[1;37m88\027[0;31m::\027[1;37m88\027[0;31m:::::::\027[1;37m88\027[0;31m:::::::' \027[1;34m + \027[1;33m :\027[1;34m /_/ \027[1;33m :\027[1;33m",
+ "\027[1;33m:\027[1;34mUr-Computer-\027[1;33m :\027[1;34m&&&&&&& \027[0;31m ``:::::::::::::::::::::::''\027[1;34m &&&&&&&\027[1;33m:\027[0;31mH4x0r-HoM3- \027[1;33m :\027[1;33m",
+ "\027[1;33m:\027[1;34mis-MY-\027[0;31mSlave \027[1;33m : \027[0;31m ``::::::::::::::''\027[1;33m :\027[0;31m *\027[1;37m127\027[0;31m.\027[1;37m0\027[0;31m.\027[1;37m0\027[0;31m.\027[1;37m1\027[0;31m* \027[1;33m:\027[1;33m",
+ "\027[1;33m `~~~~~~~~~~~~' `~~~~~~~~~~~~'\027[1;33m",
+ "\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[1;37m",
+ "\027[0;31m -======- \027[1;37m +\027[0;31mWARNING\027[1;37m+\027[1;33m\"\027[0;31mIllegal\027[1;37m_\027[0;31mNetwork\027[1;37m_\027[0;31mConnections\027[1;37m_\027[0;31mBeyond\027[1;37m_\027[0;31mLogin\027[1;33m\" \027[0;31m -======-\027[0;31m",
+ "\027[0;31m |\027[1;32mH\027[1;34m4\027[1;33mC\027[1;35mK\027[1;36m3\027[1;37mR\027[0;31m| \027[1;34m -== \027[1;37m You are at the point of \027[0;31mNO RETURN \027[1;34m ==- \027[0;31m |\027[1;32mH\027[1;34m4\027[1;33mC\027[1;35mK\027[1;36m3\027[1;37mR\027[0;31m|\027[0;31m",
+ "\027[0;31m |______|\027[0;31mYour Activities\027[1;37m:\027[1;33mWill\027[1;37m_\027[1;33mbe\027[1;37m_\027[1;33mKeylogged\027[1;37m_\027[1;33mand\027[1;37m_\027[1;33mTimestamped \027[1;34m\"\027[0;31mUSER_BEWARE\027[1;34m\"\027[0;31m|______|\027[0;31m",
+ "\027[0;31mHacking Sites\027[1;37m:\027[0;31m https\027[1;37m:\027[1;33m//\027[0;31msites\027[1;37m.\027[0;31mgoogle\027[1;37m.\027[0;31mcom\027[1;33m/\027[0;31msite\027[1;33m/\027[0;31mlazyboxx \027[1;35m*\027[0;31m http\027[1;37m:\027[1;33m//\027[0;31mwww\027[1;37m.\027[0;31mfreebsd\027[1;37m.\027[0;31morg \027[1;33m"
+ }
+ io.write("\027[1;1H") --reset cursor
+ for a = 7,11 do
+ for b = 1,24 do
+ if b == position then
+ nissue[a] = string.gsub(nissue[a],string.char(b),"\027[1;31m@\027[0;31m")
+ else
+ nissue[a] = string.gsub(nissue[a],string.char(b),":")
+ end
+ end
+ end
+ for a = 5,21 do
+ if bool then
+ nissue[a] = string.gsub(nissue[a],"&","\027[31;1m=\027[37;1m")
+ nissue[a] = string.gsub(nissue[a],"+","\027[31;1m|\027[37;1m")
+ else
+ nissue[a] = string.gsub(nissue[a],"&","=")
+ nissue[a] = string.gsub(nissue[a],"+","|")
+ end
+ end
+ for i = 1,28 do
+ print(nissue[i])
+ end
+ bool = not bool
+ end
+ function changepos(num)
+ if position == 24 and num == 1 then
+ position = 1
+ elseif position == 1 and num == -1 then
+ position = 24
+ else
+ position = position + num
+ end
+ end
+ position = 14
+ bool = true
+ dirs = {1,-1}
+ draw()
+ while true do
+ move = math.random(1,6)
+ dir = dirs[math.random(1,2)]
+ draw()
+ for m = 1,move do
+ changepos(dir)
+ draw()
+ os.execute("sleep 0.1") --Replace it with some other way to wait one tenth of a second if you're using Windows or don't have "sleep"
+ end --On the subject of Windows compatibility, Ansicon is a perfect way to make the Ansi escape codes work.
+ end
diff --git a/fun/colors b/fun/colors
new file mode 100755
index 0000000..c8d527b
--- /dev/null
+++ b/fun/colors
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+xdef="$HOME/.Xdefaults"
+
+colors=( $( sed -re '/^!/d; /^$/d; /^#/d; s/(\*color)([0-9]):/\10\2:/g;' $xdef | grep 'color[01][0-9]:' | sort | sed 's/^.*: *//g' ) )
+
+echo -e "\e[1;37m
+ Black Red Green Yellow Blue Magenta Cyan White
+──────────────────────────────────────────────────────────────────────\e[0m"
+for i in {0..7}; do echo -en "\e[$((30+$i))m ${colors[i]} \e[0m"; done
+echo
+for i in {8..15}; do echo -en "\e[1;$((22+$i))m ${colors[i]} \e[0m"; done
+echo -e "\n"
diff --git a/fun/colorscheme b/fun/colorscheme
new file mode 100755
index 0000000..ad8ab40
--- /dev/null
+++ b/fun/colorscheme
@@ -0,0 +1,27 @@
+#!/bin/bash
+#
+# This file echoes a bunch of color codes to the
+# terminal to demonstrate what's available. Each
+# line is the color code of one forground color,
+# out of 17 (default + 16 escapes), followed by a
+# test use of that color on all nine background
+# colors (default + 8 escapes).
+#
+
+T='TiP' # The test text
+
+echo -e "\n 40m 41m 42m 43m\
+ 44m 45m 46m 47m";
+
+for FGs in ' m' ' 1m' ' 30m' '1;30m' ' 31m' '1;31m' ' 32m' \
+ '1;32m' ' 33m' '1;33m' ' 34m' '1;34m' ' 35m' '1;35m' \
+ ' 36m' '1;36m' ' 37m' '1;37m';
+ do FG=${FGs// /}
+ echo -en " $FGs \033[$FG $T "
+ for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
+ do echo -en "$EINS \033[$FG\033[$BG $T \033[0m";
+ done
+ echo;
+done
+echo
+
diff --git a/fun/dna b/fun/dna
new file mode 100755
index 0000000..a049e0b
--- /dev/null
+++ b/fun/dna
@@ -0,0 +1,46 @@
+#!/bin/bash
+#
+# ANSI color scheme script by pfh
+#
+# Initializing mod by lolilolicon from Archlinux
+#
+
+f=3 b=4
+for j in f b; do
+ for i in {0..7}; do
+ printf -v $j$i %b "\e[${!j}${i}m"
+ done
+done
+bld=$'\e[1m'
+rst=$'\e[0m'
+inv=$'\e[7m'
+
+cat << EOF
+
+ ${f1} █-----${bld}█ ${rst}${f2} █-----${bld}█${rst} ${f3} █-----${bld}█${rst} ${f4} █-----${bld}█${rst} ${f5} █-----${bld}█${rst} ${f6} █-----${bld}█${rst}
+ ${f1} █---${bld}█${rst} ${f2} █---${bld}█${rst} ${f3} █---${bld}█${rst} ${f4} █---${bld}█${rst} ${f5} █---${bld}█${rst} ${f6} █---${bld}█${rst}
+ ${f1} █-${bld}█${rst} ${f2} █-${bld}█${rst} ${f3} █-${bld}█${rst} ${f4} █-${bld}█${rst} ${f5} █-${bld}█${rst} ${f6} █-${bld}█${rst}
+ ${f1} █${rst} ${f2} █${rst} ${f3} █${rst} ${f4} █${rst} ${f5} █${rst} ${f6} █${rst}
+ ${f1}${bld} █-${rst}${f1}█${rst} ${f2}${bld} █_${rst}${f2}█${rst} ${f3}${bld} █-${rst}${f3}█${rst} ${f4}${bld} █-${rst}${f4}█${rst} ${f5}${bld} █-${rst}${f5}█${rst} ${f6}${bld} █-${rst}${f6}█${rst}
+ ${f1}${bld} █---${rst}${f1}█${rst} ${f2}${bld} █---${rst}${f2}█${rst} ${f3}${bld} █---${rst}${f3}█${rst} ${f4}${bld} █---${rst}${f4}█${rst} ${f5}${bld} █---${rst}${f5}█${rst} ${f6}${bld} █---${rst}${f6}█${rst}
+ ${f1}${bld} █-----${rst}${f1}█${rst} ${f2}${bld} █-----${rst}${f2}█${rst} ${f3}${bld} █-----${rst}${f3}█${rst} ${f4}${bld} █-----${rst}${f4}█${rst} ${f5}${bld} █-----${rst}${f5}█${rst} ${f6}${bld} █-----${rst}${f6}█${rst}
+ ${f1}${bld} █---${rst}${f1}█${rst} ${f2}${bld} █---${rst}${f2}█${rst} ${f3}${bld} █---${rst}${f3}█${rst} ${f4}${bld} █---${rst}${f4}█${rst} ${f5}${bld} █---${rst}${f5}█${rst} ${f6}${bld} █---${rst}${f6}█${rst}
+ ${f1}${bld} █-${rst}${f1}█${rst} ${f2}${bld} █-${rst}${f2}█${rst} ${f3}${bld} █-${rst}${f3}█${rst} ${f4}${bld} █-${rst}${f4}█${rst} ${f5}${bld} █-${rst}${f5}█${rst} ${f6}${bld} █-${rst}${f6}█${rst}
+ ${f1}${bld} █${rst} ${f2}${bld} █${rst} ${f3}${bld}█${rst} ${f4}${bld} █${rst} ${f5}${bld} █${rst} ${f6}${bld} █${rst}
+ ${f1} █-${bld}█${rst} ${f2} █-${bld}█${rst} ${f3} █-${bld}█${rst} ${f4} █-${bld}█${rst} ${f5} █-${bld}█${rst} ${f6} █-${bld}█${rst}
+ ${f1} █---${bld}█${rst} ${f2} █---${bld}█${rst} ${f3} █---${bld}█${rst} ${f4} █---${bld}█${rst} ${f5} █---${bld}█${rst} ${f6} █---${bld}█${rst}
+ ${f1} █-----${bld}█ ${rst}${f2} █-----${bld}█${rst} ${f3} █-----${bld}█${rst} ${f4} █-----${bld}█${rst} ${f5} █-----${bld}█${rst} ${f6} █-----${bld}█${rst}
+ ${f1} █---${bld}█${rst} ${f2} █---${bld}█${rst} ${f3} █---${bld}█${rst} ${f4} █---${bld}█${rst} ${f5} █---${bld}█${rst} ${f6} █---${bld}█${rst}
+ ${f1} █-${bld}█${rst} ${f2} █-${bld}█${rst} ${f3} █-${bld}█${rst} ${f4} █-${bld}█${rst} ${f5} █-${bld}█${rst} ${f6} █-${bld}█${rst}
+ ${f1} █${rst} ${f2}█${rst} ${f3} █${rst} ${f4} █${rst} ${f5} █${rst} ${f6} █${rst}
+ ${f1}${bld} █-${rst}${f1}█${rst} ${f2}${bld} █_${rst}${f2}█${rst} ${f3}${bld} █-${rst}${f3}█${rst} ${f4}${bld} █-${rst}${f4}█${rst} ${f5}${bld} █-${rst}${f5}█${rst} ${f6}${bld} █-${rst}${f6}█${rst}
+ ${f1}${bld} █---${rst}${f1}█${rst} ${f2}${bld} █---${rst}${f2}█${rst} ${f3}${bld} █---${rst}${f3}█${rst} ${f4}${bld} █---${rst}${f4}█${rst} ${f5}${bld} █---${rst}${f5}█${rst} ${f6}${bld} █---${rst}${f6}█${rst}
+ ${f1}${bld} █-----${rst}${f1}█${rst} ${f2}${bld} █-----${rst}${f2}█${rst} ${f3}${bld} █-----${rst}${f3}█${rst} ${f4}${bld} █-----${rst}${f4}█${rst} ${f5}${bld} █-----${rst}${f5}█${rst} ${f6}${bld} █-----${rst}${f6}█${rst}
+ ${f1}${bld} █---${rst}${f1}█${rst} ${f2}${bld} █---${rst}${f2}█${rst} ${f3}${bld} █---${rst}${f3}█${rst} ${f4}${bld} █---${rst}${f4}█${rst} ${f5}${bld} █---${rst}${f5}█${rst} ${f6}${bld} █---${rst}${f6}█${rst}
+ ${f1}${bld} █-${rst}${f1}█${rst} ${f2}${bld} █-${rst}${f2}█${rst} ${f3}${bld} █-${rst}${f3}█${rst} ${f4}${bld} █-${rst}${f4}█${rst} ${f5}${bld} █-${rst}${f5}█${rst} ${f6}${bld} █-${rst}${f6}█${rst}
+ ${f1}${bld} █${rst} ${f2}${bld} █${rst} ${f3}${bld} █${rst} ${f4}${bld} █${rst} ${f5}${bld} █${rst} ${f6}${bld} █${rst}
+ ${f1} █-${bld}█${rst} ${f2} █-${bld}█${rst} ${f3} █-${bld}█${rst} ${f4} █-${bld}█${rst} ${f5} █-${bld}█${rst} ${f6} █-${bld}█${rst}
+ ${f1} █---${bld}█${rst} ${f2} █---${bld}█${rst} ${f3} █---${bld}█${rst} ${f4} █---${bld}█${rst} ${f5} █---${bld}█${rst} ${f6} █---${bld}█${rst}
+ ${f1} █-----${bld}█ ${rst}${f2} █-----${bld}█${rst} ${f3} █-----${bld}█${rst} ${f4} █-----${bld}█${rst} ${f5} █-----${bld}█${rst} ${f6} █-----${bld}█${rst}
+
+EOF \ No newline at end of file
diff --git a/fun/ghosts b/fun/ghosts
new file mode 100755
index 0000000..2cf1727
--- /dev/null
+++ b/fun/ghosts
@@ -0,0 +1,31 @@
+#!/bin/bash
+#
+# ANSI color scheme script by pfh
+#
+# Initializing mod by lolilolicon from Archlinux
+#
+
+f=3 b=4
+for j in f b; do
+ for i in {0..7}; do
+ printf -v $j$i %b "\e[${!j}${i}m"
+ done
+done
+bld=$'\e[1m'
+rst=$'\e[0m'
+inv=$'\e[7m'
+cat << EOF
+
+$f1 ▄▄▄ $f2 ▄▄▄ $f3 ▄▄▄ $f4 ▄▄▄ $f5 ▄▄▄ $f6 ▄▄▄
+$f1 ▀█▀██ ▄ $f2 ▀█▀██ ▄ $f3 ▀█▀██ ▄ $f4 ▀█▀██ ▄ $f5 ▀█▀██ ▄ $f6 ▀█▀██ ▄
+$f1 ▀▄██████▀ $f2 ▀▄██████▀ $f3 ▀▄██████▀ $f4 ▀▄██████▀ $f5 ▀▄██████▀ $f6 ▀▄██████▀
+$f1 ▀█████ $f2 ▀█████ $f3 ▀█████ $f4 ▀█████ $f5 ▀█████ $f6 ▀█████
+$f1 ▀▀▀▀▄ $f2 ▀▀▀▀▄ $f3 ▀▀▀▀▄ $f4 ▀▀▀▀▄ $f5 ▀▀▀▀▄ $f6 ▀▀▀▀▄
+$bld
+$f1 ▄▄▄ $f2 ▄▄▄ $f3 ▄▄▄ $f4 ▄▄▄ $f5 ▄▄▄ $f6 ▄▄▄
+$f1 ▀█▀██ ▄ $f2 ▀█▀██ ▄ $f3 ▀█▀██ ▄ $f4 ▀█▀██ ▄ $f5 ▀█▀██ ▄ $f6 ▀█▀██ ▄
+$f1 ▀▄██████▀ $f2 ▀▄██████▀ $f3 ▀▄██████▀ $f4 ▀▄██████▀ $f5 ▀▄██████▀ $f6 ▀▄██████▀
+$f1 ▀█████ $f2 ▀█████ $f3 ▀█████ $f4 ▀█████ $f5 ▀█████ $f6 ▀█████
+$f1 ▀▀▀▀▄ $f2 ▀▀▀▀▄ $f3 ▀▀▀▀▄ $f4 ▀▀▀▀▄ $f5 ▀▀▀▀▄ $f6 ▀▀▀▀▄
+$rst
+EOF \ No newline at end of file
diff --git a/fun/invaders b/fun/invaders
new file mode 100755
index 0000000..0ca2036
--- /dev/null
+++ b/fun/invaders
@@ -0,0 +1,54 @@
+#!/bin/sh
+
+# ANSI Color -- use these variables to easily have different color
+# and format output. Make sure to output the reset sequence after
+# colors (f = foreground, b = background), and use the 'off'
+# feature for anything you turn on.
+
+initializeANSI()
+{
+ esc=""
+
+ blackf="${esc}[30m"; redf="${esc}[31m"; greenf="${esc}[32m"
+ yellowf="${esc}[33m" bluef="${esc}[34m"; purplef="${esc}[35m"
+ cyanf="${esc}[36m"; whitef="${esc}[37m"
+
+ blackb="${esc}[40m"; redb="${esc}[41m"; greenb="${esc}[42m"
+ yellowb="${esc}[43m" blueb="${esc}[44m"; purpleb="${esc}[45m"
+ cyanb="${esc}[46m"; whiteb="${esc}[47m"
+
+ boldon="${esc}[1m"; boldoff="${esc}[22m"
+ italicson="${esc}[3m"; italicsoff="${esc}[23m"
+ ulon="${esc}[4m"; uloff="${esc}[24m"
+ invon="${esc}[7m"; invoff="${esc}[27m"
+
+ reset="${esc}[0m"
+}
+
+# note in this first use that switching colors doesn't require a reset
+# first - the new color overrides the old one.
+
+initializeANSI
+
+cat << EOF
+
+ ${boldon}${redf}▀▄ ▄▀ ${reset} ${boldon}${greenf}▄▄▄████▄▄▄ ${reset} ${boldon}${yellowf} ▄██▄ ${reset} ${boldon}${bluef}▀▄ ▄▀ ${reset} ${boldon}${purplef}▄▄▄████▄▄▄ ${reset} ${boldon}${cyanf} ▄██▄ ${reset}
+ ${boldon}${redf}▄█▀███▀█▄ ${reset} ${boldon}${greenf}███▀▀██▀▀███${reset} ${boldon}${yellowf}▄█▀██▀█▄${reset} ${boldon}${bluef}▄█▀███▀█▄ ${reset} ${boldon}${purplef}███▀▀██▀▀███${reset} ${boldon}${cyanf}▄█▀██▀█▄${reset}
+ ${boldon}${redf}█▀███████▀█${reset} ${boldon}${greenf}▀▀▀██▀▀██▀▀▀${reset} ${boldon}${yellowf}▀▀█▀▀█▀▀${reset} ${boldon}${bluef}█▀███████▀█${reset} ${boldon}${purplef}▀▀▀██▀▀██▀▀▀${reset} ${boldon}${cyanf}▀▀█▀▀█▀▀${reset}
+ ${boldon}${redf}▀ ▀▄▄ ▄▄▀ ▀${reset} ${boldon}${greenf}▄▄▀▀ ▀▀ ▀▀▄▄${reset} ${boldon}${yellowf}▄▀▄▀▀▄▀▄${reset} ${boldon}${bluef}▀ ▀▄▄ ▄▄▀ ▀${reset} ${boldon}${purplef}▄▄▀▀ ▀▀ ▀▀▄▄${reset} ${boldon}${cyanf}▄▀▄▀▀▄▀▄${reset}
+
+ ${redf}▀▄ ▄▀ ${reset} ${greenf}▄▄▄████▄▄▄ ${reset} ${yellowf} ▄██▄ ${reset} ${bluef}▀▄ ▄▀ ${reset} ${purplef}▄▄▄████▄▄▄ ${reset} ${cyanf} ▄██▄ ${reset}
+ ${redf}▄█▀███▀█▄ ${reset} ${greenf}███▀▀██▀▀███${reset} ${yellowf}▄█▀██▀█▄${reset} ${bluef}▄█▀███▀█▄ ${reset} ${purplef}███▀▀██▀▀███${reset} ${cyanf}▄█▀██▀█▄${reset}
+ ${redf}█▀███████▀█${reset} ${greenf}▀▀▀██▀▀██▀▀▀${reset} ${yellowf}▀▀█▀▀█▀▀${reset} ${bluef}█▀███████▀█${reset} ${purplef}▀▀▀██▀▀██▀▀▀${reset} ${cyanf}▀▀█▀▀█▀▀${reset}
+ ${redf}▀ ▀▄▄ ▄▄▀ ▀${reset} ${greenf}▄▄▀▀ ▀▀ ▀▀▄▄${reset} ${yellowf}▄▀▄▀▀▄▀▄${reset} ${bluef}▀ ▀▄▄ ▄▄▀ ▀${reset} ${purplef}▄▄▀▀ ▀▀ ▀▀▄▄${reset} ${cyanf}▄▀▄▀▀▄▀▄${reset}
+
+
+ ${whitef}▌${reset}
+
+ ${whitef}▌${reset}
+ ${whitef}${reset}
+ ${whitef}▄█▄${reset}
+ ${whitef}▄█████████▄${reset}
+ ${whitef}▀▀▀▀▀▀▀▀▀▀▀${reset}
+
+EOF \ No newline at end of file
diff --git a/fun/pacman b/fun/pacman
new file mode 100755
index 0000000..51697cc
--- /dev/null
+++ b/fun/pacman
@@ -0,0 +1,37 @@
+#!/bin/bash
+#
+# ANSI color scheme script featuring PACMAN
+# by pfh
+#
+# Initializing procedure by lolilolicon
+#
+
+f=3 b=4
+for j in f b; do
+ for i in {0..7}; do
+ printf -v $j$i %b "\e[${!j}${i}m"
+ done
+done
+bld=$'\e[1m'
+rst=$'\e[0m'
+inv=$'\e[7m'
+
+
+cat << EOF
+
+$rst
+ $f3 ▄███████▄ $f1 ▄██████▄ $f2 ▄██████▄ $f4 ▄██████▄ $f5 ▄██████▄ $f6 ▄██████▄
+ $f3▄█████████▀▀ $f1▄$f7█▀█$f1██$f7█▀█$f1██▄ $f2▄█$f7███$f2██$f7███$f2█▄ $f4▄█$f7███$f4██$f7███$f4█▄ $f5▄█$f7███$f5██$f7███$f5█▄ $f6▄██$f7█▀█$f6██$f7█▀█$f6▄
+ $f3███████▀ $f7▄▄ ▄▄ ▄▄ $f1█$f7▄▄█$f1██$f7▄▄█$f1███ $f2██$f7█ █$f2██$f7█ █$f2██ $f4██$f7█ █$f4██$f7█ █$f4██ $f5██$f7█ █$f5██$f7█ █$f5██ $f6███$f7█▄▄$f6██$f7█▄▄$f6█
+ $f3███████▄ $f7▀▀ ▀▀ ▀▀ $f1████████████ $f2████████████ $f4████████████ $f5████████████ $f6████████████
+ $f3▀█████████▄▄ $f1██▀██▀▀██▀██ $f2██▀██▀▀██▀██ $f4██▀██▀▀██▀██ $f5██▀██▀▀██▀██ $f6██▀██▀▀██▀██
+ $f3 ▀███████▀ $f1▀ ▀ ▀ ▀ $f2▀ ▀ ▀ ▀ $f4▀ ▀ ▀ ▀ $f5▀ ▀ ▀ ▀ $f6▀ ▀ ▀ ▀
+$bld
+ $f3 ▄███████▄ $f1 ▄██████▄ $f2 ▄██████▄ $f4 ▄██████▄ $f5 ▄██████▄ $f6 ▄██████▄
+ $f3▄█████████▀▀ $f1▄$f7█▀█$f1██$f7█▀█$f1██▄ $f2▄█$f7█ █$f2██$f7█ █$f2█▄ $f4▄█$f7█ █$f4██$f7█ █$f4█▄ $f5▄█$f7█ █$f5██$f7█ █$f5█▄ $f6▄██$f7█▀█$f6██$f7█▀█$f6▄
+ $f3███████▀ $f7▄▄ ▄▄ ▄▄ $f1█$f7▄▄█$f1██$f7▄▄█$f1███ $f2██$f7███$f2██$f7███$f2██ $f4██$f7███$f4██$f7███$f4██ $f5██$f7███$f5██$f7███$f5██ $f6███$f7█▄▄$f6██$f7█▄▄$f6█
+ $f3███████▄ $f7▀▀ ▀▀ ▀▀ $f1████████████ $f2████████████ $f4████████████ $f5████████████ $f6████████████
+ $f3▀█████████▄▄ $f1██▀██▀▀██▀██ $f2██▀██▀▀██▀██ $f4██▀██▀▀██▀██ $f5██▀██▀▀██▀██ $f6██▀██▀▀██▀██
+ $f3 ▀███████▀ $f1▀ ▀ ▀ ▀ $f2▀ ▀ ▀ ▀ $f4▀ ▀ ▀ ▀ $f5▀ ▀ ▀ ▀ $f6▀ ▀ ▀ ▀
+$rst
+EOF
diff --git a/fun/pipes b/fun/pipes
new file mode 100755
index 0000000..5cc366e
--- /dev/null
+++ b/fun/pipes
@@ -0,0 +1,108 @@
+#!/bin/bash
+# The author of the original script is unknown to me. The first entry I can
+# find was posted at 2010-03-21 09:50:09 on Arch Linux Forums (doesn't mean the
+# poster is the author at all):
+#
+# https://bbs.archlinux.org/viewtopic.php?pid=728932#p728932
+#
+# I, Yu-Jie Lin, made a few changes and additions:
+#
+# -p, -t, -R, and -C
+#
+# Screenshot: http://flic.kr/p/dRnLVj
+# Screencast: http://youtu.be/5XnGSFg_gTk
+#
+# And push the commits to Gist:
+#
+# https://gist.github.com/4689307
+#
+# I, Devin Samarin, made a few changes and additions:
+#
+# -r can be 0 to mean "no limit".
+# Reset cursor visibility after done.
+# Cleanup for those people who want to quit with ^C
+#
+# Pushed the changes to https://gist.github.com/4725048
+
+p=1
+f=75 s=13 r=2000 t=0
+w=$(tput cols) h=$(tput lines)
+# ab -> idx = a*4 + b
+# 0: up, 1: right, 2: down, 3: left
+# 00 means going up , then going up -> ┃
+# 12 means going right, then going down -> ┓
+sets=(
+ "┃┏ ┓┛━┓ ┗┃┛┗ ┏━"
+ "│╭ ╮╯─╮ ╰│╯╰ ╭─"
+ "│┌ ┐┘─┐ └│┘└ ┌─"
+ "║╔ ╗╝═╗ ╚║╝╚ ╔═"
+)
+v="${sets[0]}"
+RNDSTART=0
+NOCOLOR=0
+
+OPTIND=1
+while getopts "p:t:f:s:r:RCh" arg; do
+case $arg in
+ p) ((p=(OPTARG>0)?OPTARG:p));;
+ t) ((OPTARG>=0 && OPTARG<${#sets[@]})) && v="${sets[OPTARG]}";;
+ f) ((f=(OPTARG>19 && OPTARG<101)?OPTARG:f));;
+ s) ((s=(OPTARG>4 && OPTARG<16 )?OPTARG:s));;
+ r) ((r=(OPTARG>=0)?OPTARG:r));;
+ R) RNDSTART=1;;
+ C) NOCOLOR=1;;
+ h) echo -e "Usage: $(basename $0) [OPTION]..."
+ echo -e "Animated pipes terminal screensaver.\n"
+ echo -e " -p [1-]\tnumber of pipes (D=1)."
+ echo -e " -t [0-$((${#sets[@]} - 1))]\ttype of pipes (D=0)."
+ echo -e " -f [20-100]\tframerate (D=75)."
+ echo -e " -s [5-15]\tprobability of a straight fitting (D=13)."
+ echo -e " -r LIMIT\treset after x characters, 0 if no limit (D=2000)."
+ echo -e " -R \t\trandom starting point."
+ echo -e " -C \t\tno color."
+ echo -e " -h\t\thelp (this screen).\n"
+ exit 0;;
+ esac
+done
+
+cleanup() {
+ tput rmcup
+ tput cnorm
+ exit 0
+}
+trap cleanup SIGHUP SIGINT SIGTERM
+
+for (( i=1; i<=p; i++ )); do
+ c[i]=$((i%8)) n[i]=0 l[i]=0
+ ((x[i]=RNDSTART==1?RANDOM*w/32768:w/2))
+ ((y[i]=RNDSTART==1?RANDOM*h/32768:h/2))
+done
+
+tput smcup
+tput reset
+tput civis
+while ! read -t0.0$((1000/f)) -n1; do
+ for (( i=1; i<=p; i++ )); do
+ # New position:
+ ((${l[i]}%2)) && ((x[i]+=-${l[i]}+2,1)) || ((y[i]+=${l[i]}-1))
+
+ # Loop on edges (change color on loop):
+ ((${x[i]}>w||${x[i]}<0||${y[i]}>h||${y[i]}<0)) && ((c[i]=RANDOM%8))
+ ((x[i]=(x[i]+w)%w))
+ ((y[i]=(y[i]+h)%h))
+
+ # New random direction:
+ ((n[i]=RANDOM%s-1))
+ ((n[i]=(${n[i]}>1||${n[i]}==0)?${l[i]}:${l[i]}+${n[i]}))
+ ((n[i]=(${n[i]}<0)?3:${n[i]}%4))
+
+ # Print:
+ tput cup ${y[i]} ${x[i]}
+ [[ $NOCOLOR == 0 ]] && echo -ne "\033[1;3${c[i]}m"
+ echo -n "${v:l[i]*4+n[i]:1}"
+ l[i]=${n[i]}
+ done
+ ((r>0 && t*p>=r)) && tput reset && tput civis && t=0 || ((t++))
+done
+
+cleanup \ No newline at end of file
diff --git a/fun/pipes.sh b/fun/pipes.sh
new file mode 100644
index 0000000..5cc366e
--- /dev/null
+++ b/fun/pipes.sh
@@ -0,0 +1,108 @@
+#!/bin/bash
+# The author of the original script is unknown to me. The first entry I can
+# find was posted at 2010-03-21 09:50:09 on Arch Linux Forums (doesn't mean the
+# poster is the author at all):
+#
+# https://bbs.archlinux.org/viewtopic.php?pid=728932#p728932
+#
+# I, Yu-Jie Lin, made a few changes and additions:
+#
+# -p, -t, -R, and -C
+#
+# Screenshot: http://flic.kr/p/dRnLVj
+# Screencast: http://youtu.be/5XnGSFg_gTk
+#
+# And push the commits to Gist:
+#
+# https://gist.github.com/4689307
+#
+# I, Devin Samarin, made a few changes and additions:
+#
+# -r can be 0 to mean "no limit".
+# Reset cursor visibility after done.
+# Cleanup for those people who want to quit with ^C
+#
+# Pushed the changes to https://gist.github.com/4725048
+
+p=1
+f=75 s=13 r=2000 t=0
+w=$(tput cols) h=$(tput lines)
+# ab -> idx = a*4 + b
+# 0: up, 1: right, 2: down, 3: left
+# 00 means going up , then going up -> ┃
+# 12 means going right, then going down -> ┓
+sets=(
+ "┃┏ ┓┛━┓ ┗┃┛┗ ┏━"
+ "│╭ ╮╯─╮ ╰│╯╰ ╭─"
+ "│┌ ┐┘─┐ └│┘└ ┌─"
+ "║╔ ╗╝═╗ ╚║╝╚ ╔═"
+)
+v="${sets[0]}"
+RNDSTART=0
+NOCOLOR=0
+
+OPTIND=1
+while getopts "p:t:f:s:r:RCh" arg; do
+case $arg in
+ p) ((p=(OPTARG>0)?OPTARG:p));;
+ t) ((OPTARG>=0 && OPTARG<${#sets[@]})) && v="${sets[OPTARG]}";;
+ f) ((f=(OPTARG>19 && OPTARG<101)?OPTARG:f));;
+ s) ((s=(OPTARG>4 && OPTARG<16 )?OPTARG:s));;
+ r) ((r=(OPTARG>=0)?OPTARG:r));;
+ R) RNDSTART=1;;
+ C) NOCOLOR=1;;
+ h) echo -e "Usage: $(basename $0) [OPTION]..."
+ echo -e "Animated pipes terminal screensaver.\n"
+ echo -e " -p [1-]\tnumber of pipes (D=1)."
+ echo -e " -t [0-$((${#sets[@]} - 1))]\ttype of pipes (D=0)."
+ echo -e " -f [20-100]\tframerate (D=75)."
+ echo -e " -s [5-15]\tprobability of a straight fitting (D=13)."
+ echo -e " -r LIMIT\treset after x characters, 0 if no limit (D=2000)."
+ echo -e " -R \t\trandom starting point."
+ echo -e " -C \t\tno color."
+ echo -e " -h\t\thelp (this screen).\n"
+ exit 0;;
+ esac
+done
+
+cleanup() {
+ tput rmcup
+ tput cnorm
+ exit 0
+}
+trap cleanup SIGHUP SIGINT SIGTERM
+
+for (( i=1; i<=p; i++ )); do
+ c[i]=$((i%8)) n[i]=0 l[i]=0
+ ((x[i]=RNDSTART==1?RANDOM*w/32768:w/2))
+ ((y[i]=RNDSTART==1?RANDOM*h/32768:h/2))
+done
+
+tput smcup
+tput reset
+tput civis
+while ! read -t0.0$((1000/f)) -n1; do
+ for (( i=1; i<=p; i++ )); do
+ # New position:
+ ((${l[i]}%2)) && ((x[i]+=-${l[i]}+2,1)) || ((y[i]+=${l[i]}-1))
+
+ # Loop on edges (change color on loop):
+ ((${x[i]}>w||${x[i]}<0||${y[i]}>h||${y[i]}<0)) && ((c[i]=RANDOM%8))
+ ((x[i]=(x[i]+w)%w))
+ ((y[i]=(y[i]+h)%h))
+
+ # New random direction:
+ ((n[i]=RANDOM%s-1))
+ ((n[i]=(${n[i]}>1||${n[i]}==0)?${l[i]}:${l[i]}+${n[i]}))
+ ((n[i]=(${n[i]}<0)?3:${n[i]}%4))
+
+ # Print:
+ tput cup ${y[i]} ${x[i]}
+ [[ $NOCOLOR == 0 ]] && echo -ne "\033[1;3${c[i]}m"
+ echo -n "${v:l[i]*4+n[i]:1}"
+ l[i]=${n[i]}
+ done
+ ((r>0 && t*p>=r)) && tput reset && tput civis && t=0 || ((t++))
+done
+
+cleanup \ No newline at end of file
diff --git a/fun/pipesx b/fun/pipesx
new file mode 100755
index 0000000..02ed325
--- /dev/null
+++ b/fun/pipesx
@@ -0,0 +1,159 @@
+#!/bin/bash
+W=$(tput cols) H=$(tput lines)
+# maximal random value + 1
+M=32768
+
+SETS=('╱╲' '/\')
+COLORS=(31 32 33 34 35 36 37)
+
+# default values
+N=1
+T=0
+I=0.05
+P=25
+R=$((W * H / 4))
+
+HELP="Usage: $(basename $0) [OPTIONS]
+Animated pipes.sh terminal screensaver at an angle.
+
+Options:
+
+ -n [1-] number of pipes. (Default: $N)
+ -t [0-$((${#SETS[@]} - 1))] type of pipes. (Default: $T)
+ -i [float] piping interval or maze generation interval. (Default: $I)
+ -P [0-100] probability of a turning pipe or of \\ in maze generation. (Default: $P)
+ -r [LIMIT] reset after x characters, 0 if no limit. (Default: $R)
+ -R random starting point.
+ -C no color.
+ -X maze generation.
+ -h this help message.
+"
+
+while getopts "n:t:i:P:r:RCXh" arg; do
+ case $arg in
+ n)
+ ((N = OPTARG > 0 ? OPTARG : N))
+ ;;
+ t)
+ ((T = (OPTARG >= 0 && OPTARG < ${#SETS[@]}) ? OPTARG : T))
+ ;;
+ i)
+ I=$OPTARG
+ ;;
+ P)
+ ((P = (OPTARG >= 0 && OPTARG <= 100) ? OPTARG : P))
+ ;;
+ r)
+ ((R = OPTARG >= 0 ? OPTARG : R))
+ ;;
+ R)
+ RNDSTART=1
+ ;;
+ C)
+ NOCOLOR=1
+ ;;
+ X)
+ MAZE=1
+ ;;
+ h)
+ echo -e "$HELP"
+ exit 0
+ ;;
+ esac
+done
+
+do_exit() {
+ # Show cursor and echo stdin
+ echo -ne "\e[?25h"
+ stty echo
+ clear
+ exit 0
+ }
+trap do_exit INT TERM
+
+# No echo stdin and hide the cursor
+stty -echo
+echo -ne "\e[?25l"
+
+# maze geneartion
+while [[ $MAZE ]] && clear; do
+ [[ $NOCOLOR ]] || echo -ne "\e[1;${COLORS[${#COLORS[@]} * RANDOM / M]}m"
+ for ((i = 0; i < W * H; i++ )); do
+ echo -ne ${SETS[T]:100 * RANDOM / M < P:1}
+ done
+ read -t $I -n 1 && [[ $REPLY =~ q|Q ]] && do_exit
+done
+
+# initialze values
+for ((n = 0; n < N; n++)); do
+ ((X[n] = RNDSTART ? (W + 2) * RANDOM / M : W / 2))
+ ((Y[n] = RNDSTART ? (H + 2) * RANDOM / M : H / 2))
+ D[n]=$((4 * RANDOM / M))
+ C[n]=${COLORS[${#COLORS[@]} * RANDOM / M]}
+done
+
+clear
+while :; do
+ for ((n = 0; n < N; n++, CC = 0)); do
+ x=${X[n]} y=${Y[n]}
+ d=${D[n]} c=${C[n]}
+
+ # calculate new direction `d`
+ # 1 0
+ # \/ 4 directions 0 to 3
+ # /\
+ # 2 3
+ # valid directions: d: dd', d' is the new direction
+ # d
+ # 0: / 00 \ 01 03
+ # / / /\
+ # 1: / 10 \ 11 12
+ # \ \ /\
+ # 2: \/ 21 / 22 / 23
+ # / \
+ # 3: \/ 30 \ 32 \ 33
+ # / \
+ ((d = (100 * RANDOM / M) < P ? ((d + 1) + 2 * (RANDOM % 2)) % 4 : d))
+ ((e = (d + 1) % 4))
+
+ # calculate new position
+ # d' x' y'
+ # 0: x+1 y-1
+ # 1: x-1 y-1
+ # 2: x-1 y+1
+ # 3: x+1 y+1
+ ((xn = e < 2 ? x + 1 : x - 1))
+ ((yn = d < 2 ? y - 1 : y + 1))
+
+ # adjust position and change color?
+ ((d < 2 && y == 0)) && ((yn--, CC=1))
+ ((e > 1 && x == 0)) && ((xn--, CC=1))
+ ((d > 1 && y == H)) && ((yn++, CC=1))
+ ((e < 2 && x == W)) && ((xn++, CC=1))
+ ((CC)) && c=${COLORS[${#COLORS[@]} * RANDOM / M]}
+
+ # warp pipe
+ ((xn = (xn + W + 1) % (W + 1)))
+ ((yn = (yn + H + 1) % (H + 1)))
+
+ # calculate position in terminal
+ # d' xt yt
+ # 0: x' y'+1
+ # 1: x'+1 y'+1
+ # 2: x'+1 y'
+ # 3: x' y'
+ ((xt = e < 2 ? xn : xn + 1))
+ ((yt = d < 2 ? yn + 1 : yn))
+
+ echo -ne "\e[${yt};${xt}H"
+ [[ $NOCOLOR ]] || echo -ne "\e[1;${c}m"
+ echo -n "${SETS[T]:d%2:1}"
+
+ X[n]=$xn Y[n]=$yn
+ D[n]=$d C[n]=$c
+ done
+ read -t $I -n 1 && [[ $REPLY =~ q|Q ]] && do_exit
+ ((R)) && ((r += N, r >= R)) && r=0 && clear
+done
+
+do_exit \ No newline at end of file
diff --git a/fun/pipesx.sh b/fun/pipesx.sh
new file mode 100644
index 0000000..02ed325
--- /dev/null
+++ b/fun/pipesx.sh
@@ -0,0 +1,159 @@
+#!/bin/bash
+W=$(tput cols) H=$(tput lines)
+# maximal random value + 1
+M=32768
+
+SETS=('╱╲' '/\')
+COLORS=(31 32 33 34 35 36 37)
+
+# default values
+N=1
+T=0
+I=0.05
+P=25
+R=$((W * H / 4))
+
+HELP="Usage: $(basename $0) [OPTIONS]
+Animated pipes.sh terminal screensaver at an angle.
+
+Options:
+
+ -n [1-] number of pipes. (Default: $N)
+ -t [0-$((${#SETS[@]} - 1))] type of pipes. (Default: $T)
+ -i [float] piping interval or maze generation interval. (Default: $I)
+ -P [0-100] probability of a turning pipe or of \\ in maze generation. (Default: $P)
+ -r [LIMIT] reset after x characters, 0 if no limit. (Default: $R)
+ -R random starting point.
+ -C no color.
+ -X maze generation.
+ -h this help message.
+"
+
+while getopts "n:t:i:P:r:RCXh" arg; do
+ case $arg in
+ n)
+ ((N = OPTARG > 0 ? OPTARG : N))
+ ;;
+ t)
+ ((T = (OPTARG >= 0 && OPTARG < ${#SETS[@]}) ? OPTARG : T))
+ ;;
+ i)
+ I=$OPTARG
+ ;;
+ P)
+ ((P = (OPTARG >= 0 && OPTARG <= 100) ? OPTARG : P))
+ ;;
+ r)
+ ((R = OPTARG >= 0 ? OPTARG : R))
+ ;;
+ R)
+ RNDSTART=1
+ ;;
+ C)
+ NOCOLOR=1
+ ;;
+ X)
+ MAZE=1
+ ;;
+ h)
+ echo -e "$HELP"
+ exit 0
+ ;;
+ esac
+done
+
+do_exit() {
+ # Show cursor and echo stdin
+ echo -ne "\e[?25h"
+ stty echo
+ clear
+ exit 0
+ }
+trap do_exit INT TERM
+
+# No echo stdin and hide the cursor
+stty -echo
+echo -ne "\e[?25l"
+
+# maze geneartion
+while [[ $MAZE ]] && clear; do
+ [[ $NOCOLOR ]] || echo -ne "\e[1;${COLORS[${#COLORS[@]} * RANDOM / M]}m"
+ for ((i = 0; i < W * H; i++ )); do
+ echo -ne ${SETS[T]:100 * RANDOM / M < P:1}
+ done
+ read -t $I -n 1 && [[ $REPLY =~ q|Q ]] && do_exit
+done
+
+# initialze values
+for ((n = 0; n < N; n++)); do
+ ((X[n] = RNDSTART ? (W + 2) * RANDOM / M : W / 2))
+ ((Y[n] = RNDSTART ? (H + 2) * RANDOM / M : H / 2))
+ D[n]=$((4 * RANDOM / M))
+ C[n]=${COLORS[${#COLORS[@]} * RANDOM / M]}
+done
+
+clear
+while :; do
+ for ((n = 0; n < N; n++, CC = 0)); do
+ x=${X[n]} y=${Y[n]}
+ d=${D[n]} c=${C[n]}
+
+ # calculate new direction `d`
+ # 1 0
+ # \/ 4 directions 0 to 3
+ # /\
+ # 2 3
+ # valid directions: d: dd', d' is the new direction
+ # d
+ # 0: / 00 \ 01 03
+ # / / /\
+ # 1: / 10 \ 11 12
+ # \ \ /\
+ # 2: \/ 21 / 22 / 23
+ # / \
+ # 3: \/ 30 \ 32 \ 33
+ # / \
+ ((d = (100 * RANDOM / M) < P ? ((d + 1) + 2 * (RANDOM % 2)) % 4 : d))
+ ((e = (d + 1) % 4))
+
+ # calculate new position
+ # d' x' y'
+ # 0: x+1 y-1
+ # 1: x-1 y-1
+ # 2: x-1 y+1
+ # 3: x+1 y+1
+ ((xn = e < 2 ? x + 1 : x - 1))
+ ((yn = d < 2 ? y - 1 : y + 1))
+
+ # adjust position and change color?
+ ((d < 2 && y == 0)) && ((yn--, CC=1))
+ ((e > 1 && x == 0)) && ((xn--, CC=1))
+ ((d > 1 && y == H)) && ((yn++, CC=1))
+ ((e < 2 && x == W)) && ((xn++, CC=1))
+ ((CC)) && c=${COLORS[${#COLORS[@]} * RANDOM / M]}
+
+ # warp pipe
+ ((xn = (xn + W + 1) % (W + 1)))
+ ((yn = (yn + H + 1) % (H + 1)))
+
+ # calculate position in terminal
+ # d' xt yt
+ # 0: x' y'+1
+ # 1: x'+1 y'+1
+ # 2: x'+1 y'
+ # 3: x' y'
+ ((xt = e < 2 ? xn : xn + 1))
+ ((yt = d < 2 ? yn + 1 : yn))
+
+ echo -ne "\e[${yt};${xt}H"
+ [[ $NOCOLOR ]] || echo -ne "\e[1;${c}m"
+ echo -n "${SETS[T]:d%2:1}"
+
+ X[n]=$xn Y[n]=$yn
+ D[n]=$d C[n]=$c
+ done
+ read -t $I -n 1 && [[ $REPLY =~ q|Q ]] && do_exit
+ ((R)) && ((r += N, r >= R)) && r=0 && clear
+done
+
+do_exit \ No newline at end of file
diff --git a/fun/rain b/fun/rain
new file mode 100755
index 0000000..8a8d8f6
--- /dev/null
+++ b/fun/rain
@@ -0,0 +1,100 @@
+#!/bin/bash
+RAINS=("|" "│" "┃" "┆" "┇" "┊" "┋" "╽" "╿")
+COLORS=("\e[37m" "\e[37;1m")
+# More from 256 color mode
+for i in {244..255}; do
+ COLORS=("${COLORS[@]}" "\e[38;5;${i}m")
+done
+NRAINS=${#RAINS[@]}
+NCOLORS=${#COLORS[@]}
+NUM_RAIN_METADATA=5
+
+
+sigwinch() {
+ TERM_WIDTH=$(tput cols)
+ TERM_HEIGHT=$(tput lines)
+ STEP_DURATION=0.025
+ ((MAX_RAINS = TERM_WIDTH * TERM_HEIGHT / 4))
+ ((MAX_RAIN_LENGTH = TERM_HEIGHT < 10 ? 1 : TERM_HEIGHT / 10))
+ # In percentage
+ ((NEW_RAIN_ODD = TERM_HEIGHT > 50 ? 100 : TERM_HEIGHT * 2))
+ ((NEW_RAIN_ODD = NEW_RAIN_ODD * 75 / 100))
+ ((FALLING_ODD = TERM_HEIGHT > 25 ? 100 : TERM_HEIGHT * 4))
+ ((FALLING_ODD = FALLING_ODD * 90 / 100))
+ }
+
+do_exit() {
+ echo -ne "\e[${TERM_HEIGHT};1H\e[0K"
+
+ # Show cursor and echo stdin
+ echo -ne "\e[?25h"
+ stty echo
+ exit 0
+ }
+
+do_render() {
+ # Clean screen first
+ for ((idx = 0; idx < num_rains * NUM_RAIN_METADATA; idx += NUM_RAIN_METADATA)); do
+ X=${rains[idx]}
+ Y=${rains[idx + 1]}
+ LENGTH=${rains[idx + 4]}
+ for ((y = Y; y < Y + LENGTH; y++)); do
+ (( y < 1 || y > TERM_HEIGHT )) && continue
+ echo -ne "\e[${y};${X}H "
+ done
+ done
+
+ for ((idx = 0; idx < num_rains * NUM_RAIN_METADATA; idx += NUM_RAIN_METADATA)); do
+ if ((100 * RANDOM / 32768 < FALLING_ODD)); then
+ # Falling
+ if ((++rains[idx + 1] > TERM_HEIGHT)); then
+ # Out of screen, bye sweet <3
+ rains=("${rains[@]:0:idx}"
+ "${rains[@]:idx+NUM_RAIN_METADATA:num_rains*NUM_RAIN_METADATA}")
+ ((num_rains--))
+ continue
+ fi
+ fi
+ X=${rains[idx]}
+ Y=${rains[idx + 1]}
+ RAIN=${rains[idx + 2]}
+ COLOR=${rains[idx + 3]}
+ LENGTH=${rains[idx + 4]}
+ for ((y = Y; y < Y + LENGTH; y++)); do
+ (( y < 1 || y > TERM_HEIGHT )) && continue
+ echo -ne "\e[${y};${X}H${COLOR}${RAIN}"
+ done
+ done
+ }
+
+trap do_exit TERM INT
+trap sigwinch WINCH
+# No echo stdin and hide the cursor
+stty -echo
+echo -ne "\e[?25l"
+
+echo -ne "\e[2J"
+rains=()
+sigwinch
+while :; do
+ read -n 1 -t $STEP_DURATION ch
+ case "$ch" in
+ q|Q)
+ do_exit
+ ;;
+ esac
+
+ if ((num_rains < MAX_RAINS)) && ((100 * RANDOM / 32768 < NEW_RAIN_ODD)); then
+ # Need new |, 1-based
+ RAIN="${RAINS[NRAINS * RANDOM / 32768]}"
+ COLOR="${COLORS[NCOLORS * RANDOM / 32768]}"
+ LENGTH=$((MAX_RAIN_LENGTH * RANDOM / 32768 + 1))
+ X=$((TERM_WIDTH * RANDOM / 32768 + 1))
+ Y=$((1 - LENGTH))
+ rains=("${rains[@]}" "$X" "$Y" "$RAIN" "$COLOR" "$LENGTH")
+ ((num_rains++))
+ fi
+
+ # Let rain fall!
+ do_render
+done \ No newline at end of file
diff --git a/fun/rain.sh b/fun/rain.sh
new file mode 100644
index 0000000..8a8d8f6
--- /dev/null
+++ b/fun/rain.sh
@@ -0,0 +1,100 @@
+#!/bin/bash
+RAINS=("|" "│" "┃" "┆" "┇" "┊" "┋" "╽" "╿")
+COLORS=("\e[37m" "\e[37;1m")
+# More from 256 color mode
+for i in {244..255}; do
+ COLORS=("${COLORS[@]}" "\e[38;5;${i}m")
+done
+NRAINS=${#RAINS[@]}
+NCOLORS=${#COLORS[@]}
+NUM_RAIN_METADATA=5
+
+
+sigwinch() {
+ TERM_WIDTH=$(tput cols)
+ TERM_HEIGHT=$(tput lines)
+ STEP_DURATION=0.025
+ ((MAX_RAINS = TERM_WIDTH * TERM_HEIGHT / 4))
+ ((MAX_RAIN_LENGTH = TERM_HEIGHT < 10 ? 1 : TERM_HEIGHT / 10))
+ # In percentage
+ ((NEW_RAIN_ODD = TERM_HEIGHT > 50 ? 100 : TERM_HEIGHT * 2))
+ ((NEW_RAIN_ODD = NEW_RAIN_ODD * 75 / 100))
+ ((FALLING_ODD = TERM_HEIGHT > 25 ? 100 : TERM_HEIGHT * 4))
+ ((FALLING_ODD = FALLING_ODD * 90 / 100))
+ }
+
+do_exit() {
+ echo -ne "\e[${TERM_HEIGHT};1H\e[0K"
+
+ # Show cursor and echo stdin
+ echo -ne "\e[?25h"
+ stty echo
+ exit 0
+ }
+
+do_render() {
+ # Clean screen first
+ for ((idx = 0; idx < num_rains * NUM_RAIN_METADATA; idx += NUM_RAIN_METADATA)); do
+ X=${rains[idx]}
+ Y=${rains[idx + 1]}
+ LENGTH=${rains[idx + 4]}
+ for ((y = Y; y < Y + LENGTH; y++)); do
+ (( y < 1 || y > TERM_HEIGHT )) && continue
+ echo -ne "\e[${y};${X}H "
+ done
+ done
+
+ for ((idx = 0; idx < num_rains * NUM_RAIN_METADATA; idx += NUM_RAIN_METADATA)); do
+ if ((100 * RANDOM / 32768 < FALLING_ODD)); then
+ # Falling
+ if ((++rains[idx + 1] > TERM_HEIGHT)); then
+ # Out of screen, bye sweet <3
+ rains=("${rains[@]:0:idx}"
+ "${rains[@]:idx+NUM_RAIN_METADATA:num_rains*NUM_RAIN_METADATA}")
+ ((num_rains--))
+ continue
+ fi
+ fi
+ X=${rains[idx]}
+ Y=${rains[idx + 1]}
+ RAIN=${rains[idx + 2]}
+ COLOR=${rains[idx + 3]}
+ LENGTH=${rains[idx + 4]}
+ for ((y = Y; y < Y + LENGTH; y++)); do
+ (( y < 1 || y > TERM_HEIGHT )) && continue
+ echo -ne "\e[${y};${X}H${COLOR}${RAIN}"
+ done
+ done
+ }
+
+trap do_exit TERM INT
+trap sigwinch WINCH
+# No echo stdin and hide the cursor
+stty -echo
+echo -ne "\e[?25l"
+
+echo -ne "\e[2J"
+rains=()
+sigwinch
+while :; do
+ read -n 1 -t $STEP_DURATION ch
+ case "$ch" in
+ q|Q)
+ do_exit
+ ;;
+ esac
+
+ if ((num_rains < MAX_RAINS)) && ((100 * RANDOM / 32768 < NEW_RAIN_ODD)); then
+ # Need new |, 1-based
+ RAIN="${RAINS[NRAINS * RANDOM / 32768]}"
+ COLOR="${COLORS[NCOLORS * RANDOM / 32768]}"
+ LENGTH=$((MAX_RAIN_LENGTH * RANDOM / 32768 + 1))
+ X=$((TERM_WIDTH * RANDOM / 32768 + 1))
+ Y=$((1 - LENGTH))
+ rains=("${rains[@]}" "$X" "$Y" "$RAIN" "$COLOR" "$LENGTH")
+ ((num_rains++))
+ fi
+
+ # Let rain fall!
+ do_render
+done \ No newline at end of file
diff --git a/fun/screenfetch b/fun/screenfetch
new file mode 100755
index 0000000..70fc4d8
--- /dev/null
+++ b/fun/screenfetch
@@ -0,0 +1,1378 @@
+#!/bin/bash
+#
+# screenFetch (v2.4.0)
+#
+# Script to fetch system and theme settings for screenshots in most mainstream
+# Linux distributions.
+#
+# This script is released under the General Public License (GPL). Though it's open
+# source and you are free to do with it as you please, I would appreciate if you would
+# send any code modifications/additions upstream to me so that I can include them in
+# the official release. Please do not claim this code as your own as I have worked
+# very hard on this and am quite proud to call this script my own.
+#
+# Yes, I do realize some of this is horribly ugly coding. Any ideas/suggestions would be
+# appreciated by emailing me or by stopping by http://github.com/KittyKatt/screenFetch . You
+# could also drop in on my IRC network, SilverIRC, at irc://kittykatt.silverirc.com:6667/meowz
+# to put forth suggestions/ideas. Thank you.
+#
+
+scriptVersion="2.4.0"
+
+######################
+# Settings for fetcher
+######################
+
+# This setting controls what ASCII logo is displayed. Available: Arch Linux (Old and Current Logos), Linux Mint, Ubuntu, Crunchbang, Debian, Gentoo, Mandrake/Mandriva, Slackware, SUSE, Fedora, BSD, and None
+# distro="Linux"
+
+# This sets the information to be displayed. Available: distro, Kernel, DE, WM, Win_theme, Theme, Icons, Font, Background, ASCII. To get just the information, and not a text-art logo, you would take "ASCII" out of the below variable.
+#display="host distro kernel uptime shell res de wm wmtheme gtk icons font background"
+display=( host distro kernel uptime pkgs shell res de wm wmtheme gtk cpu mem )
+# Display Type: ASCII or Text
+display_type="ASCII"
+
+# Colors to use for the information found. These are set below according to distribution. If you would like to set your OWN color scheme for these, uncomment the lines below and edit them to your heart's content.
+# textcolor="\e[0m"
+# labelcolor="\e[1;34m"
+
+# WM & DE process names
+# Removed WM's: compiz
+wmnames="fluxbox openbox blackbox xfwm4 metacity kwin icewm pekwm fvwm dwm awesome wmaker stumpwm xmonad musca i3 ratpoison scrotwm wmfs wmii beryl subtle e16 enlightenment sawfish emerald monsterwm dminiwm"
+denames="gnome-session xfce-mcs-manage xfce4-session xfconfd ksmserver lxsession gnome-settings-daemon mate-session mate-settings-daemon"
+
+# Export theme settings
+# screenFetch has the capability (on some WM's and GTK) to export your GTK and WM settings to an archive. Specify Yes if you want this and No if you do not.
+exportTheme=
+
+# Screenshot Settings
+# This setting lets the script know if you want to take a screenshot or not. 1=Yes 0=No
+screenshot=
+# You can specify a custom screenshot command here. Just uncomment and edit. Otherwise, we'll be using the default command: scrot -cd3.
+# screenCommand="scrot -cd5"
+hostshot=
+baseurl="http://www.example.com"
+serveraddr="www.example.com"
+scptimeout="20"
+serverdir="/path/to/directory"
+shotfile=$(echo "screenFetch-`date +'%Y-%m-%d_%H-%M-%S'`.png")
+
+# Verbose Setting - Set to 1 for verbose output.
+verbosity=
+
+verboseOut () {
+ echo -e "\e[1;31m:: \e[0m$1"
+}
+
+errorOut () {
+ echo -e "\e[1;37m[[ \e[1;31m! \e[1;37m]] \e[0m$1"
+}
+
+#############################################
+#### CODE No need to edit past here CODE ####
+#############################################
+
+####################
+# Static Variables
+####################
+c0="\e[0m" # Reset Text
+bold="\e[1m" # Bold Text
+underline="\e[4m" # Underline Text
+display_index=0
+
+#####################
+# Begin Flags Phase
+#####################
+
+while getopts ":hsmevVntlc:D:o:B" flags; do
+ case $flags in
+ h)
+ echo -e "${underline}Usage${c0}:"
+ echo -e " screenFetch [OPTIONAL FLAGS]"
+ echo ""
+ echo "screenFetch - a CLI Bash script to show system/theme info in screenshots."
+ echo ""
+ echo -e "${underline}Supported Distributions${c0}: Arch Linux (Old and Current Logos), Linux Mint,"
+ echo -e " LMDE, Ubuntu, Crunchbang, Debian, Gentoo, Fedora, SolusOS,"
+ echo -e " Mandrake/Mandriva, Slackware, Frugalware, openSUSE, Mageia,"
+ echo -e " Peppermint, and BSD"
+ echo -e "${underline}Supported Desktop Managers${c0}: KDE, GNOME, XFCE, and LXDE, and Not Present"
+ echo -e "${underline}Supported Window Managers${c0}: PekWM, OpenBox, FluxBox, BlackBox, Xfwm4,"
+ echo -e " Metacity, StumpWM, KWin, IceWM, FVWM,"
+ echo -e " DWM, Awesome, XMonad, Musca, i3, WindowMaker,"
+ echo -e " Ratpoison, wmii, WMFS, ScrotWM, subtle,"
+ echo -e " Emerald, E17 and Beryl."
+ echo ""
+ echo -e "${underline}Options${c0}:"
+ echo -e " ${bold}-v${c0} Verbose output."
+ echo -e " ${bold}-o 'OPTIONS'${c0} Allows for setting script variables on the"
+ echo -e " command line. Must be in the following format..."
+ echo -e " 'OPTION1=\"OPTIONARG1\";OPTION2=\"OPTIONARG2\"'"
+ #echo -e " ${bold}-d 'ARGUMENTS'${c0} Allows for setting what information is displayed"
+ #echo -e " on the command line. Format must be as follows:"
+ #echo -e " 'OPTION OPTION OPTION OPTION'. Valid options are"
+ #echo -e " host, distro, Kernel, Uptime, Shell, Resolution, DE, WM,"
+ #echo -e " Win_theme, Theme, Icons, Font, ASCII, Background."
+ echo -e " ${bold}-n${c0} Do no display ASCII distribution logo."
+ echo -e " ${bold}-t${c0} Truncate output based on terminal width (Experimental!)."
+ echo -e " ${bold}-s(m)${c0} Using this flag tells the script that you want it"
+ echo -e " to take a screenshot. Use the -m flag if you would like"
+ echo -e " to move it to a new location afterwards."
+ echo -e " ${bold}-B${c0} Enable background detection."
+ echo -e " ${bold}-e${c0} When this flag is specified, screenFetch will attempt"
+ echo -e " to export all of your theme settings and archive them"
+ echo -e " up for uploading."
+ echo -e " ${bold}-l${c0} Specify that you have a light background. This turns"
+ echo -e " all white text into dark gray text (in ascii logos and"
+ echo -e " in information output)."
+ echo -e " ${bold}-c 'COMMAND'${c0} Here you can specify a custom screenshot command for"
+ echo -e " the script to execute. Surrounding quotes are required."
+ echo -e " ${bold}-D 'DISTRO'${c0} Here you can specify your distribution for the script"
+ echo -e " to use. Surrounding quotes are required."
+ echo -e " ${bold}-V${c0} Display current script version."
+ echo -e " ${bold}-h${c0} Display this help."
+ exit
+ ;;
+ s) screenshot=1; continue;;
+ m) hostshot=1; continue;;
+ e) exportTheme=1; continue;;
+ v) verbosity=1; continue;;
+ V)
+ echo -e $underline"screenFetch"$c0" - Version $scriptVersion"
+ echo "Copyright (C) Brett Bohnenkamper (kittykatt@silverirc.com)"
+ echo ""
+ echo "This is free software; see the source for copying conditions. There is NO warranty; not even MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+ exit
+ ;;
+ D) distro=$OPTARG; continue;;
+ t) truncateSet="Yes";;
+ c) screenCommand=$OPTARG; continue;;
+ n) display_type="Text";;
+ o) overrideOpts=$OPTARG; continue;;
+ # d) overrideDisplay=$OPTARG; continue;;
+ l) c1="\e[1;30m";;
+ # B) background_detect="1"; continue;;
+ :) errorOut "Error: You're missing an argument somewhere. Exiting."; exit;;
+ ?) errorOut "Error: Invalid flag somewhere. Exiting."; exit;;
+ *) errorOut "Error"; exit;;
+ esac
+done
+
+###################
+# End Flags Phase
+###################
+
+
+####################
+# Override Options
+####################
+
+if [[ "$overrideOpts" ]]; then
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Found 'o' flag in syntax. Overriding some script variables..."
+ OLD_IFS="$IFS"
+ IFS=";"
+ for overopt in "$overrideOpts"; do
+ eval "$overrideOpts"
+ done
+ IFS="$OLD_IFS"
+fi
+#if [[ "$overrideDisplay" ]]; then
+# [[ "$verbosity" -eq "1" ]] && verboseOut "Found 'd' flag in syntax. Overriding some display options..."
+# display="$overrideDisplay"
+#fi
+
+
+#########################
+# Begin Detection Phase
+#########################
+
+
+# Host and User detection - Begin
+detecthost () {
+ myUser=$(echo "$USER")
+ myHost=$(hostname)
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Finding hostname and user...found as '$myUser@$myHost'"
+}
+
+
+#########################
+# Begin Detection Phase
+#########################
+
+
+# Host and User detection - Begin
+detecthost () {
+ myUser=$(echo "$USER")
+ # net-tools is becoming deprecated
+ # myHost=$(hostname)
+ myHost=$(cat /proc/sys/kernel/hostname)
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Finding hostname and user...found as '$myUser@$myHost'"
+}
+
+# Distro Detection - Begin
+detectdistro () {
+ if [[ -z $distro ]]; then
+ distro="Unknown"
+ # LSB Release Check
+ if which lsb_release >/dev/null 2>&1; then
+ distro_detect=$(lsb_release -i | sed -e 's/Distributor ID://' -e 's/\t//g')
+ if [ "$distro_detect" == "Arch" ]; then distro="Arch Linux"; fi
+ if [ "$distro_detect" == "Debian" ]; then distro="CrunchBang"; fi
+ if [ "$distro_detect" == "SolusOS" ]; then
+ distro="SolusOS"
+ distro_codename=null
+ distro_release=null
+ fi
+ if [ "$distro_detect" == "LinuxMint" ]; then distro="Mint"
+ if [ "$(lsb_release -c | sed -e 's/Codename://' -e 's/\t//g')" == "debian" ]; then
+ distro="LMDE"
+ distro_codename=null
+ distro_release=null
+ fi
+ fi
+ if [ "$distro_detect" == "Mageia" ]; then distro="Mageia"; fi
+ if [ "$distro_detect" == "MandrivaLinux" ]; then distro="Mandriva"
+ if [ "$(lsb_release -c | sed -e 's/Codename://' -e 's/\t//g')" == "turtle" ]; then
+ distro="Mandriva"-lsb_release | sed -e 's/Release://' -e 's/\t//g'
+ distro_codename=null
+ fi
+ if [ "$(lsb_release -c | sed -e 's/Codename://' -e 's/\t//g')" == "Henry_Farman" ]; then
+ distro="Mandriva"-lsb_release | sed -e 's/Release://' -e 's/\t//g'
+ distro_codename=null
+ fi
+ if [ "$(lsb_release -c | sed -e 's/Codename://' -e 's/\t//g')" == "Farman" ]; then
+ distro="Mandriva"-lsb_release | sed -e 's/Release://' -e 's/\t//g'
+ distro_codename=null
+ fi
+ if [ "$(lsb_release -c | sed -e 's/Codename://' -e 's/\t//g')" == "Adelie" ]; then
+ distro="Mandriva"-lsb_release | sed -e 's/Release://' -e 's/\t//g'
+ distro_codename=null
+ fi
+ if [ "$(lsb_release -c | sed -e 's/Codename://' -e 's/\t//g')" == "pauillac" ]; then
+ distro="Mandriva"-lsb_release | sed -e 's/Release://' -e 's/\t//g'
+ distro_codename=null
+ fi
+ fi
+ if [ "$distro_detect" == "Fedora" ]; then distro="Fedora"; fi
+ if [ "$distro_detect" == "CrunchBang" ]; then distro="CrunchBang"; fi
+ if [ "$distro_detect" == "Ubuntu" ]; then distro="Ubuntu"; fi
+ if [ "$distro_detect" == "frugalware" ]; then
+ distro="Frugalware"
+ distro_codename=null
+ distro_release=null
+ fi
+ if [ "$distro_detect" == "Peppermint" ]; then
+ distro="Peppermint"
+ distro_codename=null
+ fi
+ if [ "$distro_detect" == "SUSE LINUX" ]; then distro="openSUSE"; fi
+ if [[ $(lsb_release -r | sed -e 's/Release://' -e 's/\t//g') != "n/a" ]] && [[ ! $distro_release ]]; then distro_release=$(lsb_release -r | sed -e 's/Release://' -e 's/\t//g') && distro_more="$distro $distro_release"; fi
+ if [[ $(lsb_release -c | sed -e 's/Codename://' -e 's/\t//g') != "n/a" ]] && [[ ! $distro_codename ]]; then distro_codename=$(lsb_release -c | sed -e 's/Codename://' -e 's/\t//g') && distro_more="$distro $distro_codename"; fi
+ # Check and Parsing for /etc/os-release
+ elif [ -f /etc/os-release ]; then
+ distrib_id=$(awk -F'=' '/^ID/{print $2}' /etc/os-release 2>/dev/null)
+ if [ "$distrib_id" == "frugalware" ]; then distro="Frugalware"; fi
+ # Existing File Check
+ else
+ if [ -f /etc/debian_version ]; then distro="CrunchBang"; fi
+ if grep -i ubuntu /etc/lsb-release >/dev/null 2>&1; then distro="Ubuntu"; fi
+ if grep -i SolusOS /etc/issue >/dev/null 2>&1; then distro="SolusOS"; fi
+ if grep -i mint /etc/lsb-release >/dev/null 2>&1; then
+ if grep -i debian /etc/lsb-release >/dev/null 2>&1; then distro="LMDE"
+ else distro="Mint"; fi
+ fi
+ if [ -f /etc/arch-release ]; then distro="Arch Linux"; fi
+ if [ -f /etc/fedora-release ]; then distro="Fedora"; fi
+ if [ -f /etc/redhat-release ]; then distro="Red Hat Linux"; fi
+ if [ -f /etc/slackware-version ]; then distro="Slackware"; fi
+ if [ -f /etc/SuSE-release ]; then distro="openSUSE"; fi
+ if [ -f /etc/mageia-release ]; then distro="Mageia"; fi
+ if [ -f /etc/mandrake-release ]; then distro="Mandrake"; fi
+ if [ -f /etc/mandriva-release ]; then distro="Mandriva"; fi
+ if [ -f /etc/crunchbang-lsb-release ]; then distro="CrunchBang"; fi
+ if [ -f /etc/gentoo-release ]; then distro="Gentoo"; fi
+ if [ -f /var/run/dmesg.boot ] && grep -i bsd /var/run/dmesg.boot; then distro="BSD"; fi
+ if [ -f /usr/share/doc/tc/release.txt ]; then distro="TinyCore"; fi
+ if [ -f /etc/frugalware-release ]; then distro="Frugalware"; fi
+ if grep -q "SolusOS" /etc/issue; then distro="SolusOS"; fi
+ fi
+ else
+
+ declare -l lcase
+ lcase=$distro
+
+ case $lcase in
+
+ arch*linux*old) distro="Arch Linux - Old" ;;
+ arch*linux) distro="Arch Linux" ;;
+ fedora) distro="Fedora" ;;
+ mageia) distro="Mageia" ;;
+ mandriva) distro="Mandriva" ;;
+ mandrake) distro="Mandrake" ;;
+ crunchbang) distro="CrunchBang" ;;
+ mint) distro="Mint" ;;
+ lmde) distro="LMDE" ;;
+ opensuse) distro="openSUSE" ;;
+ ubuntu) distro="Ubuntu" ;;
+ debain) distro="CrunchBang" ;;
+ bsd) distro="BSD" ;;
+ red*hat*) distro="Red Hat Linux" ;;
+ crunchbang) distro="CrunchBang" ;;
+ gentoo) distro="Gentoo" ;;
+ slackware) distro="Slackware" ;;
+ frugalware) distro="Frugalware" ;;
+ peppermint) distro="Peppermint" ;;
+
+ esac
+
+ fi
+
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Finding distro...found as '$distro $distro_release'"
+}
+# Distro Detection - End
+
+# Find Number of Running Processes
+# processnum="$(( $( ps aux | wc -l ) - 1 ))"
+
+# Kernel Version Detection - Begin
+detectkernel () {
+ kernel=`uname -r`
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Finding kernel version...found as '$kernel'"
+}
+# Kernel Version Detection - End
+
+
+# Uptime Detection - Begin
+detectuptime () {
+ uptime=`awk -F. '{print $1}' /proc/uptime`
+ secs=$((${uptime}%60))
+ mins=$((${uptime}/60%60))
+ hours=$((${uptime}/3600%24))
+ days=$((${uptime}/86400))
+ uptime="${mins}m"
+ if [ "${hours}" -ne "0" ]; then
+ uptime="${hours}h ${uptime}"
+ fi
+ if [ "${days}" -ne "0" ]; then
+ uptime="${days}d ${uptime}"
+ fi
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Finding current uptime...found as '$uptime'"
+}
+# Uptime Detection - End
+
+
+# Package Count - Begin
+detectpkgs () {
+ case $distro in
+ 'Arch Linux') pkgs=$(pacman -Qq | wc -l) ;;
+ 'Frugalware') pkgs=$(pacman-g2 -Qq | wc -l) ;;
+ 'Ubuntu'|'Mint'|'SolusOS'|'Debian'|'LMDE'|'CrunchBang'|'Peppermint') pkgs=$(dpkg --get-selections | wc -l) ;;
+ 'Slackware') pkgs=$(ls -1 /var/log/packages | wc -l) ;;
+ 'Gentoo') pkgs=$(ls -d /var/db/pkg/*/* | wc -l) ;;
+ 'Fedora'|'openSUSE'|'Red Hat Linux'|'Mandriva'|'Mandrake'|'Mageia') pkgs=$(rpm -qa | wc -l) ;;
+ esac
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Finding current package count...found as '$pkgs'"
+}
+
+
+
+
+# CPU Detection - Begin
+detectcpu () {
+ cpu=$(awk -F':' '/model name/{ print $2 }' /proc/cpuinfo | head -n 1 | tr -s " " | sed 's/^ //')
+ find='(R) Core(TM)'
+ replace=''
+ cpu=${cpu/$find/$replace}
+ # cpu_mhz=$(awk -F':' '/cpu MHz/{ print $2 }' /proc/cpuinfo | head -n 1)
+ # cpu_ghz=$(echo "scale=2; ${cpu_mhz} / 1000" | bc )
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Finding current CPU...found as '$cpu'"
+}
+# CPU Detection - End
+
+
+
+# Memory Detection - Begin
+detectmem () {
+ total_mem=$(awk '/MemTotal/ { print $2 }' /proc/meminfo)
+ totalmem=$((${total_mem}/1024))
+ if free | grep -q '/cache'; then
+ used_mem=$(free | awk '/cache:/ { print $3 }')
+ usedmem=$((${used_mem}/1024))
+ else
+ free_mem=$(awk '/MemFree/ { print $2 }' /proc/meminfo)
+ used_mem=$((${total_mem} - ${free_mem}))
+ usedmem=$((${used_mem}/1024))
+ fi
+ mem="${usedmem}MB / ${totalmem}MB"
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Finding current RAM usage...found as '$mem'"
+}
+# Memory Detection - End
+
+
+# Shell Detection - Begin
+detectshell () {
+ myShell=$(echo $SHELL | awk -F"/" '{print $NF}')
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Finding current shell...found as '$myShell'"
+}
+# Shell Detection - End
+
+
+# Resolution Detection - Begin
+detectres () {
+ if [[ -n $DISPLAY ]]; then
+ xResolution=$(xdpyinfo | sed -n 's/.*dim.* \([0-9]*x[0-9]*\) .*/\1/pg' | sed ':a;N;$!ba;s/\n/ /g')
+ else
+ xResolution="No X Server"
+ fi
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Finding current resolution(s)...found as '$xResolution'"
+}
+# Resolution Detection - End
+
+
+# DE Detection - Begin
+detectde () {
+ DE="Not Present"
+ for each in $denames; do
+ if [[ `ps aux` =~ "$each" ]]; then
+ [ "$each" == "gnome-session" -o "$each" == "gnome-settings-daemon" ] && DE="GNOME" && DEver=$(gnome-session --version | awk {'print $NF'})
+ [ "$each" == "mate-session" -o "$each" == "mate-settings-daemon" ] && DE="MATE" && DEver=$(mate-session --version | awk {'print $NF'})
+ [ "$each" == "xfce4-session" ] && DE="XFCE" && DEver=$(xfce4-settings-manager --version | grep -m 1 "" | awk {'print $2'})
+ [ "$each" == "ksmserver" ] && DE="KDE" && DEver=$(kwin --version | awk '/^Qt/ {data="Qt v" $2};/^KDE/ {data=$2 " (" data ")"};END{print data}')
+ [ "$each" == "lxsession" ] && DE="LXDE" && DEver=$(lxpanel -v)
+ fi
+ done
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Finding desktop environment...found as '$DE'"
+}
+### DE Detection - End
+
+
+# WM Detection - Begin
+detectwm () {
+WM="Not Found"
+ userId="$(id -u ${USER})"
+ for each in $wmnames; do
+ PID="$(pgrep -U ${userId} $each)"
+ if [ "$PID" ]; then
+ case $each in
+ 'fluxbox') WM="FluxBox";;
+ 'openbox') WM="OpenBox";;
+ 'blackbox') WM="Blackbox";;
+ 'xfwm4') WM="Xfwm4";;
+ 'metacity') WM="Metacity";;
+ 'kwin') WM="KWin";;
+ 'icewm') WM="IceWM";;
+ 'pekwm') WM="PekWM";;
+ 'fvwm') WM="FVWM";;
+ 'dwm') WM="DWM";;
+ 'awesome') WM="Awesome";;
+ 'wmaker') WM="WindowMaker";;
+ 'stumpwm') WM="StumpWM";;
+ 'xmonad') WM="XMonad";;
+ 'musca') WM="Musca";;
+ 'i3') WM="i3";;
+ 'ratpoison') WM="Ratpoison";;
+ 'scrotwm') WM="ScrotWM";;
+ 'wmfs') WM="WMFS";;
+ 'wmii') WM="wmii";;
+ 'subtle') WM="subtle";;
+ 'e16') WM="E16";;
+ 'enlightenment') WM="E17";;
+ 'emerald') WM="Emerald";;
+ 'sawfish') WM="Sawfish";;
+ 'beryl') WM="Beryl";;
+ 'monsterwm') WM="monsterwm";;
+ 'dminiwm') WM="dminiwm";;
+ esac
+ fi
+ done
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Finding window manager...found as '$WM'"
+}
+# WM Detection - End
+
+
+# WM Theme Detection - BEGIN
+detectwmtheme () {
+ Win_theme="Not Found"
+ case $WM in
+ 'PekWM') if [ -f $HOME/.pekwm/config ]; then Win_theme="$(awk -F"/" '/Theme/ {gsub(/\"/,""); print $NF}' $HOME/.pekwm/config)"; fi;;
+ 'OpenBox')
+ if [ -f ${XDG_CONFIG_HOME:-${HOME}/.config}/openbox/rc.xml ]; then
+ Win_theme="$(awk -F"[<,>]" '/<theme/ { getline; print $3 }' ${XDG_CONFIG_HOME:-${HOME}/.config}/openbox/rc.xml)";
+ elif [[ -f ${XDG_CONFIG_HOME:-${HOME}/.config}/openbox/lxde-rc.xml && $DE == "LXDE" ]]; then
+ Win_theme="$(awk -F"[<,>]" '/<theme/ { getline; print $3 }' ${XDG_CONFIG_HOME:-${HOME}/.config}/openbox/lxde-rc.xml)";
+ fi;;
+ 'FluxBox') if [ -f $HOME/.fluxbox/init ]; then Win_theme="$(awk -F"/" '/styleFile/ {print $NF}' $HOME/.fluxbox/init)"; fi;;
+ 'BlackBox') if [ -f $HOME/.blackboxrc ]; then Win_theme="$(awk -F"/" '/styleFile/ {print $NF}' $HOME/.blackboxrc)"; fi;;
+ 'Metacity') if [ "`gconftool-2 -g /apps/metacity/general/theme`" ]; then Win_theme="$(gconftool-2 -g /apps/metacity/general/theme)"; fi ;;
+ 'Xfwm4') if [ -f ${XDG_CONFIG_HOME:-${HOME}/.config}/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml ]; then Win_theme="$(xfconf-query -c xfwm4 -p /general/theme)"; fi;;
+ 'IceWM') if [ -f $HOME/.icewm/theme ]; then Win_theme="$(awk -F"[\",/]" '!/#/ {print $2}' $HOME/.icewm/theme)"; fi;;
+ 'KWin') if [ -f $HOME/.kde/share/config/plasmarc ]; then Win_theme="$(awk -F"=" '/^name=/ { getline; print $2 }' ${HOME}/.kde/share/config/plasmarc | head -1)"; else Win_theme="Not Present"; fi;;
+ 'Emerald') if [ -f $HOME/.emerald/theme/theme.ini ]; then Win_theme="$(for a in /usr/share/emerald/themes/* $HOME/.emerald/themes/*; do cmp "$HOME/.emerald/theme/theme.ini" "$a/theme.ini" &>/dev/null && basename "$a"; done)"; fi;;
+ 'FVWM') Win_theme="Not Present";;
+ 'DWM') Win_theme="Not Present";;
+ 'Awesome') if [ -f ${XDG_CONFIG_HOME:-${HOME}/.config}/awesome/rc.lua ]; then Win_theme="$(grep -e '^[^-].*\(theme\|beautiful\).*lua' ${XDG_CONFIG_HOME:-${HOME}/.config}/awesome/rc.lua | grep '[a-zA-Z0-9]\+/[a-zA-Z0-9]\+.lua' -o | cut -d'/' -f1)"; fi;;
+ 'WindowMaker') Win_theme="Not Present";;
+ 'XMonad') Win_theme="Not Present";;
+ 'Musca') Win_theme="Not Present";;
+ 'i3') Win_theme="Not Present";;
+ 'Ratpoison') Win_theme="Not Present";;
+ 'ScrotWM') Win_theme="Not Present";;
+ 'WMFS') Win_theme="Not Present";;
+ 'wmii') Win_theme="Not Present";;
+ 'subtle') Win_theme="Not Present";;
+ 'E16') Win_theme="$(awk -F"= " '/theme.name/ {print $2}' $HOME/.e16/e_config--0.0.cfg)";;
+ #E17 doesn't store cfg files in text format so for now get the profile as opposed to theme. atyoung
+ #TODO: Find a way to extract and read E17 .cfg files ( google seems to have nothing ). atyoung
+ 'E17') Win_theme=${E_CONF_PROFILE};;
+ 'Sawfish') Win_theme="$(awk -F")" '/\(custom-set-typed-variable/{print $2}' $HOME/.sawfish/custom | sed 's/ (quote //')";;
+ 'Beryl') Win_theme="Not Present";;
+ 'monsterwm') Win_theme="Not Present";;
+ 'dminiwm') Win_theme="Not Present";;
+ esac
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Finding window manager theme...found as '$Win_theme'"
+}
+# WM Theme Detection - END
+
+# GTK Theme\Icon\Font Detection - BEGIN
+detectgtk () {
+ gtkTheme="Not Found"
+ gtkIcons="Not Found"
+ gtkFont="Not Found"
+ case $DE in
+ 'KDE') # Desktop Environment found as "KDE"
+ if [ -a $HOME/.kde/share/config/kdeglobals ]; then
+ if grep -q "widgetStyle=" $HOME/.kde/share/config/kdeglobals; then
+ gtkTheme=$(awk -F"=" '/widgetStyle=/ {print $2}' $HOME/.kde/share/config/kdeglobals)
+ elif grep -q "colorScheme=" $HOME/.kde/share/config/kdeglobals; then
+ gtkTheme=$(awk -F"=" '/colorScheme=/ {print $2}' $HOME/.kde/share/config/kdeglobals)
+ fi
+
+ if grep -q "Theme=" $HOME/.kde/share/config/kdeglobals; then
+ gtkIcons=$(awk -F"=" '/Theme=/ {print $2}' $HOME/.kde/share/config/kdeglobals)
+ fi
+
+ if grep -q "Font=" $HOME/.kde/share/config/kdeglobals; then
+ gtkFont=$(awk -F"=" '/font=/ {print $2}' $HOME/.kde/share/config/kdeglobals)
+ fi
+ fi
+ ;;
+ 'GNOME'|'MATE') # Desktop Environment found as "GNOME"
+ if which gconftool-2 >/dev/null 2>&1; then
+ gtkTheme=$(gconftool-2 -g /desktop/gnome/interface/gtk_theme)
+ fi
+
+ if which gconftool-2 >/dev/null 2>&1; then
+ gtkIcons=$(gconftool-2 -g /desktop/gnome/interface/icon_theme)
+ fi
+
+ if which gconftool-2 >/dev/null 2>&1; then
+ gtkFont=$(gconftool-2 -g /desktop/gnome/interface/font_name)
+ fi
+ if [ "$background_detect" == "1" ]; then
+ if which gconftool-2 >/dev/null 2>&1; then
+ gtkBackgroundFull=$(gconftool-2 -g /desktop/gnome/background/picture_filename)
+ gtkBackground=$(echo "$gtkBackgroundFull" | awk -F"/" '{print $NF}')
+ fi
+ fi
+ ;;
+ 'XFCE') # Desktop Environment found as "XFCE"
+ if which xfconf-query >/dev/null 2>&1; then
+ gtkTheme=$(xfconf-query -c xsettings -p /Net/ThemeName)
+ fi
+
+ if which xfconf-query >/dev/null 2>&1; then
+ gtkIcons=$(xfconf-query -c xsettings -p /Net/IconThemeName)
+ fi
+
+ if which xfconf-query >/dev/null 2>&1; then
+ gtkFont=$(xfconf-query -c xsettings -p /Gtk/FontName)
+ fi
+ ;;
+ 'LXDE')
+ if [ -f ${XDG_CONFIG_HOME:-${HOME}/.config}/lxde/config ]; then
+ lxdeconf="/lxde/config"
+ else
+ lxdeconf="/lxsession/LXDE/desktop.conf"
+ fi
+ # TODO: Clean me.
+ if grep -q "sNet\/ThemeName" ${XDG_CONFIG_HOME:-${HOME}/.config}$lxdeconf; then
+ gtkTheme=$(awk -F'=' '/sNet\/ThemeName/ {print $2}' ${XDG_CONFIG_HOME:-${HOME}/.config}$lxdeconf)
+ fi
+
+ if grep -q IconThemeName ${XDG_CONFIG_HOME:-${HOME}/.config}$lxdeconf; then
+ gtkIcons=$(awk -F'=' '/sNet\/IconThemeName/ {print $2}' ${XDG_CONFIG_HOME:-${HOME}/.config}$lxdeconf)
+ fi
+
+ if grep -q FontName ${XDG_CONFIG_HOME:-${HOME}/.config}$lxdeconf; then
+ gtkFont=$(awk -F'=' '/sGtk\/FontName/ {print $2}' ${XDG_CONFIG_HOME:-${HOME}/.config}$lxdeconf)
+ fi
+ ;;
+
+ # /home/me/.config/rox.sourceforge.net/ROX-Session/Settings.xml
+
+ *) # Lightweight or No DE Found
+ if [ -f $HOME/.gtkrc-2.0 ]; then
+ if grep -q gtk-theme $HOME/.gtkrc-2.0; then
+ gtkTheme=$(awk -F'"' '/gtk-theme/ {print $2}' $HOME/.gtkrc-2.0)
+ fi
+
+ if grep -q icon-theme $HOME/.gtkrc-2.0; then
+ gtkIcons=$(awk -F'"' '/icon-theme/ {print $2}' $HOME/.gtkrc-2.0)
+ fi
+
+ if grep -q font $HOME/.gtkrc-2.0; then
+ gtkFont=$(awk -F'"' '/gtk-font-name/ {print $2}' $HOME/.gtkrc-2.0)
+ fi
+ fi
+ # $HOME/.gtkrc.mine theme detect only
+ if [ -f $HOME/.gtkrc.mine ]; then
+ if grep -q "^include" $HOME/.gtkrc.mine; then
+ gtkTheme=$(grep '^include.*gtkrc' $HOME/.gtkrc.mine | awk -F "/" '{ print $5 }')
+ fi
+ if grep -q "^gtk-icon-theme-name" $HOME/.gtkrc.mine; then
+ gtkIcons=$(grep 'gtk-icon-theme-name' $HOME/.gtkrc.mine | awk -F '"' '{print $2}')
+ fi
+ fi
+ # ROX-Filer icon detect only
+ if [ -a ${XDG_CONFIG_HOME:-${HOME}/.config}/rox.sourceforge.net/ROX-Filer/Options ]; then
+ gtkIcons=$(awk -F'[>,<]' '/icon_theme/ {print $3}' ${XDG_CONFIG_HOME:-${HOME}/.config}/rox.sourceforge.net/ROX-Filer/Options)
+ fi
+ # E17 detection
+ if [ $E_ICON_THEME ]; then
+ gtkIcons=${E_ICON_THEME}
+ gtkTheme="Not available."
+ gtkFont="Not available."
+ fi
+ # Background Detection (feh, nitrogen)
+ if [ "$background_detect" == "1" ]; then
+ if [ -a $HOME/.fehbg ]; then
+ gtkBackgroundFull=$(awk -F"'" '/feh --bg/{print $2}' $HOME/.fehbg 2>/dev/null)
+ gtkBackground=$(echo "$gtkBackgroundFull" | awk -F"/" '{print $NF}')
+ elif [ -a ${XDG_CONFIG_HOME:-${HOME}/.config}/nitrogen/bg-saved.cfg ]; then
+ gtkBackground=$(awk -F"/" '/file=/ {print $NF}' ${XDG_CONFIG_HOME:-${HOME}/.config}/nitrogen/bg-saved.cfg)
+ fi
+ fi
+ ;;
+ esac
+ if [[ "$verbosity" -eq "1" ]]; then
+ verboseOut "Finding GTK theme...found as '$gtkTheme'"
+ verboseOut "Finding icon theme...found as '$gtkIcons'"
+ verboseOut "Finding user font...found as '$gtkFont'"
+ [[ $gtkBackground ]] && verboseOut "Finding background...found as '$gtkBackground'"
+ fi
+}
+# GTK Theme\Icon\Font Detection - END
+
+
+#######################
+# End Detection Phase
+#######################
+
+takeShot () {
+ if [[ -z $screenCommand ]]; then
+ if [[ "$hostshot" == "1" ]]; then
+ scrot -cd3 "${shotfile}"
+ if [ -f "${shotfile}" ]; then
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Screenshot saved at '${shotfile}'"
+ scp -qo ConnectTimeout="${scptimeout}" "${shotfile}" "${serveraddr}:${serverdir}"
+ echo -e "${bold}==>${c0} Your screenshot can be viewed at ${baseurl}/$shotfile"
+ else
+ verboseOut "ERROR: Problem saving screenshot to ${shotfile}"
+ fi
+ else
+ scrot -cd3 "${shotfile}"
+ if [ -f "${shotfile}" ]; then
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Screenshot saved at '${shotfile}'"
+ else
+ verboseOut "ERROR: Problem saving screenshot to ${shotfile}"
+ fi
+ fi
+ else
+ $screenCommand
+ fi
+}
+
+
+
+asciiText () {
+# Distro logos and ASCII outputs
+ case $distro in
+ "Arch Linux - Old")
+ [ -z $c1 ] && c1="\e[1;37m" # White
+ c2="\e[1;34m" # Light Blue
+ startline="0"
+ fulloutput=("$c1 __ %s"
+"$c1 _=(SDGJT=_ %s"
+"$c1 _GTDJHGGFCVS) %s"
+"$c1 ,GTDJGGDTDFBGX0 %s"
+"$c1 JDJDIJHRORVFSBSVL$c2-=+=,_ %s"
+"$c1 IJFDUFHJNXIXCDXDSV,$c2 \"DEBL %s"
+"$c1 [LKDSDJTDU=OUSCSBFLD.$c2 '?ZWX, %s"
+"$c1 ,LMDSDSWH' \`DCBOSI$c2 DRDS], %s"
+"$c1 SDDFDFH' !YEWD,$c2 )HDROD %s"
+"$c1 !KMDOCG &GSU|$c2\_GFHRGO\' %s"
+"$c1 HKLSGP'$c2 __$c1\TKM0$c2\GHRBV)' %s"
+"$c1 JSNRVW'$c2 __+MNAEC$c1\IOI,$c2\BN' %s"
+"$c1 HELK['$c2 __,=OFFXCBGHC$c1\FD) %s"
+"$c1 ?KGHE $c2\_-#DASDFLSV='$c1 'EF %s"
+"$c1 'EHTI !H %s"
+"$c1 \`0F' '!")
+ ;;
+
+ "Arch Linux")
+ [ -z $c1 ] && c1="\e[1;36m" # Light
+ c2="\e[0;36m" # Dark
+ startline="1"
+ fulloutput=("${c1} -\`"
+"${c1} .o+\` %s"
+"${c1} \`ooo/ %s"
+"${c1} \`+oooo: %s"
+"${c1} \`+oooooo: %s"
+"${c1} -+oooooo+: %s"
+"${c1} \`/:-:++oooo+: %s"
+"${c1} \`/++++/+++++++: %s"
+"${c1} \`/++++++++++++++: %s"
+"${c1} \`/+++o"${c2}"oooooooo"${c1}"oooo/\` %s"
+"${c2} "${c1}"./"${c2}"ooosssso++osssssso"${c1}"+\` %s"
+"${c2} .oossssso-\`\`\`\`/ossssss+\` %s"
+"${c2} -osssssso. :ssssssso. %s"
+"${c2} :osssssss/ osssso+++. %s"
+"${c2} /ossssssss/ +ssssooo/- %s"
+"${c2} \`/ossssso+/:- -:/+osssso+- %s"
+"${c2} \`+sso+:-\` \`.-/+oso:"
+"${c2} \`++:. \`-/+/"
+"${c2} .\` \`/")
+ ;;
+
+ "Mint")
+ [ -z $c1 ] && c1="\e[1;37m" # White
+ c2="\e[1;32m" # Bold Green
+ startline="0"
+ fulloutput=("$c2 MMMMMMMMMMMMMMMMMMMMMMMMMmds+. %s"
+"$c2 MMm----::-://////////////oymNMd+\` %s"
+"$c2 MMd "$c1"/++ "$c2"-sNMd: %s"
+"$c2 MMNso/\` "$c1"dMM \`.::-. .-::.\` "$c2".hMN: %s"
+"$c2 ddddMMh "$c1"dMM :hNMNMNhNMNMNh: "$c2"\`NMm %s"
+"$c2 NMm "$c1"dMM .NMN/-+MMM+-/NMN\` "$c2"dMM %s"
+"$c2 NMm "$c1"dMM -MMm \`MMM dMM. "$c2"dMM %s"
+"$c2 NMm "$c1"dMM -MMm \`MMM dMM. "$c2"dMM %s"
+"$c2 NMm "$c1"dMM .mmd \`mmm yMM. "$c2"dMM %s"
+"$c2 NMm "$c1"dMM\` ..\` ... ydm. "$c2"dMM %s"
+"$c2 hMM- "$c1"+MMd/-------...-:sdds "$c2"dMM %s"
+"$c2 -NMm- "$c1":hNMNNNmdddddddddy/\` "$c2"dMM %s"
+"$c2 -dMNs-"$c1"\`\`-::::-------.\`\` "$c2"dMM %s"
+"$c2 \`/dMNmy+/:-------------:/yMMM %s"
+"$c2 ./ydNMMMMMMMMMMMMMMMMMMMMM %s")
+ ;;
+
+
+ "LMDE")
+ [ -z $c1 ] && c1="\e[1;37m" # White
+ c2="\e[1;32m" # Bold Green
+ startline="1"
+ fulloutput=(" "${c1}"\`.-::---.."
+"${c2} .:++++ooooosssoo:. %s"
+"${c2} .+o++::. \`.:oos+. %s"
+"${c2} :oo:.\` -+oo"${c1}": %s"
+"${c2} "${c1}"\`"${c2}"+o/\` ."${c1}"::::::"${c2}"-. .++-"${c1}"\` %s"
+"${c2} "${c1}"\`"${c2}"/s/ .yyyyyyyyyyo: +o-"${c1}"\` %s"
+"${c2} "${c1}"\`"${c2}"so .ss ohyo\` :s-"${c1}": %s"
+"${c2} "${c1}"\`"${c2}"s/ .ss h m myy/ /s\`"${c1}"\` %s"
+"${c2} \`s: \`oo s m Myy+-o:\` %s"
+"${c2} \`oo :+sdoohyoydyso/. %s"
+"${c2} :o. .:////////++: %s"
+"${c2} \`/++ "${c1}"-:::::- %s"
+"${c2} "${c1}"\`"${c2}"++- %s"
+"${c2} "${c1}"\`"${c2}"/+- %s"
+"${c2} "${c1}"."${c2}"+/. %s"
+"${c2} "${c1}"."${c2}":+-. %s"
+"${c2} \`--.\`\`")
+ ;;
+
+ "Ubuntu")
+ [ -z $c1 ] && c1="\e[1;37m" # White
+ c2="\e[1;31m" # Light Red
+ c3="\e[1;33m" # Bold Yellow
+ startline="1"
+ fulloutput=("$c2 ./+o+-"
+"$c1 yyyyy- $c2-yyyyyy+ %s"
+"$c1 $c1://+//////$c2-yyyyyyo %s"
+"$c3 .++ $c1.:/++++++/-$c2.+sss/\` %s"
+"$c3 .:++o: $c1/++++++++/:--:/- %s"
+"$c3 o:+o+:++.$c1\`..\`\`\`.-/oo+++++/ %s"
+"$c3 .:+o:+o/.$c1 \`+sssoo+/ %s"
+"$c1 .++/+:$c3+oo+o:\`$c1 /sssooo. %s"
+"$c1 /+++//+:$c3\`oo+o$c1 /::--:. %s"
+"$c1 \+/+o+++$c3\`o++o$c2 ++////. %s"
+"$c1 .++.o+$c3++oo+:\`$c2 /dddhhh. %s"
+"$c3 .+.o+oo:.$c2 \`oddhhhh+ $mygtk"
+"$c3 \+.++o+o\`\`-\`\`$c2\`\`.:ohdhhhhh+ %s"
+"$c3 \`:o+++ $c2\`ohhhhhhhhyo++os: %s"
+"$c3 .o:$c2\`.syhhhhhhh/$c3.oo++o\` %s"
+"$c2 /osyyyyyyo$c3++ooo+++/ %s"
+"$c2 \`\`\`\`\` $c3+oo+++o\:"
+"$c3 \`oo++.")
+ ;;
+
+ "Debian")
+ [ -z $c1 ] && c1="\e[1;37m" # White
+ c2="\e[1;31m" # Light Red
+ startline="1"
+ fulloutput=(" $c1 _,met\$\$\$\$\$gg."
+" $c1 ,g\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$P.\t %s"
+" $c1 ,g\$\$P\"\" \"\"\"Y\$\$.\".\t%s"
+" $c1 ,\$\$P' \`\$\$\$.\t%s"
+" $c1',\$\$P ,ggs. \`\$\$b:\t%s"
+" $c1\`d\$\$' ,\$P\"\' $c2.$c1 \$\$\$\t%s"
+" $c1 \$\$P d\$\' $c2,$c1 \$\$P\t%s"
+" $c1 \$\$: \$\$. $c2-$c1 ,d\$\$'\t%s"
+" $c1 \$\$\; Y\$b._ _,d\$P'\t%s"
+" $c1 Y\$\$. $c2\`.$c1\`\"Y\$\$\$\$P\"'\t\t%s"
+" $c1 \`\$\$b $c2\"-.__\t\t%s"
+" $c1 \`Y\$\$\t\t\t%s"
+" $c1 \`Y\$\$.\t\t\t%s"
+" $c1 \`\$\$b.\t\t\t%s"
+" $c1 \`Y\$\$b.\t\t\t%s"
+" $c1 \`\"Y\$b._\t\t%s"
+" $c1 \`\"\"\"\"")
+ ;;
+
+ "CrunchBang")
+ [ -z $c1 ] && c1="\e[1;37m" # White
+ c2="\e[0;34m" # Light Blue
+ startline="0"
+ fulloutput=("$c1 ███ ███ ███ %s"
+"$c2 ░$c1███ $c2░$c1███ $c2░$c1███ %s"
+"$c2 ░$c1███ $c2░$c1███ $c2░$c1███ %s"
+"$c1 ████████████████████████████ $c2░$c1███ %s"
+"$c2░$c1████████████████████████████ $c2░$c1███ %s"
+"$c2░░░░░░░░░$c1███$c2░░░░░░░░$c1███$c2░░░░░ ░$c1███ %s"
+"$c2 ░$c1███ $c2░$c1███ $c2░$c1███ %s"
+"$c2 ░$c1███ $c2░$c1███ $c2░$c1███ %s"
+"$c2 ░$c1███ $c2░$c1███ $c2░$c1███ %s"
+"$c1 ████████████████████████████ $c2░$c1███ %s"
+"$c2░$c1████████████████████████████ $c2░░░ %s"
+"$c2░░░░░░░░░$c1███$c2░░░░░░░░$c1███$c2░░░░░ %s"
+"$c2 ░$c1███ $c2░$c1███ $c2░$c1███ %s"
+"$c2 ░$c1███ $c2░$c1███ $c2░$c1███ %s"
+"$c2 ░░░ ░░░ ░░░ %s")
+ ;;
+
+
+ "Gentoo")
+ [ -z $c1 ] && c1="\e[1;37m" # White
+ c2="\e[1;35m" # Light Purple
+ startline="2"
+ fulloutput=("$c2 -/oyddmdhs+:."
+"$c2 -o"$c1"dNMMMMMMMMNNmhy+"$c2"-\`"
+"$c2 -y"$c1"NMMMMMMMMMMMNNNmmdhy"$c2"+- %s"
+"$c2 \`o"$c1"mMMMMMMMMMMMMNmdmmmmddhhy"$c2"/\` %s"
+"$c2 om"$c1"MMMMMMMMMMMN"$c2"hhyyyo"$c1"hmdddhhhd"$c2"o\` %s"
+"$c2.y"$c1"dMMMMMMMMMMd"$c2"hs++so/s"$c1"mdddhhhhdm"$c2"+\` %s"
+"$c2 oy"$c1"hdmNMMMMMMMN"$c2"dyooy"$c1"dmddddhhhhyhN"$c2"d. %s"
+"$c2 :o"$c1"yhhdNNMMMMMMMNNNmmdddhhhhhyym"$c2"Mh %s"
+"$c2 .:"$c1"+sydNMMMMMNNNmmmdddhhhhhhmM"$c2"my %s"
+"$c2 /m"$c1"MMMMMMNNNmmmdddhhhhhmMNh"$c2"s: %s"
+"$c2 \`o"$c1"NMMMMMMMNNNmmmddddhhdmMNhs"$c2"+\` %s"
+"$c2 \`s"$c1"NMMMMMMMMNNNmmmdddddmNMmhs"$c2"/. %s"
+"$c2 /N"$c1"MMMMMMMMNNNNmmmdddmNMNdso"$c2":\` %s"
+"$c2+M"$c1"MMMMMMNNNNNmmmmdmNMNdso"$c2"/- %s"
+"$c2yM"$c1"MNNNNNNNmmmmmNNMmhs+/"$c2"-\` %s"
+"$c2/h"$c1"MMNNNNNNNNMNdhs++/"$c2"-\`"
+"$c2\`/"$c1"ohdmmddhys+++/:"$c2".\`"
+"$c2 \`-//////:--.")
+ ;;
+
+ "Fedora")
+ [ -z $c1 ] && c1="\e[1;37m" # White
+ c2="\e[1;34m" # Light Blue
+ startline="1"
+ fulloutput=("$c2 :/------------://"
+"$c2 :------------------:// %s"
+"$c2 :-----------"$c1"/shhdhyo/"$c2"-:// %s"
+"$c2 /-----------"$c1"omMMMNNNMMMd/"$c2"-:/ %s"
+"$c2 :-----------"$c1"sMMMdo:/"$c2" -:/ %s"
+"$c2 :-----------"$c1":MMMd"$c2"------- --:/ %s"
+"$c2 /-----------"$c1":MMMy"$c2"------- ---/ %s"
+"$c2 :------ --"$c1"/+MMMh/"$c2"-- ---: %s"
+"$c2 :--- "$c1"oNMMMMMMMMMNho"$c2" -----: %s"
+"$c2 :-- "$c1"+shhhMMMmhhy++"$c2" ------: %s"
+"$c2 :- -----"$c1":MMMy"$c2"--------------/ %s"
+"$c2 :- ------"$c1"/MMMy"$c2"-------------: %s"
+"$c2 :- ----"$c1"/hMMM+"$c2"------------: %s"
+"$c2 :--"$c1":dMMNdhhdNMMNo"$c2"-----------: %s"
+"$c2 :---"$c1":sdNMMMMNds:"$c2"----------: %s"
+"$c2 :------"$c1":://:"$c2"-----------:// %s"
+"$c2 :--------------------://")
+ ;;
+
+ "BSD")
+ [ -z $c1 ] && c1="\e[1;37m" # White
+ c2="\e[1;31m" # Light Red
+ startline="2"
+ fulloutput=("$c2 , ,"
+"$c2 /( )\`"
+"$c2 \ \___ / | %s"
+"$c2 /- "$c1"_$c2 \`-/ ' %s"
+"$c2 ($c1/\/ \ $c2\ /\\ %s"
+"$c1 / / |$c2 \` \\ %s"
+"$c1 O O )$c2 / | %s"
+"$c1 \`-^--'\`$c2< ' %s"
+"$c2 (_.) _ ) / %s"
+"$c2 \`.___/\` / %s"
+"$c2 \`-----' / %s"
+"$c1 <----. "$c2"__/ __ \\ %s"
+"$c1 <----|===="$c2"O}}}$c1==$c2} \} \/$c1==== %s"
+"$c1 <----' $c2\`--' \`.__,' \\ %s"
+"$c2 | | %s"
+"$c2 \ / /\\ %s"
+"$c2 ______( (_ / \______/ %s"
+"$c2 ,' ,-----' |"
+"$c2 \`--{__________)")
+ ;;
+
+ "Mandriva"|"Mandrake")
+ c1="\e[1;34m" # Light Blue
+ c2="\e[1;33m" # Bold Yellow
+ startline="0"
+ fulloutput=("$c2 \`\` %s"
+"$c2 \`-. %s"
+"$c1 \` $c2.--- %s"
+"$c1 -/ $c2-::--\` %s"
+"$c1 \`++ $c2\`----...\`\`\`-:::::. %s"
+"$c1 \`os. $c2.::::::::::::::-\`\`\` \` \` %s"
+"$c1 +s+ $c2.::::::::::::::::---...--\` %s"
+"$c1 -ss: $c2\`-::::::::::::::::-.\`\`.\`\` %s"
+"$c1 /ss- $c2.::::::::::::-.\`\` \` %s"
+"$c1 +ss: $c2.::::::::::::- %s"
+"$c1 /sso $c2.::::::-::::::- %s"
+"$c1 .sss/ $c2-:::-.\` .::::: %s"
+"$c1 /sss+. $c2..\`$c1 \`--\` $c2.::: %s"
+"$c1 -ossso+/:://+/-\` $c2.:\` %s"
+"$c1 -/+ooo+/-. $c2\` %s")
+ ;;
+
+ "openSUSE")
+ c1="\e[1;32m" # Bold Green
+ c2="\e[1;37m" # Bold White
+ startline="2"
+ fulloutput=("$c2 .;ldkO0000Okdl;."
+"$c2 .;d00xl:,'....';:ok00d;."
+"$c2 .d00l' ,o00d. %s"
+"$c2 .d0Kd."$c1" :Okxol:;'. "$c2":O0d. %s"
+"$c2 'OK"$c1"KKK0kOKKKKKKKKKKOxo:' "$c2"lKO' %s"
+"$c2 ,0K"$c1"KKKKKKKKKKKKKKK0d:"$c2",,,"$c1":dx:"$c2" ;00, %s"
+"$c2 .OK"$c1"KKKKKKKKKKKKKKKk."$c2".oOkdl."$c1"'0k."$c2" cKO. %s"
+"$c2 :KK"$c1"KKKKKKKKKKKKKKK: "$c2"kKx..od "$c1"lKd"$c2" .OK: %s"
+"$c2 dKK"$c1"KKKKKKKKKOx0KKKd "$c2";0KKKO, "$c1"kKKc"$c2" dKd %s"
+"$c2 dKK"$c1"KKKKKKKKKK;.;oOKx,.."$c2"'"$c1"..;kKKK0."$c2" dKd %s"
+"$c2 :KK"$c1"KKKKKKKKKK0o;...;cdxxOK0Oxc,. "$c2".0K: %s"
+"$c2 kKK"$c1"KKKKKKKKKKKKK0xl;'......,cdo "$c2"lKk %s"
+"$c2 '0K"$c1"KKKKKKKKKKKKKKKKKKKK00KKOo; "$c2"c00' %s"
+"$c2 .kK"$c1"KKOxddxkOO00000Okxoc;'. "$c2".dKk. %s"
+"$c2 l0Ko. .c00l. %s"
+"$c2 .l0Kk:. .;xK0l. %s"
+"$c2 ,lkK0xl:;,,,,;:ldO0kl, %s"
+"$c2 .':ldxkkkkxdl:'.")
+ ;;
+
+ "Slackware")
+ [ -z $c1 ] && c1="\e[1;34m" # Light Blue
+ c2="\e[1;37m" # Bold White
+ startline="3"
+ fulloutput=("$c1 :::::::"
+"$c1 :::::::::::::::::::"
+"$c1 :::::::::::::::::::::::::"
+"$c1 ::::::::"${c2}"cllcccccllllllll"${c1}":::::: %s"
+"$c1 :::::::::"${c2}"lc dc"${c1}"::::::: %s"
+"$c1 ::::::::"${c2}"cl clllccllll oc"${c1}"::::::::: %s"
+"$c1 :::::::::"${c2}"o lc"${c1}"::::::::"${c2}"co oc"${c1}":::::::::: %s"
+"$c1 ::::::::::"${c2}"o cccclc"${c1}":::::"${c2}"clcc"${c1}":::::::::::: %s"
+"$c1 :::::::::::"${c2}"lc cclccclc"${c1}"::::::::::::: %s"
+"$c1 ::::::::::::::"${c2}"lcclcc lc"${c1}":::::::::::: %s"
+"$c1 ::::::::::"${c2}"cclcc"${c1}":::::"${c2}"lccclc oc"${c1}"::::::::::: %s"
+"$c1 ::::::::::"${c2}"o l"${c1}"::::::::::"${c2}"l lc"${c1}"::::::::::: %s"
+"$c1 :::::"${c2}"cll"${c1}":"${c2}"o clcllcccll o"${c1}"::::::::::: %s"
+"$c1 :::::"${c2}"occ"${c1}":"${c2}"o clc"${c1}"::::::::::: %s"
+"$c1 ::::"${c2}"ocl"${c1}":"${c2}"ccslclccclclccclclc"${c1}"::::::::::::: %s"
+"$c1 :::"${c2}"oclcccccccccccccllllllllllllll"${c1}"::::: %s"
+"$c1 ::"${c2}"lcc1lcccccccccccccccccccccccco"${c1}":::: %s"
+"$c1 :::::::::::::::::::::::::::::::: %s"
+"$c1 ::::::::::::::::::::::::::::"
+"$c1 ::::::::::::::::::::::"
+"$c1 ::::::::::::")
+ ;;
+
+ "Red Hat Linux")
+ [ -z $c1 ] && c1="\e[1;37m" # White
+ c2="\e[1;31m" # Light Red
+ startline="0"
+ fulloutput=("$c2 \`.-..........\` %s"
+"$c2 \`////////::.\`-/. %s"
+"$c2 -: ....-////////. %s"
+"$c2 //:-::///////////\` %s"
+"$c2 \`--::: \`-://////////////: %s"
+"$c2 //////- \`\`.-:///////// .\` %s"
+"$c2 \`://////:-.\` :///////::///:\` %s"
+"$c2 .-/////////:---/////////////: %s"
+"$c2 .-://////////////////////. %s"
+"$c1 yMN+\`.-$c2::///////////////-\` %s"
+"$c1 .-\`:NMMNMs\` \`..-------..\` %s"
+"$c1 MN+/mMMMMMhoooyysshsss %s"
+"$c1 MMM MMMMMMMMMMMMMMyyddMMM+ %s"
+"$c1 MMMM MMMMMMMMMMMMMNdyNMMh\` hyhMMM %s"
+"$c1 MMMMMMMMMMMMMMMMyoNNNMMM+. MMMMMMMM %s"
+"$c1 MMNMMMNNMMMMMNM+ mhsMNyyyyMNMMMMsMM")
+ ;;
+
+ "Frugalware")
+ [ -z $c1 ] && c1="\e[1;37m" # White
+ c2="\e[1;36m" # Light Blue
+ startline="5"
+ fulloutput=("${c2} \`++/::-.\`"
+"${c2} /o+++++++++/::-.\`"
+"${c2} \`o+++++++++++++++o++/::-.\`"
+"${c2} /+++++++++++++++++++++++oo++/:-.\`\`"
+"${c2} .o+ooooooooooooooooooosssssssso++oo++/:-\`"
+"${c2} ++osoooooooooooosssssssssssssyyo+++++++o: %s"
+"${c2} -o+ssoooooooooooosssssssssssssyyo+++++++s\` %s"
+"${c2} o++ssoooooo++++++++++++++sssyyyyo++++++o: %s"
+"${c2} :o++ssoooooo"${c1}"/-------------"${c2}"+syyyyyo+++++oo %s"
+"${c2} \`o+++ssoooooo"${c1}"/-----"${c2}"+++++ooosyyyyyyo++++os: %s"
+"${c2} /o+++ssoooooo"${c1}"/-----"${c2}"ooooooosyyyyyyyo+oooss %s"
+"${c2} .o++++ssooooos"${c1}"/------------"${c2}"syyyyyyhsosssy- %s"
+"${c2} ++++++ssooooss"${c1}"/-----"${c2}"+++++ooyyhhhhhdssssso %s"
+"${c2} -s+++++syssssss"${c1}"/-----"${c2}"yyhhhhhhhhhhhddssssy. %s"
+"${c2} sooooooyhyyyyyh"${c1}"/-----"${c2}"hhhhhhhhhhhddddyssy+ %s"
+"${c2} :yooooooyhyyyhhhyyyyyyhhhhhhhhhhdddddyssy\` %s"
+"${c2} yoooooooyhyyhhhhhhhhhhhhhhhhhhhddddddysy/ %s"
+"${c2}-ysooooooydhhhhhhhhhhhddddddddddddddddssy %s"
+"${c2} .-:/+osssyyyysyyyyyyyyyyyyyyyyyyyyyyssy: %s"
+"${c2} \`\`.-/+oosysssssssssssssssssssssss %s"
+"${c2} \`\`.:/+osyysssssssssssssh."
+"${c2} \`-:/+osyyssssyo"
+"${c2} .-:+++\`")
+ ;;
+
+
+ "Peppermint")
+ [ -z $c1 ] && c1="\e[1;37m" # White
+ c2="\e[1;31m" # Light Red
+ startline="2"
+ fulloutput=("${c2} 8ZZZZZZ"${c1}"MMMMM"
+"${c2} .ZZZZZZZZZ"${c1}"MMMMMMM."
+"${c1} MM"${c2}"ZZZZZZZZZ"${c1}"MMMMMMM"${c2}"ZZZZ %s"
+"${c1} MMMMM"${c2}"ZZZZZZZZ"${c1}"MMMMM"${c2}"ZZZZZZZM %s"
+"${c1} MMMMMMM"${c2}"ZZZZZZZ"${c1}"MMMM"${c2}"ZZZZZZZZZ. %s"
+"${c1} MMMMMMMMM"${c2}"ZZZZZZ"${c1}"MMM"${c2}"ZZZZZZZZZZZI %s"
+"${c1} MMMMMMMMMMM"${c2}"ZZZZZZ"${c1}"MM"${c2}"ZZZZZZZZZZ"${c1}"MMM %s"
+"${c2} .ZZZ"${c1}"MMMMMMMMMM"${c2}"IZZ"${c1}"MM"${c2}"ZZZZZ"${c1}"MMMMMMMMM %s"
+"${c2} ZZZZZZZ"${c1}"MMMMMMMM"${c2}"ZZ"${c1}"M"${c2}"ZZZZ"${c1}"MMMMMMMMMMM %s"
+"${c2} ZZZZZZZZZZZZZZZZ"${c1}"M"${c2}"Z"${c1}"MMMMMMMMMMMMMMM %s"
+"${c2} .ZZZZZZZZZZZZZ"${c1}"MMM"${c2}"Z"${c1}"M"${c2}"ZZZZZZZZZZ"${c1}"MMMM %s"
+"${c2} .ZZZZZZZZZZZ"${c1}"MMM"${c2}"7ZZ"${c1}"MM"${c2}"ZZZZZZZZZZ7"${c1}"M %s"
+"${c2} ZZZZZZZZZ"${c1}"MMMM"${c2}"ZZZZ"${c1}"MMMM"${c2}"ZZZZZZZ77 %s"
+"${c1} MMMMMMMMMMMM"${c2}"ZZZZZ"${c1}"MMMM"${c2}"ZZZZZ77 %s"
+"${c1} MMMMMMMMMM"${c2}"7ZZZZZZ"${c1}"MMMMM"${c2}"ZZ77 %s"
+"${c1} .MMMMMMM"${c2}"ZZZZZZZZ"${c1}"MMMMM"${c2}"Z7Z %s"
+"${c1} MMMMM"${c2}"ZZZZZZZZZ"${c1}"MMMMMMM %s"
+"${c2} NZZZZZZZZZZZ"${c1}"MMMMM"
+"${c2} ZZZZZZZZZ"${c1}"MM")
+ ;;
+
+ "SolusOS")
+ [ -z $c1 ] && c1="\e[1;37m" # White
+ c2="\e[1;30m" # Light Gray
+ startline="2"
+ fulloutput=("${c1} e e"
+"${c1} eee ee"
+"${c1} eeee eee %s"
+"${c2} wwwwwwwww"${c1}"eeeeee %s"
+"${c2} wwwwwwwwwwwwwww"${c1}"eee %s"
+"${c2} wwwwwwwwwwwwwwwwwww"${c1}"eeeeeeee %s"
+"${c2} wwwww "${c1}"eeeee"${c2}"wwwwww"${c1}"eeee %s"
+"${c2} www "${c1}"eeee"${c2}"wwwwww"${c1}"e %s"
+"${c2} ww "${c1}"ee"${c2}"wwwwww %s"
+"${c2} w wwwww %s"
+"${c2} wwwww %s"
+"${c2} wwwww %s"
+"${c2} wwwww %s"
+"${c2} wwww %s"
+"${c2} wwww %s"
+"${c2} wwww %s"
+"${c2} www %s"
+"${c2} ww")
+ ;;
+
+
+
+ "Mageia")
+ [ -z $c1 ] && c1="\e[1;34m" # Light Blue
+ c2="\e[0;36m" # Light Cyan
+ startline="2"
+ fulloutput=("$c2 .'' "
+"$c2 '. .. "
+"$c2 .,,. %s"
+"$c2 ,;;. %s"
+"$c2 ... ... %s"
+"$c2 ',,' .:::. %s"
+"$c1 .$c2,:c,$c1 .. . %s"
+"$c1 :dkxc;'. ..,cxkd; %s"
+"$c1 .dkkxxkkkkkkkkkkxxkkd. %s"
+"$c1 .dkko. ';cloolc;. .dkkd %s"
+"$c1 ckkx. .xkk; %s"
+"$c1 xOO: cOOd %s"
+"$c1 xOO: lOOd %s"
+"$c1 lOOx. .kOO: %s"
+"$c1 .k00d. .x00x %s"
+"$c1 .k00O; ;k00O. %s"
+"$c1 .lO0KOdc;,,;cdO0KOc. %s"
+"$c1 ;d0KKKKKKKK0d; "
+"$c1 .,;::;,. ")
+ ;;
+
+ *)
+ [ -z $c1 ] && c1="\e[1;37m" # White
+ c2="\e[1;30m" # Light Gray
+ c3="\e[1;33m" # Light Yellow
+ startline="0"
+ fulloutput=(" %s"
+" %s"
+"$c2 #####$c0 %s"
+"$c2 ####### %s"
+"$c2 ##"$c1"O$c2#"$c1"O$c2## %s"
+"$c2 #$c3#####$c2# %s"
+"$c2 ##$c1##$c3###$c1##$c2## %s"
+"$c2 #$c1##########$c2## %s"
+"$c2 #$c1############$c2## %s"
+"$c2 #$c1############$c2### %s"
+"$c3 ##$c2#$c1###########$c2##$c3# %s"
+"$c3 ######$c2#$c1#######$c2#$c3###### %s"
+"$c3 #######$c2#$c1#####$c2#$c3####### %s"
+"$c3 #####$c2#######$c3##### %s"
+" %s"
+"$c0")
+ ;;
+ esac
+
+ # Truncate lines based on terminal width.
+ if [ "$truncateSet" == "Yes" ]; then
+ n=${#fulloutput[*]}
+ for ((i=0;i<n;i++)); do
+ targetPercent=100
+ termWidth=$(tput cols)
+ # stringReal=$(echo "${fulloutput[i]}" | sed -e 's/\x1b\[[0-9];[0-9]*m\?//g')
+ stringReal=$(echo "${fulloutput[i]}" | sed -e 's/\\e\[[0-9];[0-9]*m//g' -e 's/\\e\[[0-9]*m//g')
+ stringLength=${#stringReal}
+ targetLength="$((termWidth*targetPercent/100))"
+ if [ "$stringLength" -le "$targetLength" ]; then
+ echo -e "${fulloutput[i]}"$c0
+ elif [ "$stringLength" -gt "$targetLength" ]; then
+ echo "${fulloutput[i]:0:$targetLength}..."$c0
+ fi
+ # Debugging widths
+ # echo "Term Width: $termWidth"
+ # echo "String Length: $stringLength"
+ done
+ else
+ n=${#fulloutput[*]}
+ for ((i=0;i<n;i++)); do
+ # echo "${out_array[@]}"
+ printf "${fulloutput[i]}$c0\n" "${out_array}"
+ if [[ "$i" -ge "$startline" ]]; then
+ unset out_array[0]
+ out_array=( "${out_array[@]}" )
+ fi
+ done
+ fi
+ # Done with ASCII output
+}
+
+infoDisplay () {
+ if [ -z "$textcolor" ]; then textcolor="\e[0m"; fi
+ #TODO: Centralize colors and use them across the board so we only change them one place.
+ if [ -z "$labelcolor" ]; then
+ case $distro in
+ "Arch Linux - Old"|"Fedora"|"Mandriva"|"Mandrake") labelcolor="\e[1;34m";;
+ "Arch Linux"|"Frugalware"|"Mageia") labelcolor="\e[1;36m";;
+ "Mint"|"LMDE"|"openSUSE") labelcolor="\e[1;32m";;
+ "Ubuntu"|"Debian"|"BSD"|"Red Hat Linux"|"Peppermint") labelcolor="\e[1;31m";;
+ "CrunchBang"|"SolusOS") labelcolor="\e[1;30m";;
+ "Gentoo") labelcolor="\e[1;35m";;
+ "Slackware") labelcolor="\e[1;34m";;
+ *) labelcolor="\e[1;33m";;
+ esac
+ fi
+ # Some verbosity stuff
+ [[ "$verbosity" == "1" ]] && [[ "$screenshot" == "1" ]] && verboseOut "Screenshot will be taken after info is displayed."
+ [[ "$verbosity" == "1" ]] && [[ "$hostshot" == "1" ]] && verboseOut "Screenshot will be transferred/uploaded to specified location."
+ #########################
+ # Info Variable Setting #
+ #########################
+ if [[ "${display[@]}" =~ "host" ]]; then myinfo=$(echo -e "${labelcolor}${myUser}$textcolor$bold@${labelcolor}${myHost}"); out_array=( "${out_array[@]}" "$myinfo" ); ((display_index++)); fi
+ if [[ "${display[@]}" =~ "distro" ]]; then
+ sysArch=`uname -m`
+ if [ -n "$distro_more" ]; then mydistro=$(echo -e "$labelcolor OS:$textcolor $distro_more $sysArch")
+ else mydistro=$(echo -e "$labelcolor OS:$textcolor $distro $sysArch"); fi
+ out_array=( "${out_array[@]}" "$mydistro" )
+ ((display_index++))
+ fi
+ if [[ "${display[@]}" =~ "kernel" ]]; then mykernel=$(echo -e "$labelcolor Kernel:$textcolor $kernel"); out_array=( "${out_array[@]}" "$mykernel" ); ((display_index++)); fi
+ if [[ "${display[@]}" =~ "uptime" ]]; then myuptime=$(echo -e "$labelcolor Uptime:$textcolor $uptime"); out_array=( "${out_array[@]}" "$myuptime" ); ((display_index++)); fi
+ if [[ "${display[@]}" =~ "pkgs" ]]; then mypkgs=$(echo -e "$labelcolor Packages:$textcolor $pkgs"); out_array=( "${out_array[@]}" "$mypkgs" ); ((display_index++)); fi
+ if [[ "${display[@]}" =~ "shell" ]]; then myshell=$(echo -e "$labelcolor Shell:$textcolor $myShell"); out_array=( "${out_array[@]}" "$myshell" ); ((display_index++)); fi
+ if [[ "${display[@]}" =~ "res" ]]; then myres=$(echo -e "$labelcolor Resolution:${textcolor} $xResolution"); out_array=( "${out_array[@]}" "$myres" ); ((display_index++)); fi
+ if [[ "${display[@]}" =~ "de" ]]; then myde=$(echo -e "$labelcolor DE:$textcolor $DE"); out_array=( "${out_array[@]}" "$myde" ); ((display_index++)); fi
+ if [[ "${display[@]}" =~ "wm" ]]; then mywm=$(echo -e "$labelcolor WM:$textcolor $WM"); out_array=( "${out_array[@]}" "$mywm" ); ((display_index++)); fi
+ if [[ "${display[@]}" =~ "wmtheme" ]]; then mywmtheme=$(echo -e "$labelcolor WM Theme:$textcolor $Win_theme"); out_array=( "${out_array[@]}" "$mywmtheme" ); ((display_index++)); fi
+ if [[ "${display[@]}" =~ "gtk" ]]; then
+ mygtk=$(echo -e "$labelcolor GTK Theme:$textcolor $gtkTheme"); out_array=( "${out_array[@]}" "$mygtk" ); ((display_index++))
+ myicons=$(echo -e "$labelcolor Icon Theme:$textcolor $gtkIcons"); out_array=( "${out_array[@]}" "$myicons" ); ((display_index++))
+ myfont=$(echo -e "$labelcolor Font:$textcolor $gtkFont"); out_array=( "${out_array[@]}" "$myfont" ); ((display_index++))
+ # [ "$gtkBackground" ] && mybg=$(echo -e "$labelcolor BG:$textcolor $gtkBackground"); out_array=( "${out_array[@]}" "$mybg" ); ((display_index++))
+ fi
+ if [[ "${display[@]}" =~ "cpu" ]]; then mycpu=$(echo -e "$labelcolor CPU:$textcolor $cpu"); out_array=( "${out_array[@]}" "$mycpu" ); ((display_index++)); fi
+ if [[ "${display[@]}" =~ "mem" ]]; then mymem=$(echo -e "$labelcolor RAM:$textcolor $mem"); out_array=( "${out_array[@]}" "$mymem" ); ((display_index++)); fi
+ if [[ "$display_type" == "ASCII" ]]; then
+ asciiText
+ else
+ echo -e "$mydistro"
+ echo -e "$mykernel"
+ echo -e "$myuptime"
+ echo -e "$myshell"
+ echo -e "$myres"
+ echo -e "$myde"
+ echo -e "$mywm"
+ echo -e "$mywmtheme"
+ echo -e "$mygtk"
+ echo -e "$myicons"
+ echo -e "$myfont"
+ fi
+}
+
+########
+# Theme Exporting (Experimental!)
+########
+themeExport () {
+ WM=$(echo "$mywm" | awk '{print $NF}')
+ if [[ ! -d /tmp/screenfetch-export ]]; then mkdir -p "/tmp/screenfetch-export/Icons" & mkdir -p "/tmp/screenfetch-export/GTK-Theme" & mkdir -p "/tmp/screenfetch-export/WM-${WM}" ; fi
+ if [[ "$WM" ]]; then
+ if [[ "$WM" =~ "Openbox" ]]; then
+ if [[ "$Win_theme" != "Not Found" ]]; then
+ if [[ -d "$HOME/.themes/$Win_theme" ]]; then
+ cp -r "$HOME/.themes/$Win_theme" "/tmp/screenfetch-export/WM-${WM}/$Win_theme" &>/dev/null
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Found WM theme folder. Transferring to /tmp/screenfetch-export/..."
+ fi
+ fi
+ elif [[ "$WM" =~ "Fluxbox" ]]; then
+ if [[ "$Win_theme" != "Not Found" ]]; then
+ if [[ -d "$HOME/.fluxbox/styles/$Win_theme" ]]; then
+ cp -r "$HOME/.fluxbox/styles/$Win_theme" "/tmp/screenfetch-export/WM-${WM}/$Win_theme" &>/dev/null
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Found WM theme folder. Transferring to /tmp/screenfetch-export/..."
+ fi
+ fi
+ elif [[ "$WM" =~ "Blackbox" ]]; then
+ if [[ "$Win_theme" != "Not Found" ]]; then
+ if [[ -d "$HOME/.blackbox/styles/$Win_theme" ]]; then
+ cp -r "$HOME/.blackbox/styles/$Win_theme" "/tmp/screenfetch-export/WM-${WM}/$Win_theme" &>/dev/null
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Found WM theme folder. Transferring to /tmp/screenfetch-export/..."
+ elif [[ -d "/usr/share/blackbox/styles/$Win_theme" ]]; then
+ cp -r "/usr/share/blackbox/styles/$Win_theme" "/tmp/screenfetch-export/WM-${WM}/$Win_theme" &>/dev/null
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Found WM theme folder. Transferring to /tmp/screenfetch-export/..."
+ fi
+ fi
+ elif [[ "$WM" =~ "PekWM" ]]; then
+ if [[ "$Win_theme" != "Not Found" ]]; then
+ if [[ -d "$HOME/.pekwm/themes/$Win_theme" ]]; then
+ cp -r "$HOME/.pekwm/themes/$Win_theme" "/tmp/screenfetch-export/WM-${WM}/$Win_theme" &>/dev/null
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Found WM theme folder. Transferring to /tmp/screenfetch-export/..."
+ fi
+ fi
+ elif [[ "$WM" =~ "Metacity" ]]; then
+ if [[ "$Win_theme" != "Not Found" ]]; then
+ if [[ -d "$HOME/.themes/$Win_theme" ]]; then
+ cp -r "$HOME/.themes/$Win_theme" "/tmp/screenfetch-export/WM-${WM}/$Win_theme" &>/dev/null
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Found WM theme folder. Transferring to /tmp/screenfetch-export/..."
+ elif [[ -d "/usr/share/themes/$Win_theme" ]]; then
+ cp -r "/usr/share/themes/$Win_theme" "/tmp/screenfetch-export/WM-${WM}/$Win_theme" &>/dev/null
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Found WM theme folder. Transferring to /tmp/screenfetch-export/..."
+ fi
+ fi
+ elif [[ "$WM" =~ "Xfwm4" ]]; then
+ if [[ "$Win_theme" != "Not Found" ]]; then
+ WM_theme=$(echo "$Win_theme" | awk '{print $NF}')
+ if [[ -d "$HOME/.themes/$Win_theme" ]]; then
+ cp -r "$HOME/.themes/$Win_theme" "/tmp/screenfetch-export/WM-${WM}/$Win_theme" &>/dev/null
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Found WM theme folder. Transferring to /tmp/screenfetch-export/..."
+ elif [[ -d "/usr/share/themes/$Win_theme" ]]; then
+ cp -r "/usr/share/themes/$Win_theme" "/tmp/screenfetch-export/WM-${WM}/$Win_theme" &>/dev/null
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Found WM theme folder. Transferring to /tmp/screenfetch-export/..."
+ fi
+ fi
+ fi
+ fi
+ if [[ "$gtkBackgroundFull" ]]; then
+ cp "$gtkBackgroundFull" /tmp/screenfetch-export/
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Found BG file. Transferring to /tmp/screenfetch-export/..."
+ fi
+ if [[ "$mygtk" ]]; then
+ GTK_theme=$(echo "$mygtk" | awk '{print $NF}')
+ if [ -d "/usr/share/themes/$GTK_theme" ]; then
+ cp -r "/usr/share/themes/$GTK_theme" "/tmp/screenfetch-export/GTK/Theme/$GTK_theme" &>/dev/null
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Found GTK theme folder. Transferring to /tmp/screenfetch-export/..."
+ fi
+ fi
+ if [[ "$myicons" ]]; then
+ GTK_icons=$(echo "$myicons" | awk '{print $NF}')
+ if [ -d "/usr/share/icons/$GTK_icons" ]; then
+ cp -r "/usr/share/icons/$GTK_icons" "/tmp/screenfetch-export/GTK/Icons/$GTK_icons" &>/dev/null
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Found GTK icons theme folder. Transferring to /tmp/screenfetch-export/..."
+ fi
+ if [ -d "$HOME/.icons/$GTK_icons" ]; then
+ cp -r "$HOME/.icons/$GTK_icons" "/tmp/screenfetch-export/GTK/Icons/$GTK_icons" &>/dev/null
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Found GTK icons theme folder. Transferring to /tmp/screenfetch-export/..."
+ fi
+ fi
+ if [[ "$myfont" ]]; then
+ GTK_font=$(echo "$myfont" | awk '{print $NF}')
+ if [ -d "/usr/share/fonts/$GTK_font" ]; then
+ cp -r "/usr/share/fonts/$GTK_font" "/tmp/screenfetch-export/GTK/$GTK_font" &>/dev/null
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Found GTK font. Transferring to /tmp/screenfetch-export/..."
+ elif [ -d "$HOME/.fonts/$GTK_font" ]; then
+ cp -r "$HOME/.fonts/$GTK_font" "/tmp/screenfetch-export/GTK/$GTK_font" &>/dev/null
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Found GTK font. Transferring to /tmp/screenfetch-export/..."
+ fi
+ fi
+ if [ "$screenshot" == "1" ]; then
+ if [ -f "${shotfile}" ]; then
+ cp "${shotfile}" "/tmp/screenfetch-export/"
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Found screenshot. Transferring to /tmp/screenfetch-export/..."
+ fi
+ fi
+ cd /tmp/screenfetch-export/
+ [[ "$verbosity" -eq "1" ]] && verboseOut "Creating screenfetch-export.tar.gz archive in /tmp/screenfetch-export/...."
+ tar -czf screenfetch-export.tar.gz ../screenfetch-export &>/dev/null
+ mv /tmp/screenfetch-export/screenfetch-export.tar.gz $HOME/
+ echo -e "${bold}==>${c0} Archive created in /tmp/ and moved to $HOME. Removing /tmp/screenfetch-export/..."
+ rm -rf /tmp/screenfetch-export/
+}
+
+
+##################
+# Let's Do This!
+##################
+
+for i in "${display[@]}"; do
+
+ if [[ $i =~ wm ]]; then
+ ! [[ $WM ]] && detectwm;
+ ! [[ $Win_theme ]] && detectwmtheme;
+ else
+
+ [[ "${display[*]}" =~ "$i" ]] && detect${i}
+
+ fi
+done
+infoDisplay
+[ "$screenshot" == "1" ] && takeShot
+[ "$exportTheme" == "1" ] && themeExport \ No newline at end of file
diff --git a/fun/skull b/fun/skull
new file mode 100755
index 0000000..91deff5
--- /dev/null
+++ b/fun/skull
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+f=3 b=4
+for j in f b; do
+ for i in {0..7}; do
+ printf -v $j$i %b "\e[${!j}${i}m"
+ done
+done
+bld=$'\e[1m'
+rst=$'\e[0m'
+inv=$'\e[7m'
+
+
+cat << EOF
+$f4 ...----....
+$f4 ..-:"'' ''"-..
+$f4 .-' '-.
+$f4 .' . . '.
+$f4 .' . . . . .''.
+$f4 .' . . . . . . . ..:.
+$f4 .' . . . . . . .. . . ....::.
+$f4 .. . . . . . . .. . ....:IA.
+$f4 .: . . . . . . .. . .. .. ....:IA.
+$f4 .: . . .. . . . . .. . ... ....:.:VHA.
+$f4 '.. . .. . . . . .. . .. . .....:.::IHHB.
+$f4 .:. . . . . . . . . . . ...:.:... .......:HIHMM.
+$f4 .:.... . . ."::"'.. . . . .:.:.:II;,. .. ..:IHIMMA
+$f4 ':.:.. ..::IHHHHHI::. . . ...:.::::.,,,. . ....VIMMHM
+$f4 .:::I. .AHHHHHHHHHHAI::. .:...,:IIHHHHHHMMMHHL:. . VMMMM
+$f4 .:.:V.:IVHHHHHHHMHMHHH::..:" .:HIHHHHHHHHHHHHHMHHA. .VMMM.
+$f4 :..V.:IVHHHHHMMHHHHHHHB... . .:VPHHMHHHMMHHHHHHHHHAI.:VMMI
+$f4 ::V..:VIHHHHHHMMMHHHHHH. . .I":IIMHHMMHHHHHHHHHHHAPI:WMM
+$f4 ::". .:.HHHHHHHHMMHHHHHI. . .:..I:MHMMHHHHHHHHHMHV:':H:WM
+$f4 :: . :.::IIHHHHHHMMHHHHV .ABA.:.:IMHMHMMMHMHHHHV:'. .IHWW
+$f4 '. ..:..:.:IHHHHHMMHV" .AVMHMA.:.'VHMMMMHHHHHV:' . :IHWV
+$f4 :. .:...:".:.:TPP" .AVMMHMMA.:. "VMMHHHP.:... .. :IVAI
+$f4 .:. '... .:"' . ..HMMMHMMMA::. ."VHHI:::.... .:IHW'
+$f4 ... . . ..:IIPPIH: ..HMMMI.MMMV:I:. .:ILLH:.. ...:I:IM
+$f4 : . .'"' .:.V". .. . :HMMM:IMMMI::I. ..:HHIIPPHI::'.P:HM.
+$f4 :. . . .. ..:.. . :AMMM IMMMM..:...:IV":T::I::.".:IHIMA
+$f4 'V:.. .. . .. . . . 'VMMV..VMMV :....:V:.:..:....::IHHHMH
+$f4 "IHH:.II:.. .:. . . . . " :HB"" . . ..PI:.::.:::..:IHHMMV"
+$f4 :IP""HHII:. . . . . .'V:. . . ..:IH:.:.::IHIHHMMMMM"
+$f4 :V:. VIMA:I.. . . . .. . . .:.I:I:..:IHHHHMMHHMMM
+$f4 :"VI:.VWMA::. .: . .. .:. ..:.I::.:IVHHHMMMHMMMMI
+$f4 :."VIIHHMMA:. . . .: .:.. . .:.II:I:AMMMMMMHMMMMMI
+$f4 :..VIHIHMMMI...::.,:.,:!"I:!"I!"I!"V:AI:VAMMMMMMHMMMMMM'
+$f4 ':.:HIHIMHHA:"!!"I.:AXXXVVXXXXXXXA:."HPHIMMMMHHMHMMMMMV
+$f4 V:H:I:MA:W'I :AXXXIXII:IIIISSSSSSXXA.I.VMMMHMHMMMMMM
+$f4 'I::IVA ASSSSXSSSSBBSBMBSSSSSSBBMMMBS.VVMMHIMM'"'
+$f4 I:: VPAIMSSSSSSSSSBSSSMMBSSSBBMMMMXXI:MMHIMMI
+$f4 .I::. "H:XIIXBBMMMMMMMMMMMMMMMMMBXIXXMMPHIIMM'
+$f4 :::I. ':XSSXXIIIIXSSBMBSSXXXIIIXXSMMAMI:.IMM
+$f4 :::I:. .VSSSSSISISISSSBII:ISSSSBMMB:MI:..:MM
+$f4 ::.I:. ':"SSSSSSSISISSXIIXSSSSBMMB:AHI:..MMM.
+$f4 ::.I:. . ..:"BBSSSSSSSSSSSSBBBMMMB:AHHI::.HMMI
+$f4 :..::. . ..::":BBBBBSSBBBMMMB:MMMMHHII::IHHMI
+$f4 ':.I:... ....:IHHHHHMMMMMMMMMMMMMMMHHIIIIHMMV"
+$f4 "V:. ..:...:.IHHHMMMMMMMMMMMMMMMMHHHMHHMHP'
+$f4 ':. .:::.:.::III::IHHHHMMMMMHMHMMHHHHM"
+$f4 "::....::.:::..:..::IIIIIHHHHMMMHHMV"
+$f4 "::.::.. .. . ...:::IIHHMMMMHMV"
+$f4 "V::... . .I::IHHMMV"'
+$f4 '"VHVHHHAHHHHMMV:"'
+
+$rst
+
+EOF
+
+
diff --git a/fun/slendy b/fun/slendy
new file mode 100755
index 0000000..766e06c
--- /dev/null
+++ b/fun/slendy
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+initializeANSI()
+{
+ esc=""
+
+ blackf="${esc}[30m"; redf="${esc}[31m"; greenf="${esc}[32m"
+ yellowf="${esc}[33m" bluef="${esc}[34m"; purplef="${esc}[35m"
+ cyanf="${esc}[36m"; whitef="${esc}[37m"
+
+ blackb="${esc}[40m"; redb="${esc}[41m"; greenb="${esc}[42m"
+ yellowb="${esc}[43m" blueb="${esc}[44m"; purpleb="${esc}[45m"
+ cyanb="${esc}[46m"; whiteb="${esc}[47m"
+
+ boldon="${esc}[1m"; boldoff="${esc}[22m"
+ italicson="${esc}[3m"; italicsoff="${esc}[23m"
+ ulon="${esc}[4m"; uloff="${esc}[24m"
+ invon="${esc}[7m"; invoff="${esc}[27m"
+
+ reset="${esc}[0m"
+}
+
+initializeANSI
+
+cat << EOF
+
+ ${reset}${blackf}| | | | |${reset}
+ ${redf}█ █${reset} ${blackf}|${reset} ${greenf}█ █${reset} ${blackf}|${reset} ${yellowf}█ █${reset} ${blackf}|${reset} ${bluef}█ █${reset} ${blackf}|${reset} ${purplef}█ █${reset} ${blackf}|${reset} ${cyanf}█ █${reset}
+ ${redf}███████${reset} ${blackf}|${reset} ${greenf}███████${reset} ${blackf}|${reset} ${yellowf}███████${reset} ${blackf}|${reset} ${bluef}███████${reset} ${blackf}|${reset} ${purplef}███████${reset} ${blackf}|${reset} ${cyanf}███████${reset}
+ ${redf}███${boldon}${redb}██${reset}${redf}█${boldon}${redb}██${reset}${redf}███${reset} ${blackf}|${reset} ${greenf}███${boldon}${greenb}██${reset}${greenf}█${boldon}${greenb}██${reset}${greenf}███${reset} ${blackf}|${reset} ${yellowf}███${boldon}${yellowb}██${reset}${yellowf}█${boldon}${yellowb}██${reset}${yellowf}███${reset} ${blackf}|${reset} ${bluef}███${boldon}${blueb}██${reset}${bluef}█${boldon}${blueb}██${reset}${bluef}███${reset} ${blackf}|${reset} ${purplef}███${boldon}${purpleb}██${reset}${purplef}█${boldon}${purpleb}██${reset}${purplef}███${reset} ${blackf}|${reset} ${cyanf}███${boldon}${cyanb}██${reset}${cyanf}█${boldon}${cyanb}██${reset}${cyanf}███${reset}
+ ${redf}████${boldon}${redb}█${reset}${redf}████${reset} ${blackf}|${reset} ${greenf}████${boldon}${greenb}█${reset}${greenf}████${reset} ${blackf}|${reset} ${yellowf}████${boldon}${yellowb}█${reset}${yellowf}████${reset} ${blackf}|${reset} ${bluef}████${boldon}${blueb}█${reset}${bluef}████${reset} ${blackf}|${reset} ${purplef}████${boldon}${purpleb}█${reset}${purplef}████${reset} ${blackf}|${reset} ${cyanf}████${boldon}${cyanb}█${reset}${cyanf}████${reset}
+ ${redf}█ █ ${boldon}█${reset} ${redf}█ █${reset} ${blackf}|${reset} ${greenf}█ █ ${boldon}█${reset} ${greenf}█ █${reset} ${blackf}|${reset} ${yellowf}█ █ ${boldon}█${reset} ${yellowf}█ █${reset} ${blackf}|${reset} ${bluef}█ █ ${boldon}█${reset} ${bluef}█ █${reset} ${blackf}|${reset} ${purplef}█ █ ${boldon}█${reset} ${purplef}█ █${reset} ${blackf}|${reset} ${cyanf}█ █ ${boldon}█${reset} ${cyanf}█ █${reset}
+ ${redf}█ █${reset} ${blackf}|${reset} ${greenf}█ █${reset} ${blackf}|${reset} ${yellowf}█ █${reset} ${blackf}|${reset} ${bluef}█ █${reset} ${blackf}|${reset} ${purplef}█ █${reset} ${blackf}|${reset} ${cyanf}█ █${reset}
+ ${blackf}| | | | |${reset}
+EOF \ No newline at end of file