aboutsummaryrefslogtreecommitdiff
path: root/fun/bin
diff options
context:
space:
mode:
authorxero <x@xero.nu>2015-11-01 15:40:55 -0500
committerxero <x@xero.nu>2015-11-01 15:40:55 -0500
commitd83a172950d90861d63b3891b14d5106e710502d (patch)
tree1da5c1e7ed2324e37508f5e817d5d768d8d486b8 /fun/bin
parentc9794fec6f9c9bb5ffbf0666d81bc167cc3273e3 (diff)
downloaddotfiles_ascii-d83a172950d90861d63b3891b14d5106e710502d.tar.xz
dotfiles_ascii-d83a172950d90861d63b3891b14d5106e710502d.zip
use ~/bin like a civilized nixer
Diffstat (limited to 'fun/bin')
-rwxr-xr-xfun/bin/2spooky.lua79
-rwxr-xr-xfun/bin/colors13
-rwxr-xr-xfun/bin/colorscheme27
-rwxr-xr-xfun/bin/dna46
-rwxr-xr-xfun/bin/ghosts31
-rwxr-xr-xfun/bin/invaders54
-rwxr-xr-xfun/bin/metroid27
-rwxr-xr-xfun/bin/pacman37
-rwxr-xr-xfun/bin/pipes122
-rwxr-xr-xfun/bin/pipesx193
-rwxr-xr-xfun/bin/rain100
-rwxr-xr-xfun/bin/ryu188
-rwxr-xr-xfun/bin/slendy35
13 files changed, 952 insertions, 0 deletions
diff --git a/fun/bin/2spooky.lua b/fun/bin/2spooky.lua
new file mode 100755
index 0000000..a0ebc5d
--- /dev/null
+++ b/fun/bin/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/bin/colors b/fun/bin/colors
new file mode 100755
index 0000000..c8d527b
--- /dev/null
+++ b/fun/bin/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/bin/colorscheme b/fun/bin/colorscheme
new file mode 100755
index 0000000..f2aa179
--- /dev/null
+++ b/fun/bin/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='niX' # 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/bin/dna b/fun/bin/dna
new file mode 100755
index 0000000..a049e0b
--- /dev/null
+++ b/fun/bin/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/bin/ghosts b/fun/bin/ghosts
new file mode 100755
index 0000000..2cf1727
--- /dev/null
+++ b/fun/bin/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/bin/invaders b/fun/bin/invaders
new file mode 100755
index 0000000..0ca2036
--- /dev/null
+++ b/fun/bin/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/bin/metroid b/fun/bin/metroid
new file mode 100755
index 0000000..5bb5c72
--- /dev/null
+++ b/fun/bin/metroid
@@ -0,0 +1,27 @@
+#!/bin/sh
+cat << EOF
+
+  
+    
+    
+      
+        
+          
+          
+          
+          
+        
+            
+                 
+             
+         
+           
+           
+           
+          
+        
+            
+          
+        
+    
+EOF
diff --git a/fun/bin/pacman b/fun/bin/pacman
new file mode 100755
index 0000000..51697cc
--- /dev/null
+++ b/fun/bin/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/bin/pipes b/fun/bin/pipes
new file mode 100755
index 0000000..43e7046
--- /dev/null
+++ b/fun/bin/pipes
@@ -0,0 +1,122 @@
+#!/usr/bin/env bash
+# pipes.sh: Animated pipes terminal screensaver.
+#
+# This modified version is maintained at:
+#
+# https://github.com/livibetter/pipes.sh
+
+# options:
+# s = straight [5-15]
+# f = rate [20-100]
+# t = style [0-5]
+# r = ttl
+
+VERSION=0.1.0
+
+M=32768
+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=()
+RNDSTART=0
+NOCOLOR=0
+
+OPTIND=1
+while getopts "p:t:f:s:r:RChv" arg; do
+case $arg in
+ p) ((p=(OPTARG>0)?OPTARG:p));;
+ t) ((OPTARG>=0 && OPTARG<${#sets[@]})) && V+=($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, can be used more than once (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)."
+ echo -e " -v\t\tprint version number.\n"
+ exit 0;;
+ v) echo "$(basename -- "$0") $VERSION"
+ exit 0
+ esac
+done
+
+# set default values if not by options
+((${#V[@]})) || V=(0)
+
+# Attempt to workaround for Bash versions < 4, such as 3.2 on Mac:
+# https://gist.github.com/livibetter/4689307/#comment-892368
+# Untested--in conduction of using shebang `env bash`--should fall back to
+# `sleep`
+printf -v SLEEP "read -t0.0$((1000/f)) -n 1"
+if $SLEEP &>/dev/null; (($? != 142)); then
+ printf -v SLEEP "sleep 0.0$((1000/f))"
+fi
+
+cleanup() {
+ # clear up standard input
+ read -t 0 && cat </dev/stdin>/dev/null
+
+ tput rmcup
+ tput cnorm
+ stty echo
+ 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))
+ v[i]=${V[${#V[@]} * RANDOM / M]}
+done
+
+stty -echo
+tput smcup
+tput reset
+tput civis
+# any key press exits the loop and this script
+while $SLEEP; (($? > 128)) || [[ $SLEEP = sleep* ]] && (($? == 0)); 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, v[i]=V[${#V[@]}*RANDOM/M]))
+ ((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 "${sets[v[i]]: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/bin/pipesx b/fun/bin/pipesx
new file mode 100755
index 0000000..a937bf8
--- /dev/null
+++ b/fun/bin/pipesx
@@ -0,0 +1,193 @@
+#!/bin/bash
+# Animated pipes.sh terminal screensaver at an angle.
+# Copyright (C) 2013, 2014 by Yu-Jie Lin
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+# Website: https://github.com/livibetter/pipesX.sh
+
+VERSION=0.1.0
+
+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=()
+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))] types of pipes, can be used more than once. (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.
+ -v print version number.
+"
+
+while getopts "n:t:i:P:r:RCXhv" 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
+ ;;
+ v)
+ echo "$(basename -- "$0") $VERSION"
+ exit 0
+ esac
+done
+
+# set to default values if not by options
+((${#T[@]})) || T=(0)
+
+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]}
+ t[n]=${T[${#T[@]} * 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]}
+ ((CC)) && t[n]=${T[${#T[@]} * 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[n]]: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/bin/rain b/fun/bin/rain
new file mode 100755
index 0000000..8a8d8f6
--- /dev/null
+++ b/fun/bin/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/bin/ryu b/fun/bin/ryu
new file mode 100755
index 0000000..070f8bb
--- /dev/null
+++ b/fun/bin/ryu
@@ -0,0 +1,188 @@
+#!/bin/bash
+# s y n t a x . s a m u r a i
+# p r e s e n t s
+#
+# ███████ ██ ██ ██ ██
+# ░██░░░░██ ░░██ ██ ░██ ░██
+# ░██ ░██ ░░████ ░██ ░██
+# ░███████ ░░██ ░██ ░██
+# ░██░░░██ ░██ ░██ ░██
+# ░██ ░░██ ░██ ░██ ░██
+# ░██ ░░██ ░██ ░░███████
+# ░░ ░░ ░░ ░░░░░░░
+#
+# ansi art of ryu hayabusa from ninja gaiden
+#
+# ▓▓▓▓▓▓▓▓▓▓
+# ░▓ author ▓ xero <x@xero.nu>
+# ░▓ code ▓ http://code.xero.nu/ryu
+# ░▓ mirror ▓ http://git.io/ryu
+# ░▓▓▓▓▓▓▓▓▓▓
+# ░░░░░░░░░░
+
+cols=`tput cols`
+pad () {
+ count=$1
+ until [[ $count -eq 1 ]]; do
+ let count-=1
+ echo -ne "."
+ done;
+ if [[ $2 ]]; then
+ echo "."
+ fi
+}
+let half=($cols-100)/2
+half=${half/.*}
+
+if [[ -z $1 || $1 == "--grey" || $1 == "-g" || $1 == "grey" ]]; then
+ pad $half; echo -en "..░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true
+ pad $half; echo -en ".░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true
+ pad $half; echo -en ".░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true
+ pad $half; echo -en ".░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true
+ pad $half; echo -en ".░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true
+ pad $half; echo -en ".░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░▒▒▒▒▒▒ ."; pad $half true
+ pad $half; echo -en ".░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░▒▒▒▒▒▒▒ ."; pad $half true
+ pad $half; echo -en ".░░░░░░░░░░░░░░░░▒▒▒▒ ▒▒▒▒▒▒▒▒░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒▒▒▒▒ ."; pad $half true
+ pad $half; echo -en ".░░░░░░░░░░░░░░▒▒▒▒ ▒▒▒▒▒░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true
+ pad $half; echo -en ".░░░░░░░░░░░░░▒▒▒ ▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true
+ pad $half; echo -en ".░░░░░░░░░░░░▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true
+ pad $half; echo -en ".░░░░░░░░░░░ ░░░░░░░░░░░░░ ░░░░░░░░░░░░ ▒ ."; pad $half true
+ pad $half; echo -en ".░░░░░░░░░░ ▒ ░░░▓▓▓▓▓▓▓▓▓▓▓▓░░ ░░░░░░░░░░░░░░░ ░ ."; pad $half true
+ pad $half; echo -en ".░░░░░░░░░░ ░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░ ░░░░░░░░░░░░░░░░░░░ ."; pad $half true
+ pad $half; echo -en ".░░░░░░░░░ ▒ ░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░ ░░▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░ ░ ▒ ."; pad $half true
+ pad $half; echo -en ".░░░░░░░░ ░ ░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░ ░ ▒ ."; pad $half true
+ pad $half; echo -en ".░░░░░░░░ ░ ░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░ ░ ▒ ."; pad $half true
+ pad $half; echo -en ".░░░░░░░░░▒ ░ ░ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓░ ░ ."; pad $half true
+ pad $half; echo -en "░░░░░░░░░░ ░░░ ░ ▓▓▓▓▓▓▓▓░▓▓▓▓░░░▓░░░░░░▓▓▓▓▓ ░ ░ ▒ "; pad $half true
+ pad $half; echo -en "░░░░░░░░▒▒ ░░░░░ ░ ▓▓▓▓▓▓░▓▓▓▓░░▓▓▓░░░░░░▓▓ ░ ░ ░ ▒ "; pad $half true
+ pad $half; echo -en "░░░░░░░░▒ ░░░░░░░░░ ░ ░▓░░▓▓▓▓▓░▓▓▓░░░░░ ░ ░░ ░░ ░ ▒ "; pad $half true
+ pad $half; echo -en "░░░░░░░▒▒ ░░░░░░░ ░░ ▓▓▓▓▓▓▓▓▓░░ ░░ ░ ░░ ░ ▒ "; pad $half true
+ pad $half; echo -en "░░░░░░░▒▒ ░░░░░░░░░░ ░▓▓▓▓▓▓▓░░░ ░░░ ░ ░ ░ ▒ "; pad $half true
+ pad $half; echo -en "░░░░░░░ ▒ ░░░░░░ ░░░▓▓▓░▓░░░░ ░ ░ ░░ ░ ▒ "; pad $half true
+ pad $half; echo -en "░░░░░░░ ▒ ░░░░░░░ ▓▓ ▓ ░░ ░░░░░░░░░░░░░ ░ ░░ ▓ █▓ ░ ░ ░ ▒▒ "; pad $half true
+ pad $half; echo -en ".░░░░░▒ ▒ ░░░░░░░░ ▓▓██ ▓ ██ ██▓ ▓ ░░░▓░ ░ ░ ░░░░ ▓ ██ ▓█ ▓ ██▓▓ ░░░░ ░ ░ ▒ ."; pad $half true
+ pad $half; echo -en ".░░░░░▒ ▒▒ ░░░░░░░░░ ▓██ ▓▓ ▓ ██▓ ▓░░░░▓▓░ ░░░░░░░░ ▓ ▓██ ▓ ▓ ██▓▓ ░░░░░░░ ░ ▒ ."; pad $half true
+ pad $half; echo -en ".░░░░░ ▒░ ░░░░░░░▓░░ ▓███ ▓▓▓▓ ███░ ░░░░▓▓░░░░░░░░░░ ░▓██ ▓▓▓ ███▓ ░░▓▓░░ ░ ▒ ▒ ."; pad $half true
+ pad $half; echo -en "..░░░░ ▒░ ░░░░▓▓▓▓▓▓░ ███ ██ ░░░░░▓▓▓▓▓░░░░░░░ ███ ████ ░░▓▓▓▓░░ ░ ▒ ▒ ."; pad $half true
+ pad $half; echo -en "..░░░░ ▒ ░▒ ░░▓▓▓▓▓▓▓▓▓▓ ██████ ▓▓▓░░ ░░░░▓▓▓▓▓▓░░░░░░░░░▓▓▓ █████ ▓▓▓▓▓▓▓░░░░ ▒▒ ▒ ."; pad $half true
+ pad $half; echo -en "..░░░░ ░ ░░ ░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█░░░░░░░▓▓▓▓▓▓▓░░░░ ░░ ░░▓░▓▓░░░░░░░▓▓▓▓▓▓░░ ▒▒ ▒ ."; pad $half true
+ pad $half; echo -en "..░░░░ ░ ░░ ░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██ ░░░░░░░▓▓▓▓▓▓▓░░░░ ░░░░░ ░░░░░░░░░▓▓▓▓▓░░ ░ ▒▒ ▒ ."; pad $half true
+ pad $half; echo -en "..░░░░▒░░▒░░ ░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▓▓▓▓▓▓▓▓░░░ ░░░░░░░░░░░░░░░░░░▓▓░░░░ ▒▒ ▒ .."; pad $half true
+ pad $half; echo -en "..░░░░▒░░ ░░ ░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓▓▓▓▓▓▓▓░░░░ ░░░░░░░░░░░░░░░░░░░░░ ▒▒ ▒ .."; pad $half true
+ pad $half; echo -en "..░░░░░░░ ▒░▒ ░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░▓▓▓░░ ░░░░░ ░░░░░░░░░░░░░░░░░░░░ ▒ ▒ .."; pad $half true
+ pad $half; echo -en "..░░░░░░░░░░░ ░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ░ ░░░░░░░░░░░░░░░ ▒ ▒ .."; pad $half true
+ pad $half; echo -en "...░░░░░░░░░░░▒ ▒▒ ▓▓▓▓▓▓▓▓▓▓▓▓▓ ░░░░░░░░░░▒▒ ▒▒▒▒▒ ▒ ▒ ..."; pad $half true
+ pad $half; echo -en "...░░░░░░░░░░ ░▒ ▒▒▒░░░ ▓▓▓▓▓▓ ░░░░░░░░░░░░░▒▒▒ ▒▒▒▒▒░░░░▒▒ ▒▒▒▒▒▒▒ ▒▒ ▒ ..."; pad $half true
+ pad $half; echo -en "...░░░░░░░░░░ ░░░ ▒▒▒░░░░░░ ░░░░░ ░░░░░░░░░░▒░▒ ▒▒▒▒▒▒░░░░░░▒▒▒▒▒░▒▒▒▒ ▒▒ ..."; pad $half true
+ pad $half; echo -en "....░░░░░░░░░░ ░░░░░ ▒▒░░░░░░░░░░░░░░ ░░░░░░░░░ ▒░▒▒ ▒▒▒▒▒░░░░▒▒▒▒▒▒░░▒▒▒ ▒▒▒ ...."; pad $half true
+ pad $half; echo -en "....░░░░░░░░░░░░░░░░░░ ▒░░░░░░░░░░░ ░░░░░░░░░░░░░░ ▒ ▒▒▒▒▒▒▒░▒▒▒▒▒▒░░░░▒▒▒ ▒▒ ...."; pad $half true
+ pad $half; echo -en "....░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒ ▒ ░░░▒▒▒▒ ▒▒▒ ...."; pad $half true
+ pad $half; echo -en ".....░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒░▒▒▒ ▒▒▒ ▒░░░░░░░░░░▒ ▒▒▒▒ ▒ ....."; pad $half true
+ pad $half; echo -en ".....░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒ ░░▒▒▒▒▒▒░░░░░░░░░░░░░▒ ░▒▒▒▒ ▒ ....."; pad $half true
+ pad $half; echo -en ".....░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒ ▒▒░▒▒▒▒▒▒▒░░░░░░░░░░ ░░▒▒▒▒▒ ▒ ....."; pad $half true
+ pad $half; echo -en ".....░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒ ░▒▒▒▒▒▒▒▒▒░░▒░░░░░░ ░░▒▒▒▒▒▒ ▒ ....."; pad $half true
+ pad $half; echo -en "......░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒░░▒░▒▒▒ ▒▒▒▒▒░░░░░░░░░▒▒▒▒▒ ▒ ....."; pad $half true
+ pad $half; echo -en "......░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒░▒▒▒▒▒ ░░░░░░░░▒▒▒▒▒▒ ▒ ....."; pad $half true
+ pad $half; echo -en "......░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒░░▒░▒▒▒▒▒▒ ▒░░░░░░░▒▒▒▒▒▒ ▒ ....."; pad $half true
+else
+ if [[ $1 == "--color" || $1 == "-c" || $1 == "color" ]]; then
+ pad $half; echo -en "\e[0;37m..\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒\e[0;36m░░░░░░░░\e[0;34m▒▒▒▒▒▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒\e[0;36m░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒\e[0;36m░░░░░░░░\e[0;34m▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒ ▒▒▒▒▒▒▒▒\e[0;36m░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒\e[0;36m░░░░\e[0;34m▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░\e[0;34m▒▒▒▒ ▒▒▒▒▒\e[0;36m░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░\e[0;34m▒▒▒ ▒▒▒▒\e[0;36m░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░\e[0;34m▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░ \e[0;33m░░░░░░░░░░░░░ ░░░░░░░░░░░░ \e[0;34m▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░ \e[0;34m▒ \e[0;33m░░░▓▓▓▓▓▓▓▓▓▓▓▓░░ ░░░░░░░░░░░░░░░ ░ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░ \e[0;33m░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░ ░░░░░░░░░░░░░░░░░░░ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░ \e[0;34m▒ \e[0;33m░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░ ░░▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░ ░ \e[0;34m▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░ ░ \e[0;33m░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░ ░ \e[0;34m▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░ ░ \e[0;33m░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░ ░ \e[0;34m▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░\e[0;34m▒ \e[0;33m░ ░ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓░ ░ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m\e[0;36m░░░░░░░░░░ \e[0;33m░░░ ░ ▓▓▓▓▓▓▓▓░▓▓▓▓░░░▓░░░░░░▓▓▓▓▓ ░ ░ \e[0;34m▒ \e[0;37m."; pad $half true
+ pad $half; echo -en "\e[0;37m\e[0;36m░░░░░░░░\e[0;34m▒▒ \e[0;33m░░░░░ ░ ▓▓▓▓▓▓░▓▓▓▓░░▓▓▓░░░░░░▓▓ ░ ░ ░ \e[0;34m▒ \e[0;37m."; pad $half true
+ pad $half; echo -en "\e[0;37m\e[0;36m░░░░░░░░\e[0;34m▒ \e[0;33m░░░░░░░░░ ░ ░▓░░▓▓▓▓▓░▓▓▓░░░░░ ░ ░░ ░░ ░ \e[0;34m▒ \e[0;37m."; pad $half true
+ pad $half; echo -en "\e[0;37m\e[0;36m░░░░░░░\e[0;34m▒▒ \e[0;33m░░░░░░░ ░░ ▓▓▓▓▓▓▓▓▓░░ ░░ ░ ░░ ░ \e[0;34m▒ \e[0;37m."; pad $half true
+ pad $half; echo -en "\e[0;37m\e[0;36m░░░░░░░\e[0;34m▒▒ \e[0;33m░░░░░░░░░░ ░▓▓▓▓▓▓▓░░░ ░░░ ░ ░ ░ \e[0;34m▒ \e[0;37m."; pad $half true
+ pad $half; echo -en "\e[0;37m\e[0;36m░░░░░░░ \e[0;34m▒ \e[0;33m░░░░░░ ░░░▓▓▓░▓░░░░ ░ ░ ░░ ░ \e[0;34m▒ \e[0;37m."; pad $half true
+ pad $half; echo -en "\e[0;37m\e[0;36m░░░░░░░ \e[0;34m▒ \e[0;33m░░░░░░░ \e[0;39m▓▓ ▓ \e[0;33m░░ ░░░░░░░░░░░░░ ░ ░░ \e[0;39m▓ █▓ \e[0;33m░ ░ ░ \e[0;34m▒▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░\e[0;34m▒ ▒ \e[0;33m░░░░░░░░ \e[0;39m▓▓██ \e[0;36m▓ ██ \e[0;39m██▓ \e[0;33m▓ ░░░▓░ ░ ░ ░░░░ ▓ \e[0;39m██ \e[0;36m▓█ ▓\e[0;39m ██▓▓ \e[0;33m░░░░ ░ ░ \e[0;34m▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░\e[0;34m▒ ▒▒ \e[0;33m░░░░░░░░░ \e[0;39m▓██ \e[0;36m▓▓ ▓ \e[0;39m██▓ \e[0;33m▓░░░░▓▓░ ░░░░░░░░ ▓ \e[0;39m▓██ \e[0;36m▓ ▓\e[0;39m ██▓▓ \e[0;33m░░░░░░░ ░ \e[0;34m▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░ \e[0;34m▒\e[0;36m░ \e[0;33m░░░░░░░▓░░ \e[0;39m▓███ \e[0;36m▓▓▓▓ \e[0;39m███░ \e[0;33m░░░░▓▓░░░░░░░░░░ \e[0;39m░▓██ \e[0;36m▓▓▓ \e[0;39m███▓ \e[0;33m░░▓▓░░ ░ \e[0;34m▒ ▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m..\e[0;36m░░░░ \e[0;34m▒\e[0;36m░ \e[0;33m░░░░▓▓▓▓▓▓░ \e[0;39m███ ██ \e[0;33m░░░░░▓▓▓▓▓░░░░░░░ \e[0;39m███ ████ \e[0;33m░░▓▓▓▓░░ ░ \e[0;34m▒ ▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m..\e[0;36m░░░░ \e[0;34m▒ \e[0;36m░\e[0;34m▒ \e[0;33m░░▓▓▓▓▓▓▓▓▓▓ \e[0;39m██████ \e[0;33m▓▓▓░░ ░░░░▓▓▓▓▓▓░░░░░░░░░▓▓▓ \e[0;39m█████ \e[0;33m▓▓▓▓▓▓▓░░░░ \e[0;34m▒▒ ▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m..\e[0;36m░░░░ ░ ░░ \e[0;33m░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█░░░░░░░▓▓▓▓▓▓▓░░░░ ░░ ░░▓░▓▓░░░░░░░▓▓▓▓▓▓░░ \e[0;34m▒▒ ▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m..\e[0;36m░░░░ ░ ░░ \e[0;33m░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██ ░░░░░░░▓▓▓▓▓▓▓░░░░ ░░░░░ ░░░░░░░░░▓▓▓▓▓░░ ░ \e[0;34m▒▒ ▒ \e[0;37m.."; pad $half true
+ pad $half; echo -en "\e[0;37m..\e[0;36m░░░░\e[0;34m▒\e[0;36m░░\e[0;34m▒\e[0;36m░░ \e[0;33m░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▓▓▓▓▓▓▓▓░░░ ░░░░░░░░░░░░░░░░░░▓▓░░░░ \e[0;34m▒▒ ▒ \e[0;37m..."; pad $half true
+ pad $half; echo -en "\e[0;37m..\e[0;36m░░░░\e[0;34m▒\e[0;36m░░ ░░ \e[0;33m░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓▓▓▓▓▓▓▓░░░░ ░░░░░░░░░░░░░░░░░░░░░ \e[0;34m▒▒ ▒ \e[0;37m..."; pad $half true
+ pad $half; echo -en "\e[0;37m..\e[0;36m░░░░░░░ \e[0;34m▒\e[0;36m░\e[0;34m▒ \e[0;33m░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░▓▓▓░░ ░░░░░ ░░░░░░░░░░░░░░░░░░░░ \e[0;34m▒ ▒ \e[0;37m..."; pad $half true
+ pad $half; echo -en "\e[0;37m..\e[0;36m░░░░░░░░░░░ \e[0;33m░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ░ ░░░░░░░░░░░░░░░ \e[0;34m▒ ▒ \e[0;37m..."; pad $half true
+ pad $half; echo -en "\e[0;37m...\e[0;36m░░░░░░░░░░░\e[0;34m▒ ▒▒ \e[0;33m▓▓▓▓▓▓▓▓▓▓▓▓▓ \e[0;36m░░░░░░░░░░\e[0;34m▒▒ ▒▒▒▒▒ \e[0;34m▒ ▒ \e[0;37m...."; pad $half true
+ pad $half; echo -en "\e[0;37m...\e[0;36m░░░░░░░░░░ ░\e[0;34m▒ ▒▒▒\e[0;36m░░░ \e[0;33m▓▓▓▓▓▓ \e[0;36m░░░░░░░░░░░░░\e[0;34m▒▒▒ ▒▒▒▒▒\e[0;36m░░░░\e[0;34m▒▒ ▒▒▒▒▒▒▒ ▒▒ ▒ \e[0;37m...."; pad $half true
+ pad $half; echo -en "\e[0;37m...\e[0;36m░░░░░░░░░░ ░░░ \e[0;34m▒▒▒\e[0;36m░░░░░░ ░░░░░ ░░░░░░░░░░\e[0;34m▒\e[0;36m░\e[0;34m▒ ▒▒▒▒▒▒\e[0;36m░░░░░░\e[0;34m▒▒▒▒▒\e[0;36m░\e[0;34m▒▒▒▒ ▒▒ \e[0;37m...."; pad $half true
+ pad $half; echo -en "\e[0;37m....\e[0;36m░░░░░░░░░░ ░░░░░ \e[0;34m▒▒\e[0;36m░░░░░░░░░░░░░░ ░░░░░░░░░ \e[0;34m▒\e[0;36m░\e[0;34m▒▒ ▒▒▒▒▒\e[0;36m░░░░\e[0;34m▒▒▒▒▒▒\e[0;36m░░\e[0;34m▒▒▒ ▒▒▒ \e[0;37m....."; pad $half true
+ pad $half; echo -en "\e[0;37m....\e[0;36m░░░░░░░░░░░░░░░░░░ \e[0;34m▒\e[0;36m░░░░░░░░░░░ ░░░░░░░░░░░░░░ \e[0;34m▒ ▒▒▒▒▒▒▒\e[0;36m░\e[0;34m▒▒▒▒▒▒\e[0;36m░░░░\e[0;34m▒▒▒ ▒▒ \e[0;37m....."; pad $half true
+ pad $half; echo -en "\e[0;37m....\e[0;36m░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ \e[0;34m▒▒▒▒▒▒▒ \e[0;34m▒ \e[0;36m░░░\e[0;34m▒▒▒▒ ▒▒▒ \e[0;37m....."; pad $half true
+ pad $half; echo -en "\e[0;37m.....\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ \e[0;34m▒\e[0;36m░\e[0;34m▒▒▒ ▒▒▒ ▒\e[0;36m░░░░░░░░░░\e[0;34m▒ ▒▒▒▒ ▒ \e[0;37m......"; pad $half true
+ pad $half; echo -en "\e[0;37m.....\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒ \e[0;36m░░\e[0;34m▒▒▒▒▒▒\e[0;36m░░░░░░░░░░░░░\e[0;34m▒ \e[0;36m░\e[0;34m▒▒▒▒ ▒ \e[0;37m......"; pad $half true
+ pad $half; echo -en "\e[0;37m.....\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒ ▒▒\e[0;36m░\e[0;34m▒▒▒▒▒▒▒\e[0;36m░░░░░░░░░░ ░░\e[0;34m▒▒▒▒▒ \e[0;34m▒ \e[0;37m......"; pad $half true
+ pad $half; echo -en "\e[0;37m.....\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒ \e[0;36m░\e[0;34m▒▒▒▒▒▒▒▒▒\e[0;36m░░\e[0;34m▒\e[0;36m░░░░░░ ░░\e[0;34m▒▒▒▒▒▒ ▒ \e[0;37m......"; pad $half true
+ pad $half; echo -en "\e[0;37m......\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒\e[0;36m░░\e[0;34m▒\e[0;36m░\e[0;34m▒▒▒ ▒▒▒▒▒\e[0;36m░░░░░░░░░\e[0;34m▒▒▒▒▒ ▒ \e[0;37m......"; pad $half true
+ pad $half; echo -en "\e[0;37m......\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒\e[0;36m░\e[0;34m▒▒▒▒▒ \e[0;36m░░░░░░░░\e[0;34m▒▒▒▒▒▒ ▒ \e[0;37m......"; pad $half true
+ pad $half; echo -en "\e[0;37m......\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒\e[0;36m░░\e[0;34m▒\e[0;36m░\e[0;34m▒▒▒▒▒▒ ▒\e[0;36m░░░░░░░\e[0;34m▒▒▒▒▒▒ ▒ \e[0;37m......"; pad $half true
+ elif [[ $1 = '--version' || $1 = '-v' || $1 == "version" ]]; then
+ echo "ryu version 1.0.0"
+ echo "xero / syntax-samurai <http://git.io/ryu>"
+ echo " ▟▙"
+ echo "▟▒░░░░░░░▜▙▜████████████████████████████████▛"
+ echo "▜▒░░░░░░░▟▛▟▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▛"
+ echo " ▜▛"
+ echo "this program is free software, and distributed under the Creative Commons "
+ echo "Attribution-ShareAlike 3.0 Unported License (CC BY-SA 3.0)"
+ echo "http://creativecommons.org/licenses/by-sa/3.0/"
+ exit
+ elif [[ $1 = '--help' || $1 = '-h' || $1 == "help" ]]; then
+ echo ""
+ echo " s y n t a x . s a m u r a i"
+ echo " p r e s e n t s"
+ echo ""
+ echo " ███████ ██ ██ ██ ██"
+ echo " ░██░░░░██ ░░██ ██ ░██ ░██"
+ echo " ░██ ░██ ░░████ ░██ ░██"
+ echo " ░███████ ░░██ ░██ ░██"
+ echo " ░██░░░██ ░██ ░██ ░██"
+ echo " ░██ ░░██ ░██ ░██ ░██"
+ echo " ░██ ░░██ ░██ ░░███████"
+ echo " ░░ ░░ ░░ ░░░░░░░"
+ echo ""
+ echo " usage: ryu [option]"
+ echo ""
+ echo " ansi art of ryu hayabusa from ninja gaiden"
+ echo ""
+ echo " --help, -h : display this message"
+ echo " --version, -v : display version and license"
+ echo " --grey, -g : display the art [default]"
+ echo " --color, -c : display the art in color"
+ echo ""
+ echo " ▟▙"
+ echo "▟▒░░░░░░░▜▙▜████████████████████████████████▛"
+ echo "▜▒░░░░░░░▟▛▟▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▛"
+ echo " ▜▛"
+ echo ""
+ echo " author: xero harrison > http://xero.nu"
+ echo " homepage: http://git.io/ryu"
+ echo " crew: http://github.com/syntax-samurai"
+ echo ""
+ exit
+ else
+ echo "unknown option"
+ echo "call 'ryu --help' for more info"
+ exit
+ fi
+fi
+exit \ No newline at end of file
diff --git a/fun/bin/slendy b/fun/bin/slendy
new file mode 100755
index 0000000..766e06c
--- /dev/null
+++ b/fun/bin/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