Advertisement
Guest User

screenfetch

a guest
Jul 24th, 2014
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 138.24 KB | None | 0 0
  1. #!/usr/bin/env bash
  2.  
  3. # screenFetch - a CLI Bash script to show system/theme info in screenshots
  4.  
  5. # Copyright (c) 2010-2014 Brett Bohnenkamper <kittykatt@kittykatt.us>
  6.  
  7. #  This program is free software: you can redistribute it and/or modify
  8. #  it under the terms of the GNU General Public License as published by
  9. #  the Free Software Foundation, either version 3 of the License, or
  10. #  (at your option) any later version.
  11. #
  12. #  This program is distributed in the hope that it will be useful,
  13. #  but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. #  GNU General Public License for more details.
  16. #
  17. #  You should have received a copy of the GNU General Public License
  18. #  along with this program.  If not, see <http://www.gnu.org/licenses/>.
  19.  
  20. # Yes, I do realize some of this is horribly ugly coding. Any ideas/suggestions would be
  21. # appreciated by emailing me or by stopping by http://github.com/KittyKatt/screenFetch . You
  22. # could also drop in on my IRC network, SilverIRC, at irc://kittykatt.silverirc.com/me0wz
  23. # to put forth suggestions/ideas. Thank you.
  24.  
  25.  
  26. LANG=C
  27. LANGUAGE=C
  28. LC_ALL=C
  29.  
  30. scriptVersion="3.5.0"
  31.  
  32. ######################
  33. # Settings for fetcher
  34. ######################
  35.  
  36. # This setting controls what ASCII logo is displayed. Available: Arch Linux (Old and Current Logos), Linux Mint, Ubuntu, Crunchbang, Debian, Raspbian, Gentoo, Mandrake/Mandriva, Slackware, SUSE, Fedora, BSD, OS X and None
  37. # distro="Linux"
  38.  
  39. # 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.
  40. #display="distro host kernel uptime pkgs shell res de wm wmtheme gtk disk cpu gpu mem"
  41. display=( distro host kernel uptime pkgs shell res de wm wmtheme gtk cpu gpu mem )
  42. # Display Type: ASCII or Text
  43. display_type="ASCII"
  44.  
  45. # 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.
  46. # textcolor="\e[0m"
  47. # labelcolor="\e[1;34m"
  48.  
  49. # WM & DE process names
  50. # Removed WM's: compiz
  51. wmnames=( fluxbox openbox blackbox xfwm4 metacity kwin icewm pekwm fvwm dwm awesome wmaker stumpwm musca xmonad i3 ratpoison scrotwm spectrwm wmfs wmii beryl subtle e16 enlightenment sawfish emerald monsterwm dminiwm compiz Finder herbstluftwm notion bspwm cinnamon 2bwm echinus )
  52. denames=( gnome-session xfce-mcs-manage xfce4-session xfconfd ksmserver lxsession gnome-settings-daemon mate-session mate-settings-daemon Finder )
  53.  
  54. # Screenshot Settings
  55. # This setting lets the script know if you want to take a screenshot or not. 1=Yes 0=No
  56. screenshot=
  57. # You can specify a custom screenshot command here. Just uncomment and edit. Otherwise, we'll be using the default command: scrot -cd3.
  58. # screenCommand="scrot -cd5"
  59. hostshot=
  60. baseurl="http://www.example.com"
  61. serveraddr="www.example.com"
  62. scptimeout="20"
  63. serverdir="/path/to/directory"
  64. shotfile=$(printf "screenFetch-`date +'%Y-%m-%d_%H-%M-%S'`.png")
  65.  
  66. # Verbose Setting - Set to 1 for verbose output.
  67. verbosity=
  68.  
  69. #############################################
  70. #### CODE No need to edit past here CODE ####
  71. #############################################
  72.  
  73. #########################################
  74. # Static Variables and Common Functions #
  75. #########################################
  76. c0="\033[0m" # Reset Text
  77. bold="\033[1m" # Bold Text
  78. underline="\033[4m" # Underline Text
  79. display_index=0
  80.  
  81. # User options
  82. gtk_2line="no"
  83.  
  84. # Static Color Definitions
  85. colorize () {
  86.     echo -ne "\033[38;5;$1m"
  87. }
  88. getColor() {
  89.     if [[ -n "$1" ]]; then
  90.         if [[ ${BASH_VERSINFO[0]} -ge 4 ]]; then
  91.             if [[ ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -gt 1 ]] || [[ ${BASH_VERSINFO[0]} -gt 4 ]]; then
  92.                 tmp_color=${1,,}
  93.             else
  94.                 tmp_color="$(tr '[:upper:]' '[:lower:]' <<< ${1})"
  95.             fi
  96.         else
  97.             tmp_color="$(tr '[:upper:]' '[:lower:]' <<< ${1})"
  98.         fi
  99.         case "${tmp_color}" in
  100.             'black')        color_ret='\033[0m\033[30m';;
  101.             'red')          color_ret='\033[0m\033[31m';;
  102.             'green')        color_ret='\033[0m\033[32m';;
  103.             'brown')        color_ret='\033[0m\033[33m';;
  104.             'blue')         color_ret='\033[0m\033[34m';;
  105.             'purple')       color_ret='\033[0m\033[35m';;
  106.             'cyan')         color_ret='\033[0m\033[36m';;
  107.             'light grey')   color_ret='\033[0m\033[37m';;
  108.             'dark grey')    color_ret='\033[0m\033[1;30m';;
  109.             'light red')    color_ret='\033[0m\033[1;31m';;
  110.             'light green')  color_ret='\033[0m\033[1;32m';;
  111.             'yellow')       color_ret='\033[0m\033[1;33m';;
  112.             'light blue')   color_ret='\033[0m\033[1;34m';;
  113.             'light purple') color_ret='\033[0m\033[1;35m';;
  114.             'light cyan')   color_ret='\033[0m\033[1;36m';;
  115.             'white')        color_ret='\033[0m\033[1;37m';;
  116.             # Some 256 colors
  117.             'orange') color_ret="$(colorize '202')";;
  118.         esac
  119.         [[ -n "${color_ret}" ]] && echo "${color_ret}"
  120.     else
  121.         :
  122.     fi
  123. }
  124.  
  125. function verboseOut {
  126.     printf "\033[1;31m:: \033[0m$1\n"
  127. }
  128.  
  129. function errorOut {
  130.     printf "\033[1;37m[[ \033[1;31m! \033[1;37m]] \033[0m$1\n"
  131. }
  132. function stderrOut {
  133.     while IFS='' read -r line; do printf "\033[1;37m[[ \033[1;31m! \033[1;37m]] \033[0m${line}\n"; done
  134. }
  135.  
  136.  
  137. ####################
  138. #  Color Defines
  139. ####################
  140.  
  141. detectColors() {
  142.     my_colors=$(printf "$OPTARG" | sed 's/^,/na,/;s/,$/,na/;s/,/ /')
  143.     my_lcolor=$(printf "$my_colors" | awk -F' ' '{print $1}')
  144.     if [[ "$my_lcolor" != "na" ]]; then
  145.         if [[ $(tput colors) -eq "256" ]]; then my_lcolor="\033[38;5;${my_lcolor}m"
  146.         else
  147.             case $my_lcolor in
  148.                 0|00)  export my_lcolor=$(getColor 'black');;
  149.                 1|01)  export my_lcolor=$(getColor 'red');;
  150.                 2|02)  export my_lcolor=$(getColor 'green');;
  151.                 3|03)  export my_lcolor=$(getColor 'brown');;
  152.                 4|04)  export my_lcolor=$(getColor 'blue');;
  153.                 5|05)  export my_lcolor=$(getColor 'purple');;
  154.                 6|06)  export my_lcolor=$(getColor 'cyan');;
  155.                 7|07)  export my_lcolor=$(getColor 'light grey');;
  156.                 8|08)  export my_lcolor=$(getColor 'dark grey');;
  157.                 9|09)  export my_lcolor=$(getColor 'light red');;
  158.                 10) export my_lcolor=$(getColor 'light green');;
  159.                 11) export my_lcolor=$(getColor 'yellow');;
  160.                 12) export my_lcolor=$(getColor 'light blue');;
  161.                 13) export my_lcolor=$(getColor 'light purple');;
  162.                 14) export my_lcolor=$(getColor 'light cyan');;
  163.                 15) export my_lcolor=$(getColor 'white');;
  164.                 *) unset my_lcolor; continue ;;
  165.             esac
  166.         fi
  167.     else
  168.         unset my_lcolor
  169.     fi
  170.     my_hcolor=$(printf "$my_colors" | awk -F' ' '{print $2}')
  171.     if [[ "$my_hcolor" != "na" ]]; then
  172.         if [[ $(tput colors) -eq "256" ]]; then my_hcolor="\033[38;5;${my_hcolor}m"
  173.         else
  174.             case $my_hcolor in
  175.                 0|00)  export my_hcolor=$(getColor 'black');;
  176.                 1|01)  export my_hcolor=$(getColor 'red');;
  177.                 2|02)  export my_hcolor=$(getColor 'green');;
  178.                 3|03)  export my_hcolor=$(getColor 'brown');;
  179.                 4|04)  export my_hcolor=$(getColor 'blue');;
  180.                 5|05)  export my_hcolor=$(getColor 'purple');;
  181.                 6|06)  export my_hcolor=$(getColor 'cyan');;
  182.                 7|07)  export my_hcolor=$(getColor 'light grey');;
  183.                 8|08)  export my_hcolor=$(getColor 'dark grey');;
  184.                 9|09)  export my_hcolor=$(getColor 'light red');;
  185.                 10) export my_hcolor=$(getColor 'light green');;
  186.                 11) export my_hcolor=$(getColor 'yellow');;
  187.                 12) export my_hcolor=$(getColor 'light blue');;
  188.                 13) export my_hcolor=$(getColor 'light purple');;
  189.                 14) export my_hcolor=$(getColor 'light cyan');;
  190.                 15) export my_hcolor=$(getColor 'white');;
  191.                 *) unset my_hcolor; continue ;;
  192.             esac
  193.         fi
  194.     else
  195.         unset my_hcolor
  196.     fi
  197. }
  198.  
  199.  
  200. displayHelp() {
  201.     printf "${underline}Usage${c0}:\n"
  202. #   printf "  screenFetch [OPTIONAL FLAGS]\n\n"
  203.     printf "  ${0} [OPTIONAL FLAGS]\n\n"
  204.     printf "screenFetch - a CLI Bash script to show system/theme info in screenshots.\n\n"
  205.     printf "${underline}Supported GNU/Linux Distributions${c0}:\n"
  206.     printf "    Arch Linux (Old and Current Logos), Antergos, Chakra, CentOS, Debian,\n"
  207.     printf "    CrunchBang, Raspbian, elementary OS, Fedora, Frugalware, Fuduntu, Gentoo,\n"
  208.     printf "    Funtoo, Jiyuu Linux, LinuxDeepin, Kali Linux, Mageia, Mandriva, Manjaro,\n"
  209.     printf "    Linux Mint, LMDE, openSUSE, Parabola GNU/Linux-libre, Peppermint,\n"
  210.     printf "    Red Hat Enterprise Linux, Sabayon, Scientific Linux, Slackware, SolusOS,\n"
  211.     printf "    TinyCore, Trisquel, Ubuntu and Viperr.\n\n"
  212.     printf "${underline}Other Supported Systems${c0}:\n"
  213.     printf "    Mac OS X, FreeBSD, DragonFlyBSD, NetBSD, OpenBSD, Android and Cygwin.\n\n"
  214.     printf "${underline}Supported Desktop Managers${c0}:\n"
  215.     printf "    KDE, Gnome, Unity, Xfce, LXDE, Cinnamon, MATE and RazorQt.\n\n"
  216.     printf "${underline}Supported Window Managers${c0}:\n"
  217.     printf "    2bwm, Awesome, Beryl, Blackbox, Cinnamon, Compiz, dminiwm, dwm, E16, E17,\n"
  218.     printf "    echinus, Emerald, FluxBox, FVWM, herbstluftwm, IceWM, KWin, Metacity,\n"
  219.     printf "    monsterwm, Musca, Gala, Mutter, Muffin, Notion, OpenBox, PekWM, Ratpoison,\n"
  220.     printf "    Sawfish, ScrotWM, SpectrWM, StumpWM, subtle, WindowMaker, WMFS, wmii,\n"
  221.     printf "    Xfwm4, XMonad and i3.\n\n"
  222.     printf "${underline}Options${c0}:\n"
  223.     printf "   ${bold}-v${c0}                 Verbose output.\n"
  224.     printf "   ${bold}-o 'OPTIONS'${c0}       Allows for setting script variables on the\n"
  225.     printf "              command line. Must be in the following format...\n"
  226.     printf "              'OPTION1=\"OPTIONARG1\";OPTION2=\"OPTIONARG2\"'\n"
  227.     #echo -e "   ${bold}-d 'ARGUMENTS'${c0}     Allows for setting what information is displayed"
  228.     #echo -e "            on the command line. Format must be as follows:"
  229.     #echo -e "            OPTION,OPTION,OPTION,OPTION. Valid options are"
  230.     #echo -e "            host, distro, kernel, uptime, pkgs, shell, res, de, wm,"
  231.     #echo -e "            wmtheme, gtk, cpu, gpu, mem."
  232.     printf "   ${bold}-n${c0}                 Do not display ASCII distribution logo.\n"
  233.     printf "   ${bold}-N${c0}                 Strip all color from output.\n"
  234.     printf "   ${bold}-t${c0}                 Truncate output based on terminal width (Experimental!).\n"
  235.     printf "   ${bold}-s(m)${c0}              Using this flag tells the script that you want it\n"
  236.     printf "              to take a screenshot. Use the -m flag if you would like\n"
  237.     printf "              to move it to a new location afterwards.\n"
  238.     printf "   ${bold}-c string${c0}          You may change the outputted colors with -c. The format is\n"
  239.     printf "                      as follows: [0-9][0-9],[0-9][0-9]. The first argument controls the\n"
  240.     printf "                      ASCII logo colors and the label colors. The second argument\n"
  241.     printf "                      controls the colors of the information found. One argument may be\n"
  242.     printf "                      used without the other.\n"
  243.     printf "   ${bold}-S 'COMMAND'${c0}       Here you can specify a custom screenshot command for\n"
  244.     printf "              the script to execute. Surrounding quotes are required.\n"
  245.     printf "   ${bold}-D 'DISTRO'${c0}        Here you can specify your distribution for the script\n"
  246.     printf "              to use. Surrounding quotes are required.\n"
  247.     printf "   ${bold}-A 'DISTRO'${c0}        Here you can specify the distribution art that you want\n"
  248.     printf "              displayed. This is for when you want your distro\n"
  249.     printf "                      detected but want to display a different logo.\n"
  250.     printf "   ${bold}-E${c0}                 Suppress output of errors.\n"
  251.     printf "   ${bold}-V${c0}                 Display current script version.\n"
  252.     printf "   ${bold}-h${c0}                 Display this help.\n"
  253. }
  254.  
  255. #####################
  256. # Begin Flags Phase
  257. #####################
  258.  
  259. case $1 in
  260.     --help) displayHelp; exit 0;;
  261. esac
  262.        
  263.  
  264. while getopts ":hsmevVEnNtlS:A:D:o:Bc:d:" flags; do
  265.     case $flags in
  266.         h) displayHelp; exit 0;;
  267.         s) screenshot=1; continue;;
  268.         S) screenCommand=$OPTARG; continue;;
  269.         m) hostshot=1; continue;;
  270.         v) verbosity=1; continue;;
  271.         V)
  272.             printf $underline"screenFetch"$c0" - Version $scriptVersion\n"
  273.             printf "Created by and licensed to Brett Bohnenkamper <kittykatt@kittykatt.us>\n"
  274.             printf "OS X porting done almost solely by shrx (https://github.com/shrx) and Hu6.\n\n"
  275.             printf "This is free software; see the source for copying conditions.  There is NO warranty; not even MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
  276.             exit 0
  277.         ;;
  278.         E) errorSuppress="1";;
  279.         D) distro=$OPTARG; continue;;
  280.         A) asc_distro=$OPTARG; continue;;
  281.         t) truncateSet="Yes";;
  282.         n) display_type="Text";;
  283.         o) overrideOpts=$OPTARG; continue;;
  284.         c) detectColors "$OPTARGS"; continue;;
  285.         d) overrideDisplay=$OPTARG; continue;;
  286.         N) no_color='1';;
  287.         :) errorOut "Error: You're missing an argument somewhere. Exiting."; exit 1;;
  288.         ?) errorOut "Error: Invalid flag somewhere. Exiting."; exit 1;;
  289.         *) errorOut "Error"; exit 1;;
  290.     esac
  291. done
  292.  
  293. ###################
  294. # End Flags Phase
  295. ###################
  296.  
  297.  
  298. ####################
  299. # Override Options
  300. ####################
  301.  
  302. if [[ "$overrideOpts" ]]; then
  303.     [[ "$verbosity" -eq "1" ]] && verboseOut "Found 'o' flag in syntax. Overriding some script variables..."
  304.     OLD_IFS="$IFS"
  305.     IFS=";"
  306.     for overopt in "$overrideOpts"; do
  307.         eval "$overrideOpts"
  308.     done
  309.     IFS="$OLD_IFS"
  310. fi
  311.  
  312.  
  313. #########################
  314. # Begin Detection Phase
  315. #########################
  316.  
  317. # Distro Detection - Begin
  318. detectdistro () {
  319.     if [[ -z $distro ]]; then
  320.         distro="Unknown"
  321.  
  322.         # LSB Release Check
  323.         if type -p lsb_release >/dev/null 2>&1; then
  324.             # read distro_detect distro_release distro_codename <<< $(lsb_release -sirc)
  325.             distro_detect=( $(lsb_release -sirc) )
  326.             if [[ ${#distro_detect[@]} -eq 3 ]]; then
  327.                 distro_codename=${distro_detect[2]}
  328.                 distro_release=${distro_detect[1]}
  329.                 distro_detect=${distro_detect[0]}
  330.             else
  331.                 for ((i=0; i<${#distro_detect[@]}; i++)); do
  332.                     if [[ ${distro_detect[$i]} =~ ^[[:digit:]]+((.[[:digit:]]+|[[:digit:]]+|)+)$ ]]; then
  333.                         distro_release=${distro_detect[$i]}
  334.                         distro_codename=${distro_detect[@]:$(($i+1)):${#distro_detect[@]}+1}
  335.                         distro_detect=${distro_detect[@]:0:${i}}
  336.                         break 1
  337.                     elif [[ ${distro_detect[$i]} =~ [Nn]/[Aa] || ${distro_detect[$i]} == "rolling" ]]; then
  338.                         distro_release=${distro_detect[$i]}
  339.                         distro_codename=${distro_detect[@]:$(($i+1)):${#distro_detect[@]}+1}
  340.                         distro_detect=${distro_detect[@]:0:${i}}
  341.                         break 1
  342.                     fi
  343.                 done
  344.             fi
  345.  
  346.             if [[ "${distro_detect}" == "archlinux" || "${distro_detect}" == "Arch Linux" || "${distro_detect}" == "arch" || "${distro_detect}" == "Arch" || "${distro_detect}" == "archarm" ]]; then
  347.                 distro="Arch Linux"
  348.                 distro_release="n/a"
  349.                 if grep -q 'antergos' /etc/os-release; then
  350.                     distro="Antergos"
  351.                     distro_release="n/a"
  352.                 fi
  353.             elif [[ "${distro_detect}" == "Chakra" ]]; then
  354.                 distro="Chakra"
  355.                 distro_release=""
  356.             elif [[ "${distro_detect}" == "CentOS" ]]; then
  357.                 distro="CentOS"
  358.             elif [[ "${distro_detect}" == "Debian" ]]; then
  359.                 if [[ -f /etc/crunchbang-lsb-release || -f /etc/lsb-release-crunchbang ]]; then
  360.                     distro="CrunchBang"
  361.                     distro_release=$(awk -F'=' '/^DISTRIB_RELEASE=/ {print $2}' /etc/lsb-release-crunchbang)
  362.                     distro_codename=$(awk -F'=' '/^DISTRIB_DESCRIPTION=/ {print $2}' /etc/lsb-release-crunchbang)
  363.                 elif [[ -f /etc/os-release ]]; then
  364.                     if [[ "$(cat /etc/os-release)" =~ "Raspbian" ]]; then
  365.                         distro="Raspbian"
  366.                         distro_release=$(awk -F'=' '/^PRETTY_NAME=/ {print $2}' /etc/os-release)
  367.                     else
  368.                         distro="Debian"
  369.                     fi
  370.                 else
  371.                     distro="Debian"
  372.                 fi
  373.             elif [[ "${distro_detect}" == "elementary" || "${distro_detect}" == "elementary OS" ]]; then
  374.                 distro="elementary OS"
  375.             elif [[ "${distro_detect}" == "KaOS" || "${distro_detect}" == "kaos" ]]; then
  376.                 distro="KaOS"  
  377.             elif [[ "${distro_detect}" == "Fedora" ]]; then
  378.                 distro="Fedora"
  379.             elif [[ "${distro_detect}" == "frugalware" ]]; then
  380.                 distro="Frugalware"
  381.                 distro_codename=null
  382.                 distro_release=null
  383.             elif [[ "${distro_detect}" == "Fuduntu" ]]; then
  384.                 distro="Fuduntu"
  385.                 distro_codename=null
  386.             elif [[ "${distro_detect}" == "Gentoo" ]]; then
  387.                 if [[ "$(lsb_release -sd)" =~ "Funtoo" ]]; then
  388.                     distro="Funtoo"
  389.                 else
  390.                     distro="Gentoo"
  391.                 fi
  392.             elif [[ "${distro_detect}" == "Jiyuu Linux" ]]; then
  393.                  distro="Jiyuu Linux"
  394.             elif [[ "${distro_detect}" == "LinuxDeepin" ]]; then
  395.                 distro="LinuxDeepin"
  396.                 distro_codename=null
  397.             elif [[ "${distro_detect}" == "Debian Kali Linux" ]]; then
  398.                  distro="Kali Linux"
  399.             elif [[ "${distro_detect}" == "Mageia" ]]; then
  400.                 distro="Mageia"
  401.             elif [[ "$distro_detect" == "MandrivaLinux" ]]; then
  402.                 distro="Mandriva"
  403.                 if [[ "${distro_codename}" == "turtle" ]]; then
  404.                     distro="Mandriva-${distro_release}"
  405.                     distro_codename=null
  406.                 elif [[ "${distro_codename}" == "Henry_Farman" ]]; then
  407.                     distro="Mandriva-${distro_release}"
  408.                     distro_codename=null
  409.                 elif [[ "${distro_codename}" == "Farman" ]]; then
  410.                     distro="Mandriva-${distro_release}"
  411.                     distro_codename=null
  412.                 elif [[ "${distro_codename}" == "Adelie" ]]; then
  413.                     distro="Mandriva-${distro_release}"
  414.                     distro_codename=null
  415.                 elif [[ "${distro_codename}" == "pauillac" ]]; then
  416.                     distro="Mandriva-${distro_release}"
  417.                     distro_codename=null
  418.                 fi
  419.             elif [[ "${distro_detect}" == "ManjaroLinux" ]]; then
  420.                 distro="Manjaro"
  421.             elif [[ "${distro_detect}" == "LinuxMint" ]]; then
  422.                 distro="Mint"
  423.                 if [[ "${distro_codename}" == "debian" ]]; then
  424.                     distro="LMDE"
  425.                     distro_codename="n/a"
  426.                     distro_release="n/a"
  427.                 fi
  428.             elif [[ "${distro_detect}" == "SUSE LINUX" || "${distro_detect}" == "openSUSE project" ]]; then
  429.                 distro="openSUSE"
  430.             elif [[ "${distro_detect}" == "Parabola GNU/Linux-libre" || "${distro_detect}" == "Parabola" ]]; then
  431.                 distro="Parabola GNU/Linux-libre"
  432.                 distro_codename="n/a"
  433.                 distro_release="n/a"
  434.             elif [[ "${distro_detect}" == "Peppermint" ]]; then
  435.                 distro="Peppermint"
  436.                 distro_codename=null
  437.             elif [[ "${distro_detect}" == "CentOS" || "${distro_detect}" =~ "RedHatEnterprise" ]]; then
  438.                 distro="Red Hat Enterprise Linux"
  439.             elif [[ "${distro_detect}" == "Sabayon" ]]; then
  440.                 distro="Sabayon"
  441.             elif [[ "${distro_detect}" == "SolusOS" ]]; then
  442.                 distro="SolusOS"
  443.             elif [[ "${distro_detect}" == "Trisquel" ]]; then
  444.                 distro="Trisquel"
  445.             elif [[ "${distro_detect}" == "Ubuntu" ]]; then
  446.                 distro="Ubuntu"
  447.             elif [[ "${distro_detect}" == "Viperr" ]]; then
  448.                 distro="Viperr"
  449.                 distro_codename=null
  450.             fi
  451.             if [[ -n ${distro_release} && ${distro_release} != "n/a" ]]; then distro_more="$distro_release"; fi
  452.             if [[ -n ${distro_codename} && ${distro_codename} != "n/a" ]]; then distro_more="$distro_more $distro_codename"; fi
  453.             if [[ -n ${distro_more} ]]; then
  454.                 distro_more="${distro} ${distro_more}"
  455.             fi
  456.         fi
  457.  
  458.         # Existing File Check
  459.         if [ "$distro" == "Unknown" ]; then
  460.             if [ $(uname -o 2>/dev/null) ]; then
  461.                 if [ `uname -o` == "Cygwin" ]; then distro="Cygwin"; fake_distro="${distro}"; fi
  462.             fi
  463.             if [ -f /etc/os-release ]; then
  464.                 distrib_id=$(</etc/os-release);
  465.                 for l in $(echo $distrib_id); do
  466.                     if [[ ${l} =~ ^ID= ]]; then
  467.                         distrib_id=${l//*=}
  468.                         break 1
  469.                     fi
  470.                 done
  471.                 if [[ -n ${distrib_id} ]]; then
  472.                     if [[ -n ${BASH_VERSINFO} && ${BASH_VERSINFO} -ge 4 ]]; then
  473.                         distrib_id=$(for i in ${distrib_id}; do echo -n "${i^} "; done)
  474.                         distro=${distrib_id% }
  475.                         unset distrib_id
  476.                     else
  477.                         distrib_id=$(for i in ${distrib_id}; do FIRST_LETTER=$(echo -n "${i:0:1}" | tr "[:lower:]" "[:upper:]"); echo -n "${FIRST_LETTER}${i:1} "; done)
  478.                         distro=${distrib_id% }
  479.                         unset distrib_id
  480.                     fi
  481.                 fi
  482.  
  483.                 # Hotfixes
  484.                 [[ "${distro}" == "antergos" || "${distro}" == "Antergos" ]] && distro="Antergos"
  485.                 [[ "${distro}" == "Arch" ]] && distro="Arch Linux"
  486.                 [[ "${distro}" == "Archarm" || "${distro}" == "archarm" ]] && distro="Arch Linux"
  487.                 [[ "${distro}" == "elementary" ]] && distro="elementary OS"
  488.             fi
  489.  
  490.             if [[ "${distro}" == "Unknown" ]]; then
  491.                 if [[ "${OSTYPE}" == "linux-gnu" || "${OSTYPE}" == "linux" ]]; then
  492.                     if [ -f /etc/lsb-release ]; then
  493.                         LSB_RELEASE=$(</etc/lsb-release)
  494.                         distro=$(echo ${LSB_RELEASE} | awk 'BEGIN {
  495.                             distro = "Unknown"
  496.                         }
  497.                         {
  498.                             if ($0 ~ /[Uu][Bb][Uu][Nn][Tt][Uu]/) {
  499.                                 distro = "Ubuntu"
  500.                                 exit
  501.                             }
  502.                             else if ($0 ~ /[Mm][Ii][Nn][Tt]/ && $0 ~ /[Dd][Ee][Bb][Ii][Aa][Nn]/) {
  503.                                 distro = "LMDE"
  504.                                 exit
  505.                             }
  506.                             else if ($0 ~ /[Mm][Ii][Nn][Tt]/) {
  507.                                 distro = "Mint"
  508.                                 exit
  509.                             }
  510.                         } END {
  511.                             print distro
  512.                         }')
  513.                     fi
  514.                 fi
  515.             fi
  516.  
  517.             if [[ "${distro}" == "Unknown" ]]; then
  518.                 if [[ "${OSTYPE}" == "linux-gnu" || "${OSTYPE}" == "linux" ]]; then
  519.                     if [ -f /etc/arch-release ]; then distro="Arch Linux"
  520.                     elif [ -f /etc/chakra-release ]; then distro="Chakra"
  521.                     elif [ -f /etc/crunchbang-lsb-release ]; then distro="CrunchBang"
  522.                     elif [ -f /etc/debian_version ]; then distro="Debian"
  523.                     elif [ -f /etc/fedora-release ] && grep -q "Fedora" /etc/fedora-release; then distro="Fedora"
  524.                     elif [ -f /etc/frugalware-release ]; then distro="Frugalware"
  525.                     elif [ -f /etc/gentoo-release ]; then
  526.                         if grep -q "Funtoo" /etc/gentoo-release ; then
  527.                             distro="Funtoo"
  528.                         else
  529.                             distro="Gentoo"
  530.                         fi
  531.                     elif [ -f /etc/mageia-release ]; then distro="Mageia"
  532.                     elif [ -f /etc/mandrake-release ]; then distro="Mandrake"
  533.                     elif [ -f /etc/mandriva-release ]; then distro="Mandriva"
  534.                     elif [ -f /etc/SuSE-release ]; then distro="openSUSE"
  535.                     elif [ -f /etc/redhat-release ] && grep -q "Red Hat" /etc/redhat-release; then distro="Red Hat Enterprise Linux"
  536.                     elif [ -f /etc/redhat-release ] && grep -q "CentOS" /etc/redhat-release; then distro="CentOS"
  537.                     elif [ -f /etc/slackware-version ]; then distro="Slackware"
  538.                     elif [ -f /usr/share/doc/tc/release.txt ]; then distro="TinyCore"
  539.                     elif [ -f /etc/sabayon-edition ]; then distro="Sabayon"; fi
  540.                 else
  541.                     if [[ -x /usr/bin/sw_vers ]] && /usr/bin/sw_vers | grep -i "Mac OS X" >/dev/null; then
  542.                         distro="Mac OS X"
  543.                     elif [[ -f /var/run/dmesg.boot ]]; then
  544.                         distro=$(awk 'BEGIN {
  545.                             distro = "Unknown"
  546.                         }
  547.                         {
  548.                             if ($0 ~ /DragonFly/) {
  549.                                 distro = "DragonFlyBSD"
  550.                                 exit
  551.                             }
  552.                             else if ($0 ~ /FreeBSD/) {
  553.                                 distro = "FreeBSD"
  554.                                 exit
  555.                             }
  556.                             else if ($0 ~ /NetBSD/) {
  557.                                 distro = "NetBSD"
  558.                                 exit
  559.                             }
  560.                             else if ($0 ~ /OpenBSD/) {
  561.                                 distro = "OpenBSD"
  562.                                 exit
  563.                             }
  564.                         } END {
  565.                             print distro
  566.                         }' /var/run/dmesg.boot)
  567.                     fi
  568.                 fi
  569.             fi
  570.             if [[ "${distro}" == "Unknown" ]] && [[ "${OSTYPE}" == "linux-gnu" || "${OSTYPE}" == "linux" ]]; then
  571.                 if [[ -f /etc/issue ]]; then
  572.                     distro=$(awk 'BEGIN {
  573.                         distro = "Unknown"
  574.                     }
  575.                     {
  576.                         if ($0 ~ /"LinuxDeepin"/) {
  577.                             distro = "LinuxDeepin"
  578.                             exit
  579.                         }
  580.                         else if ($0 ~ /"Parabola GNU\/Linux-libre"/) {
  581.                             distro = "Parabola GNU/Linux-libre"
  582.                             exit
  583.                         }
  584.                         else if ($0 ~ /"SolusOS"/) {
  585.                             distro = "SolusOS"
  586.                             exit
  587.                         }
  588.                     } END {
  589.                         print distro
  590.                     }' /etc/issue)
  591.                 fi
  592.             fi
  593.             if [[ "${distro}" == "Unknown" ]] && [[ "${OSTYPE}" == "linux-gnu" || "${OSTYPE}" == "linux" ]]; then
  594.                 if [[ -f /etc/system-release ]]; then
  595.                     distro=$(awk 'BEGIN {
  596.                         distro = "Unknown"
  597.                     }
  598.                     {
  599.                         if ($0 ~ /"Scientific\ Linux"/) {
  600.                             distro = "Scientific Linux"
  601.                             exit
  602.                         }
  603.                     } END {
  604.                         print distro
  605.                     }' /etc/system-release)
  606.                 fi
  607.             fi
  608.  
  609.  
  610.  
  611.         fi
  612.     fi
  613.     if [[ ${BASH_VERSINFO[0]} -ge 4 ]]; then
  614.         if [[ ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -gt 1 ]] || [[ ${BASH_VERSINFO[0]} -gt 4 ]]; then
  615.             distro=${distro,,}
  616.         else
  617.             distro="$(tr '[:upper:]' '[:lower:]' <<< ${distro})"
  618.         fi
  619.     else
  620.         distro="$(tr '[:upper:]' '[:lower:]' <<< ${distro})"
  621.     fi
  622.     case $distro in
  623.         antergos) distro="Antergos" ;;
  624.         arch*linux*old) distro="Arch Linux - Old" ;;
  625.         arch*linux) distro="Arch Linux" ;;
  626.         arch) distro="Arch Linux";;
  627.         'elementary'|'elementary os') distro="elementary OS";;
  628.         fedora) distro="Fedora" ;;
  629.         mageia) distro="Mageia" ;;
  630.         mandriva) distro="Mandriva" ;;
  631.         mandrake) distro="Mandrake" ;;
  632.         mint) distro="Mint" ;;
  633.         kali*linux) distro="Kali Linux" ;;
  634.         lmde) distro="LMDE" ;;
  635.         opensuse) distro="openSUSE" ;;
  636.         ubuntu) distro="Ubuntu" ;;
  637.         debian) distro="Debian" ;;
  638.         raspbian) distro="Raspbian" ;;
  639.         freebsd) distro="FreeBSD" ;;
  640.         openbsd) distro="OpenBSD" ;;
  641.         dragonflybsd) distro="DragonFlyBSD" ;;
  642.         netbsd) distro="NetBSD" ;;
  643.         red*hat*) distro="Red Hat Enterprise Linux" ;;
  644.         crunchbang) distro="CrunchBang" ;;
  645.         gentoo) distro="Gentoo" ;;
  646.         funtoo) distro="Funtoo" ;;
  647.         slackware) distro="Slackware" ;;
  648.         frugalware) distro="Frugalware" ;;
  649.         peppermint) distro="Peppermint" ;;
  650.         solusos) distro="SolusOS" ;;
  651.         parabolagnu|parabolagnu/linux-libre|'parabola gnu/linux-libre'|parabola) distro="Parabola GNU/Linux-libre" ;;
  652.         viperr) distro="Viperr" ;;
  653.         kaos) distro="KaOS";;
  654.         linuxdeepin) distro="LinuxDeepin" ;;
  655.         chakra) distro="Chakra" ;;
  656.         centos) distro="CentOS";;
  657.         mac*os*x) distro="Mac OS X" ;;
  658.         fuduntu) distro="Fuduntu" ;;
  659.         manjaro) distro="Manjaro" ;;
  660.         cygwin) distro="Cygwin" ;;
  661.     esac
  662.     [[ "$verbosity" -eq "1" ]] && verboseOut "Finding distro...found as '$distro $distro_release'"
  663. }
  664. # Distro Detection - End
  665.  
  666. # Host and User detection - Begin
  667. detecthost () {
  668.     myUser=${USER}
  669.     myHost=${HOSTNAME}
  670.     if [[ "${distro}" == "Mac OS X" ]]; then myHost=${myHost/.local/}; fi
  671.     [[ "$verbosity" -eq "1" ]] && verboseOut "Finding hostname and user...found as '$myUser@$myHost'"
  672. }
  673.  
  674. # Find Number of Running Processes
  675. # processnum="$(( $( ps aux | wc -l ) - 1 ))"
  676.  
  677. # Kernel Version Detection - Begin
  678. detectkernel () {
  679.     kernel=( $(uname -srm) )
  680.     kernel="${kernel[${#kernel[@]}-1]} ${kernel[@]:0:${#kernel[@]}-1}"
  681.     [[ "$verbosity" -eq "1" ]] && verboseOut "Finding kernel version...found as '$kernel'"
  682. }
  683. # Kernel Version Detection - End
  684.  
  685.  
  686. # Uptime Detection - Begin
  687. detectuptime () {
  688.     unset uptime
  689.     if [ "$distro" == "Mac OS X" ]; then
  690.         boot=`sysctl -n kern.boottime | cut -d "=" -f 2 | cut -d "," -f 1`
  691.         now=`date +%s`
  692.         uptime=$(($now-$boot))
  693.     elif [[ "${distro}" == "FreeBSD" || "${distro}" == "OpenBSD" ]]; then
  694.         if [[ "${distro}" == "FreeBSD" ]]; then boot=`sysctl -n kern.boottime | cut -d "=" -f 2 | cut -d "," -f 1`
  695.         else boot=$(sysctl -n kern.boottime); fi
  696.         now=$(date +%s)
  697.         uptime=$((${now} - ${boot}))
  698.     else
  699.         if [[ -f /proc/uptime ]]; then
  700.             uptime=$(</proc/uptime)
  701.             uptime=${uptime//.*}
  702.         fi
  703.     fi
  704.  
  705.     if [[ -n ${uptime} ]]; then
  706.         secs=$((${uptime}%60))
  707.         mins=$((${uptime}/60%60))
  708.         hours=$((${uptime}/3600%24))
  709.         days=$((${uptime}/86400))
  710.         uptime="${mins}m"
  711.         if [ "${hours}" -ne "0" ]; then
  712.             uptime="${hours}h ${uptime}"
  713.         fi
  714.         if [ "${days}" -ne "0" ]; then
  715.             uptime="${days}d ${uptime}"
  716.         fi
  717.     else
  718.         if [[ "$distro" =~ "NetBSD" ]]; then uptime=$(awk -F. '{print $1}' /proc/uptime); fi
  719.         if [[ "$distro" =~ "BSD" ]]; then uptime=$(uptime | awk '{$1=$2=$(NF-6)=$(NF-5)=$(NF-4)=$(NF-3)=$(NF-2)=$(NF-1)=$NF=""; sub(" days","d");sub(",","");sub(":","h ");sub(",","m"); print}'); fi
  720.     fi
  721.     [[ "$verbosity" -eq "1" ]] && verboseOut "Finding current uptime...found as '$uptime'"
  722. }
  723. # Uptime Detection - End
  724.  
  725.  
  726. # Package Count - Begin
  727. detectpkgs () {
  728.     pkgs="Unknown"
  729.     case $distro in
  730.         'Arch Linux'|'Parabola GNU/Linux-libre'|'Chakra'|'Manjaro'|'Antergos'|'KaOS') pkgs=$(pacman -Qq | wc -l) ;;
  731.         'Frugalware') pkgs=$(pacman-g2 -Q | wc -l) ;;
  732.         'Fuduntu'|'Ubuntu'|'Mint'|'SolusOS'|'Debian'|'Raspbian'|'LMDE'|'CrunchBang'|'Peppermint'|'LinuxDeepin'|'Kali Linux'|'Trisquel'|'elementary OS') pkgs=$(dpkg --get-selections | wc -l) ;;
  733.         'Slackware') pkgs=$(ls -1 /var/log/packages | wc -l) ;;
  734.         'Gentoo'|'Sabayon'|'Funtoo') pkgs=$(ls -d /var/db/pkg/*/* | wc -l) ;;
  735.         'Fedora'|'openSUSE'|'Red Hat Enterprise Linux'|'CentOS'|'Mandriva'|'Mandrake'|'Mageia'|'Viperr') pkgs=$(rpm -qa | wc -l) ;;
  736.         'Mac OS X')
  737.             if [ -d "/usr/local/bin" ]; then
  738.                 loc_pkgs=$(ls -l /usr/local/bin/ | grep -v "\(../Cellar/\|brew\)" | wc -l)
  739.                 pkgs=$((${loc_pkgs} -1));
  740.             fi
  741.  
  742.             if type -p port >/dev/null 2>&1; then
  743.                 port_pkgs=$(port installed 2>/dev/null | wc -l)
  744.                 pkgs=$((${pkgs} + (${port_pkgs} -1)))
  745.             fi
  746.  
  747.             if type -p brew >/dev/null 2>&1; then
  748.                 brew_pkgs=$(brew list -1 2>/dev/null | wc -l)
  749.                 pkgs=$((${pkgs} + ${brew_pkgs}))
  750.             fi
  751.         ;;
  752.         'OpenBSD')
  753.             pkgs=$(pkg_info | wc -l | awk '{sub(" ", "");print $1}')
  754.             if type -p portmaster >/dev/null 2>&1; then
  755.                 ports=$(portmaster -l | grep -Eo '[0-9]+ total installed' | sed 's/ total installed//')
  756.                 pkgs=$((${pkgs} + ${ports}))
  757.             fi
  758.         ;;
  759.         'FreeBSD')
  760.             pkgs=$(if TMPDIR=/dev/null ASSUME_ALWAYS_YES=1 PACKAGESITE=file:///nonexistent pkg info pkg >/dev/null 2>&1; then
  761.                 pkg info | wc -l | awk '{print $1}'; else pkg_info | wc -l | awk '{sub(" ", "");print $1}'; fi)
  762.         ;;
  763.         'Cygwin') cygfix=2; pkgs=$(($(cygcheck -cd | wc -l)-$cygfix)) ;;
  764.     esac
  765.     [[ "$verbosity" -eq "1" ]] && verboseOut "Finding current package count...found as '$pkgs'"
  766. }
  767.  
  768.  
  769.  
  770.  
  771. # CPU Detection - Begin
  772. detectcpu () {
  773.     REGEXP="-r"
  774.     if [ "$distro" == "Mac OS X" ]; then
  775.         cpu=$(echo $(sysctl -n machdep.cpu.brand_string))
  776.         REGEXP="-E"
  777.     elif [ "$distro" == "FreeBSD" ]; then cpu=$(sysctl -n hw.model)
  778.     elif [ "$distro" == "DragonflyBSD" ]; then cpu=$(sysctl -n hw.model)
  779.     elif [ "$distro" == "OpenBSD" ]; then cpu=$(sysctl -n hw.model | sed 's/@.*//')
  780.     else
  781.         cpu=$(awk 'BEGIN{FS=":"} /model name/ { print $2; exit }' /proc/cpuinfo | sed 's/ @/\n/' | head -1)
  782.         if [ -z "$cpu" ]; then
  783.             cpu=$(awk 'BEGIN{FS=":"} /^cpu/ { gsub(/  +/," ",$2); print $2; exit}' /proc/cpuinfo | sed 's/, altivec supported//;s/^ //')
  784.             if [[ $cpu =~ ^(PPC)*9.+ ]]; then
  785.                 model="IBM PowerPC G5 "
  786.             elif [[ $cpu =~ 740/750 ]]; then
  787.                 model="IBM PowerPC G3 "
  788.             elif [[ $cpu =~ ^74.+ ]]; then
  789.                 model="Motorola PowerPC G4 "
  790.             elif [[ "$(cat /proc/cpuinfo)" =~ "BCM2708" ]]; then
  791.                 model="Broadcom BCM2835 ARM1176JZF-S"
  792.             else
  793.                 model="IBM PowerPC G3 "
  794.             fi
  795.             cpu="${model}${cpu}"
  796.         fi
  797.         loc="/sys/devices/system/cpu/cpu0/cpufreq"
  798.         if [ -f $loc/bios_limit ];then
  799.             cpu_mhz=$(cat $loc/bios_limit | awk '{print $1/1000}')
  800.         elif [ -f $loc/scaling_max_freq ];then
  801.             cpu_mhz=$(cat $loc/scaling_max_freq | awk '{print $1/1000}')
  802.         else
  803.             cpu_mhz=$(awk -F':' '/cpu MHz/{ print int($2+.5) }' /proc/cpuinfo | head -n 1)
  804.         fi
  805.         if [ -n "$cpu_mhz" ];then
  806.             if [ $cpu_mhz -gt 999 ];then
  807.                 cpu_ghz=$(echo $cpu_mhz | awk '{print $1/1000}')
  808.                 cpu="$cpu @ ${cpu_ghz}GHz"
  809.             else
  810.                 cpu="$cpu @ ${cpu_mhz}MHz"
  811.             fi
  812.         fi
  813.     fi
  814.     cpu=$(echo "${cpu}" | sed $REGEXP 's/\([tT][mM]\)|\([Rr]\)|[pP]rocessor//g' | xargs)
  815.     [[ "$verbosity" -eq "1" ]] && verboseOut "Finding current CPU...found as '$cpu'"
  816. }
  817. # CPU Detection - End
  818.  
  819.  
  820. # GPU Detection - Begin (EXPERIMENTAL!)
  821. detectgpu () {
  822.     if [[ "${distro}" == "FreeBSD" ]]; then
  823.         gpu_info=$(pciconf -lv 2> /dev/null | grep -B 4 VGA)
  824.         gpu_info=$(echo "${gpu_info}" | grep -E 'device.*=.*')
  825.         gpu=$(echo "${gpu_info}" | sed 's/.*device.*= //' | sed "s/'//g")
  826.     elif [[ "$distro" != "Mac OS X" ]]; then
  827.         if [ -n "$(type -p lspci)" ]; then
  828.             gpu_info=$(lspci 2> /dev/null | grep VGA)
  829.             gpu=$(echo "$gpu_info" | grep -oE '\[.*\]' | sed 's/\[//;s/\]//')
  830.             gpu=$(echo "${gpu}" | sed -n '1h;2,$H;${g;s/\n/, /g;p}')
  831.         elif [[ -n "$(type -p glxinfo)" && -z "$gpu" ]]; then
  832.             gpu_info=$(glxinfo 2>/dev/null)
  833.             gpu=$(echo "$gpu_info" | grep "OpenGL renderer string")
  834.             gpu=$(echo "$gpu" | cut -d ':' -f2)
  835.             gpu="${gpu:1}"
  836.             gpu_info=$(echo "$gpu_info" | grep "OpenGL vendor string")
  837.         fi
  838.     elif [[ "${distro}" == "Mac OS X" ]]; then
  839.         gpu=$(system_profiler SPDisplaysDataType | awk -F': ' '/^\ *Chipset Model:/ {print $2}' | awk '{ printf "%s / ", $0 }' | sed -e 's/\/ $//g')
  840.     elif [[ "${distro}" == "Cygwin" ]]; then
  841.         gpu=$(wmic path Win32_VideoController get caption)
  842.         gpu=$(tail -1 <<< ${gpu})
  843.     fi
  844.  
  845.     if [ -n "$gpu" ];then
  846.         if [ $(echo "$gpu_info" | grep -i nvidia | wc -l) -gt 0 ];then
  847.             gpu_info="NVidia "
  848.         elif [ $(echo "$gpu_info" | grep -i intel | wc -l) -gt 0 ];then
  849.             gpu_info="Intel "
  850.         elif [ $(echo "$gpu_info" | grep -i amd | wc -l) -gt 0 ];then
  851.             gpu_info="AMD "
  852.         elif [[ $(echo "$gpu_info" | grep -i ati | wc -l) -gt 0  || $(echo "$gpu_info" | grep -i radeon | wc -l) -gt 0 ]]; then
  853.             gpu_info="ATI "
  854.         else
  855.             gpu_info=$(echo "$gpu_info" | cut -d ':' -f2)
  856.             gpu_info="${gpu_info:1} "
  857.         fi
  858.         gpu="${gpu}"
  859.     else
  860.         gpu="Not Found"
  861.     fi
  862.  
  863.     [[ "$verbosity" -eq "1" ]] && verboseOut "Finding current GPU...found as '$gpu'"
  864. }
  865. # GPU Detection - End
  866.  
  867.  
  868. # Disk Usage Detection - Begin
  869. detectdisk () {
  870.     diskusage="Unknown"
  871.     if type -p df >/dev/null 2>&1; then
  872.         if [[ "${distro}" =~ (Free|Net|Open|DragonFly)BSD ]]; then
  873.             totaldisk=$(df -h -c 2>/dev/null | tail -1)
  874.         elif [[ "${distro}" == "Mac OS X" ]]; then
  875.             totaldisk=$(df -H / 2>/dev/null | tail -1)
  876.         else
  877.             totaldisk=$(df -h --total 2>/dev/null | tail -1)
  878.         fi
  879.         disktotal=$(awk '{print $2}' <<< "${totaldisk}")
  880.         diskused=$(awk '{print $3}' <<< "${totaldisk}")
  881.         diskusedper=$(awk '{print $5}' <<< "${totaldisk}")
  882.         diskusage="${diskused} / ${disktotal} (${diskusedper})"
  883.         diskusage_verbose=$(sed 's/%/%%/' <<< $diskusage)
  884.     fi
  885.     [[ "$verbosity" -eq "1" ]] && verboseOut "Finding current disk usage...found as '$diskusage_verbose'"
  886. }  
  887. # Disk Usage Detection - End
  888.  
  889.  
  890. # Memory Detection - Begin
  891. detectmem () {
  892.     hw_mem=0
  893.     free_mem=0
  894.     human=1024
  895.     if [ "$distro" == "Mac OS X" ]; then
  896.         totalmem=$(echo "$(sysctl -n hw.memsize)"/${human}^2|bc)
  897.         usedmem=$(top -l 1 | awk '{
  898.             if ($0 ~ /PhysMem/) {
  899.                 for (x=1; x<=NF; x++) {
  900.                     if ($x ~ /wired/) {
  901.                         wired = $(x-1)
  902.                         gsub(/[^0-9]/,"",wired)
  903.                     }
  904.  
  905.                     if ($x ~ /^active/) {
  906.                         active = $(x-1)
  907.                         gsub(/[^0-9]/,"",active)
  908.                     }
  909.  
  910.                     if ($x ~ /inactive/) {
  911.                         inactive = $(x-1)
  912.                         gsub(/[^0-9]/,"",inactive)
  913.                     }
  914.                 }
  915.                 usedmem = wired + active + inactive
  916.                 print usedmem
  917.                 exit
  918.             }
  919.         }')
  920.     elif [ "$distro" == "Cygwin" ]; then
  921.         total_mem=$(awk '/MemTotal/ { print $2 }' /proc/meminfo)
  922.         totalmem=$((${total_mem}/1024))
  923.         free_mem=$(awk '/MemFree/ { print $2 }' /proc/meminfo)
  924.         used_mem=$((${total_mem} - ${free_mem}))
  925.         usedmem=$((${used_mem}/1024))
  926.     elif [ "$distro" == "FreeBSD" ]; then
  927.         phys_mem=$(sysctl -n hw.physmem)
  928.         size_mem=$phys_mem
  929.         size_chip=1
  930.         guess_chip=`echo "$size_mem / 8 - 1" | bc`
  931.         while [ $guess_chip != 0 ]; do
  932.             guess_chip=`echo "$guess_chip / 2" | bc`
  933.             size_chip=`echo "$size_chip * 2" | bc`
  934.         done
  935.         round_mem=`echo "( $size_mem / $size_chip + 1 ) * $size_chip " | bc`
  936.         totalmem=$(($round_mem / ($human * $human) ))
  937.         pagesize=$(sysctl -n hw.pagesize)
  938.         inactive_count=$(sysctl -n vm.stats.vm.v_inactive_count)
  939.         inactive_mem=$(($inactive_count * $pagesize))
  940.         cache_count=$(sysctl -n vm.stats.vm.v_cache_count)
  941.         cache_mem=$(($cache_count * $pagesize))
  942.         free_count=$(sysctl -n vm.stats.vm.v_free_count)
  943.         free_mem=$(($free_count * $pagesize))
  944.         avail_mem=$(($inactive_mem + $cache_mem + $free_mem))
  945.         used_mem=$(($round_mem - $avail_mem))
  946.         usedmem=$(($used_mem / ($human * $human) ))
  947.     elif [ "$distro" == "OpenBSD" ]; then
  948.         totalmem=$(top -1 1 | awk '/Real:/ {k=split($3,a,"/");print a[k] }' | tr -d 'M')
  949.         usedmem=$(top -1 1 | awk '/Real:/ {print $3}' | sed 's/M.*//')
  950.     elif [ "$distro" == "NetBSD" ]; then
  951.         phys_mem=$(awk '/MemTotal/ { print $2 }' /proc/meminfo)
  952.         totalmem=$((${phys_mem} / $human))
  953.         if grep -q 'Cached' /proc/meminfo; then
  954.             cache=$(awk '/Cached/ {print $2}' /proc/meminfo)
  955.             usedmem=$((${cache} / $human))
  956.         else
  957.             free_mem=$(awk '/MemFree/ { print $2 }' /proc/meminfo)
  958.             used_mem=$((${phys_mem} - ${free_mem}))
  959.             usedmem=$((${used_mem} / $human))
  960.         fi
  961.     else
  962.         mem_info=$(</proc/meminfo)
  963.         mem_info=$(echo $(echo $(mem_info=${mem_info// /}; echo ${mem_info//kB/})))
  964.         for m in $mem_info; do
  965.             if [[ ${m//:*} = MemTotal ]]; then
  966.                 memtotal=${m//*:}
  967.             fi
  968.  
  969.             if [[ ${m//:*} = MemFree ]]; then
  970.                 memfree=${m//*:}
  971.             fi
  972.  
  973.             if [[ ${m//:*} = Buffers ]]; then
  974.                 membuffer=${m//*:}
  975.             fi
  976.  
  977.             if [[ ${m//:*} = Cached ]]; then
  978.                 memcached=${m//*:}
  979.             fi
  980.         done
  981.  
  982.         usedmem="$(((($memtotal - $memfree) - $membuffer - $memcached) / $human))"
  983.         totalmem="$(($memtotal / $human))"
  984.     fi
  985.     mem="${usedmem}MB / ${totalmem}MB"
  986.     [[ "$verbosity" -eq "1" ]] && verboseOut "Finding current RAM usage...found as '$mem'"
  987. }
  988. # Memory Detection - End
  989.  
  990.  
  991. # Shell Detection - Begin
  992. detectshell_ver () {
  993.     local version_data='' version='' get_version='--version'
  994.  
  995.     case $1 in
  996.         # ksh sends version to sdterr. Weeeeeeird.
  997.         ksh)
  998.             version_data="$( $1 $get_version 2>&1 )"
  999.             ;;
  1000.         *)
  1001.             version_data="$( $1 $get_version 2>/dev/null )"
  1002.             ;;
  1003.     esac
  1004.  
  1005.     if [[ -n $version_data ]];then
  1006.         version=$(awk '
  1007.         BEGIN {
  1008.             IGNORECASE=1
  1009.         }
  1010.         /'$2'/ {
  1011.             gsub(/(,|v|V)/, "",$'$3')
  1012.             if ($2 ~ /[Bb][Aa][Ss][Hh]/) {
  1013.                 gsub(/\(.*|-release|-version\)/,"",$4)
  1014.             }
  1015.             print $'$3'
  1016.             exit # quit after first match prints
  1017.         }' <<< "$version_data")
  1018.     fi
  1019.     echo "$version"
  1020. }
  1021. detectshell () {
  1022.     if [[ ! "${shell_type}" ]]; then
  1023.         if [[ "${OSTYPE}" == "linux-gnu" || "${OSTYPE}" == "linux" ]]; then
  1024.             shell_type=$(ps -p $PPID -o cmd --no-heading)
  1025.             shell_type=${shell_type/-}
  1026.             shell_type=${shell_type//*\/}
  1027.         elif [[ "${distro}" == "Mac OS X" ]]; then
  1028.             shell_type=$(ps -p $PPID -o args| tail -1)
  1029.             shell_type=${shell_type/-}
  1030.             shell_type=${shell_type//*\/}
  1031.         elif [[ "${distro}" == "FreeBSD" || "${distro}" == "OpenBSD" ]]; then
  1032.             shell_type=$(ps -p $PPID -o args| tail -1)
  1033.             shell_type=${shell_type/-}
  1034.             shell_type=${shell_type//*\/}
  1035.         elif [[ "${distro}" == "Cygwin" ]]; then
  1036.             shell_type=$(echo "$SHELL" | awk -F'/' '{print $NF}')
  1037.         else
  1038.             shell_type=$(ps -p $(ps -p $PPID | awk '$1 !~ /PID/ {print $1}') | awk 'FNR>1 {print $1}')
  1039.             shell_type=${shell_type/-}
  1040.             shell_type=${shell_type//*\/}
  1041.         fi
  1042.     fi
  1043.  
  1044.     case $shell_type in
  1045.         bash)
  1046.             shell_version_data=$( detectshell_ver "$shell_type" "^GNU.bash,.version" "4" )
  1047.             ;;
  1048.         csh)
  1049.             shell_version_data=$( detectshell_ver "$shell_type" "$shell_type" "3" )
  1050.             ;;
  1051.         dash)
  1052.             shell_version_data=$( detectshell_ver "$shell_type" "$shell_type" "3" )
  1053.             ;;
  1054.         ksh)
  1055.             shell_version_data=$( detectshell_ver "$shell_type" "version" "5" )
  1056.             ;;
  1057.         tcsh)
  1058.             shell_version_data=$( detectshell_ver "$shell_type" "^tcsh" "2" )
  1059.             ;;
  1060.         zsh)
  1061.             shell_version_data=$( detectshell_ver "$shell_type" "^zsh" "2" )
  1062.             ;;
  1063.     esac
  1064.  
  1065.     if [[ -n $shell_version_data ]];then
  1066.         shell_type="$shell_type $shell_version_data"
  1067.     fi
  1068.  
  1069.     myShell=${shell_type}
  1070.     [[ "$verbosity" -eq "1" ]] && verboseOut "Finding current shell...found as '$myShell'"
  1071. }
  1072. # Shell Detection - End
  1073.  
  1074.  
  1075. # Resolution Detection - Begin
  1076. detectres () {
  1077.     if [[ ${distro} != "Mac OS X" && ${distro} != "Cygwin" ]]; then
  1078.         if [[ -n ${DISPLAY} ]]; then
  1079.             if [[ "$distro" =~ "BSD" ]]; then
  1080.                 xResolution=$(xdpyinfo | sed -n 's/.*dim.* \([0-9]*x[0-9]*\) .*/\1/pg' | tr '\n' ' ')
  1081.             else
  1082.                 xResolution=$(xdpyinfo | sed -n 's/.*dim.* \([0-9]*x[0-9]*\) .*/\1/pg' | sed ':a;N;$!ba;s/\n/ /g')
  1083.             fi
  1084.         fi
  1085.     elif [[ ${distro} == "Mac OS X" ]]; then
  1086.         xResolution=$(system_profiler SPDisplaysDataType | awk '/Resolution:/ {print $2"x"$4" "}')
  1087.         if [[ "$(echo $xResolution | wc -l)" -ge 1 ]]; then
  1088.             xResolution=$(echo $xResolution | tr "\\n" "," | sed 's/\(.*\),/\1/')
  1089.         fi
  1090.     elif [[ "${distro}" == "Cygwin" ]]; then
  1091.         width=($(wmic desktopmonitor get screenwidth | grep -vE '[a-z]+' | tr '\r\n' ' '))
  1092.         height=($(wmic desktopmonitor get screenheight | grep -vE '[a-z]+' | tr '\r\n' ' '))
  1093.  
  1094.         xResolution=""
  1095.         len=${#width[@]}
  1096.        
  1097.         delim=" "
  1098.         for ((i=0;i<len;i++)); do
  1099.             xResolution="${xResolution}${delim}${width[i]}x${height[i]}"
  1100.         done
  1101.         xResolution=$(echo $xResolution | sed "s/^$delim//")
  1102.     else
  1103.         xResolution="No X Server"
  1104.     fi
  1105.     [[ "$verbosity" -eq "1" ]] && verboseOut "Finding current resolution(s)...found as '$xResolution'"
  1106. }
  1107. # Resolution Detection - End
  1108.  
  1109.  
  1110. # DE Detection - Begin
  1111. detectde () {
  1112.     DE="Not Present"
  1113.     if [[ ${distro} != "Mac OS X" && ${distro} != "Cygwin" ]]; then
  1114.         if [[ -n ${DISPLAY} ]]; then
  1115.             if type -p xprop >/dev/null 2>&1;then
  1116.                 xprop_root="$(xprop -root 2>/dev/null)"
  1117.                 if [[ -n ${xprop_root} ]]; then
  1118.                     DE=$(echo "${xprop_root}" | awk 'BEGIN {
  1119.                         de = "Not Present"
  1120.                     }
  1121.                     {
  1122.                         if ($1 ~ /^_DT_SAVE_MODE/) {
  1123.                             de = $NF
  1124.                             gsub(/\"/,"",de)
  1125.                             de = toupper(de)
  1126.                             exit
  1127.                         }
  1128.                         else if ($1 ~/^KDE_SESSION_VERSION/) {
  1129.                             de = "KDE"$NF
  1130.                             exit
  1131.                         }
  1132.                         else if ($1 ~ /^_MARCO/) {
  1133.                             de = "MATE"
  1134.                             exit
  1135.                         }
  1136.                         else if ($1 ~ /^_MUFFIN/) {
  1137.                             de = "Cinnamon"
  1138.                             exit
  1139.                         }
  1140.                         else if ($0 ~ /"xfce4"/) {
  1141.                             de = "XFCE4"
  1142.                             exit
  1143.                         }
  1144.                         else if ($0 ~ /"xfce5"/) {
  1145.                             de = "XFCE5"
  1146.                             exit
  1147.                         }
  1148.                     } END {
  1149.                         print de
  1150.                     }')
  1151.                 fi
  1152.             fi
  1153.  
  1154.             if [[ ${DE} == "Not Present" ]]; then
  1155.                 if [[ -n ${GNOME_DESKTOP_SESSION_ID} ]]; then
  1156.                     DE="Gnome"
  1157.                     if type -p xprop >/dev/null 2>&1; then
  1158.                         if xprop -name "unity-launcher" >/dev/null 2>&1; then
  1159.                             DE="Unity"
  1160.                         elif xprop -name "launcher" >/dev/null 2>&1 &&
  1161.                             xprop -name "panel" >/dev/null 2>&1; then
  1162.  
  1163.                             DE="Unity"
  1164.                         fi
  1165.                     fi
  1166.                 elif [[ -n ${MATE_DESKTOP_SESSION_ID} ]]; then
  1167.                     DE="MATE"
  1168.                 elif [[ -n ${KDE_SESSION_VERSION} ]]; then
  1169.                     if [[ ${KDE_SESSION_VERSION} == '5' ]]; then
  1170.                         DE="KDE5"
  1171.                     elif [[ ${KDE_SESSION_VERSION} == '4' ]]; then
  1172.                         DE="KDE4"
  1173.                     fi
  1174.                 elif [[ -n ${KDE_FULL_SESSION} ]]; then
  1175.                     if [[ ${KDE_FULL_SESSION} == 'true' ]]; then
  1176.                         DE="KDE"
  1177.                         DEver_data=$( kded --version 2>/dev/null )
  1178.                         DEver=$( grep -si '^KDE:' <<< "$DEver_data" | awk '{print $2}' )
  1179.                     fi
  1180.                 fi
  1181.             fi
  1182.  
  1183.             if [[ ${DE} != "Not Present" ]]; then
  1184.                 if [[ ${DE} == "Cinnamon" ]]; then
  1185.                     if type -p >/dev/null 2>&1; then
  1186.                         DEver=$(cinnamon --version)
  1187.                         DE="${DE} ${DEver//* }"
  1188.                     fi
  1189.                 elif [[ ${DE} == "Gnome" || ${DE} == "GNOME" ]]; then
  1190.                     if type -p gnome-session-properties >/dev/null 2>&1; then
  1191.                         DEver=$(gnome-session-properties --version)
  1192.                         DE="${DE} ${DEver//* }"
  1193.                     elif type -p gnome-session >/dev/null 2>&1; then
  1194.                         DEver=$(gnome-session --version)
  1195.                         DE="${DE} ${DEver//* }"
  1196.                     fi
  1197.                 elif [[ ${DE} == "KDE4" || ${DE} == "KDE5" ]]; then
  1198.                     if type -p kded${DE#KDE} >/dev/null 2>&1; then
  1199.                         DEver=$(kded${DE#KDE} --version)
  1200.                         for l in $(echo "${DEver// /_}"); do
  1201.                             if [[ ${l//:*} == "KDE_Development_Platform" ]]; then
  1202.                                 DEver=${l//*:_}
  1203.                                 DE="KDE ${DEver//_*}"
  1204.                             fi;
  1205.                         done
  1206.                     fi
  1207.                 elif [[ ${DE} == "MATE" ]]; then
  1208.                     if type -p mate-session >/dev/null 2>&1; then
  1209.                         DEver=$(mate-session --version)
  1210.                         DE="${DE} ${DEver//* }"
  1211.                     fi
  1212.  
  1213.                 elif [[ ${DE} == "Unity" ]]; then
  1214.                     if type -p unity >/dev/null 2>&1; then
  1215.                         DEver=$(unity --version)
  1216.                         DE="${DE} ${DEver//* }"
  1217.                     fi
  1218.                 fi
  1219.             fi
  1220.  
  1221.             if [[ "${DE}" == "Not Present" ]]; then
  1222.                 if pgrep -U ${UID} lxsession >/dev/null 2>&1; then
  1223.                     DE="LXDE"
  1224.                     if type -p lxpanel >/dev/null 2>&1; then
  1225.                         DEver=$(lxpanel -v)
  1226.                         DE="${DE} $DEver"
  1227.                     fi
  1228.                 elif pgrep -U ${UID} razor-session >/dev/null 2>&1; then
  1229.                     DE="RazorQt"
  1230.                 fi
  1231.             fi
  1232.         fi
  1233.     elif [[ "${distro}" == "Mac OS X" ]]; then
  1234.         if ps -U ${USER} | grep [F]inder >/dev/null 2>&1; then
  1235.             DE="Aqua"
  1236.         fi
  1237.     elif [[ "${distro}" == "Cygwin" ]]; then
  1238.         winver=`wmic os get version | grep -o '^[0-9]'`
  1239.         if [ "$winver" == "7" ]; then DE='Aero'
  1240.         elif [ "$winver" == "6" ]; then DE='Aero'
  1241.         else DE='Luna'; fi
  1242.     fi
  1243.     [[ "$verbosity" -eq "1" ]] && verboseOut "Finding desktop environment...found as '$DE'"
  1244. }
  1245. ### DE Detection - End
  1246.  
  1247.  
  1248. # WM Detection - Begin
  1249. detectwm () {
  1250.     WM="Not Found"
  1251.     if [[ ${distro} != "Mac OS X" && ${distro} != "Cygwin" ]]; then
  1252.         if [[ -n ${DISPLAY} ]]; then
  1253.             for each in "${wmnames[@]}"; do
  1254.                 PID="$(pgrep -U ${UID} $each)"
  1255.                 if [ "$PID" ]; then
  1256.                     case $each in
  1257.                         '2bwm') WM="2bwm";;
  1258.                         'awesome') WM="Awesome";;
  1259.                         'beryl') WM="Beryl";;
  1260.                         'bspwm') WM="bspwm";;
  1261.                         'blackbox') WM="BlackBox";;
  1262.                         'cinnamon') WM="Muffin";;
  1263.                         'compiz') WM="Compiz";;
  1264.                         'dminiwm') WM="dminiwm";;
  1265.                         'dwm') WM="dwm";;
  1266.                         'e16') WM="E16";;
  1267.                         'emerald') WM="Emerald";;
  1268.                         'enlightenment') WM="E17";;
  1269.                         'fluxbox') WM="FluxBox";;
  1270.                         'fvwm') WM="FVWM";;
  1271.                         'herbstluftwm') WM="herbstluftwm";;
  1272.                         'icewm') WM="IceWM";;
  1273.                         'kwin') WM="KWin";;
  1274.                         'metacity') WM="Metacity";;
  1275.                         'monsterwm') WM="monsterwm";;
  1276.                         'musca') WM="Musca";;
  1277.                         'notion') WM="Notion";;
  1278.                         'openbox') WM="OpenBox";;
  1279.                         'pekwm') WM="PekWM";;
  1280.                         'ratpoison') WM="Ratpoison";;
  1281.                         'sawfish') WM="Sawfish";;
  1282.                         'scrotwm') WM="ScrotWM";;
  1283.                         'spectrwm') WM="SpectrWM";;
  1284.                         'stumpwm') WM="StumpWM";;
  1285.                         'subtle') WM="subtle";;
  1286.                         'wmaker') WM="WindowMaker";;
  1287.                         'wmfs') WM="WMFS";;
  1288.                         'wmii') WM="wmii";;
  1289.                         'xfwm4') WM="Xfwm4";;
  1290.                         'i3') WM="i3";;
  1291.                         'xmonad') WM="XMonad";;
  1292.                     esac
  1293.                 fi
  1294.  
  1295.                 if [[ ${WM} != "Not Found" ]]; then
  1296.                     break 1
  1297.                 fi
  1298.             done
  1299.  
  1300.             if [[ ${WM} == "Not Found" ]]; then
  1301.                 if type -p xprop >/dev/null 2>&1; then
  1302.                     WM=$(xprop -root _NET_SUPPORTING_WM_CHECK)
  1303.                     if [[ "$WM" =~ 'not found' ]]; then
  1304.                         WM="Not Found"
  1305.                     elif [[ "$WM" =~ 'Not found' ]]; then
  1306.                         WM="Not Found"
  1307.                     elif [[ "$WM" =~ '[Ii]nvalid window id format' ]]; then
  1308.                         WM="Not Found"
  1309.                     elif [[ "$WM" =~ "no such" ]]; then
  1310.                         WM="Not Found"
  1311.                     else
  1312.                         WM=${WM//* }
  1313.                         WM=$(xprop -id ${WM} 8s _NET_WM_NAME)
  1314.                         WM=$(echo $(WM=${WM//*= }; echo ${WM//\"}))
  1315.                     fi
  1316.                 fi
  1317.             else
  1318.                 if [[ ${BASH_VERSINFO[0]} -ge 4 ]]; then
  1319.                     if [[ ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -gt 1 ]] || [[ ${BASH_VERSINFO[0]} -gt 4 ]]; then
  1320.                         WM=${WM,,}
  1321.                     else
  1322.                         WM="$(tr '[:upper:]' '[:lower:]' <<< ${WM})"
  1323.                     fi
  1324.                 else
  1325.                     WM="$(tr '[:upper:]' '[:lower:]' <<< ${WM})"
  1326.                 fi
  1327.                 case ${WM} in
  1328.                     '2bwm') WM="2bwm";;
  1329.                     'awesome') WM="Awesome";;
  1330.                     'beryl') WM="Beryl";;
  1331.                     'blackbox') WM="BlackBox";;
  1332.                     'cinnamon') WM="Cinnamon";;
  1333.                     'compiz') WM="Compiz";;
  1334.                     'dminiwm') WM="dminiwm";;
  1335.                     'dwm') WM="dwm";;
  1336.                     'e16') WM="E16";;
  1337.                     'echinus') WM="echinus";;
  1338.                     'emerald') WM="Emerald";;
  1339.                     'enlightenment') WM="E17";;
  1340.                     'fluxbox') WM="FluxBox";;
  1341.                     'fvwm') WM="FVWM";;
  1342.                     'herbstluftwm') WM="herbstluftwm";;
  1343.                     'icewm') WM="IceWM";;
  1344.                     'kwin') WM="KWin";;
  1345.                     'metacity') WM="Metacity";;
  1346.                     'monsterwm') WM="monsterwm";;
  1347.                     'musca') WM="Musca";;
  1348.                     *'gala'*) WM="Gala";;
  1349.                     'mutter'*) WM="Mutter";;
  1350.                     'gnome shell'*) WM="Mutter";;
  1351.                     'muffin') WM="Muffin";;
  1352.                     'notion') WM="Notion";;
  1353.                     'openbox') WM="OpenBox";;
  1354.                     'pekwm') WM="PekWM";;
  1355.                     'ratpoison') WM="Ratpoison";;
  1356.                     'sawfish') WM="Sawfish";;
  1357.                     'scrotwm') WM="ScrotWM";;
  1358.                     'spectrwm') WM="SpectrWM";;
  1359.                     'stumpwm') WM="StumpWM";;
  1360.                     'subtle') WM="subtle";;
  1361.                     'wmaker') WM="WindowMaker";;
  1362.                     'wmfs') WM="WMFS";;
  1363.                     'wmii') WM="wmii";;
  1364.                     'xfwm4') WM="Xfwm4";;
  1365.                     'xmonad') WM="XMonad";;
  1366.                     'i3') WM="i3";;
  1367.                 esac
  1368.             fi
  1369.         fi
  1370.     elif [[ ${distro} == "Mac OS X" && "${WM}" == "Not Found" ]]; then
  1371.         if ps -U ${USER} | grep [F]inder >/dev/null 2>&1; then
  1372.             WM="Quartz Compositor"
  1373.         fi
  1374.     elif [[ "${distro}" == "Cygwin" ]]; then
  1375.         bugn=$(tasklist | grep -o 'bugn' | tr -d '\r \n')
  1376.         wind=$(tasklist | grep -o 'Windawesome' | tr -d '\r \n')
  1377.         if [ "$bugn" = "bugn" ]; then WM="bug.n"
  1378.         elif [ "$wind" = "Windawesome" ]; then WM="Windawesome"
  1379.         else WM="DWM"; fi
  1380.     fi
  1381.     [[ "$verbosity" -eq "1" ]] && verboseOut "Finding window manager...found as '$WM'"
  1382. }
  1383. # WM Detection - End
  1384.  
  1385.  
  1386. # WM Theme Detection - BEGIN
  1387. detectwmtheme () {
  1388.     Win_theme="Not Found"
  1389.     case $WM in
  1390.         '2bwm') Win_theme="Not Present";;
  1391.         '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 | head -n1)"; fi;;
  1392.         'BlackBox') if [ -f $HOME/.blackboxrc ]; then Win_theme="$(awk -F"/" '/styleFile/ {print $NF}' $HOME/.blackboxrc)"; fi;;
  1393.         'Beryl') Win_theme="Not Present";;
  1394.         'bspwm') Win_theme="Not Present";;
  1395.         'Cinnamon'|'Muffin')
  1396.             de_theme="$(gsettings get org.cinnamon.theme name)"
  1397.             de_theme=${de_theme//"'"}
  1398.             win_theme="$(gsettings get org.cinnamon.desktop.wm.preferences theme)"
  1399.             win_theme=${win_theme//"'"}
  1400.             Win_theme="${de_theme} (${win_theme})"
  1401.         ;;
  1402.         'Compiz'|'Mutter'*|'GNOME Shell'|'Gala')
  1403.             if type -p gsettings >/dev/null 2>&1; then
  1404.                 Win_theme="$(gsettings get org.gnome.desktop.wm.preferences theme)"
  1405.                 Win_theme=${Win_theme//"'"}
  1406.             elif type -p gconftool-2 >/dev/null 2>&1; then
  1407.                 Win_theme=$(gconftool-2 -g /apps/metacity/general/theme)
  1408.             fi
  1409.         ;;
  1410.         'dminiwm') Win_theme="Not Present";;
  1411.         'dwm') Win_theme="Not Present";;
  1412.         'E16') Win_theme="$(awk -F"= " '/theme.name/ {print $2}' $HOME/.e16/e_config--0.0.cfg)";;
  1413.         'E17'|'Enlightenment')
  1414.             if [ "$(which eet 2>/dev/null)" ]; then
  1415.                 econfig="$(eet -d $HOME/.e/e/config/standard/e.cfg config | awk '/value \"file\" string.*.edj/{ print $4 }')"
  1416.                 econfigend="${econfig##*/}"
  1417.                 Win_theme=${econfigend%.*}
  1418.             fi
  1419.         ;;
  1420.         #E17 doesn't store cfg files in text format so for now get the profile as opposed to theme. atyoung
  1421.         #TODO: Find a way to extract and read E17 .cfg files ( google seems to have nothing ). atyoung
  1422.         'E17') Win_theme=${E_CONF_PROFILE};;
  1423.         'echinus') Win_theme="Not Present";;
  1424.         '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;;
  1425.         'Finder') Win_theme="Not Present";;
  1426.         'FluxBox'|'Fluxbox') if [ -f $HOME/.fluxbox/init ]; then Win_theme="$(awk -F"/" '/styleFile/ {print $NF}' $HOME/.fluxbox/init)"; fi;;
  1427.         'FVWM') Win_theme="Not Present";;
  1428.         'i3') Win_theme="Not Present";;
  1429.         'IceWM') if [ -f $HOME/.icewm/theme ]; then Win_theme="$(awk -F"[\",/]" '!/#/ {print $2}' $HOME/.icewm/theme)"; fi;;
  1430.         'KWin'*)
  1431.             if [[ -z $KDE_CONFIG_DIR ]]; then
  1432.                 if type -p kde5-config >/dev/null 2>&1; then
  1433.                     KDE_CONFIG_DIR=$(kde5-config --localprefix)
  1434.                 elif type -p kde4-config >/dev/null 2>&1; then
  1435.                     KDE_CONFIG_DIR=$(kde4-config --localprefix)
  1436.                 elif type -p kde-config >/dev/null 2>&1; then
  1437.                     KDE_CONFIG_DIR=$(kde-config --localprefix)
  1438.                 fi
  1439.             fi
  1440.  
  1441.             if [[ -n $KDE_CONFIG_DIR ]]; then
  1442.                 Win_theme=$(awk '/PluginLib=kwin3_/{gsub(/PluginLib=kwin3_/,"",$0); print $0; exit}' $KDE_CONFIG_DIR/share/config/kwinrc)
  1443.                 if [[ -z $Win_theme ]]; then
  1444.                     if [[ -f $KDE_CONFIG_DIR/share/config/kdebugrc ]]; then
  1445.                         Win_theme=$(awk '/(decoration)/ {gsub(/\[/,"",$1); print $1; exit}' $KDE_CONFIG_DIR/share/config/kdebugrc)
  1446.                         if [[ -z $Win_theme ]]; then
  1447.                             Win_theme="Not Found"
  1448.                         fi
  1449.                     else
  1450.                         Win_theme="Not Found"
  1451.                     fi
  1452.                 fi
  1453.  
  1454.                 if [[ $Win_theme != 'Not Found' ]]; then
  1455.                     if [[ ${BASH_VERSINFO[0]} -ge 4 ]]; then
  1456.                         if [[ ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -gt 1 ]] || [[ ${BASH_VERSINFO[0]} -gt 4 ]]; then
  1457.                             Win_theme=${Win_theme^}
  1458.                         else
  1459.                             Win_theme="$(tr '[:lower:]' '[:upper:]' <<< ${Win_theme:0:1})${Win_theme:1}"
  1460.                         fi
  1461.                     else
  1462.                         Win_theme="$(tr '[:lower:]' '[:upper:]' <<< ${Win_theme:0:1})${Win_theme:1}"
  1463.                     fi
  1464.                 fi
  1465.             fi
  1466.         ;;
  1467.         'Marco')
  1468.             Win_theme="$(gsettings get org.mate.Marco.general theme)"
  1469.             Win_theme=${Win_theme//"'"}
  1470.         ;;
  1471.         'Metacity') if [ "`gconftool-2 -g /apps/metacity/general/theme`" ]; then Win_theme="$(gconftool-2 -g /apps/metacity/general/theme)"; fi ;;
  1472.         'monsterwm') Win_theme="Not Present";;
  1473.         'Musca') Win_theme="Not Present";;\
  1474.         'Notion') Win_theme="Not Present";;
  1475.         'OpenBox'|'Openbox')
  1476.             if [ -f ${XDG_CONFIG_HOME:-${HOME}/.config}/openbox/rc.xml ]; then
  1477.                 Win_theme="$(awk -F"[<,>]" '/<theme/ { getline; print $3 }' ${XDG_CONFIG_HOME:-${HOME}/.config}/openbox/rc.xml)";
  1478.             elif [[ -f ${XDG_CONFIG_HOME:-${HOME}/.config}/openbox/lxde-rc.xml && $DE == "LXDE" ]]; then
  1479.                 Win_theme="$(awk -F"[<,>]" '/<theme/ { getline; print $3 }' ${XDG_CONFIG_HOME:-${HOME}/.config}/openbox/lxde-rc.xml)";
  1480.             fi
  1481.         ;;
  1482.         'PekWM') if [ -f $HOME/.pekwm/config ]; then Win_theme="$(awk -F"/" '/Theme/ {gsub(/\"/,""); print $NF}' $HOME/.pekwm/config)"; fi;;
  1483.         'Ratpoison') Win_theme="Not Present";;
  1484.         'Sawfish') Win_theme="$(awk -F")" '/\(quote default-frame-style/{print $2}' $HOME/.sawfish/custom | sed 's/ (quote //')";;
  1485.         'ScrotWM') Win_theme="Not Present";;
  1486.         'SpectrWM') Win_theme="Not Present";;
  1487.         'subtle') Win_theme="Not Present";;
  1488.         'WindowMaker') Win_theme="Not Present";;
  1489.         'WMFS') Win_theme="Not Present";;
  1490.         'wmii') Win_theme="Not Present";;
  1491.         '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;;
  1492.         'XMonad') Win_theme="Not Present";;
  1493.     esac
  1494.     if [[ "${distro}" == "Mac OS X" ]]; then
  1495.         themeNumber="$(defaults read NSGlobalDomain AppleAquaColorVariant 2>/dev/null)"
  1496.         if [ "${themeNumber}" == "1" ] || [ "${themeNumber}x" == "x" ]; then
  1497.             Win_theme="Blue"
  1498.         else
  1499.             Win_theme="Graphite"
  1500.         fi
  1501.     elif [[ "${distro}" == "Cygwin" ]]; then
  1502.         themeFile="$(reg query 'HKCU\Software\Microsoft\Windows\CurrentVersion\Themes' /v 'CurrentTheme' | grep -o '[A-Z]:\\.*')"
  1503.         Win_theme=$(echo $themeFile | awk -F"\\" '{print $NF}' | grep -o '[0-9A-z. ]*$' | grep -o '^[0-9A-z ]*')
  1504.     fi
  1505.  
  1506.     [[ "$verbosity" -eq "1" ]] && verboseOut "Finding window manager theme...found as '$Win_theme'"
  1507. }
  1508. # WM Theme Detection - END
  1509.  
  1510. # GTK Theme\Icon\Font Detection - BEGIN
  1511. detectgtk () {
  1512.     gtk2Theme="Not Found"
  1513.     gtk3Theme="Not Found"
  1514.     gtkIcons="Not Found"
  1515.     gtkFont="Not Found"
  1516.     # Font detection (OS X)
  1517.     if [[ ${distro} == "Mac OS X" ]]; then
  1518.         gtk2Theme="Not Applicable"
  1519.         gtk3Theme="Not Applicable"
  1520.         gtkIcons="Not Applicable"
  1521.         if ps -U ${USER} | grep [F]inder >/dev/null 2>&1; then
  1522.             if [ -f ~/Library/Preferences/com.googlecode.iterm2.plist ]; then
  1523.                 gtkFont=$(str1=$(defaults read com.googlecode.iTerm2|grep -m 1 "Normal Font");echo ${str1:29:${#str1}-29-2})
  1524.             fi
  1525.         fi
  1526.     else
  1527.         case $DE in
  1528.             'KDE'*) # Desktop Environment found as "KDE"
  1529.                 if type - p kde4-config >/dev/null 2>&1; then
  1530.                     KDE_CONFIG_DIR=$(kde4-config --localprefix)
  1531.                     if [[ -d ${KDE_CONFIG_DIR} ]]; then
  1532.                         if [[ -f "${KDE_CONFIG_DIR}/share/config/kdeglobals" ]]; then
  1533.                             KDE_CONFIG_FILE="${KDE_CONFIG_DIR}/share/config/kdeglobals"
  1534.                         fi
  1535.                     fi
  1536.                 elif type -p kde5-config >/dev/null 2>&1; then
  1537.                     KDE_CONFIG_DIR=$(kde5-config --localprefix)
  1538.                     if [[ -d ${KDE_CONFIG_DIR} ]]; then
  1539.                         if [[ -f "${KDE_CONFIG_DIR}/share/config/kdeglobals" ]]; then
  1540.                             KDE_CONFIG_FILE="${KDE_CONFIG_DIR}/share/config/kdeglobals"
  1541.                         fi
  1542.                     fi
  1543.                 elif type -p kde-config >/dev/null 2>&1; then
  1544.                     KDE_CONFIG_DIR=$(kde-config --localprefix)
  1545.                     if [[ -d ${KDE_CONFIG_DIR} ]]; then
  1546.                         if [[ -f "${KDE_CONFIG_DIR}/share/config/kdeglobals" ]]; then
  1547.                             KDE_CONFIG_FILE="${KDE_CONFIG_DIR}/share/config/kdeglobals"
  1548.                         fi
  1549.                     fi
  1550.                 fi
  1551.  
  1552.                 if [[ -n ${KDE_CONFIG_FILE} ]]; then
  1553.                     if grep -q "widgetStyle=" "${KDE_CONFIG_FILE}"; then
  1554.                         gtk2Theme=$(awk -F"=" '/widgetStyle=/ {print $2}' "${KDE_CONFIG_FILE}")
  1555.                     elif grep -q "colorScheme=" "${KDE_CONFIG_FILE}"; then
  1556.                         gtk2Theme=$(awk -F"=" '/colorScheme=/ {print $2}' "${KDE_CONFIG_FILE}")
  1557.                     fi
  1558.  
  1559.                     if grep -q "Theme=" "${KDE_CONFIG_FILE}"; then
  1560.                         gtkIcons=$(awk -F"=" '/Theme=/ {print $2}' "${KDE_CONFIG_FILE}")
  1561.                     fi
  1562.  
  1563.                     if grep -q "Font=" "${KDE_CONFIG_FILE}"; then
  1564.                         gtkFont=$(awk -F"=" '/font=/ {print $2}' "${KDE_CONFIG_FILE}")
  1565.                     fi
  1566.                 fi
  1567.  
  1568.                 if [[ -f $HOME/.gtkrc-2.0 ]]; then
  1569.                     gtk2Theme=$(grep '^gtk-theme-name' $HOME/.gtkrc-2.0 | awk -F'=' '{print $2}')
  1570.                     gtk2Theme=${gtk2Theme//\"/}
  1571.                     gtkIcons=$(grep '^gtk-icon-theme-name' $HOME/.gtkrc-2.0 | awk -F'=' '{print $2}')
  1572.                     gtkIcons=${gtkIcons//\"/}
  1573.                     gtkFont=$(grep 'font_name' $HOME/.gtkrc-2.0 | awk -F'=' '{print $2}')
  1574.                     gtkFont=${gtkFont//\"/}
  1575.                 fi
  1576.  
  1577.                 if [[ -f $HOME/.config/gtk-3.0/settings.ini ]]; then
  1578.                     gtk3Theme=$(grep '^gtk-theme-name=' $HOME/.config/gtk-3.0/settings.ini | awk -F'=' '{print $2}')
  1579.                 fi
  1580.             ;;
  1581.             'Cinnamon'*) # Desktop Environment found as "Cinnamon"
  1582.                 if type -p gsettings >/dev/null 2>&1; then
  1583.                     gtk3Theme=$(gsettings get org.cinnamon.desktop.interface gtk-theme)
  1584.                     gtk3Theme=${gtk3Theme//"'"}
  1585.                     gtk2Theme=${gtk3Theme}
  1586.  
  1587.                     gtkIcons=$(gsettings get org.cinnamon.desktop.interface icon-theme)
  1588.                     gtkIcons=${gtkIcons//"'"}
  1589.                     gtkFont=$(gsettings get org.cinnamon.desktop.interface font-name)
  1590.                     gtkFont=${gtkFont//"'"}
  1591.                     if [ "$background_detect" == "1" ]; then gtkBackground=$(gsettings get org.gnome.desktop.background picture-uri); fi
  1592.                 fi
  1593.             ;;
  1594.             'GNOME'*|'Gnome'*|'Unity'*) # Desktop Environment found as "GNOME"
  1595.                 if type -p gsettings >/dev/null 2>&1; then
  1596.                     gtk3Theme=$(gsettings get org.gnome.desktop.interface gtk-theme)
  1597.                     gtk3Theme=${gtk3Theme//"'"}
  1598.                     gtk2Theme=${gtk3Theme}
  1599.                     gtkIcons=$(gsettings get org.gnome.desktop.interface icon-theme)
  1600.                     gtkIcons=${gtkIcons//"'"}
  1601.                     gtkFont=$(gsettings get org.gnome.desktop.interface font-name)
  1602.                     gtkFont=${gtkFont//"'"}
  1603.                     if [ "$background_detect" == "1" ]; then gtkBackground=$(gsettings get org.gnome.desktop.background picture-uri); fi
  1604.                 elif type -p gconftool-2 >/dev/null 2>&1; then
  1605.                     gtk2Theme=$(gconftool-2 -g /desktop/gnome/interface/gtk_theme)
  1606.                     gtkIcons=$(gconftool-2 -g /desktop/gnome/interface/icon_theme)
  1607.                     gtkFont=$(gconftool-2 -g /desktop/gnome/interface/font_name)
  1608.                     if [ "$background_detect" == "1" ]; then
  1609.                         gtkBackgroundFull=$(gconftool-2 -g /desktop/gnome/background/picture_filename)
  1610.                         gtkBackground=$(echo "$gtkBackgroundFull" | awk -F"/" '{print $NF}')
  1611.                     fi
  1612.                 fi
  1613.             ;;
  1614.             'MATE'*) # MATE desktop environment
  1615.                 #if type -p gsettings >/dev/null 2&>1; then
  1616.                 gtk3Theme=$(gsettings get org.mate.interface gtk-theme)
  1617.                 # gtk3Theme=${gtk3Theme//"'"}
  1618.                 gtk2Theme=${gtk3Theme}
  1619.                 gtkIcons=$(gsettings get org.mate.interface icon-theme)
  1620.                 gtkIcons=${gtkIcons//"'"}
  1621.                 gtkFont=$(gsettings get org.mate.interface font-name)
  1622.                 gtkFont=${gtkFont//"'"}
  1623.                 #fi
  1624.             ;;
  1625.             'XFCE'*) # Desktop Environment found as "XFCE"
  1626.                 if type -p xfconf-query >/dev/null 2>&1; then
  1627.                     gtk2Theme=$(xfconf-query -c xsettings -p /Net/ThemeName)
  1628.                 fi
  1629.  
  1630.                 if type -p xfconf-query >/dev/null 2>&1; then
  1631.                     gtkIcons=$(xfconf-query -c xsettings -p /Net/IconThemeName)
  1632.                 fi
  1633.  
  1634.                 if type -p xfconf-query >/dev/null 2>&1; then
  1635.                     gtkFont=$(xfconf-query -c xsettings -p /Gtk/FontName)
  1636.                 fi
  1637.             ;;
  1638.             'LXDE'*)
  1639.                 if [ -f ${XDG_CONFIG_HOME:-${HOME}/.config}/lxde/config ]; then
  1640.                     lxdeconf="/lxde/config"
  1641.                 elif [ "$distro" == "Trisquel" ]; then
  1642.                     lxdeconf=""
  1643.                 elif [ "$distro" == "FreeBSD" ]; then
  1644.                     lxdeconf=""
  1645.                 else
  1646.                     lxdeconf="/lxsession/LXDE/desktop.conf"
  1647.                 fi
  1648.                 # TODO: Clean me.
  1649.                 if grep -q "sNet\/ThemeName" ${XDG_CONFIG_HOME:-${HOME}/.config}$lxdeconf 2>/dev/null; then
  1650.                     gtk2Theme=$(awk -F'=' '/sNet\/ThemeName/ {print $2}' ${XDG_CONFIG_HOME:-${HOME}/.config}$lxdeconf)
  1651.                 fi
  1652.  
  1653.                 if grep -q IconThemeName ${XDG_CONFIG_HOME:-${HOME}/.config}$lxdeconf 2>/dev/null; then
  1654.                     gtkIcons=$(awk -F'=' '/sNet\/IconThemeName/ {print $2}' ${XDG_CONFIG_HOME:-${HOME}/.config}$lxdeconf)
  1655.                 fi
  1656.  
  1657.                 if grep -q FontName ${XDG_CONFIG_HOME:-${HOME}/.config}$lxdeconf 2>/dev/null; then
  1658.                     gtkFont=$(awk -F'=' '/sGtk\/FontName/ {print $2}' ${XDG_CONFIG_HOME:-${HOME}/.config}$lxdeconf)
  1659.                 fi
  1660.             ;;
  1661.  
  1662.             # /home/me/.config/rox.sourceforge.net/ROX-Session/Settings.xml
  1663.  
  1664.             *)  # Lightweight or No DE Found
  1665.                 if [ -f $HOME/.gtkrc-2.0 ]; then
  1666.                     if grep -q gtk-theme $HOME/.gtkrc-2.0; then
  1667.                         gtk2Theme=$(awk -F'"' '/^gtk-theme/ {print $2}' $HOME/.gtkrc-2.0)
  1668.                     fi
  1669.  
  1670.                     if grep -q icon-theme $HOME/.gtkrc-2.0; then
  1671.                         gtkIcons=$(awk -F'"' '/^gtk-icon-theme/ {print $2}' $HOME/.gtkrc-2.0)
  1672.                     fi
  1673.  
  1674.                     if grep -q font $HOME/.gtkrc-2.0; then
  1675.                         gtkFont=$(awk -F'"' '/^gtk-font-name/ {print $2}' $HOME/.gtkrc-2.0)
  1676.                     fi
  1677.                 fi
  1678.                 # $HOME/.gtkrc.mine theme detect only
  1679.                 if [ -f $HOME/.gtkrc.mine ]; then
  1680.                     if grep -q "^include" $HOME/.gtkrc.mine; then
  1681.                         gtk2Theme=$(grep '^include.*gtkrc' $HOME/.gtkrc.mine | awk -F "/" '{ print $5 }')
  1682.                     fi
  1683.                     if grep -q "^gtk-icon-theme-name" $HOME/.gtkrc.mine; then
  1684.                         gtkIcons=$(grep '^gtk-icon-theme-name' $HOME/.gtkrc.mine | awk -F '"' '{print $2}')
  1685.                     fi
  1686.                 fi
  1687.                 # /etc/gtk-2.0/gtkrc compatability
  1688.                 if [[ -f /etc/gtk-2.0/gtkrc && ! -f $HOME/.gtkrc-2.0 && ! -f $HOME/.gtkrc.mine ]]; then
  1689.                     if grep -q gtk-theme-name /etc/gtk-2.0/gtkrc; then
  1690.                         gtk2Theme=$(awk -F'"' '/^gtk-theme-name/ {print $2}' /etc/gtk-2.0/gtkrc)
  1691.                     fi
  1692.                     if grep -q gtk-fallback-theme-name /etc/gtk-2.0/gtkrc  && ! [ "x$gtk2Theme" = "x" ]; then
  1693.                         gtk2Theme=$(awk -F'"' '/^gtk-fallback-theme-name/ {print $2}' /etc/gtk-2.0/gtkrc)
  1694.                     fi
  1695.  
  1696.                     if grep -q icon-theme /etc/gtk-2.0/gtkrc; then
  1697.                         gtkIcons=$(awk -F'"' '/^icon-theme/ {print $2}' /etc/gtk-2.0/gtkrc)
  1698.                     fi
  1699.                     if  grep -q gtk-fallback-icon-theme /etc/gtk-2.0/gtkrc  && ! [ "x$gtkIcons" = "x" ]; then
  1700.                         gtkIcons=$(awk -F'"' '/^gtk-fallback-icon-theme/ {print $2}' /etc/gtk-2.0/gtkrc)
  1701.                     fi
  1702.  
  1703.                     if grep -q font /etc/gtk-2.0/gtkrc; then
  1704.                         gtkFont=$(awk -F'"' '/^gtk-font-name/ {print $2}' /etc/gtk-2.0/gtkrc)
  1705.                     fi
  1706.                 fi
  1707.  
  1708.                 # EXPERIMENTAL gtk3 Theme detection
  1709.                 if [ -f $HOME/.config/gtk-3.0/settings.ini ]; then
  1710.                     if grep -q gtk-theme-name $HOME/.config/gtk-3.0/settings.ini; then
  1711.                         gtk3Theme=$(awk -F'=' '/^gtk-theme-name/ {print $2}' $HOME/.config/gtk-3.0/settings.ini)
  1712.                     fi
  1713.                 fi
  1714.  
  1715.                 # Proper gtk3 Theme detection
  1716.                 #if type -p gsettings >/dev/null 2>&1; then
  1717.                 #   gtk3Theme=$(gsettings get org.gnome.desktop.interface gtk-theme 2>/dev/null)
  1718.                 #   gtk3Theme=${gtk3Theme//"'"}
  1719.                 #fi
  1720.  
  1721.                 # ROX-Filer icon detect only
  1722.                 if [ -a ${XDG_CONFIG_HOME:-${HOME}/.config}/rox.sourceforge.net/ROX-Filer/Options ]; then
  1723.                     gtkIcons=$(awk -F'[>,<]' '/^icon_theme/ {print $3}' ${XDG_CONFIG_HOME:-${HOME}/.config}/rox.sourceforge.net/ROX-Filer/Options)
  1724.                 fi
  1725.  
  1726.                 # E17 detection
  1727.                 if [ $E_ICON_THEME ]; then
  1728.                     gtkIcons=${E_ICON_THEME}
  1729.                     gtk2Theme="Not available."
  1730.                     gtkFont="Not available."
  1731.                 fi
  1732.  
  1733.                 # Background Detection (feh, nitrogen)
  1734.                 if [ "$background_detect" == "1" ]; then
  1735.                     if [ -a $HOME/.fehbg ]; then
  1736.                         gtkBackgroundFull=$(awk -F"'" '/feh --bg/{print $2}' $HOME/.fehbg 2>/dev/null)
  1737.                         gtkBackground=$(echo "$gtkBackgroundFull" | awk -F"/" '{print $NF}')
  1738.                     elif [ -a ${XDG_CONFIG_HOME:-${HOME}/.config}/nitrogen/bg-saved.cfg ]; then
  1739.                         gtkBackground=$(awk -F"/" '/file=/ {print $NF}' ${XDG_CONFIG_HOME:-${HOME}/.config}/nitrogen/bg-saved.cfg)
  1740.                     fi
  1741.                 fi
  1742.  
  1743.                 if [ "$distro" == "Cygwin" -a "$gtkFont" == "Not Found" ]; then
  1744.                     if [ -f $HOME/.minttyrc ]; then
  1745.                         gtkFont="$(cat $HOME/.minttyrc | grep '^Font=.*' | grep -o '[0-9A-z ]*$')"
  1746.                     fi
  1747.                 fi
  1748.             ;;
  1749.         esac
  1750.     fi
  1751.     if [[ "$verbosity" -eq "1" ]]; then
  1752.         verboseOut "Finding GTK2 theme...found as '$gtk2Theme'"
  1753.         verboseOut "Finding GTK3 theme...found as '$gtk3Theme'"
  1754.         verboseOut "Finding icon theme...found as '$gtkIcons'"
  1755.         verboseOut "Finding user font...found as '$gtkFont'"
  1756.         [[ $gtkBackground ]] && verboseOut "Finding background...found as '$gtkBackground'"
  1757.     fi
  1758. }
  1759. # GTK Theme\Icon\Font Detection - END
  1760.  
  1761. # Android-specific detections
  1762. detectdroid () {
  1763.     distro_ver=$(getprop ro.build.version.release)
  1764.  
  1765.     hostname=$(getprop net.hostname)
  1766.  
  1767.     _device=$(getprop ro.product.device)
  1768.     _model=$(getprop ro.product.model)
  1769.     device="${_model} (${_device})"
  1770.  
  1771.     if [[ $(getprop ro.build.host) == "cyanogenmod" ]]; then
  1772.         rom=$(getprop ro.cm.version)
  1773.     else
  1774.         rom=$(getprop ro.build.display.id)
  1775.     fi
  1776.  
  1777.     baseband=$(getprop ro.baseband)
  1778.  
  1779.     cpu=$(grep '^Processor' /proc/cpuinfo)
  1780.     cpu=$(echo "$cpu" | sed 's/Processor.*: //')
  1781. }
  1782.  
  1783.  
  1784. #######################
  1785. # End Detection Phase
  1786. #######################
  1787.  
  1788. takeShot () {
  1789.     if [[ -z $screenCommand ]]; then
  1790.         if [[ "$hostshot" == "1" ]]; then
  1791.             shotfiles[1]=${shotfile}
  1792.             if [ "$distro" == "Mac OS X" ]; then
  1793.                 displays="$(system_profiler SPDisplaysDataType | grep 'Resolution:' | wc -l | tr -d ' ')"
  1794.                 for (( i=2; i<=$displays; i++))
  1795.                 do
  1796.                     shotfiles[$i]="$(echo ${shotfile} | sed "s/\(.*\)\./\1_${i}./")"
  1797.                 done
  1798.                 printf "Taking shot in 3.. "; sleep 1; printf "2.. "; sleep 1; printf "1.. "; sleep 1; printf "0.\n"; screencapture -x ${shotfiles[@]} &> /dev/null
  1799.             else scrot -cd3 "${shotfile}"; fi
  1800.             if [ -f "${shotfile}" ]; then
  1801.                 [[ "$verbosity" -eq "1" ]] && verboseOut "Screenshot saved at '${shotfiles[@]}'"
  1802.                 scp -qo ConnectTimeout="${scptimeout}" "${shotfiles[@]}" "${serveraddr}:${serverdir}"
  1803.                 echo -e "${bold}==>${c0} Your screenshot can be viewed at ${baseurl}/$shotfile"
  1804.             else
  1805.                 verboseOut "ERROR: Problem saving screenshot to ${shotfiles[@]}"
  1806.             fi
  1807.         else
  1808.             shotfiles[1]=${shotfile}
  1809.             if [ "$distro" == "Mac OS X" ]; then
  1810.                 displays="$(system_profiler SPDisplaysDataType | grep 'Resolution:' | wc -l | tr -d ' ')"
  1811.                 for (( i=2; i<=$displays; i++))
  1812.                 do
  1813.                     shotfiles[$i]="$(echo ${shotfile} | sed "s/\(.*\)\./\1_${i}./")"
  1814.                 done
  1815.                 printf "Taking shot in 3.. "; sleep 1; printf "2.. "; sleep 1; printf "1.. "; sleep 1; printf "0.\n"; screencapture -x ${shotfiles[@]} &> /dev/null
  1816.             else scrot -cd3 "${shotfile}"; fi
  1817.             if [ -f "${shotfile}" ]; then
  1818.                 [[ "$verbosity" -eq "1" ]] && verboseOut "Screenshot saved at '${shotfiles[@]}'"
  1819.             else
  1820.                 verboseOut "ERROR: Problem saving screenshot to ${shotfiles[@]}"
  1821.             fi
  1822.         fi
  1823.     else
  1824.         $screenCommand
  1825.     fi
  1826. }
  1827.  
  1828.  
  1829.  
  1830. asciiText () {
  1831. # Distro logos and ASCII outputs
  1832.     if [[ "$fake_distro" ]]; then distro="${fake_distro}"; fi
  1833.     if [[ "$asc_distro" ]]; then myascii="${asc_distro}"
  1834.     else myascii="${distro}"; fi
  1835.     case ${myascii} in
  1836.         "Arch Linux - Old")
  1837.             if [[ "$no_color" != "1" ]]; then
  1838.                 c1=$(getColor 'white') # White
  1839.                 c2=$(getColor 'light blue') # Light Blue
  1840.             fi
  1841.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  1842.             startline="0"
  1843.             fulloutput=("$c1              __                      %s"
  1844. "$c1          _=(SDGJT=_                 %s"
  1845. "$c1        _GTDJHGGFCVS)                %s"
  1846. "$c1       ,GTDJGGDTDFBGX0               %s"
  1847. "$c1      JDJDIJHRORVFSBSVL$c2-=+=,_        %s"
  1848. "$c1     IJFDUFHJNXIXCDXDSV,$c2  \"DEBL      %s"
  1849. "$c1    [LKDSDJTDU=OUSCSBFLD.$c2   '?ZWX,   %s"
  1850. "$c1   ,LMDSDSWH'     \`DCBOSI$c2     DRDS], %s"
  1851. "$c1   SDDFDFH'         !YEWD,$c2   )HDROD  %s"
  1852. "$c1  !KMDOCG            &GSU|$c2\_GFHRGO\'  %s"
  1853. "$c1  HKLSGP'$c2           __$c1\TKM0$c2\GHRBV)'  %s"
  1854. "$c1 JSNRVW'$c2       __+MNAEC$c1\IOI,$c2\BN'     %s"
  1855. "$c1 HELK['$c2    __,=OFFXCBGHC$c1\FD)         %s"
  1856. "$c1 ?KGHE $c2\_-#DASDFLSV='$c1    'EF         %s"
  1857. "$c1 'EHTI                    !H         %s"
  1858. "$c1  \`0F'                    '!         %s"
  1859. "                                     %s"
  1860. "                                     %s")
  1861.         ;;
  1862.  
  1863.         "Arch Linux")
  1864.             if [[ "$no_color" != "1" ]]; then
  1865.                 c1=$(getColor 'light cyan') # Light
  1866.                 c2=$(getColor 'cyan') # Dark
  1867.             fi
  1868.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  1869.             startline="1"
  1870.             fulloutput=("${c1}                   -\`"
  1871. "${c1}                  .o+\`                 %s"
  1872. "${c1}                 \`ooo/                %s"
  1873. "${c1}                \`+oooo:               %s"
  1874. "${c1}               \`+oooooo:              %s"
  1875. "${c1}               -+oooooo+:             %s"
  1876. "${c1}             \`/:-:++oooo+:            %s"
  1877. "${c1}            \`/++++/+++++++:           %s"
  1878. "${c1}           \`/++++++++++++++:          %s"
  1879. "${c1}          \`/+++o"${c2}"oooooooo"${c1}"oooo/\`        %s"
  1880. "${c2}         "${c1}"./"${c2}"ooosssso++osssssso"${c1}"+\`       %s"
  1881. "${c2}        .oossssso-\`\`\`\`/ossssss+\`      %s"
  1882. "${c2}       -osssssso.      :ssssssso.     %s"
  1883. "${c2}      :osssssss/        osssso+++.    %s"
  1884. "${c2}     /ossssssss/        +ssssooo/-    %s"
  1885. "${c2}   \`/ossssso+/:-        -:/+osssso+-  %s"
  1886. "${c2}  \`+sso+:-\`                 \`.-/+oso: %s"
  1887. "${c2} \`++:.                           \`-/+/%s"
  1888. "${c2} .\`                                 \`/%s")
  1889.         ;;
  1890.  
  1891.         "Mint")
  1892.             if [[ "$no_color" != "1" ]]; then
  1893.                 c1=$(getColor 'white') # White
  1894.                 c2=$(getColor 'light green') # Bold Green
  1895.             fi
  1896.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  1897.             startline="0"
  1898.             fulloutput=("                                       %s"
  1899. "$c2 MMMMMMMMMMMMMMMMMMMMMMMMMmds+.       %s"
  1900. "$c2 MMm----::-://////////////oymNMd+\`    %s"
  1901. "$c2 MMd      "$c1"/++                "$c2"-sNMd:   %s"
  1902. "$c2 MMNso/\`  "$c1"dMM    \`.::-. .-::.\` "$c2".hMN:  %s"
  1903. "$c2 ddddMMh  "$c1"dMM   :hNMNMNhNMNMNh: "$c2"\`NMm  %s"
  1904. "$c2     NMm  "$c1"dMM  .NMN/-+MMM+-/NMN\` "$c2"dMM  %s"
  1905. "$c2     NMm  "$c1"dMM  -MMm  \`MMM   dMM. "$c2"dMM  %s"
  1906. "$c2     NMm  "$c1"dMM  -MMm  \`MMM   dMM. "$c2"dMM  %s"
  1907. "$c2     NMm  "$c1"dMM  .mmd  \`mmm   yMM. "$c2"dMM  %s"
  1908. "$c2     NMm  "$c1"dMM\`  ..\`   ...   ydm. "$c2"dMM  %s"
  1909. "$c2     hMM- "$c1"+MMd/-------...-:sdds  "$c2"dMM  %s"
  1910. "$c2     -NMm- "$c1":hNMNNNmdddddddddy/\`  "$c2"dMM  %s"
  1911. "$c2      -dMNs-"$c1"\`\`-::::-------.\`\`    "$c2"dMM  %s"
  1912. "$c2       \`/dMNmy+/:-------------:/yMMM  %s"
  1913. "$c2          ./ydNMMMMMMMMMMMMMMMMMMMMM  %s"
  1914. "$c2             \.MMMMMMMMMMMMMMMMMMM    %s"
  1915. "                                      %s")
  1916.         ;;
  1917.  
  1918.  
  1919.         "LMDE")
  1920.             if [[ "$no_color" != "1" ]]; then
  1921.                 c1=$(getColor 'white') # White
  1922.                 c2=$(getColor 'light green') # Bold Green
  1923.             fi
  1924.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  1925.             startline="0"
  1926.             fulloutput=("          "${c1}"\`.-::---..            %s"
  1927. "${c2}       .:++++ooooosssoo:.      %s"
  1928. "${c2}     .+o++::.      \`.:oos+.    %s"
  1929. "${c2}    :oo:.\`             -+oo"${c1}":   %s"
  1930. "${c2}  "${c1}"\`"${c2}"+o/\`    ."${c1}"::::::"${c2}"-.    .++-"${c1}"\`  %s"
  1931. "${c2} "${c1}"\`"${c2}"/s/    .yyyyyyyyyyo:   +o-"${c1}"\`  %s"
  1932. "${c2} "${c1}"\`"${c2}"so     .ss       ohyo\` :s-"${c1}":  %s"
  1933. "${c2} "${c1}"\`"${c2}"s/     .ss  h  m  myy/ /s\`"${c1}"\`  %s"
  1934. "${c2} \`s:     \`oo  s  m  Myy+-o:\`   %s"
  1935. "${c2} \`oo      :+sdoohyoydyso/.     %s"
  1936. "${c2}  :o.      .:////////++:       %s"
  1937. "${c2}  \`/++        "${c1}"-:::::-          %s"
  1938. "${c2}   "${c1}"\`"${c2}"++-                        %s"
  1939. "${c2}    "${c1}"\`"${c2}"/+-                       %s"
  1940. "${c2}      "${c1}"."${c2}"+/.                     %s"
  1941. "${c2}        "${c1}"."${c2}":+-.                  %s"
  1942. "${c2}           \`--.\`\`              %s"
  1943. "                               %s")
  1944.         ;;
  1945.  
  1946.         "Ubuntu-3color")
  1947.             if [[ "$no_color" != "1" ]]; then
  1948.                 c1=$(getColor 'white') # White
  1949.                 c2=$(getColor 'light red') # Light Red
  1950.                 c3=$(getColor 'yellow') # Bold Yellow
  1951.             fi
  1952.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; c3="${my_lcolor}"; fi
  1953.             startline="0"
  1954.             fulloutput=("$c2                          ./+o+-       %s"
  1955. "$c1                  yyyyy- $c2-yyyyyy+     %s"
  1956. "$c1               $c1://+//////$c2-yyyyyyo     %s"
  1957. "$c3           .++ $c1.:/++++++/-$c2.+sss/\`     %s"
  1958. "$c3         .:++o:  $c1/++++++++/:--:/-     %s"
  1959. "$c3        o:+o+:++.$c1\`..\`\`\`.-/oo+++++/    %s"
  1960. "$c3       .:+o:+o/.$c1          \`+sssoo+/   %s"
  1961. "$c1  .++/+:$c3+oo+o:\`$c1             /sssooo.  %s"
  1962. "$c1 /+++//+:$c3\`oo+o$c1               /::--:.  %s"
  1963. "$c1 \+/+o+++$c3\`o++o$c2               ++////.  %s"
  1964. "$c1  .++.o+$c3++oo+:\`$c2             /dddhhh.  %s"
  1965. "$c3       .+.o+oo:.$c2          \`oddhhhh+   %s"
  1966. "$c3        \+.++o+o\`\`-\`\`$c2\`\`.:ohdhhhhh+    %s"
  1967. "$c3         \`:o+++ $c2\`ohhhhhhhhyo++os:     %s"
  1968. "$c3           .o:$c2\`.syhhhhhhh/$c3.oo++o\`     %s"
  1969. "$c2               /osyyyyyyo$c3++ooo+++/    %s"
  1970. "$c2                   \`\`\`\`\` $c3+oo+++o\:    %s"
  1971. "$c3                          \`oo++.      %s")
  1972.         ;;
  1973.  
  1974.         "Ubuntu")
  1975.             if [[ "$no_color" != "1" ]]; then
  1976.                 if [[ $(tput colors) -eq "256" ]]; then c1=$(getColor 'orange') # Orange if 256 support
  1977.                 else c1=$(getColor 'yellow'); fi # Bold Yellow
  1978.             fi
  1979.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c1="${my_lcolor}"; c1="${my_lcolor}"; fi
  1980.             startline="0"
  1981.             fulloutput=("$c1                          ./+o+-       %s"
  1982. "$c1                  yyyyy- $c1-yyyyyy+     %s"
  1983. "$c1               $c1://+//////$c1-yyyyyyo     %s"
  1984. "$c1           .++ $c1.:/++++++/-$c1.+sss/\`     %s"
  1985. "$c1         .:++o:  $c1/++++++++/:--:/-     %s"
  1986. "$c1        o:+o+:++.$c1\`..\`\`\`.-/oo+++++/    %s"
  1987. "$c1       .:+o:+o/.$c1          \`+sssoo+/   %s"
  1988. "$c1  .++/+:$c1+oo+o:\`$c1             /sssooo.  %s"
  1989. "$c1 /+++//+:$c1\`oo+o$c1               /::--:.  %s"
  1990. "$c1 \+/+o+++$c1\`o++o$c1               ++////.  %s"
  1991. "$c1  .++.o+$c1++oo+:\`$c1             /dddhhh.  %s"
  1992. "$c1       .+.o+oo:.$c1          \`oddhhhh+   %s"
  1993. "$c1        \+.++o+o\`\`-\`\`$c1\`\`.:ohdhhhhh+    %s"
  1994. "$c1         \`:o+++ $c1\`ohhhhhhhhyo++os:     %s"
  1995. "$c1           .o:$c1\`.syhhhhhhh/$c1.oo++o\`     %s"
  1996. "$c1               /osyyyyyyo$c1++ooo+++/    %s"
  1997. "$c1                   \`\`\`\`\` $c1+oo+++o\:    %s"
  1998. "$c1                          \`oo++.      %s")
  1999.         ;;
  2000.  
  2001.         "Debian")
  2002.             if [[ "$no_color" != "1" ]]; then
  2003.                 c1=$(getColor 'white') # White
  2004.                 c2=$(getColor 'light red') # Light Red
  2005.             fi
  2006.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2007.             startline="0"
  2008.                        fulloutput=("  $c1       _,met\$\$\$\$\$gg.           %s"
  2009. "  $c1    ,g\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$P.       %s"
  2010. "  $c1  ,g\$\$P\"\"       \"\"\"Y\$\$.\".     %s"
  2011. "  $c1 ,\$\$P'              \`\$\$\$.     %s"
  2012. "  $c1',\$\$P       ,ggs.     \`\$\$b:   %s"
  2013. "  $c1\`d\$\$'     ,\$P\"\'   $c2.$c1    \$\$\$    %s"
  2014. "  $c1 \$\$P      d\$\'     $c2,$c1    \$\$P    %s"
  2015. "  $c1 \$\$:      \$\$.   $c2-$c1    ,d\$\$'    %s"
  2016. "  $c1 \$\$\;      Y\$b._   _,d\$P'     %s"
  2017. "  $c1 Y\$\$.    $c2\`.$c1\`\"Y\$\$\$\$P\"'         %s"
  2018. "  $c1 \`\$\$b      $c2\"-.__              %s"
  2019. "  $c1  \`Y\$\$                        %s"
  2020. "  $c1   \`Y\$\$.                      %s"
  2021. "  $c1     \`\$\$b.                    %s"
  2022. "  $c1       \`Y\$\$b.                 %s"
  2023. "  $c1          \`\"Y\$b._             %s"
  2024. "  $c1              \`\"\"\"\"           %s"
  2025. "                                %s")
  2026.         ;;
  2027.  
  2028.  
  2029.         "Raspbian")
  2030.             if [[ "$no_color" != "1" ]]; then
  2031.                 c1=$(getColor 'light green') # Light Green
  2032.                 c2=$(getColor 'light red') # Light Red
  2033.             fi
  2034.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2035.             startline="0"
  2036.                        fulloutput=("  $c1   .',;:cc;,'.     .,;::c:,,.   %s"
  2037. "   $c1,ooolcloooo:  'oooooccloo:   %s"
  2038. "   $c1.looooc;;:ol  :oc;;:ooooo'   %s"
  2039. "     $c1;oooooo:      ,ooooooc.    %s"
  2040. "       $c1.,:;'.       .;:;'.      %s"
  2041. "       $c2.... ..'''''. ....       %s"
  2042. "     $c2.''.   ..'''''.  ..''.     %s"
  2043. "     $c2..  .....    .....  ..     %s"
  2044. "    $c2.  .'''''''  .''''''.  .    %s"
  2045. "  $c2.'' .''''''''  .'''''''. ''.  %s"
  2046. "  $c2'''  '''''''    .''''''  '''  %s"
  2047. "  $c2.'    ........... ...    .'.  %s"
  2048. "    $c2....    ''''''''.   .''.    %s"
  2049. "    $c2'''''.  ''''''''. .'''''    %s"
  2050. "     $c2'''''.  .'''''. .'''''.    %s"
  2051. "      $c2..''.     .    .''..      %s"
  2052. "            $c2.'''''''            %s"
  2053. "             $c2......       %s")
  2054.         ;;
  2055.  
  2056.  
  2057.         "CrunchBang")
  2058.             if [[ "$no_color" != "1" ]]; then
  2059.                 c1=$(getColor 'white') # White
  2060.             fi
  2061.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2062.             startline="0"
  2063.            fulloutput=("                                       %s"
  2064. "$c2         "$c1"███"$c2"        "$c1"███"$c2"          "$c1"███"$c2"  %s"
  2065. "$c2         "$c1"███"$c2"        "$c1"███"$c2"          "$c1"███"$c2"  %s"
  2066. "$c2         "$c1"███"$c2"        "$c1"███"$c2"          "$c1"███"$c2"  %s"
  2067. "$c2         "$c1"███"$c2"        "$c1"███"$c2"          "$c1"███"$c2"  %s"
  2068. "$c2  "$c1"████████████████████████████"$c2"   "$c1"███"$c2"  %s"
  2069. "$c2  "$c1"████████████████████████████"$c2"   "$c1"███"$c2"  %s"
  2070. "$c2         "$c1"███"$c2"        "$c1"███"$c2"          "$c1"███"$c2"  %s"
  2071. "$c2         "$c1"███"$c2"        "$c1"███"$c2"          "$c1"███"$c2"  %s"
  2072. "$c2         "$c1"███"$c2"        "$c1"███"$c2"          "$c1"███"$c2"  %s"
  2073. "$c2         "$c1"███"$c2"        "$c1"███"$c2"          "$c1"███"$c2"  %s"
  2074. "$c2  "$c1"████████████████████████████"$c2"   "$c1"███"$c2"  %s"
  2075. "$c2  "$c1"████████████████████████████"$c2"   "$c1"███"$c2"  %s"
  2076. "$c2         "$c1"███"$c2"        "$c1"███"$c2"               %s"
  2077. "$c2         "$c1"███"$c2"        "$c1"███"$c2"               %s"
  2078. "$c2         "$c1"███"$c2"        "$c1"███"$c2"          "$c1"███"$c2"  %s"
  2079. "$c2         "$c1"███"$c2"        "$c1"███"$c2"          "$c1"███"$c2"  %s"
  2080. "$c2                                      %s")
  2081.         ;;
  2082.  
  2083.         "Gentoo")
  2084.             if [[ "$no_color" != "1" ]]; then
  2085.                 c1=$(getColor 'white') # White
  2086.                 c2=$(getColor 'light purple') # Light Purple
  2087.             fi
  2088.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2089.             startline="0"
  2090.             fulloutput=("$c2         -/oyddmdhs+:.                %s"
  2091. "$c2     -o"$c1"dNMMMMMMMMNNmhy+"$c2"-\`            %s"
  2092. "$c2   -y"$c1"NMMMMMMMMMMMNNNmmdhy"$c2"+-          %s"
  2093. "$c2 \`o"$c1"mMMMMMMMMMMMMNmdmmmmddhhy"$c2"/\`       %s"
  2094. "$c2 om"$c1"MMMMMMMMMMMN"$c2"hhyyyo"$c1"hmdddhhhd"$c2"o\`     %s"
  2095. "$c2.y"$c1"dMMMMMMMMMMd"$c2"hs++so/s"$c1"mdddhhhhdm"$c2"+\`   %s"
  2096. "$c2 oy"$c1"hdmNMMMMMMMN"$c2"dyooy"$c1"dmddddhhhhyhN"$c2"d.  %s"
  2097. "$c2  :o"$c1"yhhdNNMMMMMMMNNNmmdddhhhhhyym"$c2"Mh  %s"
  2098. "$c2    .:"$c1"+sydNMMMMMNNNmmmdddhhhhhhmM"$c2"my  %s"
  2099. "$c2       /m"$c1"MMMMMMNNNmmmdddhhhhhmMNh"$c2"s:  %s"
  2100. "$c2    \`o"$c1"NMMMMMMMNNNmmmddddhhdmMNhs"$c2"+\`   %s"
  2101. "$c2  \`s"$c1"NMMMMMMMMNNNmmmdddddmNMmhs"$c2"/.     %s"
  2102. "$c2 /N"$c1"MMMMMMMMNNNNmmmdddmNMNdso"$c2":\`       %s"
  2103. "$c2+M"$c1"MMMMMMNNNNNmmmmdmNMNdso"$c2"/-          %s"
  2104. "$c2yM"$c1"MNNNNNNNmmmmmNNMmhs+/"$c2"-\`              %s"
  2105. "$c2/h"$c1"MMNNNNNNNNMNdhs++/"$c2"-\`               %s"
  2106. "$c2\`/"$c1"ohdmmddhys+++/:"$c2".\`                  %s"
  2107. "$c2  \`-//////:--.                       %s")
  2108.         ;;
  2109.  
  2110.  
  2111.         "Funtoo")
  2112.             if [[ "$no_color" != "1" ]]; then
  2113.                 c1=$(getColor 'white') # White
  2114.                 c2=$(getColor 'light purple') # Light Purple
  2115.             fi
  2116.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2117.             startline="0"
  2118.             fulloutput=("                                                     %s"
  2119. "                                                    %s"
  2120. "                                                    %s"
  2121. "                                                    %s"
  2122. "${c1}     _______               ____                     %s"
  2123. "${c1}    /MMMMMMM/             /MMMM| _____  _____       %s"
  2124. "${c1} __/M${c2}.MMM.${c1}M/_____________|M${c2}.M${c1}MM|/MMMMM\/MMMMM\      %s"
  2125. "${c1}|MMMM${c2}MM'${c1}MMMMMMMMMMMMMMMMMMM${c2}MM${c1}MMMM${c2}.MMMM..MMMM.${c1}MM\    %s"
  2126. "${c1}|MM${c2}MMMMMMM${c1}/m${c2}MMMMMMMMMMMMMMMMMMMMMM${c1}MMMM${c2}MM${c1}MMMM${c2}MM${c1}MM|   %s"
  2127. "${c1}|MMMM${c2}MM${c1}MMM${c2}MM${c1}MM${c2}MM${c1}MM${c2}MM${c1}MMMMM${c2}\MMM${c1}MMM${c2}MM${c1}MMMM${c2}MM${c1}MMMM${c2}MM${c1}MM|   %s"
  2128. "${c1}  |MM${c2}MM${c1}MMM${c2}MM${c1}MM${c2}MM${c1}MM${c2}MM${c1}MM${c2}MM${c1}MM${c2}MMM${c1}MMMM${c2}'MMMM''MMMM'${c1}MM/    %s"
  2129. "${c1}  |MM${c2}MM${c1}MMM${c2}MM${c1}MM${c2}MM${c1}MM${c2}MM${c1}MM${c2}MM${c1}MM${c2}MMM${c1}MMM\MMMMM/\MMMMM/      %s"
  2130. "${c1}  |MM${c2}MM${c1}MMM${c2}MM${c1}MMMMMM${c2}MM${c1}MM${c2}MM${c1}MM${c2}MMMMM'${c1}M|                  %s"
  2131. "${c1}  |MM${c2}MM${c1}MMM${c2}MMMMMMMMMMMMMMMMM MM'${c1}M/                   %s"
  2132. "${c1}  |MMMMMMMMMMMMMMMMMMMMMMMMMMMM/                    %s"
  2133. "                                                    %s"
  2134. "                                                    %s"
  2135. "                                                    %s")
  2136.         ;;
  2137.  
  2138.         "Fedora")
  2139.             if [[ "$no_color" != "1" ]]; then
  2140.                 c1=$(getColor 'white') # White
  2141.                 c2=$(getColor 'light blue') # Light Blue
  2142.             fi
  2143.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2144.             startline="0"
  2145.             fulloutput=("$c2           /:-------------:\          %s"
  2146. "$c2        :-------------------::       %s"
  2147. "$c2      :-----------"$c1"/shhOHbmp"$c2"---:\\     %s"
  2148. "$c2    /-----------"$c1"omMMMNNNMMD  "$c2"---:    %s"
  2149. "$c2   :-----------"$c1"sMMMMNMNMP"$c2"     ---:   %s"
  2150. "$c2  :-----------"$c1":MMMdP"$c2"-----      ---   %s"
  2151. "$c2 ,------------"$c1":MMMd"$c2"------      ---:  %s"
  2152. "$c2 :------------"$c1":MMMd"$c2"-----      .---:  %s"
  2153. "$c2 :----    "$c1"oNMMMMMMMMMNho"$c2"     .----:  %s"
  2154. "$c2 :--      "$c1"+shhhMMMmhhy++"$c2"   .------   %s"
  2155. "$c2 :-      -----"$c1":MMMd"$c2"--------------:   %s"
  2156. "$c2 :-     ------"$c1"/MMMd"$c2"-------------;    %s"
  2157. "$c2 :-    ${c1}..${c2}----"$c1"/hMMMy"$c2"------------:     %s"
  2158. "$c2 :--"$c1" :dMNdhhdNMMNo"$c2"------------;      %s"
  2159. "$c2 :---"$c1":sdNMMMMNds:"$c2"------------:       %s"
  2160. "$c2 :------"$c1":://:"$c2"-------------::         %s"
  2161. "$c2 :---------------------://           %s"
  2162. "                                     %s")
  2163.         ;;
  2164.  
  2165.         "FreeBSD")
  2166.             if [[ "$no_color" != "1" ]]; then
  2167.                 c1=$(getColor 'white') # white
  2168.                 c2=$(getColor 'light red') # Light Red
  2169.             fi
  2170.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2171.             startline="0"
  2172.             fulloutput=("                                      %s"   # user@host
  2173. "   "$c1"\`\`\`                        "$c2"\`      %s"      # OS
  2174. "  "$c1"\` \`.....---..."$c2"....--.\`\`\`   -/      %s"     # Kernel
  2175. "  "$c1"+o   .--\`         "$c2"/y:\`      +.     %s"        # Uptime
  2176. "  "$c1" yo\`:.            "$c2":o      \`+-      %s"        # Packages
  2177. "    "$c1"y/               "$c2"-/\`   -o/       %s"         # Shell
  2178. "   "$c1".-                  "$c2"::/sy+:.      %s"          # Resolution
  2179. "   "$c1"/                     "$c2"\`--  /      %s"         # DE
  2180. "  "$c1"\`:                          "$c2":\`     %s"        # WM
  2181. "  "$c1"\`:                          "$c2":\`     %s"        # WM Theme
  2182. "   "$c1"/                          "$c2"/      %s"          # GTK2 Theme
  2183. "   "$c1".-                        "$c2"-.      %s"          # GTK3 Theme
  2184. "    "$c1"--                      "$c2"-.       %s"          # Icon Theme
  2185. "     "$c1"\`:\`                  "$c2"\`:\`        %s"      # Font
  2186. "       "$c2".--             \`--.          %s"              # Disk
  2187. "         "$c2" .---.....----.             %s"               # CPU
  2188. "                                     %s"                    # GPU
  2189. "                                     %s"                    # RAM
  2190. )
  2191.                ;;
  2192.  
  2193.  
  2194.         "OpenBSD")
  2195.             if [[ "$no_color" != "1" ]]; then
  2196.                 c1=$(getColor 'yellow') # Light Yellow
  2197.                 c2=$(getColor 'brown') # Bold Yellow
  2198.                 c3=$(getColor 'light cyan') # Light Cyan
  2199.                 c4=$(getColor 'light red') # Light Red
  2200.                 c5=$(getColor 'dark grey')
  2201.             fi
  2202.             if [ -n "${my_lcolor}" ]; then c1="$my_lcolor"; c2="${my_color}"; fi
  2203.             startline="3"
  2204.             fulloutput=(
  2205. "                                       "$c3" _      "
  2206. "                                       "$c3"(_)      "
  2207. ""$c1"              |    .                            "
  2208. ""$c1"          .   |L  /|   .         "$c3" _      %s"
  2209. ""$c1"      _ . |\ _| \--+._/| .       "$c3"(_)    %s"
  2210. ""$c1"     / ||\| Y J  )   / |/| ./           %s"
  2211. ""$c1"    J  |)'( |        \` F\`.'/       "$c3" _   %s"
  2212. ""$c1"  -<|  F         __     .-<        "$c3"(_)  %s"
  2213. ""$c1"    | /       .-'"$c3". "$c1"\`.  /"$c3"-. "$c1"L___         %s"
  2214. ""$c1"    J \      <    "$c3"\ "$c1" | | "$c5"O"$c3"\\\\"$c1"|.-' "$c3" _      %s"
  2215. ""$c1"  _J \  .-    \\\\"$c3"/ "$c5"O "$c3"| "$c1"| \  |"$c1"F    "$c3"(_)     %s"
  2216. ""$c1" '-F  -<_.     \   .-'  \`-' L__         %s"
  2217. ""$c1"__J  _   _.     >-'  "$c2")"$c4"._.   "$c1"|-'         %s         "
  2218. ""$c1" \`-|.'   /_.          "$c4"\_|  "$c1" F           %s     "
  2219. ""$c1"  /.-   .                _.<            %s"
  2220. ""$c1" /'    /.'             .'  \`\           %s"
  2221. ""$c1"  /L  /'   |/      _.-'-\               %s "
  2222. ""$c1" /'J       ___.---'\|                   %s"
  2223. ""$c1"   |\  .--' V  | \`. \`                   %s "
  2224. ""$c1"   |/\`. \`-.     \`._)                    %s"
  2225. ""$c1"      / .-.\                            %s"
  2226. ""$c1"      \ (  \`\                           "
  2227. ""$c1"       \`.\                                  "
  2228. )
  2229.         ;;
  2230.  
  2231.         "DragonFlyBSD")
  2232.             if [[ "$no_color" != "1" ]]; then
  2233.                 c1=$(getColor 'light red') # Red
  2234.                 c2=$(getColor 'white') # White
  2235.                 c3=$(getColor 'yellow') #
  2236.                 c4=$(getColor 'light red')
  2237.             fi
  2238.             startline="0"
  2239.             fulloutput=("                     "$c1" |                     %s"
  2240. "                    "$c1" .-.                   %s"
  2241. "                   "$c3" ()"$c1"I"$c3"()                  %s"
  2242. "              "$c1" \"==.__:-:__.==\"             %s"
  2243. "              "$c1"\"==.__/~|~\__.==\"            %s"
  2244. "              "$c1"\"==._(  Y  )_.==\"            %s"
  2245. "   "$c2".-'~~\"\"~=--...,__"$c1"\/|\/"$c2"__,...--=~\"\"~~'-. %s"
  2246. "  "$c2"(               ..="$c1"\\\\="$c1"/"$c2"=..               )%s"
  2247. "   "$c2"\`'-.        ,.-\"\`;"$c1"/=\\\\"$c2" ;\"-.,_        .-'\`%s"
  2248. "      "$c2" \`~\"-=-~\` .-~\` "$c1"|=|"$c2" \`~-. \`~-=-\"~\`     %s"
  2249. "       "$c2"     .-~\`    /"$c1"|=|"$c2"\    \`~-.          %s"
  2250. "       "$c2"  .~\`       / "$c1"|=|"$c2" \       \`~.       %s"
  2251. " "$c2"    .-~\`        .'  "$c1"|=|"$c2"  \\\\\`.        \`~-.  %s"
  2252. " "$c2"  (\`     _,.-=\"\`  "$c1"  |=|"$c2"    \`\"=-.,_     \`) %s"
  2253. " "$c2"   \`~\"~\"\`        "$c1"   |=|"$c2"           \`\"~\"~\`  %s"
  2254. "                   "$c1"  /=\                   %s"
  2255. "                   "$c1"  \=/                   %s"
  2256. "                   "$c1"   ^                    %s"
  2257. )
  2258.         ;;
  2259.  
  2260.         "NetBSD")
  2261.             if [[ "$no_color" != "1" ]]; then
  2262.                 c1=$(getColor 'light red') # Light Red
  2263.                 c2=$(getColor 'white') # White
  2264.             fi
  2265.             startline="0"
  2266.             fulloutput=(
  2267. "                                  "$c1"__,gnnnOCCCCCOObaau,_      %s"
  2268. "   "$c2"_._                    "$c1"__,gnnCCCCCCCCOPF\"''              %s"
  2269. "  "$c2"(N\\\\\\\\"$c1"XCbngg,._____.,gnnndCCCCCCCCCCCCF\"___,,,,___          %s"
  2270. "   "$c2"\\\\N\\\\\\\\"$c1"XCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCOOOOPYvv.     %s"
  2271. "    "$c2"\\\\N\\\\\\\\"$c1"XCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCPF\"''               %s"
  2272. "     "$c2"\\\\N\\\\\\\\"$c1"XCCCCCCCCCCCCCCCCCCCCCCCCCOF\"'                     %s"
  2273. "      "$c2"\\\\N\\\\\\\\"$c1"XCCCCCCCCCCCCCCCCCCCCOF\"'                         %s"
  2274. "       "$c2"\\\\N\\\\\\\\"$c1"XCCCCCCCCCCCCCCCPF\"'                             %s"
  2275. "        "$c2"\\\\N\\\\\\\\"$c1"\"PCOCCCOCCFP\"\"                                  %s"
  2276. "         "$c2"\\\\N\                                                %s"
  2277. "          "$c2"\\\\N\                                               %s"
  2278. "           "$c2"\\\\N\                                              %s"
  2279. "            "$c2"\\\\NN\                                            %s"
  2280. "             "$c2"\\\\NN\                                           %s"
  2281. "              "$c2"\\\\NNA.                                         %s"
  2282. "               "$c2"\\\\NNA,                                        %s"
  2283. "                "$c2"\\\\NNN,                                       %s"
  2284. "                 "$c2"\\\\NNN\                                      %s"
  2285. "                  "$c2"\\\\NNN\ "
  2286. "                   "$c2"\\\\NNNA")
  2287.         ;;
  2288.  
  2289.         "Mandriva"|"Mandrake")
  2290.             if [[ "$no_color" != "1" ]]; then
  2291.                 c1=$(getColor 'light blue') # Light Blue
  2292.                 c2=$(getColor 'yellow') # Bold Yellow
  2293.             fi
  2294.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2295.             startline="0"
  2296.             fulloutput=("                                          %s"
  2297. "$c2                         \`\`              %s"
  2298. "$c2                        \`-.              %s"
  2299. "$c1       \`               $c2.---              %s"
  2300. "$c1     -/               $c2-::--\`             %s"
  2301. "$c1   \`++    $c2\`----...\`\`\`-:::::.             %s"
  2302. "$c1  \`os.      $c2.::::::::::::::-\`\`\`     \`  \` %s"
  2303. "$c1  +s+         $c2.::::::::::::::::---...--\` %s"
  2304. "$c1 -ss:          $c2\`-::::::::::::::::-.\`\`.\`\` %s"
  2305. "$c1 /ss-           $c2.::::::::::::-.\`\`   \`    %s"
  2306. "$c1 +ss:          $c2.::::::::::::-            %s"
  2307. "$c1 /sso         $c2.::::::-::::::-            %s"
  2308. "$c1 .sss/       $c2-:::-.\`   .:::::            %s"
  2309. "$c1  /sss+.    $c2..\`$c1  \`--\`    $c2.:::            %s"
  2310. "$c1   -ossso+/:://+/-\`        $c2.:\`           %s"
  2311. "$c1     -/+ooo+/-.              $c2\`           %s"
  2312. "                                         %s"
  2313. "                                         %s")
  2314.         ;;
  2315.  
  2316.         "openSUSE")
  2317.             if [[ "$no_color" != "1" ]]; then
  2318.                 c1=$(getColor 'light green') # Bold Green
  2319.                 c2=$(getColor 'white') # Bold White
  2320.             fi
  2321.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2322.             startline="0"
  2323.             fulloutput=("$c2             .;ldkO0000Okdl;.                %s"
  2324. "$c2         .;d00xl:,'....';:ok00d;.           %s"
  2325. "$c2       .d00l'                ,o00d.         %s"
  2326. "$c2     .d0Kd."$c1" :Okxol:;'.          "$c2":O0d.       %s"
  2327. "$c2    'OK"$c1"KKK0kOKKKKKKKKKKOxo:'      "$c2"lKO'      %s"
  2328. "$c2   ,0K"$c1"KKKKKKKKKKKKKKK0d:"$c2",,,"$c1":dx:"$c2"    ;00,     %s"
  2329. "$c2  .OK"$c1"KKKKKKKKKKKKKKKk."$c2".oOkdl."$c1"'0k."$c2"   cKO.    %s"
  2330. "$c2  :KK"$c1"KKKKKKKKKKKKKKK: "$c2"kKx..od "$c1"lKd"$c2"   .OK:    %s"
  2331. "$c2  dKK"$c1"KKKKKKKKKOx0KKKd "$c2";0KKKO, "$c1"kKKc"$c2"   dKd    %s"
  2332. "$c2  dKK"$c1"KKKKKKKKKK;.;oOKx,.."$c2"'"$c1"..;kKKK0."$c2"  dKd    %s"
  2333. "$c2  :KK"$c1"KKKKKKKKKK0o;...;cdxxOK0Oxc,.  "$c2".0K:    %s"
  2334. "$c2   kKK"$c1"KKKKKKKKKKKKK0xl;'......,cdo  "$c2"lKk     %s"
  2335. "$c2   '0K"$c1"KKKKKKKKKKKKKKKKKKKK00KKOo;  "$c2"c00'     %s"
  2336. "$c2    .kK"$c1"KKOxddxkOO00000Okxoc;'.   "$c2".dKk.      %s"
  2337. "$c2      l0Ko.                    .c00l.       %s"
  2338. "$c2       .l0Kk:.              .;xK0l.         %s"
  2339. "$c2          ,lkK0xl:;,,,,;:ldO0kl,            %s"
  2340. "$c2              .':ldxkkkkxdl:'.              %s")
  2341.         ;;
  2342.  
  2343.         "Slackware")
  2344.             if [[ "$no_color" != "1" ]]; then
  2345.                 c1=$(getColor 'light blue') # Light Blue
  2346.                 c2=$(getColor 'white') # Bold White
  2347.             fi
  2348.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2349.             startline="1"
  2350.             fulloutput=("$c1                   :::::::"
  2351. "$c1             :::::::::::::::::::               %s"
  2352. "$c1          :::::::::::::::::::::::::           %s"
  2353. "$c1        ::::::::"${c2}"cllcccccllllllll"${c1}"::::::        %s"
  2354. "$c1     :::::::::"${c2}"lc               dc"${c1}":::::::      %s"
  2355. "$c1    ::::::::"${c2}"cl   clllccllll    oc"${c1}":::::::::    %s"
  2356. "$c1   :::::::::"${c2}"o   lc"${c1}"::::::::"${c2}"co   oc"${c1}"::::::::::   %s"
  2357. "$c1  ::::::::::"${c2}"o    cccclc"${c1}":::::"${c2}"clcc"${c1}"::::::::::::  %s"
  2358. "$c1  :::::::::::"${c2}"lc        cclccclc"${c1}":::::::::::::  %s"
  2359. "$c1 ::::::::::::::"${c2}"lcclcc          lc"${c1}":::::::::::: %s"
  2360. "$c1 ::::::::::"${c2}"cclcc"${c1}":::::"${c2}"lccclc     oc"${c1}"::::::::::: %s"
  2361. "$c1 ::::::::::"${c2}"o    l"${c1}"::::::::::"${c2}"l    lc"${c1}"::::::::::: %s"
  2362. "$c1  :::::"${c2}"cll"${c1}":"${c2}"o     clcllcccll     o"${c1}":::::::::::  %s"
  2363. "$c1  :::::"${c2}"occ"${c1}":"${c2}"o                  clc"${c1}":::::::::::  %s"
  2364. "$c1   ::::"${c2}"ocl"${c1}":"${c2}"ccslclccclclccclclc"${c1}":::::::::::::   %s"
  2365. "$c1    :::"${c2}"oclcccccccccccccllllllllllllll"${c1}":::::    %s"
  2366. "$c1     ::"${c2}"lcc1lcccccccccccccccccccccccco"${c1}"::::     %s"
  2367. "$c1       ::::::::::::::::::::::::::::::::       %s"
  2368. "$c1         ::::::::::::::::::::::::::::         %s"
  2369. "$c1            ::::::::::::::::::::::"
  2370. "$c1                 ::::::::::::")
  2371.         ;;
  2372.  
  2373.         "Red Hat Enterprise Linux")
  2374.             if [[ "$no_color" != "1" ]]; then
  2375.                 c1=$(getColor 'white') # White
  2376.                 c2=$(getColor 'light red') # Light Red
  2377.             fi
  2378.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2379.             startline="0"
  2380.             fulloutput=("                                           %s"
  2381. "$c2              \`.-..........\`              %s"
  2382. "$c2             \`////////::.\`-/.             %s"
  2383. "$c2             -: ....-////////.            %s"
  2384. "$c2             //:-::///////////\`           %s"
  2385. "$c2      \`--::: \`-://////////////:           %s"
  2386. "$c2      //////-    \`\`.-:///////// .\`        %s"
  2387. "$c2      \`://////:-.\`    :///////::///:\`     %s"
  2388. "$c2        .-/////////:---/////////////:     %s"
  2389. "$c2           .-://////////////////////.     %s"
  2390. "$c1          yMN+\`.-$c2::///////////////-\`      %s"
  2391. "$c1       .-\`:NMMNMs\`  \`..-------..\`         %s"
  2392. "$c1        MN+/mMMMMMhoooyysshsss            %s"
  2393. "$c1 MMM    MMMMMMMMMMMMMMyyddMMM+            %s"
  2394. "$c1  MMMM   MMMMMMMMMMMMMNdyNMMh\`     hyhMMM %s"
  2395. "$c1   MMMMMMMMMMMMMMMMyoNNNMMM+.   MMMMMMMM  %s"
  2396. "$c1    MMNMMMNNMMMMMNM+ mhsMNyyyyMNMMMMsMM   %s"
  2397. "                                          %s")
  2398.         ;;
  2399.  
  2400.         "Frugalware")
  2401.             if [[ "$no_color" != "1" ]]; then
  2402.                 c1=$(getColor 'white') # White
  2403.                 c2=$(getColor 'light blue') # Light Blue
  2404.             fi
  2405.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2406.             startline="3"
  2407.             fulloutput=("${c2}          \`++/::-.\`"
  2408. "${c2}         /o+++++++++/::-.\`"
  2409. "${c2}        \`o+++++++++++++++o++/::-.\`"
  2410. "${c2}        /+++++++++++++++++++++++oo++/:-.\`\`         %s"
  2411. "${c2}       .o+ooooooooooooooooooosssssssso++oo++/:-\`  %s"
  2412. "${c2}       ++osoooooooooooosssssssssssssyyo+++++++o:  %s"
  2413. "${c2}      -o+ssoooooooooooosssssssssssssyyo+++++++s\`  %s"
  2414. "${c2}      o++ssoooooo++++++++++++++sssyyyyo++++++o:   %s"
  2415. "${c2}     :o++ssoooooo"${c1}"/-------------"${c2}"+syyyyyo+++++oo    %s"
  2416. "${c2}    \`o+++ssoooooo"${c1}"/-----"${c2}"+++++ooosyyyyyyo++++os:    %s"
  2417. "${c2}    /o+++ssoooooo"${c1}"/-----"${c2}"ooooooosyyyyyyyo+oooss     %s"
  2418. "${c2}   .o++++ssooooos"${c1}"/------------"${c2}"syyyyyyhsosssy-     %s"
  2419. "${c2}   ++++++ssooooss"${c1}"/-----"${c2}"+++++ooyyhhhhhdssssso      %s"
  2420. "${c2}  -s+++++syssssss"${c1}"/-----"${c2}"yyhhhhhhhhhhhddssssy.      %s"
  2421. "${c2}  sooooooyhyyyyyh"${c1}"/-----"${c2}"hhhhhhhhhhhddddyssy+       %s"
  2422. "${c2} :yooooooyhyyyhhhyyyyyyhhhhhhhhhhdddddyssy\`       %s"
  2423. "${c2} yoooooooyhyyhhhhhhhhhhhhhhhhhhhddddddysy/        %s"
  2424. "${c2}-ysooooooydhhhhhhhhhhhddddddddddddddddssy         %s"
  2425. "${c2} .-:/+osssyyyysyyyyyyyyyyyyyyyyyyyyyyssy:         %s"
  2426. "${c2}       \`\`.-/+oosysssssssssssssssssssssss          %s"
  2427. "${c2}               \`\`.:/+osyysssssssssssssh.          %s"
  2428. "${c2}                        \`-:/+osyyssssyo"
  2429. "${c2}                                .-:+++\`")
  2430.         ;;
  2431.  
  2432.  
  2433.         "Peppermint")
  2434.             if [[ "$no_color" != "1" ]]; then
  2435.                 c1=$(getColor 'white') # White
  2436.                 c2=$(getColor 'light red') # Light Red
  2437.             fi
  2438.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2439.             startline="0"
  2440.             fulloutput=("${c2}             8ZZZZZZ"${c1}"MMMMM               %s"
  2441. "${c2}          .ZZZZZZZZZ"${c1}"MMMMMMM.           %s"
  2442. "${c1}        MM"${c2}"ZZZZZZZZZ"${c1}"MMMMMMM"${c2}"ZZZZ         %s"
  2443. "${c1}      MMMMM"${c2}"ZZZZZZZZ"${c1}"MMMMM"${c2}"ZZZZZZZM       %s"
  2444. "${c1}     MMMMMMM"${c2}"ZZZZZZZ"${c1}"MMMM"${c2}"ZZZZZZZZZ.      %s"
  2445. "${c1}    MMMMMMMMM"${c2}"ZZZZZZ"${c1}"MMM"${c2}"ZZZZZZZZZZZI     %s"
  2446. "${c1}   MMMMMMMMMMM"${c2}"ZZZZZZ"${c1}"MM"${c2}"ZZZZZZZZZZ"${c1}"MMM    %s"
  2447. "${c2}   .ZZZ"${c1}"MMMMMMMMMM"${c2}"IZZ"${c1}"MM"${c2}"ZZZZZ"${c1}"MMMMMMMMM   %s"
  2448. "${c2}   ZZZZZZZ"${c1}"MMMMMMMM"${c2}"ZZ"${c1}"M"${c2}"ZZZZ"${c1}"MMMMMMMMMMM   %s"
  2449. "${c2}   ZZZZZZZZZZZZZZZZ"${c1}"M"${c2}"Z"${c1}"MMMMMMMMMMMMMMM   %s"
  2450. "${c2}   .ZZZZZZZZZZZZZ"${c1}"MMM"${c2}"Z"${c1}"M"${c2}"ZZZZZZZZZZ"${c1}"MMMM   %s"
  2451. "${c2}   .ZZZZZZZZZZZ"${c1}"MMM"${c2}"7ZZ"${c1}"MM"${c2}"ZZZZZZZZZZ7"${c1}"M    %s"
  2452. "${c2}    ZZZZZZZZZ"${c1}"MMMM"${c2}"ZZZZ"${c1}"MMMM"${c2}"ZZZZZZZ77     %s"
  2453. "${c1}     MMMMMMMMMMMM"${c2}"ZZZZZ"${c1}"MMMM"${c2}"ZZZZZ77      %s"
  2454. "${c1}      MMMMMMMMMM"${c2}"7ZZZZZZ"${c1}"MMMMM"${c2}"ZZ77       %s"
  2455. "${c1}       .MMMMMMM"${c2}"ZZZZZZZZ"${c1}"MMMMM"${c2}"Z7Z        %s"
  2456. "${c1}         MMMMM"${c2}"ZZZZZZZZZ"${c1}"MMMMMMM         %s"
  2457. "${c2}           NZZZZZZZZZZZ"${c1}"MMMMM           %s"
  2458. "${c2}              ZZZZZZZZZ"${c1}"MM")
  2459.         ;;
  2460.  
  2461.         "SolusOS")
  2462.             if [[ "$no_color" != "1" ]]; then
  2463.                 c1=$(getColor 'white') # White
  2464.                 c2=$(getColor 'dark grey') # Light Gray
  2465.             fi
  2466.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2467.             startline="0"
  2468.             fulloutput=("${c1}               e         e      %s"
  2469. "${c1}             eee       ee      %s"
  2470. "${c1}            eeee     eee       %s"
  2471. "${c2}        wwwwwwwww"${c1}"eeeeee        %s"
  2472. "${c2}     wwwwwwwwwwwwwww"${c1}"eee        %s"
  2473. "${c2}   wwwwwwwwwwwwwwwwwww"${c1}"eeeeeeee %s"
  2474. "${c2}  wwwww     "${c1}"eeeee"${c2}"wwwwww"${c1}"eeee    %s"
  2475. "${c2} www          "${c1}"eeee"${c2}"wwwwww"${c1}"e      %s"
  2476. "${c2} ww             "${c1}"ee"${c2}"wwwwww       %s"
  2477. "${c2} w                 wwwww       %s"
  2478. "${c2}                   wwwww       %s"
  2479. "${c2}                  wwwww        %s"
  2480. "${c2}                 wwwww         %s"
  2481. "${c2}                wwww           %s"
  2482. "${c2}               wwww            %s"
  2483. "${c2}             wwww              %s"
  2484. "${c2}           www                 %s"
  2485. "${c2}         ww                    %s")
  2486.         ;;
  2487.  
  2488.         "Mageia")
  2489.             if [[ "$no_color" != "1" ]]; then
  2490.                 c1=$(getColor 'white') # White
  2491.                 c2=$(getColor 'light cyan') # Light Cyan
  2492.             fi
  2493.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2494.             startline="0"
  2495.             fulloutput=("$c2               .°°.               %s"
  2496. "$c2                °°   .°°.        %s"
  2497. "$c2                .°°°. °°         %s"
  2498. "$c2                .   .            %s"
  2499. "$c2                 °°° .°°°.       %s"
  2500. "$c2             .°°°.   '___'       %s"
  2501. "$c1            .${c2}'___'     $c1   .      %s"
  2502. "$c1          :dkxc;'.  ..,cxkd;     %s"
  2503. "$c1        .dkk. kkkkkkkkkk .kkd.   %s"
  2504. "$c1       .dkk.  ';cloolc;.  .kkd   %s"
  2505. "$c1       ckk.                .kk;  %s"
  2506. "$c1       xO:                  cOd  %s"
  2507. "$c1       xO:                  lOd  %s"
  2508. "$c1       lOO.                .OO:  %s"
  2509. "$c1       .k00.              .00x   %s"
  2510. "$c1        .k00;            ;00O.   %s"
  2511. "$c1         .lO0Kc;,,,,,,;c0KOc.    %s"
  2512. "$c1            ;d00KKKKKK00d;       %s"
  2513. "$c1               .,KKKK,.            ")
  2514.         ;;
  2515.  
  2516.  
  2517.         "Parabola GNU/Linux-libre")
  2518.             if [[ "$no_color" != "1" ]]; then
  2519.                 c1=$(getColor 'light purple') # Light Purple
  2520.                 c2=$(getColor 'white') # White
  2521.             fi
  2522.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2523.             startline="0"
  2524.             fulloutput=("                                  %s"
  2525. "${c1}              eeeeeeeee          %s"
  2526. "${c1}          eeeeeeeeeeeeeee        %s"
  2527. "${c1}       eeeeee"${c2}"//////////"${c1}"eeeee     %s"
  2528. "${c1}     eeeee"${c2}"///////////////"${c1}"eeeee   %s"
  2529. "${c1}   eeeee"${c2}"///           ////"${c1}"eeee   %s"
  2530. "${c1}  eeee"${c2}"//              ///"${c1}"eeeee   %s"
  2531. "${c1} eee                 "${c2}"///"${c1}"eeeee    %s"
  2532. "${c1}ee                  "${c2}"//"${c1}"eeeeee     %s"
  2533. "${c1}e                  "${c2}"/"${c1}"eeeeeee      %s"
  2534. "${c1}                  eeeeeee        %s"
  2535. "${c1}                 eeeeee          %s"
  2536. "${c1}                eeeeee           %s"
  2537. "${c1}               eeeee             %s"
  2538. "${c1}              eeee               %s"
  2539. "${c1}            eee                  %s"
  2540. "${c1}           ee                    %s"
  2541. "${c1}          e                      %s")
  2542.         ;;
  2543.  
  2544.  
  2545.         "Viperr")
  2546.             if [[ "$no_color" != "1" ]]; then
  2547.                 c1=$(getColor 'white') # White
  2548.                 c2=$(getColor 'dark grey') # Dark Gray
  2549.             fi
  2550.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2551.             startline="0"
  2552.             fulloutput=("${c1}    wwzapd         dlzazw       %s"
  2553. "${c1}   an"${c2}"#"${c1}"zncmqzepweeirzpas"${c2}"#"${c1}"xz     %s"
  2554. "${c1} apez"${c2}"##"${c1}"qzdkawweemvmzdm"${c2}"##"${c1}"dcmv   %s"
  2555. "${c1}zwepd"${c2}"####"${c1}"qzdweewksza"${c2}"####"${c1}"ezqpa  %s"
  2556. "${c1}ezqpdkapeifjeeazezqpdkazdkwqz  %s"
  2557. "${c1} ezqpdksz"${c2}"##"${c1}"wepuizp"${c2}"##"${c1}"wzeiapdk   %s"
  2558. "${c1}  zqpakdpa"${c2}"#"${c1}"azwewep"${c2}"#"${c1}"zqpdkqze    %s"
  2559. "${c1}    apqxalqpewenwazqmzazq      %s"
  2560. "${c1}     mn"${c2}"##"${c1}"=="${c2}"#######"${c1}"=="${c2}"##"${c1}"qp       %s"
  2561. "${c1}      qw"${c2}"##"${c1}"="${c2}"#######"${c1}"="${c2}"##"${c1}"zl        %s"
  2562. "${c1}      z0"${c2}"######"${c1}"="${c2}"######"${c1}"0a        %s"
  2563. "${c1}       qp"${c2}"#####"${c1}"="${c2}"#####"${c1}"mq         %s"
  2564. "${c1}       az"${c2}"####"${c1}"==="${c2}"####"${c1}"mn         %s"
  2565. "${c1}        ap"${c2}"#########"${c1}"qz          %s"
  2566. "${c1}         9qlzskwdewz           %s"
  2567. "${c1}          zqwpakaiw            %s"
  2568. "${c1}            qoqpe              %s"
  2569. "                               %s")
  2570.         ;;
  2571.  
  2572.  
  2573.         "LinuxDeepin")
  2574.             if [[ "$no_color" != "1" ]]; then
  2575.                 c1=$(getColor 'light green') # Bold Green
  2576.             fi
  2577.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi
  2578.             startline="0"
  2579.             fulloutput=("${c1}  eeeeeeeeeeeeeeeeeeeeeeeeeeee    %s"
  2580. "${c1} eee  eeeeeee          eeeeeeee  %s"
  2581. "${c1}ee   eeeeeeeee      eeeeeeeee ee %s"
  2582. "${c1}e   eeeeeeeee     eeeeeeeee    e %s"
  2583. "${c1}e   eeeeeee    eeeeeeeeee      e %s"
  2584. "${c1}e   eeeeee    eeeee            e %s"
  2585. "${c1}e    eeeee    eee  eee         e %s"
  2586. "${c1}e     eeeee   ee eeeeee        e %s"
  2587. "${c1}e      eeeee   eee   eee       e %s"
  2588. "${c1}e       eeeeeeeeee  eeee       e %s"
  2589. "${c1}e         eeeee    eeee        e %s"
  2590. "${c1}e               eeeeee         e %s"
  2591. "${c1}e            eeeeeee           e %s"
  2592. "${c1}e eee     eeeeeeee             e %s"
  2593. "${c1}eeeeeeeeeeeeeeee               e %s"
  2594. "${c1}eeeeeeeeeeeee                 ee %s"
  2595. "${c1} eeeeeeeeeee                eee  %s"
  2596. "${c1}  eeeeeeeeeeeeeeeeeeeeeeeeeeee   %s"
  2597. "                                 %s")
  2598.         ;;
  2599.  
  2600.  
  2601.         "Chakra")
  2602.             if [[ "$no_color" != "1" ]]; then
  2603.                 c1=$(getColor 'light blue') # Light Blue
  2604.             fi
  2605.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi
  2606.             startline="0"
  2607.             fulloutput=("${c1}      _ _ _        \"kkkkkkkk.          %s"
  2608. "${c1}    ,kkkkkkkk.,    \'kkkkkkkkk,        %s"
  2609. "${c1}    ,kkkkkkkkkkkk., \'kkkkkkkkk.       %s"
  2610. "${c1}   ,kkkkkkkkkkkkkkkk,\'kkkkkkkk,       %s"
  2611. "${c1}  ,kkkkkkkkkkkkkkkkkkk\'kkkkkkk.       %s"
  2612. "${c1}   \"\'\'\"\'\'\',;::,,\"\'\'kkk\'\'kkkkk;   __   %s"
  2613. "${c1}       ,kkkkkkkkkk, \"k\'\'kkkkk\' ,kkkk  %s"
  2614. "${c1}     ,kkkkkkk\' ., \' .: \'kkkk\',kkkkkk  %s"
  2615. "${c1}   ,kkkkkkkk\'.k\'   ,  ,kkkk;kkkkkkkkk %s"
  2616. "${c1}  ,kkkkkkkk\';kk \'k  \"\'k\',kkkkkkkkkkkk %s"
  2617. "${c1} .kkkkkkkkk.kkkk.\'kkkkkkkkkkkkkkkkkk\' %s"
  2618. "${c1} ;kkkkkkkk\'\'kkkkkk;\'kkkkkkkkkkkkk\'\'   %s"
  2619. "${c1} \'kkkkkkk; \'kkkkkkkk.,\"\"\'\'\"\'\'\"\"       %s"
  2620. "${c1}   \'\'kkkk;  \'kkkkkkkkkk.,             %s"
  2621. "${c1}      \';\'    \'kkkkkkkkkkkk.,          %s"
  2622. "${c1}              ';kkkkkkkkkk\'           %s"
  2623. "${c1}                ';kkkkkk\'             %s"
  2624. "${c1}                   \"\'\'\"               %s")
  2625.         ;;
  2626.  
  2627.  
  2628.         "Fuduntu")
  2629.             if [[ "$no_color" != "1" ]]; then
  2630.                 c1=$(getColor 'dark grey') # Dark Gray
  2631.                 c2=$(getColor 'yellow') # Bold Yellow
  2632.                 c3=$(getColor 'light red') # Light Red
  2633.                 c4=$(getColor 'white') # White
  2634.             fi
  2635.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi
  2636.             startline="1"
  2637.             fulloutput=("${c1}       \`dwoapfjsod\`"${c2}"           \`dwoapfjsod\`"
  2638. "${c1}    \`xdwdsfasdfjaapz\`"${c2}"       \`dwdsfasdfjaapzx\`     %s"
  2639. "${c1}  \`wadladfladlafsozmm\`"${c2}"     \`wadladfladlafsozmm\`  %s"
  2640. "${c1} \`aodowpwafjwodisosoaas\`"${c2}" \`odowpwafjwodisosoaaso\` %s"
  2641. "${c1} \`adowofaowiefawodpmmxs\`"${c2}" \`dowofaowiefawodpmmxso\` %s"
  2642. "${c1} \`asdjafoweiafdoafojffw\`"${c2}" \`sdjafoweiafdoafojffwq\` %s"
  2643. "${c1}  \`dasdfjalsdfjasdlfjdd\`"${c2}" \`asdfjalsdfjasdlfjdda\`  %s"
  2644. "${c1}   \`dddwdsfasdfjaapzxaw\`"${c2}" \`ddwdsfasdfjaapzxawo\`   %s"
  2645. "${c1}     \`dddwoapfjsowzocmw\`"${c2}" \`ddwoapfjsowzocmwp\`     %s"
  2646. "${c1}       \`ddasowjfowiejao\`"${c2}" \`dasowjfowiejaow\`       %s"
  2647. "                                                 %s"
  2648. "${c3}       \`ddasowjfowiejao\`"${c4}" \`dasowjfowiejaow\`       %s"
  2649. "${c3}     \`dddwoapfjsowzocmw\`"${c4}" \`ddwoapfjsowzocmwp\`     %s"
  2650. "${c3}   \`dddwdsfasdfjaapzxaw\`"${c4}" \`ddwdsfasdfjaapzxawo\`   %s"
  2651. "${c3}  \`dasdfjalsdfjasdlfjdd\`"${c4}" \`asdfjalsdfjasdlfjdda\`  %s"
  2652. "${c3} \`asdjafoweiafdoafojffw\`"${c4}" \`sdjafoweiafdoafojffwq\` %s"
  2653. "${c3} \`adowofaowiefawodpmmxs\`"${c4}" \`dowofaowiefawodpmmxso\` %s"
  2654. "${c3} \`aodowpwafjwodisosoaas\`"${c4}" \`odowpwafjwodisosoaaso\` %s"
  2655. "${c3}   \`wadladfladlafsozmm\`"${c4}"     \`wadladfladlafsozmm\` %s"
  2656. "${c3}     \`dwdsfasdfjaapzx\`"${c4}"       \`dwdsfasdfjaapzx\`"
  2657. "${c3}        \`woapfjsod\`"${c4}"             \`woapfjsod\`")
  2658.         ;;
  2659.  
  2660.         "Mac OS X")
  2661.             if [[ "$no_color" != "1" ]]; then
  2662.                 c1=$(getColor 'green') # Green
  2663.                 c2=$(getColor 'brown') # Yellow
  2664.                 c3=$(getColor 'light red') # Orange
  2665.                 c4=$(getColor 'red') # Red
  2666.                 c5=$(getColor 'purple') # Purple
  2667.                 c6=$(getColor 'blue') # Blue
  2668.             fi
  2669.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; c3="${my_lcolor}"; c4="${my_lcolor}"; c5="${my_lcolor}"; c6="${my_lcolor}"; fi
  2670.             startline="0"
  2671.             fulloutput=("\n${c1}                 -/+:.          %s"
  2672. "${c1}                :++++.         %s"
  2673. "${c1}               /+++/.          %s"
  2674. "${c1}       .:-::- .+/:-\`\`.::-      %s"
  2675. "${c1}    .:/++++++/::::/++++++/:\`   %s"
  2676. "${c2}  .:///////////////////////:\`  %s"
  2677. "${c2}  ////////////////////////\`    %s"
  2678. "${c3} -+++++++++++++++++++++++\`     %s"
  2679. "${c3} /++++++++++++++++++++++/      %s"
  2680. "${c4} /sssssssssssssssssssssss.     %s"
  2681. "${c4} :ssssssssssssssssssssssss-    %s"
  2682. "${c5}  osssssssssssssssssssssssso/\` %s"
  2683. "${c5}  \`syyyyyyyyyyyyyyyyyyyyyyyy+\` %s"
  2684. "${c6}   \`ossssssssssssssssssssss/   %s"
  2685. "${c6}     :ooooooooooooooooooo+.    %s"
  2686. "${c6}      \`:+oo+/:-..-:/+o+/-      %s\n")
  2687.         ;;
  2688.  
  2689.         "Windows"|"Cygwin")
  2690.             if [[ "$no_color" != "1" ]]; then
  2691.                 c1=$(getColor 'light red') # Red
  2692.                 c2=$(getColor 'light green') # Green
  2693.                 c3=$(getColor 'light blue') # Blue
  2694.                 c4=$(getColor 'yellow') # Yellow
  2695.             fi
  2696.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; c3="${my_lcolor}"; c4="${my_lcolor}"; fi
  2697.             startline="0"
  2698.             fulloutput=("${c1}        ,.=:!!t3Z3z.,                 %s"
  2699. "${c1}       :tt:::tt333EE3                %s"
  2700. "${c1}       Et:::ztt33EEEL${c2} @Ee.,      .., %s"
  2701. "${c1}      ;tt:::tt333EE7${c2} ;EEEEEEttttt33# %s"
  2702. "${c1}     :Et:::zt333EEQ.${c2} \$EEEEEttttt33QL %s"
  2703. "${c1}     it::::tt333EEF${c2} @EEEEEEttttt33F  %s"
  2704. "${c1}    ;3=*^\`\`\`\"*4EEV${c2} :EEEEEEttttt33@.  %s"
  2705. "${c3}    ,.=::::!t=., ${c1}\`${c2} @EEEEEEtttz33QF   %s"
  2706. "${c3}   ;::::::::zt33)${c2}   \"4EEEtttji3P*    %s"
  2707. "${c3}  :t::::::::tt33.${c4}:Z3z..${c2}  \`\`${c4} ,..g.    %s"
  2708. "${c3}  i::::::::zt33F${c4} AEEEtttt::::ztF     %s"
  2709. "${c3} ;:::::::::t33V${c4} ;EEEttttt::::t3      %s"
  2710. "${c3} E::::::::zt33L${c4} @EEEtttt::::z3F      %s"
  2711. "${c3}{3=*^\`\`\`\"*4E3)${c4} ;EEEtttt:::::tZ\`      %s"
  2712. "${c3}             \`${c4} :EEEEtttt::::z7       %s"
  2713. "${c4}                 \"VEzjt:;;z>*\`       %s")
  2714.         ;;
  2715.  
  2716.         "Trisquel")
  2717.             if [[ "$no_color" != "1" ]]; then
  2718.                 c1=$(getColor 'light blue') # Light Blue
  2719.                 c2=$(getColor 'light cyan') # Blue
  2720.             fi
  2721.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2722.             startline="0"
  2723.             fulloutput=(
  2724. "${c1}                          ▄▄▄▄▄▄       %s"
  2725. "${c1}                       ▄█████████▄    %s"
  2726. "${c1}       ▄▄▄▄▄▄         ████▀   ▀████   %s"
  2727. "${c1}    ▄██████████▄     ████▀   ▄▄ ▀███  %s"
  2728. "${c1}  ▄███▀▀   ▀▀████     ███▄   ▄█   ███ %s"
  2729. "${c1} ▄███   ▄▄▄   ████▄    ▀██████   ▄███ %s"
  2730. "${c1} ███   █▀▀██▄  █████▄     ▀▀   ▄████  %s"
  2731. "${c1} ▀███      ███  ███████▄▄  ▄▄██████   %s"
  2732. "${c1}  ▀███▄   ▄███  █████████████${c2}████▀    %s"
  2733. "${c1}   ▀█████████    ███████${c2}███▀▀▀        %s"
  2734. "${c1}     ▀▀███▀▀     ██${c2}████▀▀             %s"
  2735. "${c2}                ██████▀   ▄▄▄▄        %s"
  2736. "${c2}               █████▀   ████████      %s"
  2737. "${c2}               █████   ███▀  ▀███     %s"
  2738. "${c2}                ████▄   ██▄▄▄  ███    %s"
  2739. "${c2}                 █████▄   ▀▀  ▄██     %s"
  2740. "${c2}                   ██████▄▄▄████      %s"
  2741. "${c2}                      ▀▀█████▀▀       %s")
  2742.         ;;
  2743.  
  2744.         "Manjaro")
  2745.             if [[ "$no_color" != "1" ]]; then
  2746.                 c1=$(getColor 'light green') # Green
  2747.             fi
  2748.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi
  2749.             startline="0"
  2750.             fulloutput=(
  2751. "${c1} ██████████████████  ████████     %s"
  2752. "${c1} ██████████████████  ████████    %s"
  2753. "${c1} ██████████████████  ████████    %s"
  2754. "${c1} ██████████████████  ████████    %s"
  2755. "${c1} ████████            ████████    %s"
  2756. "${c1} ████████  ████████  ████████    %s"
  2757. "${c1} ████████  ████████  ████████    %s"
  2758. "${c1}           ████████  ████████    %s"
  2759. "${c1} ████████  ████████  ████████    %s"
  2760. "${c1} ████████  ████████  ████████    %s"
  2761. "${c1} ████████  ████████  ████████    %s"
  2762. "${c1} ████████  ████████  ████████    %s"
  2763. "${c1} ████████  ████████  ████████    %s"
  2764. "${c1} ████████  ████████  ████████    %s"
  2765. "${c1} ████████  ████████  ████████    %s"
  2766. "${c1} ████████  ████████  ████████    %s"
  2767. "${c1} ████████  ████████  ████████    %s"
  2768. "                                 %s")
  2769.         ;;
  2770.  
  2771.  
  2772.         "Manjaro-tree")
  2773.             if [[ "$no_color" != "1" ]]; then
  2774.                 c1="\e[1;32m" # Green
  2775.                 c2="\e[1;33m" # Yellow
  2776.             fi
  2777.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2778.             startline="0"
  2779.             fulloutput=(
  2780. "${c1}                         ###      %s"
  2781. "${c1}     ###             ####        %s"
  2782. "${c1}        ###       ####           %s"
  2783. "${c1}         ##### #####             %s"
  2784. "${c1}      #################          %s"
  2785. "${c1}    ###     #####    ####        %s"
  2786. "${c1}   ##        ${c2}OOO       ${c1}###       %s"
  2787. "${c1}  #          ${c2}WW         ${c1}##       %s"
  2788. "${c1}            ${c2}WW            ${c1}#      %s"
  2789. "${c2}            WW                   %s"
  2790. "${c2}            WW                   %s"
  2791. "${c2}           WW                    %s"
  2792. "${c2}           WW                    %s"
  2793. "${c2}           WW                    %s"
  2794. "${c2}          WW                     %s"
  2795. "${c2}          WW                     %s"
  2796. "${c2}          WW                     %s"
  2797. "                                 %s")
  2798.         ;;
  2799.  
  2800.  
  2801.  
  2802.         "elementary OS"|"elementary os")
  2803.             if [[ "$no_color" != "1" ]]; then
  2804.                 c1=$(getColor 'white') # White
  2805.             fi
  2806.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi
  2807.             startline="0"
  2808.             fulloutput=(
  2809. "                                     %s"
  2810. "${c1}         eeeeeeeeeeeeeeeee          %s"
  2811. "${c1}      eeeeeeeeeeeeeeeeeeeeeee       %s"
  2812. "${c1}    eeeee  eeeeeeeeeeee   eeeee     %s"
  2813. "${c1}  eeee   eeeee       eee     eeee   %s"
  2814. "${c1} eeee   eeee          eee     eeee  %s"
  2815. "${c1}eee    eee            eee       eee %s"
  2816. "${c1}eee   eee            eee        eee %s"
  2817. "${c1}ee    eee           eeee       eeee %s"
  2818. "${c1}ee    eee         eeeee      eeeeee %s"
  2819. "${c1}ee    eee       eeeee      eeeee ee %s"
  2820. "${c1}eee   eeee   eeeeee      eeeee  eee %s"
  2821. "${c1}eee    eeeeeeeeee     eeeeee    eee %s"
  2822. "${c1} eeeeeeeeeeeeeeeeeeeeeeee    eeeee  %s"
  2823. "${c1}  eeeeeeee eeeeeeeeeeee      eeee   %s"
  2824. "${c1}    eeeee                 eeeee     %s"
  2825. "${c1}      eeeeeee         eeeeeee       %s"
  2826. "${c1}         eeeeeeeeeeeeeeeee          %s")
  2827.     ;;
  2828.  
  2829.  
  2830.         "Android")
  2831.             if [[ "$no_color" != "1" ]]; then
  2832.                 c1=$(getColor 'white') # White
  2833.                 c2=$(getColor 'light green') # Bold Green
  2834.             fi
  2835.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi
  2836.             startline="2"
  2837.                     fulloutput=(
  2838. "${c2}       ╲ ▁▂▂▂▁ ╱"
  2839. "${c2}       ▄███████▄ "
  2840. "${c2}      ▄██${c1} ${c2}███${c1} ${c2}██▄        %s"
  2841. "${c2}     ▄███████████▄      %s"
  2842. "${c2}  ▄█ ▄▄▄▄▄▄▄▄▄▄▄▄▄ █▄   %s"
  2843. "${c2}  ██ █████████████ ██   %s"
  2844. "${c2}  ██ █████████████ ██   %s"
  2845. "${c2}  ██ █████████████ ██   %s"
  2846. "${c2}  ██ █████████████ ██   %s"
  2847. "${c2}     █████████████      %s"
  2848. "${c2}      ███████████       %s"
  2849. "${c2}       ██     ██"
  2850. "${c2}       ██     ██")
  2851.         ;;
  2852.  
  2853.         "Scientific Linux")
  2854.             if [[ "$no_color" != "1" ]]; then
  2855.                 c1=$(getColor 'light blue')
  2856.                 c2=$(getColor 'light red')
  2857.                 c3=$(getColor 'white')
  2858.             fi
  2859.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2860.             startline="1"
  2861.             fulloutput=("${c1}                  =/;;/-"
  2862. "${c1}                 +:    //                    %s"
  2863. "${c1}                /;      /;                  %s"
  2864. "${c1}               -X        H.                 %s"
  2865. "${c1} .//;;;:;;-,   X=        :+   .-;:=;:;#;.   %s"
  2866. "${c1} M-       ,=;;;#:,      ,:#;;:=,       ,@   %s"
  2867. "${c1} :#           :#.=/++++/=.$=           #=   %s"
  2868. "${c1}  ,#;         #/:+/;,,/++:+/         ;+.    %s"
  2869. "${c1}    ,+/.    ,;@+,        ,#H;,    ,/+,      %s"
  2870. "${c1}       ;+;;/= @.  ${c2}.H${c3}#${c2}#X   ${c1}-X :///+;         %s"
  2871. "${c1}       ;+=;;;.@,  ${c3}.X${c2}M${c3}@$.  ${c1}=X.//;=#/.        %s"
  2872. "${c1}    ,;:      :@#=        =\$H:     .+#-      %s"
  2873. "${c1}  ,#=         #;-///==///-//         =#,    %s"
  2874. "${c1} ;+           :#-;;;:;;;;-X-           +:   %s"
  2875. "${c1} @-      .-;;;;M-        =M/;;;-.      -X   %s"
  2876. "${c1}  :;;::;;-.    #-        :+    ,-;;-;:==    %s"
  2877. "${c1}               ,X        H.                 %s"
  2878. "${c1}                ;/      #=                  %s"
  2879. "${c1}                 //    +;                   %s"
  2880. "${c1}                  '////'")
  2881.         ;;
  2882.  
  2883.         "BackTrack Linux")
  2884.             if [[ "$no_color" != "1" ]]; then
  2885.                 c1=$(getColor 'white') # White
  2886.                 c2=$(getColor 'light red') # Light Red
  2887.             fi
  2888.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2889.             startline="1"
  2890.             fulloutput=("${c1}.............."
  2891. "${c1}            ..,;:ccc,.                           %s"
  2892. "${c1}          ......''';lxO.                        %s"
  2893. "${c1}.....''''..........,:ld;                        %s"
  2894. "${c1}           .';;;:::;,,.x,                       %s"
  2895. "${c1}      ..'''.            0Xxoc:,.  ...           %s"
  2896. "${c1}  ....                ,ONkc;,;cokOdc',.         %s"
  2897. "${c1} .                   OMo           ':"${c2}"dd"${c1}"o.       %s"
  2898. "${c1}                    dMc               :OO;      %s"
  2899. "${c1}                    0M.                 .:o.    %s"
  2900. "${c1}                    ;Wd                         %s"
  2901. "${c1}                     ;XO,                       %s"
  2902. "${c1}                       ,d0Odlc;,..              %s"
  2903. "${c1}                           ..',;:cdOOd::,.      %s"
  2904. "${c1}                                    .:d;.':;.   %s"
  2905. "${c1}                                       'd,  .'  %s"
  2906. "${c1}                                         ;l   ..%s"
  2907. "${c1}                                          .o    %s"
  2908. "${c1}                                            c   %s"
  2909. "${c1}                                            .'"
  2910. "${c1}                                             .")
  2911.         ;;
  2912.        
  2913.         "Kali Linux")
  2914.             if [[ "$no_color" != "1" ]]; then
  2915.                 c1=$(getColor 'light blue') # White
  2916.                 c2=$(getColor 'black') # Light Red
  2917.             fi
  2918.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2919.             startline="1"
  2920.             fulloutput=("${c1}.............."
  2921. "${c1}            ..,;:ccc,.                           %s"
  2922. "${c1}          ......''';lxO.                        %s"
  2923. "${c1}.....''''..........,:ld;                        %s"
  2924. "${c1}           .';;;:::;,,.x,                       %s"
  2925. "${c1}      ..'''.            0Xxoc:,.  ...           %s"
  2926. "${c1}  ....                ,ONkc;,;cokOdc',.         %s"
  2927. "${c1} .                   OMo           ':"${c2}"dd"${c1}"o.       %s"
  2928. "${c1}                    dMc               :OO;      %s"
  2929. "${c1}                    0M.                 .:o.    %s"
  2930. "${c1}                    ;Wd                         %s"
  2931. "${c1}                     ;XO,                       %s"
  2932. "${c1}                       ,d0Odlc;,..              %s"
  2933. "${c1}                           ..',;:cdOOd::,.      %s"
  2934. "${c1}                                    .:d;.':;.   %s"
  2935. "${c1}                                       'd,  .'  %s"
  2936. "${c1}                                         ;l   ..%s"
  2937. "${c1}                                          .o    %s"
  2938. "${c1}                                            c   %s"
  2939. "${c1}                                            .'"
  2940. "${c1}                                             .")
  2941.         ;;
  2942.  
  2943.                "Sabayon")
  2944.                        if [[ "$no_color" != "1" ]]; then
  2945.                                c1=$(getColor 'white') # White
  2946.                 c2=$(getColor 'light blue') # Blue
  2947.                        fi
  2948.                        if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi
  2949.                        startline="0"
  2950.                        fulloutput=("${c2}            ...........                %s"
  2951. "${c2}         ..             ..            %s"
  2952. "${c2}      ..                   ..         %s"
  2953. "${c2}    ..           ${c1}o           ${c2}..       %s"
  2954. "${c2}  ..            ${c1}:W'            ${c2}..     %s"
  2955. "${c2} ..             ${c1}.d.             ${c2}..    %s"
  2956. "${c2}:.             ${c1}.KNO              ${c2}.:   %s"
  2957. "${c2}:.             ${c1}cNNN.             ${c2}.:   %s"
  2958. "${c2}:              ${c1}dXXX,              ${c2}:   %s"
  2959. "${c2}:   ${c1}.          dXXX,       .cd,   ${c2}:   %s"
  2960. "${c2}:   ${c1}'kc ..     dKKK.    ,ll;:'    ${c2}:   %s"
  2961. "${c2}:     ${c1}.xkkxc;..dkkkc',cxkkl       ${c2}:   %s"
  2962. "${c2}:.     ${c1}.,cdddddddddddddo:.       ${c2}.:   %s"
  2963. "${c2} ..         ${c1}:lllllll:           ${c2}..    %s"
  2964. "${c2}   ..         ${c1}',,,,,          ${c2}..      %s"
  2965. "${c2}     ..                     ..        %s"
  2966. "${c2}        ..               ..           %s"
  2967. "${c2}          ...............             %s")
  2968.                ;;
  2969.  
  2970.  
  2971.                "KaOS")
  2972.     if [[ "$no_color" != "1" ]]; then
  2973.                 c1=$(getColor 'light blue')
  2974.                 c2=$(getColor 'light grey')
  2975.                 c3=$(getColor 'red')
  2976.             fi
  2977.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi
  2978.             startline="0"
  2979.             fulloutput=(
  2980. "${c1} ████████ ████████             %s"
  2981. "${c1}   ██████ ██████              %s"
  2982. "${c1}     ████ ████                %s"
  2983. "${c1}        █ █                   %s"
  2984. "${c1}         █                    %s"
  2985. "${c1}         █ ${c2}  ████████ ████████%s"
  2986. "${c1}         █ ${c2}    ██████ ██████  %s"
  2987. "${c1}         █ ${c2}      ████ ████    %s"
  2988. "${c1}         █ ${c2}         █ █       %s"
  2989. "${c1}         █ ${c2}          █        %s"
  2990. "${c1}       ${c3}███████ ███████        %s"
  2991. "${c1}       ${c3}  █████ █████${c2} █        %s"
  2992. "${c1}         █${c3} ███ ███  ${c2} █        %s"
  2993. "${c1}         █  ${c3}  █     ${c2} █        %s"
  2994. "${c1}         █    ${c3}█     ${c2} █        %s"
  2995. "${c1}         █    ${c3}█     ${c2} █        %s")
  2996.         ;;
  2997.  
  2998.  
  2999.                "CentOS")
  3000.                        if [[ "$no_color" != "1" ]]; then
  3001.                                c1=$(getColor 'yellow') # White
  3002.                                c2=$(getColor 'light green') # White
  3003.                                c3=$(getColor 'light blue') # White
  3004.                                c4=$(getColor 'light purple') # White
  3005.                                c5=$(getColor 'white') # White
  3006.                        fi
  3007.                        if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi
  3008.                        startline="0"
  3009.                        fulloutput=("${c1}                   ..                    %s"
  3010. "${c1}                 .PLTJ.                 %s"
  3011. "${c1}                <><><><>                %s"
  3012. "       ${c2}KKSSV' 4KKK ${c1}LJ${c4} KKKL.'VSSKK       %s"
  3013. "       ${c2}KKV' 4KKKKK ${c1}LJ${c4} KKKKAL 'VKK       %s"
  3014. "       ${c2}V' ' 'VKKKK ${c1}LJ${c4} KKKKV' ' 'V       %s"
  3015. "       ${c2}.4MA.' 'VKK ${c1}LJ${c4} KKV' '.4Mb.       %s"
  3016. "${c4}     . ${c2}KKKKKA.' 'V ${c1}LJ${c4} V' '.4KKKKK ${c3}.     %s"
  3017. "${c4}   .4D ${c2}KKKKKKKA.'' ${c1}LJ${c4} ''.4KKKKKKK ${c3}FA.   %s"
  3018. "${c4}  <QDD ++++++++++++  ${c3}++++++++++++ GFD>  %s"
  3019. "${c4}   'VD ${c3}KKKKKKKK'.. ${c2}LJ ${c1}..'KKKKKKKK ${c3}FV    %s"
  3020. "${c4}     ' ${c3}VKKKKK'. .4 ${c2}LJ ${c1}K. .'KKKKKV ${c3}'     %s"
  3021. "       ${c3} 'VK'. .4KK ${c2}LJ ${c1}KKA. .'KV'        %s"
  3022. "       ${c3}A. . .4KKKK ${c2}LJ ${c1}KKKKA. . .4       %s"
  3023. "       ${c3}KKA. 'KKKKK ${c2}LJ ${c1}KKKKK' .4KK       %s"
  3024. "       ${c3}KKSSA. VKKK ${c2}LJ ${c1}KKKV .4SSKK       %s"
  3025. "${c2}                <><><><>                 %s"
  3026. "${c2}                 'MKKM'                  %s"
  3027. "${c2}                   ''")
  3028.         ;;
  3029.  
  3030.  
  3031.         "Jiyuu Linux")
  3032.             if [[ "$no_color" != "1" ]]; then
  3033.                 c1=$(getColor 'light blue') # Light Blue
  3034.             fi
  3035.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi
  3036.             startline="0"
  3037.             fulloutput=("${c1}+++++++++++++++++++++++.        %s"
  3038. "${c1}ss:-......-+so/:----.os-       %s"
  3039. "${c1}ss        +s/        os-       %s"
  3040. "${c1}ss       :s+         os-       %s"
  3041. "${c1}ss       os.         os-       %s"
  3042. "${c1}ss      .so          os-       %s"
  3043. "${c1}ss      :s+          os-       %s"
  3044. "${c1}ss      /s/          os-       %s"
  3045. "${c1}ss      /s:          os-       %s"
  3046. "${c1}ss      +s-          os-       %s"
  3047. "${c1}ss-.....os:..........os-       %s"
  3048. "${c1}++++++++os+++++++++oooo.       %s"
  3049. "${c1}        os.     ./oo/.         %s"
  3050. "${c1}        os.   ./oo:            %s"
  3051. "${c1}        os. ./oo:              %s"
  3052. "${c1}        os oo+-                %s"
  3053. "${c1}        os+-                   %s"
  3054. "${c1}        /.                     %s")
  3055.         ;;
  3056.  
  3057.         "Antergos")
  3058.             if [[ "$no_color" != "1" ]]; then
  3059.                 c1=$(getColor 'blue') # Light Blue
  3060.                 c2=$(getColor 'light blue') # Light Blue
  3061.             fi
  3062.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi
  3063.             startline="1"
  3064.             fulloutput=("${c1}               \`.-/::/-\`\`"
  3065. "${c1}            .-/osssssssso/.               %s"
  3066. "${c1}           :osyysssssssyyys+-            %s"
  3067. "${c1}        \`.+yyyysssssssssyyyyy+.          %s"
  3068. "${c1}       \`/syyyyyssssssssssyyyyys-\`        %s"
  3069. "${c1}      \`/yhyyyyysss${c2}++${c1}ssosyyyyhhy/\`        %s"
  3070. "${c1}     .ohhhyyyys${c2}o++/+o${c1}so${c2}+${c1}syy${c2}+${c1}shhhho.      %s"
  3071. "${c1}    .shhhhys${c2}oo++//+${c1}sss${c2}+++${c1}yyy${c2}+s${c1}hhhhs.     %s"
  3072. "${c1}   -yhhhhs${c2}+++++++o${c1}ssso${c2}+++${c1}yyy${c2}s+o${c1}hhddy:    %s"
  3073. "${c1}  -yddhhy${c2}o+++++o${c1}syyss${c2}++++${c1}yyy${c2}yooy${c1}hdddy-   %s"
  3074. "${c1} .yddddhs${c2}o++o${c1}syyyyys${c2}+++++${c1}yyhh${c2}sos${c1}hddddy\`  %s"
  3075. "${c1}\`odddddhyosyhyyyyyy${c2}++++++${c1}yhhhyosddddddo  %s"
  3076. "${c1}.dmdddddhhhhhhhyyyo${c2}+++++${c1}shhhhhohddddmmh. %s"
  3077. "${c1}ddmmdddddhhhhhhhso${c2}++++++${c1}yhhhhhhdddddmmdy %s"
  3078. "${c1}dmmmdddddddhhhyso${c2}++++++${c1}shhhhhddddddmmmmh %s"
  3079. "${c1}-dmmmdddddddhhys${c2}o++++o${c1}shhhhdddddddmmmmd- %s"
  3080. "${c1} .smmmmddddddddhhhhhhhhhdddddddddmmmms. %s"
  3081. "${c1}   \`+ydmmmdddddddddddddddddddmmmmdy/.     %s"
  3082. "${c1}      \`.:+ooyyddddddddddddyyso+:.\`")
  3083.         ;;
  3084.  
  3085.         *)
  3086.             if [[ "$no_color" != "1" ]]; then
  3087.                 c1=$(getColor 'white') # White
  3088.                 c2=$(getColor 'dark grey') # Light Gray
  3089.                 c3=$(getColor 'yellow') # Light Yellow
  3090.             fi
  3091.             if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; c3="${my_lcolor}"; fi
  3092.             startline="0"
  3093.             fulloutput=("                             %s"
  3094. "                            %s"
  3095. "                            %s"
  3096. "$c2         #####$c0              %s"
  3097. "$c2        #######             %s"
  3098. "$c2        ##"$c1"O$c2#"$c1"O$c2##             %s"
  3099. "$c2        #$c3#####$c2#             %s"
  3100. "$c2      ##$c1##$c3###$c1##$c2##           %s"
  3101. "$c2     #$c1##########$c2##          %s"
  3102. "$c2    #$c1############$c2##         %s"
  3103. "$c2    #$c1############$c2###        %s"
  3104. "$c3   ##$c2#$c1###########$c2##$c3#        %s"
  3105. "$c3 ######$c2#$c1#######$c2#$c3######      %s"
  3106. "$c3 #######$c2#$c1#####$c2#$c3#######      %s"
  3107. "$c3   #####$c2#######$c3#####        %s"
  3108. "                            %s"
  3109. "                            %s"
  3110. "                            %s")
  3111.         ;;
  3112.     esac
  3113.  
  3114.  
  3115.     # Truncate lines based on terminal width.
  3116.     if [ "$truncateSet" == "Yes" ]; then
  3117.         for ((i=0; i<${#fulloutput[@]}; i++)); do
  3118.             my_out=$(printf "${fulloutput[i]}$c0\n" "${out_array}")
  3119.             my_out_full=$(echo "$my_out" | cat -v)
  3120.             termWidth=$(tput cols)
  3121.             SHOPT_EXTGLOB_STATE=$(shopt -p extglob)
  3122.             read SHOPT_CMD SHOPT_STATE SHOPT_OPT <<< ${SHOPT_EXTGLOB_STATE}
  3123.             if [[ ${SHOPT_STATE} == "-u" ]]; then
  3124.                 shopt -s extglob
  3125.             fi
  3126.  
  3127.             stringReal="${my_out_full//\^\[\[@([0-9]|[0-9];[0-9][0-9])m}"
  3128.  
  3129.             if [[ ${SHOPT_STATE} == "-u" ]]; then
  3130.                 shopt -u extglob
  3131.             fi
  3132.  
  3133.             if [[ "${#stringReal}" -le "${termWidth}" ]]; then
  3134.                 echo -e "${my_out}"$c0
  3135.             elif [[ "${#stringReal}" -gt "${termWidth}" ]]; then
  3136.                 ((NORMAL_CHAR_COUNT=0))
  3137.                 for ((j=0; j<=${#my_out_full}; j++)); do
  3138.                     if [[ "${my_out_full:${j}:3}" == '^[[' ]]; then
  3139.                         if [[ "${my_out_full:${j}:5}" =~ ^\^\[\[[[:digit:]]m$ ]]; then
  3140.                             if [[ ${j} -eq 0 ]]; then
  3141.                                 j=$((${j} + 5))
  3142.                             else
  3143.                                 j=$((${j} + 4))
  3144.                             fi
  3145.                         elif [[ "${my_out_full:${j}:8}" =~ ^\^\[\[[[:digit:]]\;[[:digit:]][[:digit:]]m ]]; then
  3146.                             if [[ ${j} -eq 0 ]]; then
  3147.                                 j=$((${j} + 8))
  3148.                             else
  3149.                                 j=$((${j} + 7))
  3150.                             fi
  3151.                         fi
  3152.                     else
  3153.                         ((NORMAL_CHAR_COUNT++))
  3154.                         if [[ ${NORMAL_CHAR_COUNT} -ge ${termWidth} ]]; then
  3155.                             echo -e "${my_out:0:$((${j} - 5))}"$c0
  3156.                             break 1
  3157.                         fi
  3158.                     fi
  3159.                 done
  3160.             fi
  3161.  
  3162.             if [[ "$i" -ge "$startline" ]]; then
  3163.                 unset out_array[0]
  3164.                 out_array=( "${out_array[@]}" )
  3165.             fi
  3166.         done
  3167.     else
  3168.         #n=${#fulloutput[*]}
  3169.         for ((i=0; i<${#fulloutput[*]}; i++)); do
  3170.             # echo "${out_array[@]}"
  3171.             printf "${fulloutput[i]}$c0\n" "${out_array}"
  3172.             if [[ "$i" -ge "$startline" ]]; then
  3173.                 unset out_array[0]
  3174.                 out_array=( "${out_array[@]}" )
  3175.             fi
  3176.         done
  3177.     fi
  3178.     # Done with ASCII output
  3179. }
  3180.  
  3181. infoDisplay () {
  3182.     textcolor="\033[0m"
  3183.     [[ "$my_hcolor" ]] && textcolor="${my_hcolor}"
  3184.     #TODO: Centralize colors and use them across the board so we only change them one place.
  3185.     myascii="${distro}"
  3186.     [[ "${asc_distro}" ]] && myascii="${asc_distro}"
  3187.     case ${myascii} in
  3188.         "Arch Linux - Old"|"Fedora"|"Mandriva"|"Mandrake"|"Chakra"|"Sabayon"|"Slackware"|"Mac OS X"|"Trisquel"|"Kali Linux"|"Jiyuu Linux"|"Antergos"|"KaOS") labelcolor=$(getColor 'light blue');;
  3189.         "Arch Linux"|"Frugalware"|"Mageia") labelcolor=$(getColor 'light cyan');;
  3190.         "Mint"|"LMDE"|"openSUSE"|"LinuxDeepin"|"DragonflyBSD"|"Manjaro"|"Manjaro-tree"|"Android") labelcolor=$(getColor 'light green');;
  3191.         "Ubuntu-3color"|"FreeBSD"|"Debian"|"Raspbian"|"BSD"|"Red Hat Enterprise Linux"|"Peppermint"|"Cygwin"|"Fuduntu"|"NetBSD"|"Scientific Linux"|"DragonFlyBSD"|"BackTrack Linux") labelcolor=$(getColor 'light red');;
  3192.         "CrunchBang"|"SolusOS"|"Viperr"|"elementary"*) labelcolor=$(getColor 'dark grey');;
  3193.         "Gentoo"|"Parabola GNU/Linux-libre"|"Funtoo"|"Funtoo-text") labelcolor=$(getColor 'light purple');;
  3194.         "CentOS"|"Ubuntu"|*) labelcolor=$(getColor 'yellow');;
  3195.     esac
  3196.     [[ "$my_lcolor" ]] && labelcolor="${my_lcolor}"
  3197.     if [[ "$no_color" == "1" ]]; then labelcolor=""; bold=""; c0=""; textcolor=""; fi
  3198.     # Some verbosity stuff
  3199.     [[ "$verbosity" == "1" ]] && [[ "$screenshot" == "1" ]] && verboseOut "Screenshot will be taken after info is displayed."
  3200.     [[ "$verbosity" == "1" ]] && [[ "$hostshot" == "1" ]] && verboseOut "Screenshot will be transferred/uploaded to specified location."
  3201.     #########################
  3202.     # Info Variable Setting #
  3203.     #########################
  3204.     if [[ "${distro}" == "Android" ]]; then
  3205.         myhostname=$(echo -e "${labelcolor}${hostname}"); out_array=( "${out_array[@]}" "$myhostname" )
  3206.         mydistro=$(echo -e "$labelcolor OS:$textcolor $distro $distro_ver"); out_array=( "${out_array[@]}" "$mydistro" )
  3207.         mydevice=$(echo -e "$labelcolor Device:$textcolor $device"); out_array=( "${out_array[@]}" "$mydevice" )
  3208.         myrom=$(echo -e "$labelcolor ROM:$textcolor $rom"); out_array=( "${out_array[@]}" "$myrom" )
  3209.         mybaseband=$(echo -e "$labelcolor Baseband:$textcolor $baseband"); out_array=( "${out_array[@]}" "$mybaseband" )
  3210.         mykernel=$(echo -e "$labelcolor Kernel:$textcolor $kernel"); out_array=( "${out_array[@]}" "$mykernel" )
  3211.         myuptime=$(echo -e "$labelcolor Uptime:$textcolor $uptime"); out_array=( "${out_array[@]}" "$myuptime" )
  3212.         mycpu=$(echo -e "$labelcolor CPU:$textcolor $cpu"); out_array=( "${out_array[@]}" "$mycpu" )
  3213.         mygpu=$(echo -e "$labelcolor GPU:$textcolor $cpu"); out_array=( "${out_array[@]}" "$mygpu" )
  3214.         mymem=$(echo -e "$labelcolor RAM:$textcolor $mem"); out_array=( "${out_array[@]}" "$mymem" )
  3215.     else
  3216.         if [[ "${display[@]}" =~ "host" ]]; then myinfo=$(echo -e "${labelcolor}${myUser}$textcolor${bold}@${c0}${labelcolor}${myHost}"); out_array=( "${out_array[@]}" "$myinfo" ); ((display_index++)); fi
  3217.         if [[ "${display[@]}" =~ "distro" ]]; then
  3218.             if [ "$distro" == "Mac OS X" ]; then
  3219.                 sysArch=`str1=$(ioreg -l -p IODeviceTree | grep firmware-abi);echo ${str1: -4: 2}bit`
  3220.                 prodVers=`prodVers=$(sw_vers|grep ProductVersion);echo ${prodVers:15}`
  3221.                 buildVers=`buildVers=$(sw_vers|grep BuildVersion);echo ${buildVers:14}`
  3222.                 if [ -n "$distro_more" ]; then mydistro=$(echo -e "$labelcolor OS:$textcolor $distro_more $sysArch")
  3223.                 else mydistro=$(echo -e "$labelcolor OS:$textcolor $sysArch $distro $prodVers $buildVers"); fi
  3224.             elif [[ "$distro" == "Cygwin" ]]; then
  3225.                 distro=$(wmic os get name | head -2 | tail -1)
  3226.                 distro=$(expr match "$distro" '\(Microsoft Windows [A-Za-z0-9.]\+\)')
  3227.                 sysArch=$(wmic os get OSArchitecture | head -2 | tail -1 | tr -d '\r ')
  3228.                 mydistro=$(echo -e "$labelcolor OS:$textcolor $distro $sysArch")
  3229.             else
  3230.                 if [ -n "$distro_more" ]; then mydistro=$(echo -e "$labelcolor OS:$textcolor $distro_more")
  3231.                 else mydistro=$(echo -e "$labelcolor OS:$textcolor $distro $sysArch"); fi
  3232.             fi
  3233.             out_array=( "${out_array[@]}" "$mydistro" )
  3234.             ((display_index++))
  3235.         fi
  3236.         if [[ "${display[@]}" =~ "kernel" ]]; then mykernel=$(echo -e "$labelcolor Kernel:$textcolor $kernel"); out_array=( "${out_array[@]}" "$mykernel" ); ((display_index++)); fi
  3237.         if [[ "${display[@]}" =~ "uptime" ]]; then myuptime=$(echo -e "$labelcolor Uptime:$textcolor $uptime"); out_array=( "${out_array[@]}" "$myuptime" ); ((display_index++)); fi
  3238.         if [[ "${display[@]}" =~ "pkgs" ]]; then mypkgs=$(echo -e "$labelcolor Packages:$textcolor $pkgs"); out_array=( "${out_array[@]}" "$mypkgs" ); ((display_index++)); fi
  3239.         if [[ "${display[@]}" =~ "shell" ]]; then myshell=$(echo -e "$labelcolor Shell:$textcolor $myShell"); out_array=( "${out_array[@]}" "$myshell" ); ((display_index++)); fi
  3240.         if [[ -n "$DISPLAY" || "$distro" == "Mac OS X" ]]; then
  3241.             if [[ "${display[@]}" =~ "res" ]]; then myres=$(echo -e "$labelcolor Resolution:${textcolor} $xResolution"); out_array=( "${out_array[@]}" "$myres" ); ((display_index++)); fi
  3242.             if [[ "${display[@]}" =~ "de" ]]; then
  3243.                 if [[ "${DE}" != "Not Present" ]]; then
  3244.                     myde=$(echo -e "$labelcolor DE:$textcolor $DE"); out_array=( "${out_array[@]}" "$myde" ); ((display_index++))
  3245.                 fi
  3246.             fi
  3247.             if [[ "${display[@]}" =~ "wm" ]]; then mywm=$(echo -e "$labelcolor WM:$textcolor $WM"); out_array=( "${out_array[@]}" "$mywm" ); ((display_index++)); fi
  3248.             if [[ "${display[@]}" =~ "wmtheme" ]]; then
  3249.                     if [[ "${Win_theme}" == "Not Present" ]]; then
  3250.                         :
  3251.                     else
  3252.                         mywmtheme=$(echo -e "$labelcolor WM Theme:$textcolor $Win_theme"); out_array=( "${out_array[@]}" "$mywmtheme" ); ((display_index++)); fi
  3253.                     fi
  3254.             if [[ "${display[@]}" =~ "gtk" ]]; then
  3255.                 if [ "$distro" == "Mac OS X" ]; then
  3256.                     if [ "$gtkFont" != "Not Found" ]; then
  3257.                         if [ -n "$gtkFont" ]; then
  3258.                             myfont=$(echo -e "$labelcolor Font:$textcolor $gtkFont"); out_array=( "${out_array[@]}" "$myfont" ); ((display_index++))
  3259.                         fi
  3260.                     fi
  3261.                 else
  3262.                     if [ "$gtk2Theme" != "Not Found" ]; then
  3263.                         if [ -n "$gtk2Theme" ]; then
  3264.                             mygtk2="${gtk2Theme} [GTK2]"
  3265.                         fi
  3266.                     fi
  3267.                     if [ "$gtk3Theme" != "Not Found" ]; then
  3268.                         if [ -n "$mygtk2" ]; then
  3269.                             mygtk3=", ${gtk3Theme} [GTK3]"
  3270.                         else
  3271.                             mygtk3="${gtk3Theme} [GTK3]"
  3272.                         fi
  3273.                     fi
  3274.                     if [[ "$gtk_2line" == "yes" ]]; then
  3275.                         mygtk2=$(echo -e "$labelcolor GTK2 Theme:$textcolor $gtk2Theme"); out_array=( "${out_array[@]}" "$mygtk2" ); ((display_index++))
  3276.                         mygtk3=$(echo -e "$labelcolor GTK3 Theme:$textcolor $gtk3Theme"); out_array=( "${out_array[@]}" "$mygtk3" ); ((display_index++))
  3277.                     else
  3278.                         mygtk=$(echo -e "$labelcolor GTK Theme:$textcolor ${mygtk2}${mygtk3}"); out_array=( "${out_array[@]}" "$mygtk" ); ((display_index++))
  3279.                     fi
  3280.                     if [ "$gtkIcons" != "Not Found" ]; then
  3281.                         if [ -n "$gtkIcons" ]; then
  3282.                             myicons=$(echo -e "$labelcolor Icon Theme:$textcolor $gtkIcons"); out_array=( "${out_array[@]}" "$myicons" ); ((display_index++))
  3283.                         fi
  3284.                     fi
  3285.                     if [ "$gtkFont" != "Not Found" ]; then
  3286.                         if [ -n "$gtkFont" ]; then
  3287.                             myfont=$(echo -e "$labelcolor Font:$textcolor $gtkFont"); out_array=( "${out_array[@]}" "$myfont" ); ((display_index++))
  3288.                         fi
  3289.                     fi
  3290.                     # [ "$gtkBackground" ] && mybg=$(echo -e "$labelcolor BG:$textcolor $gtkBackground"); out_array=( "${out_array[@]}" "$mybg" ); ((display_index++))
  3291.                 fi
  3292.             fi
  3293.         elif [[ "$fake_distro" == "Cygwin" ]]; then
  3294.             if [[ "${display[@]}" =~ "res" && -n "$xResolution" ]]; then myres=$(echo -e "$labelcolor Resolution:${textcolor} $xResolution"); out_array=( "${out_array[@]}" "$myres" ); ((display_index++)); fi
  3295.             if [[ "${display[@]}" =~ "de" ]]; then
  3296.                 if [[ "${DE}" != "Not Present" ]]; then
  3297.                     myde=$(echo -e "$labelcolor DE:$textcolor $DE"); out_array=( "${out_array[@]}" "$myde" ); ((display_index++))
  3298.                 fi
  3299.             fi
  3300.             if [[ "${display[@]}" =~ "wm" ]]; then mywm=$(echo -e "$labelcolor WM:$textcolor $WM"); out_array=( "${out_array[@]}" "$mywm" ); ((display_index++)); fi
  3301.             if [[ "${display[@]}" =~ "wmtheme" ]]; then
  3302.                 if [[ "${Win_theme}" == "Not Present" ]]; then
  3303.                     :
  3304.                 else
  3305.                     mywmtheme=$(echo -e "$labelcolor WM Theme:$textcolor $Win_theme"); out_array=( "${out_array[@]}" "$mywmtheme" ); ((display_index++))
  3306.                 fi
  3307.             fi
  3308.         fi
  3309.         [[ "${fake_distro}" != "Cygwin" ]] && if [[ "${display[@]}" =~ "disk" ]]; then mydisk=$(echo -e "$labelcolor Disk:$textcolor $diskusage"); out_array=( "${out_array[@]}" "$mydisk" ); ((display_index++)); fi
  3310.         if [[ "${display[@]}" =~ "cpu" ]]; then mycpu=$(echo -e "$labelcolor CPU:$textcolor $cpu"); out_array=( "${out_array[@]}" "$mycpu" ); ((display_index++)); fi
  3311.         if [[ "${display[@]}" =~ "gpu" ]] && [[ "$gpu" != "Not Found" ]]; then mygpu=$(echo -e "$labelcolor GPU:$textcolor $gpu"); out_array=( "${out_array[@]}" "$mygpu" ); ((display_index++)); fi
  3312.         if [[ "${display[@]}" =~ "mem" ]]; then mymem=$(echo -e "$labelcolor RAM:$textcolor $mem"); out_array=( "${out_array[@]}" "$mymem" ); ((display_index++)); fi
  3313.     fi
  3314.     if [[ "$display_type" == "ASCII" ]]; then
  3315.         asciiText
  3316.     else
  3317.         if [[ "${display[@]}" =~ "host" ]]; then echo -e " $myinfo"; fi
  3318.         if [[ "${display[@]}" =~ "distro" ]]; then echo -e "$mydistro"; fi
  3319.         if [[ "${display[@]}" =~ "kernel" ]]; then echo -e "$mykernel"; fi
  3320.         if [[ "${distro}" == "Android" ]]; then
  3321.             echo -e "$mydevice"
  3322.             echo -e "$myrom"
  3323.             echo -e "$mybaseband"
  3324.             echo -e "$mykernel"
  3325.             echo -e "$myuptime"
  3326.             echo -e "$mycpu"
  3327.             echo -e "$mymem"
  3328.         else
  3329.             if [[ "${display[@]}" =~ "uptime" ]]; then echo -e "$myuptime"; fi
  3330.             if [[ "${display[@]}" =~ "pkgs" ]]; then echo -e "$mypkgs"; fi
  3331.             if [[ "${display[@]}" =~ "shell" ]]; then echo -e "$myshell"; fi
  3332.             if [[ "${display[@]}" =~ "res" ]]; then echo -e "$myres"; fi
  3333.             if [[ "${display[@]}" =~ "de" ]]; then
  3334.                 if [[ "${DE}" != "Not Present" ]]; then echo -e "$myde"; fi
  3335.             fi
  3336.             if [[ "${display[@]}" =~ "wm" ]]; then
  3337.                 echo -e "$mywm"
  3338.                 if [[ "${Win_theme}" != "Not Present" ]]; then
  3339.                     echo -e "$mywmtheme"
  3340.                 fi
  3341.             fi
  3342.             if [[ "${display[@]}" =~ "gtk" ]]; then
  3343.                 echo -e "$mygtk2"
  3344.                 echo -e "$mygtk3"
  3345.                 echo -e "$myicons"
  3346.                 echo -e "$myfont"
  3347.             fi
  3348.             if [[ "${display[@]}" =~ "disk" ]]; then echo -e "$mydisk"; fi
  3349.         a   if [[ "${display[@]}" =~ "cpu" ]]; then echo -e "$mycpu"; fi
  3350.             if [[ "${display[@]}" =~ "gpu" ]]; then echo -e "$mygpu"; fi
  3351.             if [[ "${display[@]}" =~ "mem" ]]; then echo -e "$mymem"; fi
  3352.         fi
  3353.     fi
  3354. }
  3355.  
  3356. ##################
  3357. # Let's Do This!
  3358. ##################
  3359.  
  3360. if [[ -f "$HOME/.screenfetchOR" ]]; then
  3361.     source $HOME/.screenfetchOR
  3362. fi
  3363.  
  3364.  
  3365. if [[ "$overrideDisplay" ]]; then
  3366.     [[ "$verbosity" -eq "1" ]] && verboseOut "Found 'd' flag in syntax. Overriding some display options..."
  3367.     overrideDisplay=${overrideDisplay//,/ }
  3368.     display=( $overrideDisplay )
  3369. fi
  3370.  
  3371. # Check for android
  3372. #if type -p getprop >/dev/null 2>&1; then
  3373. #   distro="Android"
  3374. #   detectmem
  3375. #   detectuptime
  3376. #   detectkernel
  3377. #   detectdroid
  3378. #   infoDisplay
  3379. #   exit 0
  3380. #fi
  3381.  
  3382. for i in "${display[@]}"; do
  3383.     if [[ $i =~ wm ]]; then
  3384.          ! [[ $WM  ]] && detectwm;
  3385.          ! [[ $Win_theme ]] && detectwmtheme;
  3386.     else
  3387.         if [[ "${display[*]}" =~ "$i" ]]; then
  3388.             if [[ "$errorSuppress" == "1" ]]; then detect${i} 2>/dev/null
  3389.             else
  3390.                 exec 3> >(stderrOut)
  3391.                 detect${i} 2>&3
  3392.                 exec 3>&-
  3393.             fi
  3394.         fi
  3395.     fi
  3396. done
  3397.  
  3398. infoDisplay
  3399. [ "$screenshot" == "1" ] && takeShot
  3400. [ "$exportTheme" == "1" ] && themeExport
  3401.  
  3402. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement