From 74e5857c7abfcd2579e775fd9c241c99f7c02aff Mon Sep 17 00:00:00 2001 From: dmacias72 Date: Wed, 10 Feb 2016 23:59:56 -0700 Subject: [PATCH 1/9] update shellinabox package From 75563e926d0b6dcec75b41f58290fb70dac13346 Mon Sep 17 00:00:00 2001 From: dmacias72 Date: Thu, 11 Feb 2016 00:23:54 -0700 Subject: [PATCH 2/9] add command line screenshot modified for unRAID --- .../shellinabox-plugin/usr/sbin/screenfetch | 4406 +++++++++++++++++ 1 file changed, 4406 insertions(+) create mode 100755 source/shellinabox-plugin/usr/sbin/screenfetch diff --git a/source/shellinabox-plugin/usr/sbin/screenfetch b/source/shellinabox-plugin/usr/sbin/screenfetch new file mode 100755 index 00000000..12ade5da --- /dev/null +++ b/source/shellinabox-plugin/usr/sbin/screenfetch @@ -0,0 +1,4406 @@ +#!/usr/bin/env bash + +# screenFetch - a CLI Bash script to show system/theme info in screenshots + +# Copyright (c) 2010-2015 Brett Bohnenkamper + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Yes, I do realize some of this is horribly ugly coding. Any ideas/suggestions would be +# appreciated by emailing me or by stopping by http://github.com/KittyKatt/screenFetch. You +# could also drop in on the IRC channel at irc://irc.rizon.net/screenFetch. +# to put forth suggestions/ideas. Thank you. + +# Requires: bash 4.0+ +# Optional dependencies: xorg-xdpyinfo (resoluton detection) +# scrot (screenshot taking) +# curl (screenshot uploading) + + +LANG=C +LANGUAGE=C +LC_ALL=C + +scriptVersion="3.6.8" + +###################### +# Settings for fetcher +###################### + +# This setting controls what ASCII logo is displayed. +# distro="Linux" + +# This sets the information to be displayed. Available: distro, Kernel, DE, WM, Win_theme, Theme, Icons, Font, Background, ASCII. To get just the information, and not a text-art logo, you would take "ASCII" out of the below variable. +#display="distro host kernel uptime pkgs shell res de wm wmtheme gtk disk cpu gpu mem" +valid_display=( distro host kernel uptime pkgs shell res de wm wmtheme gtk disk cpu gpu mem ) +display=( distro host kernel uptime pkgs shell res de wm wmtheme gtk cpu gpu mem ) +# Display Type: ASCII or Text +display_type="ASCII" +# Plain logo +display_logo="no" + +# Colors to use for the information found. These are set below according to distribution. If you would like to set your OWN color scheme for these, uncomment the lines below and edit them to your heart's content. +# textcolor="\e[0m" +# labelcolor="\e[1;34m" + +# WM & DE process names +# Removed WM's: compiz +wmnames=( fluxbox openbox blackbox xfwm4 metacity kwin icewm pekwm fvwm dwm awesome wmaker stumpwm musca xmonad.* i3 ratpoison scrotwm spectrwm wmfs wmii beryl subtle e16 enlightenment sawfish emerald monsterwm dminiwm compiz Finder herbstluftwm notion bspwm cinnamon 2bwm echinus swm budgie-wm dtwm 9wm chromeos-wm deepin-wm) +denames=( gnome-session xfce-mcs-manage xfce4-session xfconfd ksmserver lxsession lxqt-session gnome-settings-daemon mate-session mate-settings-daemon Finder deepin) + +# Screenshot Settings +# This setting lets the script know if you want to take a screenshot or not. 1=Yes 0=No +screenshot= +# This setting lets the script know if you want to upload the screenshot to a filehost. 1=Yes 0=No +upload= +# This setting lets the script know where you would like to upload the file to. Valid hosts are: teknik, mediacrush, pomf, imgur, hmp, and a configurable local. +uploadLoc= +# You can specify a custom screenshot command here. Just uncomment and edit. Otherwise, we'll be using the default command: scrot -cd3. +# screenCommand="scrot -cd5" +shotfile=$(printf "screenFetch-`date +'%Y-%m-%d_%H-%M-%S'`.png") + +# Verbose Setting - Set to 1 for verbose output. +verbosity= + +############################################# +#### CODE No need to edit past here CODE #### +############################################# + +######################################### +# Static Variables and Common Functions # +######################################### +c0="\033[0m" # Reset Text +bold="\033[1m" # Bold Text +underline="\033[4m" # Underline Text +display_index=0 + +# User options +gtk_2line="no" + +# Static Color Definitions +colorize () { + printf "\033[38;5;$1m" +} +getColor() { + if [[ -n "$1" ]]; then + if [[ ${BASH_VERSINFO[0]} -ge 4 ]]; then + if [[ ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -gt 1 ]] || [[ ${BASH_VERSINFO[0]} -gt 4 ]]; then + tmp_color=${1,,} + else + tmp_color="$(tr '[:upper:]' '[:lower:]' <<< ${1})" + fi + else + tmp_color="$(tr '[:upper:]' '[:lower:]' <<< ${1})" + fi + case "${tmp_color}" in + 'black') color_ret='\033[0m\033[30m';; + 'red') color_ret='\033[0m\033[31m';; + 'green') color_ret='\033[0m\033[32m';; + 'brown') color_ret='\033[0m\033[33m';; + 'blue') color_ret='\033[0m\033[34m';; + 'purple') color_ret='\033[0m\033[35m';; + 'cyan') color_ret='\033[0m\033[36m';; + 'light grey') color_ret='\033[0m\033[37m';; + 'dark grey') color_ret='\033[0m\033[1;30m';; + 'light red') color_ret='\033[0m\033[1;31m';; + 'light green') color_ret='\033[0m\033[1;32m';; + 'yellow') color_ret='\033[0m\033[1;33m';; + 'light blue') color_ret='\033[0m\033[1;34m';; + 'light purple') color_ret='\033[0m\033[1;35m';; + 'light cyan') color_ret='\033[0m\033[1;36m';; + 'white') color_ret='\033[0m\033[1;37m';; + # Some 256 colors + 'orange') color_ret="$(colorize '202')";; + # HaikuOS + 'black_haiku') color_ret="$(colorize '7')";; + esac + [[ -n "${color_ret}" ]] && echo "${color_ret}" + else + : + fi +} + +verboseOut() { + if [[ "$verbosity" -eq "1" ]]; then + printf "\033[1;31m:: \033[0m$1\n" + fi +} + +errorOut() { + printf "\033[1;37m[[ \033[1;31m! \033[1;37m]] \033[0m$1\n" +} +stderrOut() { + while IFS='' read -r line; do printf "\033[1;37m[[ \033[1;31m! \033[1;37m]] \033[0m${line}\n"; done +} + + +#################### +# Color Defines +#################### + +colorNumberToCode() { + number="$1" + if [[ "${number}" == "na" ]]; then + unset code + elif [[ $(tput colors) -eq "256" ]]; then + code=$(colorize "${number}") + else + case "$number" in + 0|00) code=$(getColor 'black');; + 1|01) code=$(getColor 'red');; + 2|02) code=$(getColor 'green');; + 3|03) code=$(getColor 'brown');; + 4|04) code=$(getColor 'blue');; + 5|05) code=$(getColor 'purple');; + 6|06) code=$(getColor 'cyan');; + 7|07) code=$(getColor 'light grey');; + 8|08) code=$(getColor 'dark grey');; + 9|09) code=$(getColor 'light red');; + 10) code=$(getColor 'light green');; + 11) code=$(getColor 'yellow');; + 12) code=$(getColor 'light blue');; + 13) code=$(getColor 'light purple');; + 14) code=$(getColor 'light cyan');; + 15) code=$(getColor 'white');; + *) unset code;; + esac + fi + echo -n "${code}" +} + + +detectColors() { + my_colors=$(sed 's/^,/na,/;s/,$/,na/;s/,/ /' <<< "${OPTARG}") + my_lcolor=$(awk -F' ' '{print $1}' <<< "${my_colors}") + my_lcolor=$(colorNumberToCode "${my_lcolor}") + + my_hcolor=$(awk -F' ' '{print $2}' <<< "${my_colors}") + my_hcolor=$(colorNumberToCode "${my_hcolor}") +} + +supported_distros="Antergos, Arch Linux (Old and Current Logos), BLAG, CentOS, Chakra, Chapeau, Chrome OS, Chromium OS, CrunchBang, CRUX, Debian, Deepin, Dragora, elementary OS, Evolve OS, Fedora, Frugalware, Fuduntu, Funtoo, Gentoo, gNewSense, Jiyuu Linux, Kali Linux, KaOS, Korora, LinuxDeepin, Linux Mint, LMDE, Logos, Mageia, Mandriva/Mandrake, Manjaro, NixOS, openSUSE, Parabola GNU/Linux-libre, PCLinuxOS, PeppermintOS, Raspbian, Red Hat Enterprise Linux, Sabayon, Scientific Linux, Slackware, Solus, TinyCore, Trisquel, Ubuntu, unRAID, Viperr and Void." +supported_other="Dragonfly/Free/Open/Net BSD, Haiku, Mac OS X and Windows+Cygwin." +supported_dms="KDE, Gnome, Unity, Xfce, LXDE, Cinnamon, MATE, CDE and RazorQt." +supported_wms="2bwm, 9wm, Awesome, Beryl, Blackbox, Cinnamon, chromeos-wm, Compiz, dminiwm, dwm, dtwm, E16, E17, echinus, Emerald, FluxBox, FVWM, herbstluftwm, IceWM, KWin, Metacity, monsterwm, Musca, Gala, Mutter, Muffin, Notion, OpenBox, PekWM, Ratpoison, Sawfish, ScrotWM, SpectrWM, StumpWM, subtle, WindowMaker, WMFS, wmii, Xfwm4, XMonad and i3." + +displayHelp() { + printf "${underline}Usage${c0}:\n" + printf " ${0} [OPTIONAL FLAGS]\n\n" + printf "screenFetch - a CLI Bash script to show system/theme info in screenshots.\n\n" + printf "${underline}Supported GNU/Linux Distributions${c0}:\n" + printf "${supported_distros}" | fold -s | sed 's/^/\t/g' + printf "\n\n" + printf "${underline}Other Supported Systems${c0}:\n" + printf "${supported_other}" | fold -s | sed 's/^/\t/g' + printf "\n\n" + printf "${underline}Supported Desktop Managers${c0}:\n" + printf "${supported_dms}" | fold -s | sed 's/^/\t/g' + printf "\n\n" + printf "${underline}Supported Window Managers${c0}:\n" + printf "${supported_wms}" | fold -s | sed 's/^/\t/g' + printf "\n\n" + printf "${underline}Options${c0}:\n" + printf " ${bold}-v${c0} Verbose output.\n" + printf " ${bold}-o 'OPTIONS'${c0} Allows for setting script variables on the\n" + printf " command line. Must be in the following format...\n" + printf " 'OPTION1=\"OPTIONARG1\";OPTION2=\"OPTIONARG2\"'\n" + printf " ${bold}-d '+var;-var;var'${c0} Allows for setting what information is displayed\n" + printf " on the command line. You can add displays with +var,var. You\n" + printf " can delete displays with -var,var. Setting without + or - will\n" + printf " set display to that explicit combination. Add and delete statements\n" + printf " may be used in conjunction by placing a ; between them as so:\n" + printf " +var,var,var;-var,var.\n" + printf " ${bold}-n${c0} Do not display ASCII distribution logo.\n" + printf " ${bold}-L${c0} Display ASCII distribution logo only.\n" + printf " ${bold}-N${c0} Strip all color from output.\n" + printf " ${bold}-t${c0} Truncate output based on terminal width (Experimental!).\n" + printf " ${bold}-p${c0} Portrait output.\n" + printf " ${bold}-s(u)${c0} Using this flag tells the script that you want it\n" + printf " to take a screenshot. Use the -u flag if you would like\n" + printf " to upload the screenshots to one of the pre-configured\n" + printf " locations. These include: teknik, pomf, imgur, mediacrush, and hmp.\n" + printf " ${bold}-c string${c0} You may change the outputted colors with -c. The format is\n" + printf " as follows: [0-9][0-9],[0-9][0-9]. The first argument controls the\n" + printf " ASCII logo colors and the label colors. The second argument\n" + printf " controls the colors of the information found. One argument may be\n" + printf " used without the other.\n" + printf " ${bold}-a 'PATH'${c0} You can specify a custom ASCII art by passing the path\n" + printf " to a Bash script, defining \`startline\` and \`fulloutput\`\n" + printf " variables, and optionally \`labelcolor\` and \`textcolor\`.\n" + printf " See the \`asciiText\` function in the source code for more\n" + printf " informations on the variables format.\n" + printf " ${bold}-S 'COMMAND'${c0} Here you can specify a custom screenshot command for\n" + printf " the script to execute. Surrounding quotes are required.\n" + printf " ${bold}-D 'DISTRO'${c0} Here you can specify your distribution for the script\n" + printf " to use. Surrounding quotes are required.\n" + printf " ${bold}-A 'DISTRO'${c0} Here you can specify the distribution art that you want\n" + printf " displayed. This is for when you want your distro\n" + printf " detected but want to display a different logo.\n" + printf " ${bold}-E${c0} Suppress output of errors.\n" + printf " ${bold}-V${c0} Display current script version.\n" + printf " ${bold}-h${c0} Display this help.\n" +} + + +displayVersion() { + printf ${underline}"screenFetch"${c0}" - Version ${scriptVersion}\n" + printf "Created by and licensed to Brett Bohnenkamper \n" + printf "OS X porting done almost solely by shrx (https://github.com/shrx) and John D. Duncan, III (https://github.com/JohnDDuncanIII).\n\n" + 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" +} + + +##################### +# Begin Flags Phase +##################### + +case $1 in + --help) displayHelp; exit 0;; + --version) displayVersion; exit 0;; +esac + + +while getopts ":hsu:evVEnLNtlS:A:D:o:Bc:d:pa:" flags; do + case $flags in + h) displayHelp; exit 0 ;; + s) screenshot='1' ;; + S) screenCommand="${OPTARG}" ;; + u) upload='1'; uploadLoc="${OPTARG}" ;; + v) verbosity=1 ;; + V) displayVersion; exit 0 ;; + E) errorSuppress='1' ;; + D) distro="${OPTARG}" ;; + A) asc_distro="${OPTARG}" ;; + t) truncateSet='Yes' ;; + n) display_type='Text' ;; + L) display_type='ASCII'; display_logo='Yes' ;; + o) overrideOpts="${OPTARG}" ;; + c) detectColors "${OPTARGS}" ;; + d) overrideDisplay="${OPTARG}" ;; + N) no_color='1' ;; + p) portraitSet='Yes' ;; + a) art="${OPTARG}" ;; + :) errorOut "Error: You're missing an argument somewhere. Exiting."; exit 1 ;; + ?) errorOut "Error: Invalid flag somewhere. Exiting."; exit 1 ;; + *) errorOut "Error"; exit 1 ;; + esac +done + +################### +# End Flags Phase +################### + + +############################ +# Override Options/Display +############################ + +if [[ "$overrideOpts" ]]; then + verboseOut "Found 'o' flag in syntax. Overriding some script variables..." + OLD_IFS="$IFS" + IFS=";" + for overopt in "${overrideOpts}"; do + eval "${overrideOpts}" + done + IFS="$OLD_IFS" +fi + + +######################### +# Begin Detection Phase +######################### + +# Distro Detection - Begin +detectdistro () { + if [[ -z "${distro}" ]]; then + distro="Unknown" + # LSB Release Check + if type -p lsb_release >/dev/null 2>&1; then + # read distro_detect distro_release distro_codename <<< $(lsb_release -sirc) + distro_detect=( $(lsb_release -sirc) ) + if [[ ${#distro_detect[@]} -eq 3 ]]; then + distro_codename=${distro_detect[2]} + distro_release=${distro_detect[1]} + distro_detect=${distro_detect[0]} + else + for ((i=0; i<${#distro_detect[@]}; i++)); do + if [[ ${distro_detect[$i]} =~ ^[[:digit:]]+((.[[:digit:]]+|[[:digit:]]+|)+)$ ]]; then + distro_release=${distro_detect[$i]} + distro_codename=${distro_detect[@]:$(($i+1)):${#distro_detect[@]}+1} + distro_detect=${distro_detect[@]:0:${i}} + break 1 + elif [[ ${distro_detect[$i]} =~ [Nn]/[Aa] || ${distro_detect[$i]} == "rolling" ]]; then + distro_release=${distro_detect[$i]} + distro_codename=${distro_detect[@]:$(($i+1)):${#distro_detect[@]}+1} + distro_detect=${distro_detect[@]:0:${i}} + break 1 + fi + done + fi + + case "${distro_detect}" in + "archlinux"|"Arch Linux"|"arch"|"Arch"|"archarm") + distro="Arch Linux" + distro_release="n/a" + if grep -q 'antergos' /etc/os-release; then + distro="Antergos" + distro_release="n/a" + fi + if grep -q -i 'logos' /etc/os-release; then + distro="Logos" + distro_release="n/a" + fi + ;; + "BLAG") + distro="BLAG" + distro_more="$(head -n1 /etc/fedora-release)" + ;; + "Chakra") + distro="Chakra" + distro_release="" + ;; + "CentOS") distro="CentOS" + ;; + "Chapeau") distro="Chapeau" + ;; + "Debian") + if [[ -f /etc/crunchbang-lsb-release || -f /etc/lsb-release-crunchbang ]]; then + distro="CrunchBang" + distro_release=$(awk -F'=' '/^DISTRIB_RELEASE=/ {print $2}' /etc/lsb-release-crunchbang) + distro_codename=$(awk -F'=' '/^DISTRIB_DESCRIPTION=/ {print $2}' /etc/lsb-release-crunchbang) + elif [[ -f /etc/os-release ]]; then + if [[ "$(cat /etc/os-release)" =~ "Raspbian" ]]; then + distro="Raspbian" + distro_release=$(awk -F'=' '/^PRETTY_NAME=/ {print $2}' /etc/os-release) + else + distro="Debian" + fi + else + distro="Debian" + fi + ;; + "Raspbian") + distro="Raspbian" + ;; + "elementary"|"elementary OS") + distro="elementary OS" + ;; + "EvolveOS") + distro="Evolve OS" + ;; + "KaOS"|"kaos") + distro="KaOS" + ;; + "Fedora") + distro="Fedora" + ;; + "frugalware") + distro="Frugalware" + distro_codename=null + distro_release=null + ;; + "Fuduntu") + distro="Fuduntu" + distro_codename=null + ;; + "Gentoo") + if [[ "$(lsb_release -sd)" =~ "Funtoo" ]]; then + distro="Funtoo" + else + distro="Gentoo" + fi + ;; + "gNewSense") + distro="gNewSense" + ;; + "Jiyuu Linux") + distro="Jiyuu Linux" + ;; + "LinuxDeepin") + distro="LinuxDeepin" + distro_codename=null + ;; + "Deepin") + distro="Deepin" + ;; + "Kali"|"Debian Kali Linux") + distro="Kali Linux" + ;; + "Korora") + distro="Korora" + ;; + "Lunar Linux"|"lunar") + distro="Lunar Linux" + ;; + "Mageia") + distro="Mageia" + ;; + "MandrivaLinux") + distro="Mandriva" + case "${distro_codename}" in + "turtle"|"Henry_Farman"|"Farman"|"Adelie"|"pauillac") + distro="Mandriva-${distro_release}" + distro_codename=null + ;; + esac + ;; + "ManjaroLinux") + distro="Manjaro" + ;; + "Mer") + distro="Mer" + if [[ -f /etc/os-release ]]; then + if grep -q 'SailfishOS' /etc/os-release; then + distro="SailfishOS" + distro_codename="$(grep 'VERSION=' /etc/os-release | cut -d '(' -f2 | cut -d ')' -f1)" + distro_release="$(awk -F'=' '/^VERSION=/ {print $2}' /etc/os-release)" + fi + fi + ;; + "NixOS") + distro="NixOS" + ;; + "LinuxMint") + distro="Mint" + if [[ "${distro_codename}" == "debian" ]]; then + distro="LMDE" + distro_codename="n/a" + distro_release="n/a" + fi + ;; + "SUSE LINUX"|"openSUSE project") + distro="openSUSE" + ;; + "Parabola GNU/Linux-libre"|"Parabola") + distro="Parabola GNU/Linux-libre" + distro_codename="n/a" + distro_release="n/a" + ;; + "PCLinuxOS") + distro="PCLinuxOS" + distro_codename="n/a" + distro_release="n/a" + ;; + "Peppermint") + distro="Peppermint" + distro_codename=null + ;; + "CentOS") + distro="Red Hat Enterprise Linux" + ;; + "Sabayon") + distro="Sabayon" + ;; + "SailfishOS") + distro="SailfishOS" + if [[ -f /etc/os-release ]]; then + distro_codename="$(grep 'VERSION=' /etc/os-release | cut -d '(' -f2 | cut -d ')' -f1)" + distro_release="$(awk -F'=' '/^VERSION=/ {print $2}' /etc/os-release)" + fi + ;; + "Solus") + distro="Solus" + ;; + "Trisquel") + distro="Trisquel" + ;; + "Ubuntu") + distro="Ubuntu" + ;; + "Viperr") + distro="Viperr" + distro_codename=null + ;; + *) + ;; + esac + if [[ "${distro_detect}" =~ "RedHatEnterprise" ]]; then distro="Red Hat Enterprise Linux"; fi + if [[ -n ${distro_release} && ${distro_release} != "n/a" ]]; then distro_more="$distro_release"; fi + if [[ -n ${distro_codename} && ${distro_codename} != "n/a" ]]; then distro_more="$distro_more $distro_codename"; fi + fi + + # Existing File Check + if [ "$distro" == "Unknown" ]; then + if [ $(uname -o 2>/dev/null) ]; then + case "$(uname -o)" in + "Cygwin") + distro="Cygwin" + fake_distro="${distro}" + if [ "$(wmic os get version | grep -o '^10')" ]; then + fake_distro="Windows 10" + fi + ;; + "Haiku") + distro="Haiku" + distro_more="$(uname -v | tr ' ' '\n' | grep 'hrev')" + ;; + "GNU/Linux") + if type -p crux >/dev/null 2>&1; then + distro="CRUX" + distro_more="$(crux | awk '{print $3}')" + fi + if type -p nixos-version >/dev/null 2>&1; then + distro="NixOS" + distro_more="$(nixos-version)" + fi + ;; + esac + fi + if [[ "${distro}" == "Unknown" ]]; then + if [ -f /etc/os-release ]; then + distrib_id=$(/dev/null; then + distro="Mac OS X" + elif [[ -f /var/run/dmesg.boot ]]; then + distro=$(awk 'BEGIN { + distro = "Unknown" + } + { + if ($0 ~ /DragonFly/) { + distro = "DragonFlyBSD" + exit + } + else if ($0 ~ /FreeBSD/) { + distro = "FreeBSD" + exit + } + else if ($0 ~ /NetBSD/) { + distro = "NetBSD" + exit + } + else if ($0 ~ /OpenBSD/) { + distro = "OpenBSD" + exit + } + } END { + print distro + }' /var/run/dmesg.boot) + fi + fi + fi + + if [[ "${distro}" == "Unknown" ]] && [[ "${OSTYPE}" == "linux-gnu" || "${OSTYPE}" == "linux" || "${OSTYPE}" == "gnu" ]]; then + if [[ -f /etc/issue ]]; then + distro=$(awk 'BEGIN { + distro = "Unknown" + } + { + if ($0 ~ /"LinuxDeepin"/) { + distro = "LinuxDeepin" + exit + } + else if ($0 ~ /"Parabola GNU\/Linux-libre"/) { + distro = "Parabola GNU/Linux-libre" + exit + } + else if ($0 ~ /"Solus"/) { + distro = "Solus" + exit + } + } END { + print distro + }' /etc/issue) + fi + fi + + if [[ "${distro}" == "Unknown" ]] && [[ "${OSTYPE}" == "linux-gnu" || "${OSTYPE}" == "linux" || "${OSTYPE}" == "gnu" ]]; then + if [[ -f /etc/system-release ]]; then + if grep -q "Scientific Linux" /etc/system-release; then + distro="Scientific Linux" + fi + elif [[ -f /etc/lsb-release ]]; then + if grep -q "CHROMEOS_RELEASE_NAME" /etc/lsb-release; then + distro="$(awk -F'=' '/^CHROMEOS_RELEASE_NAME=/ {print $2}' /etc/lsb-release)" + distro_more="$(awk -F'=' '/^CHROMEOS_RELEASE_VERSION=/ {print $2}' /etc/lsb-release)" + fi + fi + fi + fi + fi + + if [[ -n ${distro_more} ]]; then + distro_more="${distro} ${distro_more}" + fi + + if [[ "${distro}" != "Haiku" ]]; then + if [[ ${BASH_VERSINFO[0]} -ge 4 ]]; then + if [[ ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -gt 1 ]] || [[ ${BASH_VERSINFO[0]} -gt 4 ]]; then + distro=${distro,,} + else + distro="$(tr '[:upper:]' '[:lower:]' <<< ${distro})" + fi + else + distro="$(tr '[:upper:]' '[:lower:]' <<< ${distro})" + fi + fi + + if [[ -n ${distro_more} ]]; then + distro_more="${distro} ${distro_more}" + fi + + case $distro in + antergos) distro="Antergos" ;; + arch*linux*old) distro="Arch Linux - Old" ;; + arch|arch*linux) distro="Arch Linux" ;; + dragora) distro="Dragora" ;; + elementary|'elementary os') distro="elementary OS";; + evolveos) distro="Evolve OS" ;; + fedora) distro="Fedora" ;; + gnewsense) distro="gNewSense" ;; + korora) distro="Korora" ;; + blag) distro="BLAG" ;; + chapeau) distro="Chapeau" ;; + chrome*|chromium*) distro="Chrome OS" ;; + crux) distro="CRUX" ;; + mageia) distro="Mageia" ;; + mandriva) distro="Mandriva" ;; + mandrake) distro="Mandrake" ;; + mer) distro="Mer" ;; + mint) distro="Mint" ;; + nix|nix*os) distro="NixOS" ;; + kali*linux) distro="Kali Linux" ;; + lmde) distro="LMDE" ;; + lunar|lunar*linux) distro="Lunar Linux";; + opensuse) distro="openSUSE" ;; + ubuntu) distro="Ubuntu" ;; + debian) distro="Debian" ;; + raspbian) distro="Raspbian" ;; + freebsd) distro="FreeBSD" ;; + freebsd*old) distro="FreeBSD - Old" ;; + logos) distro="Logos" ;; + openbsd) distro="OpenBSD" ;; + dragonflybsd) distro="DragonFlyBSD" ;; + netbsd) distro="NetBSD" ;; + red*hat*) distro="Red Hat Enterprise Linux" ;; + crunchbang) distro="CrunchBang" ;; + gentoo) distro="Gentoo" ;; + funtoo) distro="Funtoo" ;; + sabayon) distro="Sabayon" ;; + slackware) distro="Slackware" ;; + unraid) distro="unRAID" ;; + frugalware) distro="Frugalware" ;; + pclinuxos|pclos) distro="PCLinuxOS" ;; + peppermint) distro="Peppermint" ;; + sailfish|sailfish*os) distro="SailfishOS" ;; + solus) distro="Solus" ;; + trisquel) distro="Trisquel";; + parabolagnu|parabolagnu/linux-libre|'parabola gnu/linux-libre'|parabola) distro="Parabola GNU/Linux-libre" ;; + viperr) distro="Viperr" ;; + void) distro="Void" ;; + kaos) distro="KaOS";; + linuxdeepin) distro="LinuxDeepin" ;; + deepin) distro="Deepin" ;; + chakra) distro="Chakra" ;; + centos) distro="CentOS" ;; + mac*os*x) distro="Mac OS X" ;; + fuduntu) distro="Fuduntu" ;; + manjaro) distro="Manjaro" ;; + tinycore|tinycore*linux) distro="TinyCore" ;; + cygwin) distro="Cygwin" ;; + haiku) distro="Haiku" ;; + esac + verboseOut "Finding distro...found as '${distro} ${distro_release}'" +} +# Distro Detection - End + +# Host and User detection - Begin +detecthost () { + myUser=${USER} + myHost=${HOSTNAME} + if [[ "${distro}" == "Mac OS X" ]]; then myHost=${myHost/.local}; fi + verboseOut "Finding hostname and user...found as '${myUser}@${myHost}'" +} + +# Find Number of Running Processes +# processnum="$(( $( ps aux | wc -l ) - 1 ))" + +# Kernel Version Detection - Begin +detectkernel () { + kernel=( $(uname -srm) ) + kernel="${kernel[${#kernel[@]}-1]} ${kernel[@]:0:${#kernel[@]}-1}" + verboseOut "Finding kernel version...found as '${kernel}'" +} +# Kernel Version Detection - End + + +# Uptime Detection - Begin +detectuptime () { + unset uptime + if [[ "${distro}" == "Mac OS X" || "${distro}" == "FreeBSD" ]]; then + boot=$(sysctl -n kern.boottime | cut -d "=" -f 2 | cut -d "," -f 1) + now=$(date +%s) + uptime=$(($now-$boot)) + elif [[ "${distro}" == "OpenBSD" ]]; then + boot=$(sysctl -n kern.boottime) + now=$(date +%s) + uptime=$((${now} - ${boot})) + elif [[ "${distro}" == "Haiku" ]]; then + uptime=$(uptime | cut -d ',' -f2,3 | sed 's/ up //; s/ hour,/h/; s/ minutes/m/;') + else + if [[ -f /proc/uptime ]]; then + uptime=$(/dev/null 2>&1; then + port_pkgs=$(port installed 2>/dev/null | wc -l) + pkgs=$((${pkgs} + (${port_pkgs} -1))) + fi + + if type -p brew >/dev/null 2>&1; then + brew_pkgs=$(brew list -1 2>/dev/null | wc -l) + pkgs=$((${pkgs} + ${brew_pkgs})) + fi + if type -p pkgin >/dev/null 2>&1; then + pkgsrc_pkgs=$(pkgin list 2>/dev/null | wc -l) + pkgs=$((${pkgs} + ${pkgsrc_pkgs})) + fi + ;; + 'OpenBSD') + pkgs=$(pkg_info | wc -l | awk '{sub(" ", "");print $1}') + if type -p portmaster >/dev/null 2>&1; then + ports=$(portmaster -l | grep -Eo '[0-9]+ total installed' | sed 's/ total installed//') + pkgs=$((${pkgs} + ${ports})) + fi + ;; + 'FreeBSD') + pkgs=$(if TMPDIR=/dev/null ASSUME_ALWAYS_YES=1 PACKAGESITE=file:///nonexistent pkg info pkg >/dev/null 2>&1; then + pkg info | wc -l | awk '{print $1}'; else pkg_info | wc -l | awk '{sub(" ", "");print $1}'; fi) + ;; + 'NetBSD') + pkgs=$(pkg_info | wc -l | tr -d ' ') + ;; + 'Cygwin') + cygfix=2 + pkgs=$(($(cygcheck -cd | wc -l) - ${cygfix})) + if [ -d "/cygdrive/c/ProgramData/chocolatey/lib" ]; then + chocopkgs=$(( $(ls -1 /cygdrive/c/ProgramData/chocolatey/lib | wc -l) )) + pkgs=$((${pkgs} + ${chocopkgs})) + fi + ;; + 'Haiku') + haikualpharelease="no" + if [ -d /boot/system/package-links ]; then + pkgs=$(ls /boot/system/package-links | wc -l) + elif type -p installoptionalpackage >/dev/null 2>&1; then + haikualpharelease="yes" + pkgs=$(installoptionalpackage -l | sed -n '3p' | wc -w) + fi + ;; + esac + verboseOut "Finding current package count...found as '$pkgs'" +} + + + + +# CPU Detection - Begin +detectcpu () { + REGEXP="-r" + if [ "$distro" == "Mac OS X" ]; then + cpu=$(machine) + if [[ $cpu == "ppc750" ]]; then + cpu="IBM PowerPC G3" + elif [[ $cpu == "ppc7400" || $cpu == "ppc7450" ]]; then + cpu="IBM PowerPC G4" + elif [[ $cpu == "ppc970" ]]; then + cpu="IBM PowerPC G5" + else + cpu=$(sysctl -n machdep.cpu.brand_string) + fi + REGEXP="-E" + elif [ "$OSTYPE" == "gnu" ]; then + # no /proc/cpuinfo on GNU/Hurd + if [ "$(uname -m | grep 'i*86')" ]; then + cpu="Unknown x86" + else + cpu="Unknown" + fi + elif [[ "$distro" == "FreeBSD" || "$distro" == "DragonflyBSD" ]]; then + cpu=$(sysctl -n hw.model) + elif [ "$distro" == "OpenBSD" ]; then + cpu=$(sysctl -n hw.model | sed 's/@.*//') + elif [ "$distro" == "Haiku" ]; then + cpu=$(sysinfo -cpu | grep 'CPU #0' | cut -d'"' -f2 | sed 's/(tm)//; s/Processor//;') + if [ -z "$(echo $cpu | grep '@')" ]; then + cpu_mhz=$(sysinfo -cpu | grep 'running at' | awk 'BEGIN{FS="running at "} { print $2; exit }' | cut -d'M' -f1) + if [ $(echo $cpu_mhz) -gt 999 ];then + cpu_ghz=$(awk '{print $1/1000}' <<< "${cpu_mhz}") + cpu="$cpu @ ${cpu_ghz}GHz" + else + cpu="$cpu @ ${cpu_mhz}MHz" + fi + fi + else + cpu=$(awk 'BEGIN{FS=":"} /model name/ { print $2; exit }' /proc/cpuinfo | awk 'BEGIN{FS=" @"; OFS="\n"} { print $1; exit }') + cpun=$(grep "physical id" /proc/cpuinfo | sort | uniq | wc -l) + if [ -z "$cpu" ]; then + cpu=$(awk 'BEGIN{FS=":"} /Hardware/ { print $2; exit }' /proc/cpuinfo) + fi + if [ -z "$cpu" ]; then + cpu=$(awk 'BEGIN{FS=":"} /^cpu/ { gsub(/ +/," ",$2); print $2; exit}' /proc/cpuinfo | sed 's/, altivec supported//;s/^ //') + if [[ $cpu =~ ^(PPC)*9.+ ]]; then + model="IBM PowerPC G5 " + elif [[ $cpu =~ 740/750 ]]; then + model="IBM PowerPC G3 " + elif [[ $cpu =~ ^74.+ ]]; then + model="Motorola PowerPC G4 " + elif [[ "$(cat /proc/cpuinfo)" =~ "BCM2708" ]]; then + model="Broadcom BCM2835 ARM1176JZF-S" + else + model="IBM PowerPC G3 " + fi + cpu="${model}${cpu}" + fi + loc="/sys/devices/system/cpu/cpu0/cpufreq" + if [ -f ${loc}/bios_limit ];then + cpu_mhz=$(awk '{print $1/1000}' "${loc}/bios_limit") + elif [ -f $loc/scaling_max_freq ];then + cpu_mhz=$(awk '{print $1/1000}' "${loc}/scaling_max_freq") + else + cpu_mhz=$(awk -F':' '/cpu MHz/{ print int($2+.5) }' /proc/cpuinfo | head -n 1) + fi + if [ -n "$cpu_mhz" ];then + if [ $(echo $cpu_mhz | cut -d. -f1) -gt 999 ];then + cpu_ghz=$(awk '{print $1/1000}' <<< "${cpu_mhz}") + cpu="$cpu @ ${cpu_ghz}GHz" + else + cpu="$cpu @ ${cpu_mhz}MHz" + fi + fi + fi + if [[ "${cpun}" -gt "1" ]]; then + cpu=$(sed $REGEXP 's/\([tT][mM]\)|\([Rr]\)|[pP]rocessor//g' <<< "${cpun}x ${cpu}" | xargs) + else + cpu=$(sed $REGEXP 's/\([tT][mM]\)|\([Rr]\)|[pP]rocessor//g' <<< "${cpu}" | xargs) + fi + verboseOut "Finding current CPU...found as '$cpu'" +} +# CPU Detection - End + + +# GPU Detection - Begin (EXPERIMENTAL!) +detectgpu () { + if [[ "${distro}" == "FreeBSD" ]]; then + gpu_info=$(pciconf -lv 2> /dev/null | grep -B 4 VGA) + gpu_info=$(grep -E 'device.*=.*' <<< "${gpu_info}") + gpu="${gpu_info##*device*= }" + gpu="${gpu//\'}" + # gpu=$(sed 's/.*device.*= //' <<< "${gpu_info}" | sed "s/'//g") + elif [[ "${distro}" != "Mac OS X" && "${distro}" != "Haiku" ]]; then + if [[ -n "$(PATH="/opt/bin:$PATH" type -p nvidia-smi)" ]]; then + gpu=$($(PATH="/opt/bin:$PATH" type -p nvidia-smi | cut -f1) -q | awk -F':' '/Product Name/ {gsub(/: /,":"); print $2}' | sed ':a;N;$!ba;s/\n/, /g') + elif [[ -n "$(PATH="/usr/sbin:$PATH" type -p glxinfo)" && -z "${gpu}" ]]; then + gpu_info=$($(PATH="/usr/sbin:$PATH" type -p glxinfo | cut -f1) 2>/dev/null) + gpu=$(grep "OpenGL renderer string" <<< "${gpu_info}" | cut -d ':' -f2 | sed -n '1h;2,$H;${g;s/\n/,/g;p}') + gpu="${gpu:1}" + gpu_info=$(grep "OpenGL vendor string" <<< "${gpu_info}") + elif [[ -n "$(PATH="/usr/sbin:$PATH" type -p lspci)" && -z "$gpu" ]]; then + gpu_info=$($(PATH="/usr/bin:$PATH" type -p lspci | cut -f1) 2> /dev/null | grep VGA) + gpu=$(grep -oE '\[.*\]' <<< "${gpu_info}" | sed 's/\[//;s/\]//' | sed -n '1h;2,$H;${g;s/\n/, /g;p}') + fi + elif [[ "${distro}" == "Mac OS X" ]]; then + gpu=$(system_profiler SPDisplaysDataType | awk -F': ' '/^\ *Chipset Model:/ {print $2}' | awk '{ printf "%s / ", $0 }' | sed -e 's/\/ $//g') + elif [[ "${distro}" == "Cygwin" ]]; then + gpu=$(wmic path Win32_VideoController get caption) + gpu=$(tail -1 <<< ${gpu}) + elif [[ "${distro}" == "Haiku" ]]; then + gpu="$(listdev | grep -A2 -e 'device Display controller' | tail -n1 | sed 's/ device ....: //')" + fi + + if [ -n "$gpu" ];then + if [ $(grep -i nvidia <<< "${gpu_info}" | wc -l) -gt 0 ];then + gpu_info="NVidia " + elif [ $(grep -i intel <<< "${gpu_info}" | wc -l) -gt 0 ];then + gpu_info="Intel " + elif [ $(grep -i amd <<< "${gpu_info}" | wc -l) -gt 0 ];then + gpu_info="AMD " + elif [[ $(grep -i ati <<< "${gpu_info}" | wc -l) -gt 0 || $(grep -i radeon <<< "${gpu_info}" | wc -l) -gt 0 ]]; then + gpu_info="ATI " + else + gpu_info=$(cut -d ':' -f2 <<< "${gpu_info}") + gpu_info="${gpu_info:1} " + fi + gpu="${gpu}" + else + gpu="Not Found" + fi + + verboseOut "Finding current GPU...found as '$gpu'" +} +# GPU Detection - End + + +# Disk Usage Detection - Begin +detectdisk () { + diskusage="Unknown" + if type -p df >/dev/null 2>&1; then + if [[ "${distro}" =~ (Free|Net|Open|DragonFly)BSD ]]; then + totaldisk=$(df -h -c 2>/dev/null | tail -1) + elif [[ "${distro}" == "Mac OS X" ]]; then + totaldisk=$(df -H / 2>/dev/null | tail -1) + else + totaldisk=$(df -h --total 2>/dev/null | tail -1) + fi + disktotal=$(awk '{print $2}' <<< "${totaldisk}") + diskused=$(awk '{print $3}' <<< "${totaldisk}") + diskusedper=$(awk '{print $5}' <<< "${totaldisk}") + diskusage="${diskused} / ${disktotal} (${diskusedper})" + diskusage_verbose=$(sed 's/%/%%/' <<< $diskusage) + fi + verboseOut "Finding current disk usage...found as '$diskusage_verbose'" +} +# Disk Usage Detection - End + + +# Memory Detection - Begin +detectmem () { + hw_mem=0 + free_mem=0 + human=1024 + if [ "$distro" == "Mac OS X" ]; then + totalmem=$(echo "$(sysctl -n hw.memsize)"/${human}^2|bc) + wiredmem=$(vm_stat | grep wired | awk '{ print $4 }' | sed 's/\.//') + activemem=$(vm_stat | grep ' active' | awk '{ print $3 }' | sed 's/\.//') + compressedmem=$(vm_stat | grep occupied | awk '{ print $5 }' | sed 's/\.//') + usedmem=$(((${wiredmem} + ${activemem} + ${compressedmem}) * 4 / $human)) + elif [ "$distro" == "Cygwin" ]; then + total_mem=$(awk '/MemTotal/ { print $2 }' /proc/meminfo) + totalmem=$((${total_mem}/$human)) + free_mem=$(awk '/MemFree/ { print $2 }' /proc/meminfo) + used_mem=$((${total_mem} - ${free_mem})) + usedmem=$((${used_mem} / $human)) + elif [ "$distro" == "FreeBSD" ]; then + phys_mem=$(sysctl -n hw.physmem) + size_mem=$phys_mem + size_chip=1 + guess_chip=`echo "$size_mem / 8 - 1" | bc` + while [ $guess_chip != 0 ]; do + guess_chip=`echo "$guess_chip / 2" | bc` + size_chip=`echo "$size_chip * 2" | bc` + done + round_mem=`echo "( $size_mem / $size_chip + 1 ) * $size_chip " | bc` + totalmem=$(($round_mem / ($human * $human) )) + pagesize=$(sysctl -n hw.pagesize) + inactive_count=$(sysctl -n vm.stats.vm.v_inactive_count) + inactive_mem=$(($inactive_count * $pagesize)) + cache_count=$(sysctl -n vm.stats.vm.v_cache_count) + cache_mem=$(($cache_count * $pagesize)) + free_count=$(sysctl -n vm.stats.vm.v_free_count) + free_mem=$(($free_count * $pagesize)) + avail_mem=$(($inactive_mem + $cache_mem + $free_mem)) + used_mem=$(($round_mem - $avail_mem)) + usedmem=$(($used_mem / ($human * $human) )) + elif [ "$distro" == "OpenBSD" ]; then + totalmem=$(dmesg | grep 'real mem' | cut -d' ' -f5 | tr -d '()MB') + usedmem=$(top -1 1 | awk '/Real:/ {print $3}' | sed 's/M.*//') + elif [ "$distro" == "NetBSD" ]; then + phys_mem=$(awk '/MemTotal/ { print $2 }' /proc/meminfo) + totalmem=$((${phys_mem} / $human)) + if grep -q 'Cached' /proc/meminfo; then + cache=$(awk '/Cached/ {print $2}' /proc/meminfo) + usedmem=$((${cache} / $human)) + else + free_mem=$(awk '/MemFree/ { print $2 }' /proc/meminfo) + used_mem=$((${phys_mem} - ${free_mem})) + usedmem=$((${used_mem} / $human)) + fi + elif [ "$distro" == "Haiku" ]; then + totalmem=$(( $(sysinfo -mem | head -n1 | cut -d'/' -f3 | tr -d ' ' | tr -d ')') / $human / $human )) + usedmem=$(( $(sysinfo -mem | head -n1 | cut -d'/' -f2 | sed 's/max//; s/ //g') / $human / $human )) + else + mem_info=$(1 {print $1}') + fi + shell_type=${shell_type/-} + shell_type=${shell_type//*\/} + fi + fi + + case $shell_type in + bash) + shell_version_data=$( detectshell_ver "$shell_type" "^GNU.bash,.version" "4" ) + ;; + csh) + shell_version_data=$( detectshell_ver "$shell_type" "$shell_type" "3" ) + ;; + dash) + shell_version_data=$( detectshell_ver "$shell_type" "$shell_type" "3" ) + ;; + ksh) + shell_version_data=$( detectshell_ver "$shell_type" "version" "5" ) + ;; + tcsh) + shell_version_data=$( detectshell_ver "$shell_type" "^tcsh" "2" ) + ;; + zsh) + shell_version_data=$( detectshell_ver "$shell_type" "^zsh" "2" ) + ;; + esac + + if [[ -n $shell_version_data ]];then + shell_type="$shell_type $shell_version_data" + fi + + myShell=${shell_type} + verboseOut "Finding current shell...found as '$myShell'" +} +# Shell Detection - End + + +# Resolution Detection - Begin +detectres () { + if [[ ${distro} != "Mac OS X" && ${distro} != "Cygwin" && ${distro} != "Haiku" ]]; then + if [[ -n ${DISPLAY} ]]; then + if type -p xdpyinfo >/dev/null 2>&1; then + if [[ "$distro" =~ "BSD" ]]; then + xResolution=$(xdpyinfo | sed -n 's/.*dim.* \([0-9]*x[0-9]*\) .*/\1/pg' | tr '\n' ' ') + else + xResolution=$(xdpyinfo | sed -n 's/.*dim.* \([0-9]*x[0-9]*\) .*/\1/pg' | sed ':a;N;$!ba;s/\n/ /g') + fi + fi + fi + elif [[ ${distro} == "Mac OS X" ]]; then + xResolution=$(system_profiler SPDisplaysDataType | awk '/Resolution:/ {print $2"x"$4" "}') + if [[ "$(echo $xResolution | wc -l)" -ge 1 ]]; then + xResolution=$(echo $xResolution | tr "\\n" "," | sed 's/\(.*\),/\1/') + fi + elif [[ "${distro}" == "Cygwin" ]]; then + width=($(wmic desktopmonitor get screenwidth | grep -vE '[a-z]+' | tr '\r\n' ' ')) + height=($(wmic desktopmonitor get screenheight | grep -vE '[a-z]+' | tr '\r\n' ' ')) + + xResolution="" + len=${#width[@]} + + delim=" " + for ((i=0;i/dev/null 2>&1;then + xprop_root="$(xprop -root 2>/dev/null)" + if [[ -n ${xprop_root} ]]; then + DE=$(echo "${xprop_root}" | awk 'BEGIN { + de = "Not Present" + } + { + if ($1 ~ /^_DT_SAVE_MODE/) { + de = $NF + gsub(/\"/,"",de) + de = toupper(de) + exit + } + else if ($1 ~/^KDE_SESSION_VERSION/) { + de = "KDE"$NF + exit + } + else if ($1 ~ /^_MARCO/) { + de = "MATE" + exit + } + else if ($1 ~ /^_MUFFIN/) { + de = "Cinnamon" + exit + } + else if ($0 ~ /"xfce4"/) { + de = "XFCE4" + exit + } + else if ($0 ~ /"xfce5"/) { + de = "XFCE5" + exit + } + } END { + print de + }') + fi + fi + + if [[ ${DE} == "Not Present" ]]; then + # Lets use xdg-open code for Gnome/Enlightment/KDe/Lxde/Mate/XFCE detection + # http://bazaar.launchpad.net/~vcs-imports/xdg-utils/master/view/head:/scripts/xdg-utils-common.in#L251 + if [ -n "${XDG_CURRENT_DESKTOP}" ]; then + case "${XDG_CURRENT_DESKTOP}" in + ENLIGHTENMENT) + DE=Enlightenment; + ;; + GNOME) + DE=Gnome; + ;; + KDE) + DE=KDE; + ;; + LUMINA|Lumina) + DE=Lumina; + ;; + LXDE) + DE=LXDE; + ;; + MATE) + DE=Mate; + ;; + XFCE) + DE=XFCE + ;; + 'X-Cinnamon') + DE=Cinnamon + ;; + Unity) + DE=Unity + ;; + LXQt) + DE=LXQt + ;; + esac + fi + + if [ x"$DE" = x"" ]; then + # classic fallbacks + if [ x"$KDE_FULL_SESSION" != x"" ]; then DE=KDE; + elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=Gnome; + elif [ x"$MATE_DESKTOP_SESSION_ID" != x"" ]; then DE=MATE; + elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=Gnome; + elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=XFCE; + elif xprop -root 2> /dev/null | grep -i '^xfce_desktop_window' >/dev/null 2>&1; then DE=XFCE + elif echo $DESKTOP | grep -q '^Enlightenment'; then DE=Enlightenment; + fi + fi + + case "$DESKTOP_SESSION" in + gnome|gnome-fallback|gnome-fallback-compiz ) + DE=Gnome + ;; + deepin) + DE=Deepin + ;; + esac + + if [ x"$DE" = x"" ]; then + # fallback to checking $DESKTOP_SESSION + case "$DESKTOP_SESSION" in + gnome) + DE=Gnome; + ;; + LUMINA|Lumina) + DE=Lumina; + ;; + LXDE|Lubuntu) + DE=LXDE; + ;; + MATE) + DE=MATE; + ;; + xfce|xfce4|'Xfce Session') + DE=XFCE; + ;; + 'budgie-desktop') + DE=Budgie + ;; + Cinnamon) + DE=Cinnamon + ;; + esac + fi + + if [ x"$GDMSESSION" = x"" ]; then + # fallback to checking $GDMSESSION + case "$GDMSESSION" in + Lumina*|LUMINA*|lumina*) + DE=Lumina + ;; + MATE|mate) + DE=MATE + ;; + esac + fi + + if [[ ${DE} == "Gnome" ]]; then + if type -p xprop >/dev/null 2>&1; then + if xprop -name "unity-launcher" >/dev/null 2>&1; then + DE="Unity" + elif xprop -name "launcher" >/dev/null 2>&1 && + xprop -name "panel" >/dev/null 2>&1; then + + DE="Unity" + fi + fi + fi + + if [[ ${DE} == "KDE" ]]; then + if [[ -n ${KDE_SESSION_VERSION} ]]; then + if [[ ${KDE_SESSION_VERSION} == '5' ]]; then + DE="KDE5" + elif [[ ${KDE_SESSION_VERSION} == '4' ]]; then + DE="KDE4" + fi + elif [[ -n ${KDE_FULL_SESSION} ]]; then + if [[ ${KDE_FULL_SESSION} == 'true' ]]; then + DE="KDE" + DEver_data=$( kded --version 2>/dev/null ) + DEver=$( grep -si '^KDE:' <<< "$DEver_data" | awk '{print $2}' ) + fi + fi + fi + fi + + + if [[ ${DE} != "Not Present" ]]; then + if [[ ${DE} == "Cinnamon" ]]; then + if type -p >/dev/null 2>&1; then + DEver=$(cinnamon --version) + DE="${DE} ${DEver//* }" + fi + elif [[ ${DE} == "Gnome" || ${DE} == "GNOME" ]]; then + if type -p gnome-session >/dev/null 2>&1; then + DEver=$(gnome-session --version 2> /dev/null) + DE="${DE} ${DEver//* }" + elif type -p gnome-session-properties >/dev/null 2>&1; then + DEver=$(gnome-session-properties --version 2> /dev/null) + DE="${DE} ${DEver//* }" + fi + elif [[ ${DE} == "KDE4" || ${DE} == "KDE5" ]]; then + if type -p kded${DE#KDE} >/dev/null 2>&1; then + DEver=$(kded${DE#KDE} --version) + for l in $(echo "${DEver// /_}"); do + if [[ ${l//:*} == "KDE_Development_Platform" ]]; then + DEver=${l//*:_} + DE="KDE ${DEver//_*}" + fi; + done + fi + elif [[ ${DE} == "Lumina" ]]; then + if type -p Lumina-DE.real >/dev/null 2>&1; then + lumina="$(type -p Lumina-DE.real)" + elif type -p Lumina-DE >/dev/null 2>&1; then + lumina="$(type -p Lumina-DE)" + fi + if [[ x"$lumina" != x ]]; then + if grep -e '--version' "$lumina" >/dev/null; then + DEver=$("$lumina" --version 2>&1 | tr -d \") + DE="${DE} ${DEver}" + fi + fi + elif [[ ${DE} == "MATE" ]]; then + if type -p mate-session >/dev/null 2>&1; then + DEver=$(mate-session --version) + DE="${DE} ${DEver//* }" + fi + elif [[ ${DE} == "Unity" ]]; then + if type -p unity >/dev/null 2>&1; then + DEver=$(unity --version) + DE="${DE} ${DEver//* }" + fi + elif [[ ${DE} == "Deepin" ]]; then + if [[ -f /etc/deepin-version ]]; then + DEver="$(awk -F '=' '/Version/ {print $2}' /etc/deepin-version)" + DE="${DE} ${DEver//* }" + fi + fi + fi + + if [[ "${DE}" == "Not Present" ]]; then + if pgrep -U ${UID} lxsession >/dev/null 2>&1; then + DE="LXDE" + if type -p lxpanel >/dev/null 2>&1; then + DEver=$(lxpanel -v) + DE="${DE} $DEver" + fi + elif pgrep -U ${UID} lxqt-session >/dev/null 2>&1; then + DE="LXQt" + elif pgrep -U ${UID} razor-session >/dev/null 2>&1; then + DE="RazorQt" + elif pgrep -U ${UID} dtsession >/dev/null 2>&1; then + DE="CDE" + fi + fi + fi + elif [[ "${distro}" == "Mac OS X" ]]; then + if ps -U ${USER} | grep [F]inder >/dev/null 2>&1; then + DE="Aqua" + fi + elif [[ "${distro}" == "Cygwin" ]]; then + # https://msdn.microsoft.com/en-us/library/ms724832%28VS.85%29.aspx + winver=`wmic os get version | grep -o '^[0-9]'` + if [ "$winver" == "6" ] || [ "$winver" == "1" ]; then DE='Aero' + else DE='Luna'; fi + fi + verboseOut "Finding desktop environment...found as '$DE'" +} +### DE Detection - End + + +# WM Detection - Begin +detectwm () { + WM="Not Found" + if [[ ${distro} != "Mac OS X" && ${distro} != "Cygwin" ]]; then + if [[ -n ${DISPLAY} ]]; then + for each in "${wmnames[@]}"; do + PID="$(pgrep -U ${UID} "^$each$")" + if [ "$PID" ]; then + case $each in + '2bwm') WM="2bwm";; + '9wm') WM="9wm";; + 'awesome') WM="Awesome";; + 'beryl') WM="Beryl";; + 'bspwm') WM="bspwm";; + 'blackbox') WM="BlackBox";; + 'budgie-wm') WM="BudgieWM";; + 'chromeos-wm') WM="chromeos-wm";; + 'cinnamon') WM="Muffin";; + 'compiz') WM="Compiz";; + 'deepin-wm') WM="deepin-wm";; + 'dminiwm') WM="dminiwm";; + 'dwm') WM="dwm";; + 'dtwm') WM="dtwm";; + 'e16') WM="E16";; + 'emerald') WM="Emerald";; + 'enlightenment') WM="E17";; + 'fluxbox') WM="FluxBox";; + 'fvwm') WM="FVWM";; + 'herbstluftwm') WM="herbstluftwm";; + 'icewm') WM="IceWM";; + 'kwin') WM="KWin";; + 'metacity') WM="Metacity";; + 'monsterwm') WM="monsterwm";; + 'musca') WM="Musca";; + 'notion') WM="Notion";; + 'openbox') WM="OpenBox";; + 'pekwm') WM="PekWM";; + 'ratpoison') WM="Ratpoison";; + 'sawfish') WM="Sawfish";; + 'scrotwm') WM="ScrotWM";; + 'spectrwm') WM="SpectrWM";; + 'stumpwm') WM="StumpWM";; + 'subtle') WM="subtle";; + 'swm') WM="swm";; + 'wmaker') WM="WindowMaker";; + 'wmfs') WM="WMFS";; + 'wmii') WM="wmii";; + 'xfwm4') WM="Xfwm4";; + 'i3') WM="i3";; + 'xmonad.*') WM="XMonad";; + esac + fi + + if [[ ${WM} != "Not Found" ]]; then + break 1 + fi + done + + if [[ ${WM} == "Not Found" ]]; then + if type -p xprop >/dev/null 2>&1; then + WM=$(xprop -root _NET_SUPPORTING_WM_CHECK) + if [[ "$WM" =~ 'not found' ]]; then + WM="Not Found" + elif [[ "$WM" =~ 'Not found' ]]; then + WM="Not Found" + elif [[ "$WM" =~ '[Ii]nvalid window id format' ]]; then + WM="Not Found" + elif [[ "$WM" =~ "no such" ]]; then + WM="Not Found" + else + WM=${WM//* } + WM=$(xprop -id ${WM} 8s _NET_WM_NAME) + WM=$(echo $(WM=${WM//*= }; echo ${WM//\"})) + fi + fi + else + if [[ ${BASH_VERSINFO[0]} -ge 4 ]]; then + if [[ ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -gt 1 ]] || [[ ${BASH_VERSINFO[0]} -gt 4 ]]; then + WM=${WM,,} + else + WM="$(tr '[:upper:]' '[:lower:]' <<< ${WM})" + fi + else + WM="$(tr '[:upper:]' '[:lower:]' <<< ${WM})" + fi + case ${WM} in + '2bwm') WM="2bwm";; + 'awesome') WM="Awesome";; + 'beryl') WM="Beryl";; + 'blackbox') WM="BlackBox";; + 'budgiewm') WM="BudgieWM";; + 'cinnamon') WM="Cinnamon";; + 'chromeos-wm') WM="chromeos-wm";; + 'compiz') WM="Compiz";; + 'deepin-wm') WM="Deepin WM";; + 'dminiwm') WM="dminiwm";; + 'dwm') WM="dwm";; + 'e16') WM="E16";; + 'echinus') WM="echinus";; + 'emerald') WM="Emerald";; + 'enlightenment') WM="E17";; + 'fluxbox') WM="FluxBox";; + 'fvwm') WM="FVWM";; + 'herbstluftwm') WM="herbstluftwm";; + 'icewm') WM="IceWM";; + 'kwin') WM="KWin";; + 'metacity') WM="Metacity";; + 'monsterwm') WM="monsterwm";; + 'musca') WM="Musca";; + *'gala'*) WM="Gala";; + 'mutter'*) WM="Mutter";; + 'gnome shell'*) WM="Mutter";; + 'muffin') WM="Muffin";; + 'notion') WM="Notion";; + 'openbox') WM="OpenBox";; + 'pekwm') WM="PekWM";; + 'ratpoison') WM="Ratpoison";; + 'sawfish') WM="Sawfish";; + 'scrotwm') WM="ScrotWM";; + 'spectrwm') WM="SpectrWM";; + 'stumpwm') WM="StumpWM";; + 'subtle') WM="subtle";; + 'swm') WM="swm";; + 'wmaker') WM="WindowMaker";; + 'wmfs') WM="WMFS";; + 'wmii') WM="wmii";; + 'xfwm4') WM="Xfwm4";; + 'xmonad') WM="XMonad";; + 'i3') WM="i3";; + esac + fi + fi + elif [[ ${distro} == "Mac OS X" && "${WM}" == "Not Found" ]]; then + if ps -U ${USER} | grep Finder >/dev/null 2>&1; then + WM="Quartz Compositor" + fi + elif [[ "${distro}" == "Cygwin" ]]; then + bugn=$(tasklist | grep -o 'bugn' | tr -d '\r \n') + wind=$(tasklist | grep -o 'Windawesome' | tr -d '\r \n') + if [ "$bugn" = "bugn" ]; then WM="bug.n" + elif [ "$wind" = "Windawesome" ]; then WM="Windawesome" + else WM="DWM"; fi + fi + verboseOut "Finding window manager...found as '$WM'" +} +# WM Detection - End + + +# WM Theme Detection - BEGIN +detectwmtheme () { + Win_theme="Not Found" + case $WM in + '2bwm') Win_theme="Not Applicable";; + '9wm') Win_theme="Not Applicable";; + '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;; + 'BlackBox') if [ -f $HOME/.blackboxrc ]; then Win_theme="$(awk -F"/" '/styleFile/ {print $NF}' $HOME/.blackboxrc)"; fi;; + 'Beryl') Win_theme="Not Applicable";; + 'bspwm') Win_theme="Not Applicable";; + 'BudgieWM') + Win_theme="$(gsettings get org.gnome.desktop.wm.preferences theme)" + Win_theme="${Win_theme//\'}" + ;; + 'Cinnamon'|'Muffin') + de_theme="$(gsettings get org.cinnamon.theme name)" + de_theme=${de_theme//"'"} + win_theme="$(gsettings get org.cinnamon.desktop.wm.preferences theme)" + win_theme=${win_theme//"'"} + Win_theme="${de_theme} (${win_theme})" + ;; + 'Compiz'|'Mutter'*|'GNOME Shell'|'Gala') + if type -p gsettings >/dev/null 2>&1; then + Win_theme="$(gsettings get org.gnome.desktop.wm.preferences theme)" + Win_theme=${Win_theme//"'"} + elif type -p gconftool-2 >/dev/null 2>&1; then + Win_theme=$(gconftool-2 -g /apps/metacity/general/theme) + fi + ;; + 'Deepin WM') + if type -p gsettings >/dev/null 2>&1; then + Win_theme="$(gsettings get com.deepin.wrap.gnome.desktop.wm.preferences theme)" + Win_theme=${Win_theme//"'"} + fi + ;; + 'dminiwm') Win_theme="Not Applicable";; + 'dwm') Win_theme="Not Applicable";; + 'E16') Win_theme="$(awk -F"= " '/theme.name/ {print $2}' $HOME/.e16/e_config--0.0.cfg)";; + 'E17'|'Enlightenment') + if [ "$(which eet 2>/dev/null)" ]; then + econfig="$(eet -d $HOME/.e/e/config/standard/e.cfg config | awk '/value \"file\" string.*.edj/{ print $4 }')" + econfigend="${econfig##*/}" + Win_theme=${econfigend%.*} + fi + ;; + #E17 doesn't store cfg files in text format so for now get the profile as opposed to theme. atyoung + #TODO: Find a way to extract and read E17 .cfg files ( google seems to have nothing ). atyoung + 'E17') Win_theme=${E_CONF_PROFILE};; + 'echinus') Win_theme="Not Applicable";; + '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;; + 'Finder') Win_theme="Not Applicable";; + 'FluxBox'|'Fluxbox') if [ -f $HOME/.fluxbox/init ]; then Win_theme="$(awk -F"/" '/styleFile/ {print $NF}' $HOME/.fluxbox/init)"; fi;; + 'FVWM') Win_theme="Not Applicable";; + 'i3') Win_theme="Not Applicable";; + 'IceWM') if [ -f $HOME/.icewm/theme ]; then Win_theme="$(awk -F"[\",/]" '!/#/ {print $2}' $HOME/.icewm/theme)"; fi;; + 'KWin'*) + if [[ -z $KDE_CONFIG_DIR ]]; then + if type -p kde5-config >/dev/null 2>&1; then + KDE_CONFIG_DIR=$(kde5-config --localprefix) + elif type -p kde4-config >/dev/null 2>&1; then + KDE_CONFIG_DIR=$(kde4-config --localprefix) + elif type -p kde-config >/dev/null 2>&1; then + KDE_CONFIG_DIR=$(kde-config --localprefix) + fi + fi + + if [[ -n $KDE_CONFIG_DIR ]]; then + KDE_CONFIG_DIR=${KDE_CONFIG_DIR%/} + if [[ -f $KDE_CONFIG_DIR/share/config/kwinrc ]]; then + Win_theme=$(awk '/PluginLib=kwin3_/{gsub(/PluginLib=kwin3_/,"",$0); print $0; exit}' $KDE_CONFIG_DIR/share/config/kwinrc) + fi + if [[ -z $Win_theme ]]; then + if [[ -f $KDE_CONFIG_DIR/share/config/kdebugrc ]]; then + Win_theme=$(awk '/(decoration)/ {gsub(/\[/,"",$1); print $1; exit}' $KDE_CONFIG_DIR/share/config/kdebugrc) + if [[ -z $Win_theme ]]; then + Win_theme="Not Applicable" + fi + else + Win_theme="Not Applicable" + fi + fi + + if [[ $Win_theme != 'Not Applicable' ]]; then + if [[ ${BASH_VERSINFO[0]} -ge 4 ]]; then + if [[ ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -gt 1 ]] || [[ ${BASH_VERSINFO[0]} -gt 4 ]]; then + Win_theme=${Win_theme^} + else + Win_theme="$(tr '[:lower:]' '[:upper:]' <<< ${Win_theme:0:1})${Win_theme:1}" + fi + else + Win_theme="$(tr '[:lower:]' '[:upper:]' <<< ${Win_theme:0:1})${Win_theme:1}" + fi + fi + fi + ;; + 'Marco') + Win_theme="$(gsettings get org.mate.Marco.general theme)" + Win_theme=${Win_theme//"'"} + ;; + 'Metacity') if [ "`gconftool-2 -g /apps/metacity/general/theme`" ]; then Win_theme="$(gconftool-2 -g /apps/metacity/general/theme)"; fi ;; + 'monsterwm') Win_theme="Not Applicable";; + 'Musca') Win_theme="Not Applicable";; + 'Notion') Win_theme="Not Applicable";; + 'OpenBox'|'Openbox') + if [ -f ${XDG_CONFIG_HOME:-${HOME}/.config}/openbox/rc.xml ]; then + Win_theme="$(awk -F"[<,>]" '/]" '//dev/null 2>&1; then + if [ -f ~/Library/Preferences/com.googlecode.iterm2.plist ]; then + gtkFont=$(str1=$(defaults read com.googlecode.iTerm2|grep -m 1 "Normal Font");echo ${str1:29:${#str1}-29-2}) + fi + fi + else + case $DE in + 'KDE'*) # Desktop Environment found as "KDE" + if type - p kde4-config >/dev/null 2>&1; then + KDE_CONFIG_DIR=$(kde4-config --localprefix) + if [[ -d ${KDE_CONFIG_DIR} ]]; then + if [[ -f "${KDE_CONFIG_DIR}/share/config/kdeglobals" ]]; then + KDE_CONFIG_FILE="${KDE_CONFIG_DIR}/share/config/kdeglobals" + fi + fi + elif type -p kde5-config >/dev/null 2>&1; then + KDE_CONFIG_DIR=$(kde5-config --localprefix) + if [[ -d ${KDE_CONFIG_DIR} ]]; then + if [[ -f "${KDE_CONFIG_DIR}/share/config/kdeglobals" ]]; then + KDE_CONFIG_FILE="${KDE_CONFIG_DIR}/share/config/kdeglobals" + fi + fi + elif type -p kde-config >/dev/null 2>&1; then + KDE_CONFIG_DIR=$(kde-config --localprefix) + if [[ -d ${KDE_CONFIG_DIR} ]]; then + if [[ -f "${KDE_CONFIG_DIR}/share/config/kdeglobals" ]]; then + KDE_CONFIG_FILE="${KDE_CONFIG_DIR}/share/config/kdeglobals" + fi + fi + fi + + if [[ -n ${KDE_CONFIG_FILE} ]]; then + if grep -q "widgetStyle=" "${KDE_CONFIG_FILE}"; then + gtk2Theme=$(awk -F"=" '/widgetStyle=/ {print $2}' "${KDE_CONFIG_FILE}") + elif grep -q "colorScheme=" "${KDE_CONFIG_FILE}"; then + gtk2Theme=$(awk -F"=" '/colorScheme=/ {print $2}' "${KDE_CONFIG_FILE}") + fi + + if grep -q "Theme=" "${KDE_CONFIG_FILE}"; then + gtkIcons=$(awk -F"=" '/Theme=/ {print $2}' "${KDE_CONFIG_FILE}") + fi + + if grep -q "Font=" "${KDE_CONFIG_FILE}"; then + gtkFont=$(awk -F"=" '/font=/ {print $2}' "${KDE_CONFIG_FILE}") + fi + fi + + if [[ -f $HOME/.gtkrc-2.0 ]]; then + gtk2Theme=$(grep '^gtk-theme-name' $HOME/.gtkrc-2.0 | awk -F'=' '{print $2}') + gtk2Theme=${gtk2Theme//\"/} + gtkIcons=$(grep '^gtk-icon-theme-name' $HOME/.gtkrc-2.0 | awk -F'=' '{print $2}') + gtkIcons=${gtkIcons//\"/} + gtkFont=$(grep 'font_name' $HOME/.gtkrc-2.0 | awk -F'=' '{print $2}') + gtkFont=${gtkFont//\"/} + fi + + if [[ -f $HOME/.config/gtk-3.0/settings.ini ]]; then + gtk3Theme=$(grep '^gtk-theme-name=' $HOME/.config/gtk-3.0/settings.ini | awk -F'=' '{print $2}') + fi + ;; + 'Cinnamon'*) # Desktop Environment found as "Cinnamon" + if type -p gsettings >/dev/null 2>&1; then + gtk3Theme=$(gsettings get org.cinnamon.desktop.interface gtk-theme) + gtk3Theme=${gtk3Theme//"'"} + gtk2Theme=${gtk3Theme} + + gtkIcons=$(gsettings get org.cinnamon.desktop.interface icon-theme) + gtkIcons=${gtkIcons//"'"} + gtkFont=$(gsettings get org.cinnamon.desktop.interface font-name) + gtkFont=${gtkFont//"'"} + if [ "$background_detect" == "1" ]; then gtkBackground=$(gsettings get org.gnome.desktop.background picture-uri); fi + fi + ;; + 'GNOME'*|'Gnome'*|'Unity'*|'Budgie') # Desktop Environment found as "GNOME" + if type -p gsettings >/dev/null 2>&1; then + gtk3Theme=$(gsettings get org.gnome.desktop.interface gtk-theme) + gtk3Theme=${gtk3Theme//"'"} + gtk2Theme=${gtk3Theme} + gtkIcons=$(gsettings get org.gnome.desktop.interface icon-theme) + gtkIcons=${gtkIcons//"'"} + gtkFont=$(gsettings get org.gnome.desktop.interface font-name) + gtkFont=${gtkFont//"'"} + if [ "$background_detect" == "1" ]; then gtkBackground=$(gsettings get org.gnome.desktop.background picture-uri); fi + elif type -p gconftool-2 >/dev/null 2>&1; then + gtk2Theme=$(gconftool-2 -g /desktop/gnome/interface/gtk_theme) + gtkIcons=$(gconftool-2 -g /desktop/gnome/interface/icon_theme) + gtkFont=$(gconftool-2 -g /desktop/gnome/interface/font_name) + if [ "$background_detect" == "1" ]; then + gtkBackgroundFull=$(gconftool-2 -g /desktop/gnome/background/picture_filename) + gtkBackground=$(echo "$gtkBackgroundFull" | awk -F"/" '{print $NF}') + fi + fi + ;; + 'MATE'*) # MATE desktop environment + #if type -p gsettings >/dev/null 2&>1; then + gtk3Theme=$(gsettings get org.mate.interface gtk-theme) + # gtk3Theme=${gtk3Theme//"'"} + gtk2Theme=${gtk3Theme} + gtkIcons=$(gsettings get org.mate.interface icon-theme) + gtkIcons=${gtkIcons//"'"} + gtkFont=$(gsettings get org.mate.interface font-name) + gtkFont=${gtkFont//"'"} + #fi + ;; + 'XFCE'*) # Desktop Environment found as "XFCE" + if type -p xfconf-query >/dev/null 2>&1; then + gtk2Theme=$(xfconf-query -c xsettings -p /Net/ThemeName) + fi + + if type -p xfconf-query >/dev/null 2>&1; then + gtkIcons=$(xfconf-query -c xsettings -p /Net/IconThemeName) + fi + + if type -p xfconf-query >/dev/null 2>&1; then + gtkFont=$(xfconf-query -c xsettings -p /Gtk/FontName) + fi + ;; + 'LXDE'*) + if [ -f ${XDG_CONFIG_HOME:-${HOME}/.config}/lxde/config ]; then + lxdeconf="/lxde/config" + elif [ "$distro" == "Trisquel" ]; then + lxdeconf="" + elif [ "$distro" == "FreeBSD" ]; then + lxdeconf="" + else + lxdeconf="/lxsession/LXDE/desktop.conf" + fi + # TODO: Clean me. + if grep -q "sNet\/ThemeName" ${XDG_CONFIG_HOME:-${HOME}/.config}$lxdeconf 2>/dev/null; then + gtk2Theme=$(awk -F'=' '/sNet\/ThemeName/ {print $2}' ${XDG_CONFIG_HOME:-${HOME}/.config}$lxdeconf) + fi + + if grep -q IconThemeName ${XDG_CONFIG_HOME:-${HOME}/.config}$lxdeconf 2>/dev/null; then + gtkIcons=$(awk -F'=' '/sNet\/IconThemeName/ {print $2}' ${XDG_CONFIG_HOME:-${HOME}/.config}$lxdeconf) + fi + + if grep -q FontName ${XDG_CONFIG_HOME:-${HOME}/.config}$lxdeconf 2>/dev/null; then + gtkFont=$(awk -F'=' '/sGtk\/FontName/ {print $2}' ${XDG_CONFIG_HOME:-${HOME}/.config}$lxdeconf) + fi + ;; + + # /home/me/.config/rox.sourceforge.net/ROX-Session/Settings.xml + + *) # Lightweight or No DE Found + if [ -f "$HOME/.gtkrc-2.0" ]; then + if grep -q gtk-theme $HOME/.gtkrc-2.0; then + gtk2Theme=$(awk -F'"' '/^gtk-theme/ {print $2}' $HOME/.gtkrc-2.0) + fi + + if grep -q icon-theme $HOME/.gtkrc-2.0; then + gtkIcons=$(awk -F'"' '/^gtk-icon-theme/ {print $2}' $HOME/.gtkrc-2.0) + fi + + if grep -q font $HOME/.gtkrc-2.0; then + gtkFont=$(awk -F'"' '/^gtk-font-name/ {print $2}' $HOME/.gtkrc-2.0) + fi + fi + # $HOME/.gtkrc.mine theme detect only + if [ -f "$HOME/.gtkrc.mine" ]; then + if grep -q "^include" $HOME/.gtkrc.mine; then + gtk2Theme=$(grep '^include.*gtkrc' $HOME/.gtkrc.mine | awk -F "/" '{ print $5 }') + fi + if grep -q "^gtk-icon-theme-name" $HOME/.gtkrc.mine; then + gtkIcons=$(grep '^gtk-icon-theme-name' $HOME/.gtkrc.mine | awk -F '"' '{print $2}') + fi + fi + # /etc/gtk-2.0/gtkrc compatability + if [[ -f /etc/gtk-2.0/gtkrc && ! -f $HOME/.gtkrc-2.0 && ! -f $HOME/.gtkrc.mine ]]; then + if grep -q gtk-theme-name /etc/gtk-2.0/gtkrc; then + gtk2Theme=$(awk -F'"' '/^gtk-theme-name/ {print $2}' /etc/gtk-2.0/gtkrc) + fi + if grep -q gtk-fallback-theme-name /etc/gtk-2.0/gtkrc && ! [ "x$gtk2Theme" = "x" ]; then + gtk2Theme=$(awk -F'"' '/^gtk-fallback-theme-name/ {print $2}' /etc/gtk-2.0/gtkrc) + fi + + if grep -q icon-theme /etc/gtk-2.0/gtkrc; then + gtkIcons=$(awk -F'"' '/^icon-theme/ {print $2}' /etc/gtk-2.0/gtkrc) + fi + if grep -q gtk-fallback-icon-theme /etc/gtk-2.0/gtkrc && ! [ "x$gtkIcons" = "x" ]; then + gtkIcons=$(awk -F'"' '/^gtk-fallback-icon-theme/ {print $2}' /etc/gtk-2.0/gtkrc) + fi + + if grep -q font /etc/gtk-2.0/gtkrc; then + gtkFont=$(awk -F'"' '/^gtk-font-name/ {print $2}' /etc/gtk-2.0/gtkrc) + fi + fi + + # EXPERIMENTAL gtk3 Theme detection + if [ -f "$HOME/.config/gtk-3.0/settings.ini" ]; then + if grep -q gtk-theme-name $HOME/.config/gtk-3.0/settings.ini; then + gtk3Theme=$(awk -F'=' '/^gtk-theme-name/ {print $2}' $HOME/.config/gtk-3.0/settings.ini) + fi + fi + + # Proper gtk3 Theme detection + #if type -p gsettings >/dev/null 2>&1; then + # gtk3Theme=$(gsettings get org.gnome.desktop.interface gtk-theme 2>/dev/null) + # gtk3Theme=${gtk3Theme//"'"} + #fi + + # ROX-Filer icon detect only + if [ -a "${XDG_CONFIG_HOME:-${HOME}/.config}/rox.sourceforge.net/ROX-Filer/Options" ]; then + gtkIcons=$(awk -F'[>,<]' '/^icon_theme/ {print $3}' ${XDG_CONFIG_HOME:-${HOME}/.config}/rox.sourceforge.net/ROX-Filer/Options) + fi + + # E17 detection + if [ $E_ICON_THEME ]; then + gtkIcons=${E_ICON_THEME} + gtk2Theme="Not available." + gtkFont="Not available." + fi + + # Background Detection (feh, nitrogen) + if [ "$background_detect" == "1" ]; then + if [ -a $HOME/.fehbg ]; then + gtkBackgroundFull=$(awk -F"'" '/feh --bg/{print $2}' $HOME/.fehbg 2>/dev/null) + gtkBackground=$(echo "$gtkBackgroundFull" | awk -F"/" '{print $NF}') + elif [ -a ${XDG_CONFIG_HOME:-${HOME}/.config}/nitrogen/bg-saved.cfg ]; then + gtkBackground=$(awk -F"/" '/file=/ {print $NF}' ${XDG_CONFIG_HOME:-${HOME}/.config}/nitrogen/bg-saved.cfg) + fi + fi + + if [ "$distro" == "Cygwin" -a "$gtkFont" == "Not Found" ]; then + if [ -f "$HOME/.minttyrc" ]; then + gtkFont="$(grep '^Font=.*' "$HOME/.minttyrc" | grep -o '[0-9A-z ]*$')" + fi + fi + ;; + esac + fi + verboseOut "Finding GTK2 theme...found as '$gtk2Theme'" + verboseOut "Finding GTK3 theme...found as '$gtk3Theme'" + verboseOut "Finding icon theme...found as '$gtkIcons'" + verboseOut "Finding user font...found as '$gtkFont'" + [[ $gtkBackground ]] && verboseOut "Finding background...found as '$gtkBackground'" +} +# GTK Theme\Icon\Font Detection - END + +# Android-specific detections +detectdroid () { + distro_ver=$(getprop ro.build.version.release) + + hostname=$(getprop net.hostname) + + _device=$(getprop ro.product.device) + _model=$(getprop ro.product.model) + device="${_model} (${_device})" + + if [[ $(getprop ro.build.host) == "cyanogenmod" ]]; then + rom=$(getprop ro.cm.version) + else + rom=$(getprop ro.build.display.id) + fi + + baseband=$(getprop ro.baseband) + + cpu=$(grep '^Processor' /proc/cpuinfo) + cpu=$(echo "$cpu" | sed 's/Processor.*: //') +} + + +####################### +# End Detection Phase +####################### + +takeShot () { + if [[ -z $screenCommand ]]; then + if [[ "${upload}" == "1" ]]; then + shotfiles[1]=${shotfile} + if [ "$distro" == "Mac OS X" ]; then + displays="$(system_profiler SPDisplaysDataType | grep 'Resolution:' | wc -l | tr -d ' ')" + for (( i=2; i<=$displays; i++)) + do + shotfiles[$i]="$(echo ${shotfile} | sed "s/\(.*\)\./\1_${i}./")" + done + printf "Taking shot in 3.. "; sleep 1; printf "2.. "; sleep 1; printf "1.. "; sleep 1; printf "0.\n"; screencapture -x ${shotfiles[@]} &> /dev/null + else scrot -cd3 "${shotfile}"; fi + if [ -f "${shotfile}" ]; then + verboseOut "Screenshot saved at '${shotfiles[@]}'" + printf "${bold}==>${c0} Uploading your screenshot now..." + case "${uploadLoc}" in + 'teknik') + baseurl='https://u.teknik.io' + uploadurl='https://api.teknik.io/upload/post' + ret=$(curl -sf -F file="@${shotfiles[@]}" ${uploadurl}) + desturl="${ret##*url\":\"}" + desturl="${desturl%%\"*}" + desturl="${desturl//\\}" + ;; + 'mediacrush') + baseurl='https://mediacru.sh' + uploadurl='https://mediacru.sh/api/upload/file' + ret=$(curl -sf -F file="@${shotfiles[@]};type=image/png" ${uploadurl}) + filehash=$(echo "${ret}" | grep "hash" | cut -d '"' -f4) + desturl="${baseurl}/${filehash}" + ;; + 'imgur') + baseurl='http://imgur.com' + uploadurl='http://imgur.com/upload' + ret=$(curl -sf -F file="@${shotfiles[@]}" ${uploadurl}) + filehash="${ret##*hash\":\"}" + filehash="${filehash%%\"*}" + desturl="${baseurl}/${filehash}" + ;; + 'pomf') + baseurl='http://a.pomf.se' + uploadurl='http://pomf.se/upload.php' + ret=$(curl --silent -sf -F files[]="@${shotfiles[@]}" ${uploadurl}) + filehash="${ret##*url\":\"}" + filehash="${filehash%%\"*}" + desturl="${baseurl}/${filehash}" + ;; + 'hmp') + baseurl='http://i.hmp.me/m' + uploadurl='http://hmp.me/ap/?uf=1' + ret=$(curl -sf -F a="@${shotfiles[@]};type=image/png" ${uploadurl}) + desturl="${ret##*img_path\":\"}" + desturl="${desturl%%\"*}" + desturl="${desturl//\\}" + ;; + 'local-example') + baseurl="http://www.example.com" + serveraddr="www.example.com" + scptimeout="20" + serverdir="/path/to/directory" + scp -qo ConnectTimeout="${scptimeout}" "${shotfiles[@]}" "${serveraddr}:${serverdir}" + desturl="${baseurl}/${shotfile}" + ;; + esac + printf "your screenshot can be viewed at ${desturl}\n" + else + errorOut "ERROR: Problem saving screenshot to ${shotfiles[@]}" + fi + else + shotfiles[1]=${shotfile} + if [ "$distro" == "Mac OS X" ]; then + displays="$(system_profiler SPDisplaysDataType | grep 'Resolution:' | wc -l | tr -d ' ')" + for (( i=2; i<=$displays; i++)) + do + shotfiles[$i]="$(echo ${shotfile} | sed "s/\(.*\)\./\1_${i}./")" + done + printf "Taking shot in 3.. "; sleep 1; printf "2.. "; sleep 1; printf "1.. "; sleep 1; printf "0.\n"; screencapture -x ${shotfiles[@]} &> /dev/null + else scrot -cd3 "${shotfile}"; fi + if [ -f "${shotfile}" ]; then + verboseOut "Screenshot saved at '${shotfiles[@]}'" + else + errorOut "ERROR: Problem saving screenshot to ${shotfiles[@]}" + fi + fi + else + $screenCommand + fi +} + + + +asciiText () { +# Distro logos and ASCII outputs + if [[ "$asc_distro" ]]; then myascii="${asc_distro}" + elif [[ "$art" ]]; then myascii="custom" + elif [[ "$fake_distro" ]]; then myascii="${fake_distro}" + else myascii="${distro}"; fi + case ${myascii} in + "custom") source "$art" ;; + "Arch Linux - Old") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # White + c2=$(getColor 'light blue') # Light Blue + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=("$c1 __ %s" +"$c1 _=(SDGJT=_ %s" +"$c1 _GTDJHGGFCVS) %s" +"$c1 ,GTDJGGDTDFBGX0 %s" +"$c1 JDJDIJHRORVFSBSVL$c2-=+=,_ %s" +"$c1 IJFDUFHJNXIXCDXDSV,$c2 \"DEBL %s" +"$c1 [LKDSDJTDU=OUSCSBFLD.$c2 '?ZWX, %s" +"$c1 ,LMDSDSWH' \`DCBOSI$c2 DRDS], %s" +"$c1 SDDFDFH' !YEWD,$c2 )HDROD %s" +"$c1 !KMDOCG &GSU|$c2\_GFHRGO\' %s" +"$c1 HKLSGP'$c2 __$c1\TKM0$c2\GHRBV)' %s" +"$c1 JSNRVW'$c2 __+MNAEC$c1\IOI,$c2\BN' %s" +"$c1 HELK['$c2 __,=OFFXCBGHC$c1\FD) %s" +"$c1 ?KGHE $c2\_-#DASDFLSV='$c1 'EF %s" +"$c1 'EHTI !H %s" +"$c1 \`0F' '! %s" +" %s" +" %s") + ;; + + "Arch Linux") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'light cyan') # Light + c2=$(getColor 'cyan') # Dark + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="1" + fulloutput=("${c1} -\`" +"${c1} .o+\` %s" +"${c1} \`ooo/ %s" +"${c1} \`+oooo: %s" +"${c1} \`+oooooo: %s" +"${c1} -+oooooo+: %s" +"${c1} \`/:-:++oooo+: %s" +"${c1} \`/++++/+++++++: %s" +"${c1} \`/++++++++++++++: %s" +"${c1} \`/+++o"${c2}"oooooooo"${c1}"oooo/\` %s" +"${c2} "${c1}"./"${c2}"ooosssso++osssssso"${c1}"+\` %s" +"${c2} .oossssso-\`\`\`\`/ossssss+\` %s" +"${c2} -osssssso. :ssssssso. %s" +"${c2} :osssssss/ osssso+++. %s" +"${c2} /ossssssss/ +ssssooo/- %s" +"${c2} \`/ossssso+/:- -:/+osssso+- %s" +"${c2} \`+sso+:-\` \`.-/+oso: %s" +"${c2} \`++:. \`-/+/%s" +"${c2} .\` \`/%s") + ;; + + "Mint") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # White + c2=$(getColor 'light green') # Bold Green + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=(" %s" +"$c2 MMMMMMMMMMMMMMMMMMMMMMMMMmds+. %s" +"$c2 MMm----::-://////////////oymNMd+\` %s" +"$c2 MMd "$c1"/++ "$c2"-sNMd: %s" +"$c2 MMNso/\` "$c1"dMM \`.::-. .-::.\` "$c2".hMN: %s" +"$c2 ddddMMh "$c1"dMM :hNMNMNhNMNMNh: "$c2"\`NMm %s" +"$c2 NMm "$c1"dMM .NMN/-+MMM+-/NMN\` "$c2"dMM %s" +"$c2 NMm "$c1"dMM -MMm \`MMM dMM. "$c2"dMM %s" +"$c2 NMm "$c1"dMM -MMm \`MMM dMM. "$c2"dMM %s" +"$c2 NMm "$c1"dMM .mmd \`mmm yMM. "$c2"dMM %s" +"$c2 NMm "$c1"dMM\` ..\` ... ydm. "$c2"dMM %s" +"$c2 hMM- "$c1"+MMd/-------...-:sdds "$c2"dMM %s" +"$c2 -NMm- "$c1":hNMNNNmdddddddddy/\` "$c2"dMM %s" +"$c2 -dMNs-"$c1"\`\`-::::-------.\`\` "$c2"dMM %s" +"$c2 \`/dMNmy+/:-------------:/yMMM %s" +"$c2 ./ydNMMMMMMMMMMMMMMMMMMMMM %s" +"$c2 \.MMMMMMMMMMMMMMMMMMM %s" +" %s") + ;; + + + "LMDE") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # White + c2=$(getColor 'light green') # Bold Green + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=(" "${c1}"\`.-::---.. %s" +"${c2} .:++++ooooosssoo:. %s" +"${c2} .+o++::. \`.:oos+. %s" +"${c2} :oo:.\` -+oo"${c1}": %s" +"${c2} "${c1}"\`"${c2}"+o/\` ."${c1}"::::::"${c2}"-. .++-"${c1}"\` %s" +"${c2} "${c1}"\`"${c2}"/s/ .yyyyyyyyyyo: +o-"${c1}"\` %s" +"${c2} "${c1}"\`"${c2}"so .ss ohyo\` :s-"${c1}": %s" +"${c2} "${c1}"\`"${c2}"s/ .ss h m myy/ /s\`"${c1}"\` %s" +"${c2} \`s: \`oo s m Myy+-o:\` %s" +"${c2} \`oo :+sdoohyoydyso/. %s" +"${c2} :o. .:////////++: %s" +"${c2} \`/++ "${c1}"-:::::- %s" +"${c2} "${c1}"\`"${c2}"++- %s" +"${c2} "${c1}"\`"${c2}"/+- %s" +"${c2} "${c1}"."${c2}"+/. %s" +"${c2} "${c1}"."${c2}":+-. %s" +"${c2} \`--.\`\` %s" +" %s") + ;; + + "Ubuntu") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # White + c2=$(getColor 'light red') # Light Red + c3=$(getColor 'yellow') # Bold Yellow + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; c3="${my_lcolor}"; fi + startline="0" + fulloutput=("$c2 ./+o+- %s" +"$c1 yyyyy- $c2-yyyyyy+ %s" +"$c1 $c1://+//////$c2-yyyyyyo %s" +"$c3 .++ $c1.:/++++++/-$c2.+sss/\` %s" +"$c3 .:++o: $c1/++++++++/:--:/- %s" +"$c3 o:+o+:++.$c1\`..\`\`\`.-/oo+++++/ %s" +"$c3 .:+o:+o/.$c1 \`+sssoo+/ %s" +"$c1 .++/+:$c3+oo+o:\`$c1 /sssooo. %s" +"$c1 /+++//+:$c3\`oo+o$c1 /::--:. %s" +"$c1 \+/+o+++$c3\`o++o$c2 ++////. %s" +"$c1 .++.o+$c3++oo+:\`$c2 /dddhhh. %s" +"$c3 .+.o+oo:.$c2 \`oddhhhh+ %s" +"$c3 \+.++o+o\`$c2\`-\`\`\`\`.:ohdhhhhh+ %s" +"$c3 \`:o+++ $c2\`ohhhhhhhhyo++os: %s" +"$c3 .o:$c2\`.syhhhhhhh/$c3.oo++o\` %s" +"$c2 /osyyyyyyo$c3++ooo+++/ %s" +"$c2 \`\`\`\`\` $c3+oo+++o\: %s" +"$c3 \`oo++. %s") + ;; + + "Debian") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # White + c2=$(getColor 'light red') # Light Red + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=(" $c1 _,met\$\$\$\$\$gg. %s" +" $c1 ,g\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$P. %s" +" $c1 ,g\$\$P\"\" \"\"\"Y\$\$.\". %s" +" $c1 ,\$\$P' \`\$\$\$. %s" +" $c1',\$\$P ,ggs. \`\$\$b: %s" +" $c1\`d\$\$' ,\$P\"\' $c2.$c1 \$\$\$ %s" +" $c1 \$\$P d\$\' $c2,$c1 \$\$P %s" +" $c1 \$\$: \$\$. $c2-$c1 ,d\$\$' %s" +" $c1 \$\$\; Y\$b._ _,d\$P' %s" +" $c1 Y\$\$. $c2\`.$c1\`\"Y\$\$\$\$P\"' %s" +" $c1 \`\$\$b $c2\"-.__ %s" +" $c1 \`Y\$\$ %s" +" $c1 \`Y\$\$. %s" +" $c1 \`\$\$b. %s" +" $c1 \`Y\$\$b. %s" +" $c1 \`\"Y\$b._ %s" +" $c1 \`\"\"\"\" %s" +" %s") + ;; + + + "Raspbian") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'light green') # Light Green + c2=$(getColor 'light red') # Light Red + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=(" $c1 .',;:cc;,'. .,;::c:,,. %s" +" $c1,ooolcloooo: 'oooooccloo: %s" +" $c1.looooc;;:ol :oc;;:ooooo' %s" +" $c1;oooooo: ,ooooooc. %s" +" $c1.,:;'. .;:;'. %s" +" $c2.... ..'''''. .... %s" +" $c2.''. ..'''''. ..''. %s" +" $c2.. ..... ..... .. %s" +" $c2. .''''''' .''''''. . %s" +" $c2.'' .'''''''' .'''''''. ''. %s" +" $c2''' ''''''' .'''''' ''' %s" +" $c2.' ........... ... .'. %s" +" $c2.... ''''''''. .''. %s" +" $c2'''''. ''''''''. .''''' %s" +" $c2'''''. .'''''. .'''''. %s" +" $c2..''. . .''.. %s" +" $c2.''''''' %s" +" $c2...... %s") + ;; + + + "CrunchBang") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # White + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=(" %s" +"$c2 "$c1"███"$c2" "$c1"███"$c2" "$c1"███"$c2" %s" +"$c2 "$c1"███"$c2" "$c1"███"$c2" "$c1"███"$c2" %s" +"$c2 "$c1"███"$c2" "$c1"███"$c2" "$c1"███"$c2" %s" +"$c2 "$c1"███"$c2" "$c1"███"$c2" "$c1"███"$c2" %s" +"$c2 "$c1"████████████████████████████"$c2" "$c1"███"$c2" %s" +"$c2 "$c1"████████████████████████████"$c2" "$c1"███"$c2" %s" +"$c2 "$c1"███"$c2" "$c1"███"$c2" "$c1"███"$c2" %s" +"$c2 "$c1"███"$c2" "$c1"███"$c2" "$c1"███"$c2" %s" +"$c2 "$c1"███"$c2" "$c1"███"$c2" "$c1"███"$c2" %s" +"$c2 "$c1"███"$c2" "$c1"███"$c2" "$c1"███"$c2" %s" +"$c2 "$c1"████████████████████████████"$c2" "$c1"███"$c2" %s" +"$c2 "$c1"████████████████████████████"$c2" "$c1"███"$c2" %s" +"$c2 "$c1"███"$c2" "$c1"███"$c2" %s" +"$c2 "$c1"███"$c2" "$c1"███"$c2" %s" +"$c2 "$c1"███"$c2" "$c1"███"$c2" "$c1"███"$c2" %s" +"$c2 "$c1"███"$c2" "$c1"███"$c2" "$c1"███"$c2" %s" +"$c2 %s") + ;; + + "CRUX") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'light cyan') + c2=$(getColor 'yellow') + c3=$(getColor 'white') + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi + startline="1" + fulloutput=("" +"${c1} odddd %s" +"${c1} oddxkkkxxdoo %s" +"${c1} ddcoddxxxdoool %s" +"${c1} xdclodod olol %s" +"${c1} xoc xdd olol %s" +"${c1} xdc ${c2}k00${c1}Okdlol %s" +"${c1} xxd${c2}kOKKKOkd${c1}ldd %s" +"${c1} xdco${c2}xOkdlo${c1}dldd %s" +"${c1} ddc:cl${c2}lll${c1}oooodo %s" +"${c1} odxxdd${c3}xkO000kx${c1}ooxdo %s" +"${c1} oxdd${c3}x0NMMMMMMWW0od${c1}kkxo %s" +"${c1} oooxd${c3}0WMMMMMMMMMW0o${c1}dxkx %s" +"${c1} docldkXW${c3}MMMMMMMWWN${c1}Odolco %s" +"${c1} xx${c2}dx${c1}kxxOKN${c3}WMMWN${c1}0xdoxo::c %s" +"${c2} xOkkO${c1}0oo${c3}odOW${c2}WW${c1}XkdodOxc:l %s" +"${c2} dkkkxkkk${c3}OKX${c2}NNNX0Oxx${c1}xc:cd %s" +"${c2} odxxdx${c3}xllod${c2}ddooxx${c1}dc:ldo %s" +"${c2} lodd${c1}dolccc${c2}ccox${c1}xoloo" +"") + ;; + + "Chrome OS") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'green') # Green + c2=$(getColor 'light red') # Light Red + c3=$(getColor 'yellow') # Bold Yellow + c4=$(getColor 'light blue') # Light Blue + c5=$(getColor 'white') # White + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; c3="${my_lcolor}"; c4="${my_lcolor}"; c5="${my_lcolor}"; fi + startline="0" + fulloutput=("$c2 .,:loool:,. %s" +"$c2 .,coooooooooooooc,. %s" +"$c2 .,lllllllllllllllllllll,. %s" +"$c2 ;ccccccccccccccccccccccccc; %s" +"$c1 '${c2}ccccccccccccccccccccccccccccc. %s" +"$c1 ,oo${c2}c::::::::okO${c5}000${c3}0OOkkkkkkkkkkk: %s" +"$c1 .ooool${c2};;;;:x${c5}K0${c4}kxxxxxk${c5}0X${c3}K0000000000. %s" +"$c1 :oooool${c2};,;O${c5}K${c4}ddddddddddd${c5}KX${c3}000000000d %s" +"$c1 lllllool${c2};l${c5}N${c4}dllllllllllld${c5}N${c3}K000000000 %s" +"$c1 lllllllll${c2}o${c5}M${c4}dccccccccccco${c5}W${c3}K000000000 %s" +"$c1 ;cllllllllX${c5}X${c4}c:::::::::c${c5}0X${c3}000000000d %s" +"$c1 .ccccllllllO${c5}Nk${c4}c;,,,;cx${c5}KK${c3}0000000000. %s" +"$c1 .cccccclllllxOO${c5}OOO${c1}Okx${c3}O0000000000; %s" +"$c1 .:ccccccccllllllllo${c3}O0000000OOO, %s" +"$c1 ,:ccccccccclllcd${c3}0000OOOOOOl. %s" +"$c1 '::ccccccccc${c3}dOOOOOOOkx:. %s" +"$c1 ..,::cccc${c3}xOOOkkko;. %s" +"$c1 ..,:${c3}dOkxl:. %s") + + ;; + + "Gentoo") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # White + c2=$(getColor 'light purple') # Light Purple + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=("$c2 -/oyddmdhs+:. %s" +"$c2 -o"$c1"dNMMMMMMMMNNmhy+"$c2"-\` %s" +"$c2 -y"$c1"NMMMMMMMMMMMNNNmmdhy"$c2"+- %s" +"$c2 \`o"$c1"mMMMMMMMMMMMMNmdmmmmddhhy"$c2"/\` %s" +"$c2 om"$c1"MMMMMMMMMMMN"$c2"hhyyyo"$c1"hmdddhhhd"$c2"o\` %s" +"$c2.y"$c1"dMMMMMMMMMMd"$c2"hs++so/s"$c1"mdddhhhhdm"$c2"+\` %s" +"$c2 oy"$c1"hdmNMMMMMMMN"$c2"dyooy"$c1"dmddddhhhhyhN"$c2"d. %s" +"$c2 :o"$c1"yhhdNNMMMMMMMNNNmmdddhhhhhyym"$c2"Mh %s" +"$c2 .:"$c1"+sydNMMMMMNNNmmmdddhhhhhhmM"$c2"my %s" +"$c2 /m"$c1"MMMMMMNNNmmmdddhhhhhmMNh"$c2"s: %s" +"$c2 \`o"$c1"NMMMMMMMNNNmmmddddhhdmMNhs"$c2"+\` %s" +"$c2 \`s"$c1"NMMMMMMMMNNNmmmdddddmNMmhs"$c2"/. %s" +"$c2 /N"$c1"MMMMMMMMNNNNmmmdddmNMNdso"$c2":\` %s" +"$c2+M"$c1"MMMMMMNNNNNmmmmdmNMNdso"$c2"/- %s" +"$c2yM"$c1"MNNNNNNNmmmmmNNMmhs+/"$c2"-\` %s" +"$c2/h"$c1"MMNNNNNNNNMNdhs++/"$c2"-\` %s" +"$c2\`/"$c1"ohdmmddhys+++/:"$c2".\` %s" +"$c2 \`-//////:--. %s") + ;; + + + "Funtoo") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # White + c2=$(getColor 'light purple') # Light Purple + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=(" %s" +" %s" +" %s" +" %s" +"${c1} _______ ____ %s" +"${c1} /MMMMMMM/ /MMMM| _____ _____ %s" +"${c1} __/M${c2}.MMM.${c1}M/_____________|M${c2}.M${c1}MM|/MMMMM\/MMMMM\ %s" +"${c1}|MMMM${c2}MM'${c1}MMMMMMMMMMMMMMMMMMM${c2}MM${c1}MMMM${c2}.MMMM..MMMM.${c1}MM\ %s" +"${c1}|MM${c2}MMMMMMM${c1}/m${c2}MMMMMMMMMMMMMMMMMMMMMM${c1}MMMM${c2}MM${c1}MMMM${c2}MM${c1}MM| %s" +"${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" +"${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" +"${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" +"${c1} |MM${c2}MM${c1}MMM${c2}MM${c1}MMMMMM${c2}MM${c1}MM${c2}MM${c1}MM${c2}MMMMM'${c1}M| %s" +"${c1} |MM${c2}MM${c1}MMM${c2}MMMMMMMMMMMMMMMMM MM'${c1}M/ %s" +"${c1} |MMMMMMMMMMMMMMMMMMMMMMMMMMMM/ %s" +" %s" +" %s" +" %s") + ;; + + "Fedora") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # White + c2=$(getColor 'light blue') # Light Blue + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=("$c2 /:-------------:\ %s" +"$c2 :-------------------:: %s" +"$c2 :-----------"$c1"/shhOHbmp"$c2"---:\\ %s" +"$c2 /-----------"$c1"omMMMNNNMMD "$c2"---: %s" +"$c2 :-----------"$c1"sMMMMNMNMP"$c2". ---: %s" +"$c2 :-----------"$c1":MMMdP"$c2"------- ---\ %s" +"$c2 ,------------"$c1":MMMd"$c2"-------- ---: %s" +"$c2 :------------"$c1":MMMd"$c2"------- .---: %s" +"$c2 :---- "$c1"oNMMMMMMMMMNho"$c2" .----: %s" +"$c2 :-- ."$c1"+shhhMMMmhhy++"$c2" .------/ %s" +"$c2 :- -------"$c1":MMMd"$c2"--------------: %s" +"$c2 :- --------"$c1"/MMMd"$c2"-------------; %s" +"$c2 :- ------"$c1"/hMMMy"$c2"------------: %s" +"$c2 :--"$c1" :dMNdhhdNMMNo"$c2"------------; %s" +"$c2 :---"$c1":sdNMMMMNds:"$c2"------------: %s" +"$c2 :------"$c1":://:"$c2"-------------:: %s" +"$c2 :---------------------:// %s" +" %s") + ;; + + "Chapeau") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # White + c2=$(getColor 'light green') # Light Green + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=("$c2 .-/-. %s" +"$c2 ////////. %s" +"$c2 ////////"$c1"y+"$c2"//. %s" +"$c2 ////////"$c1"mMN"$c2"/////. %s" +"$c2 ////////"$c1"mMN+"$c2"////////. %s" +"$c2 ////////////////////////. %s" +"$c2 /////////+"$c1"shhddhyo"$c2"+////////. %s" +"$c2 ////////"$c1"ymMNmdhhdmNNdo"$c2"///////. %s" +"$c2 ///////+"$c1"mMms"$c2"////////"$c1"hNMh"$c2"///////. %s" +"$c2 ///////"$c1"NMm+"$c2"//////////"$c1"sMMh"$c2"/////// %s" +"$c2 //////"$c1"oMMNmmmmmmmmmmmmMMm"$c2"/////// %s" +"$c2 //////"$c1"+MMmssssssssssssss+"$c2"/////// %s" +"$c2 \`//////"$c1"yMMy"$c2"//////////////////// %s" +"$c2 \`//////"$c1"smMNhso++oydNm"$c2"//////// %s" +"$c2 \`///////"$c1"ohmNMMMNNdy+"$c2"/////// %s" +"$c2 \`//////////"$c1"++"$c2"////////// %s" +"$c2 \`////////////////. %s" +"$c2 -////////- %s" +" %s") + + ;; + + "Korora") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') + c2=$(getColor 'light blue') + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=("$c1 ____________ %s" +"$c1 _add55555555554"$c2": %s" +"$c1 _w?'"$c2"\`\`\`\`\`\`\`\`\`\`'"$c1")k"$c2": %s" +"$c1 _Z'"$c2"\`"$c1" ]k"$c2": %s" +"$c1 m("$c2"\`"$c1" )k"$c2": %s" +"$c1 _.ss"$c2"\`"$c1"m["$c2"\`"$c1", ]e"$c2": %s" +"$c1 .uY\"^\`"$c2"\`"$c1"Xc"$c2"\`"$c1"?Ss. d("$c2"\` %s" +"$c1 jF'"$c2"\`"$c1" \`@. "$c2"\`"$c1"Sc .jr"$c2"\` %s" +"$c1 jr"$c2"\`"$c1" \`?n_ "$c2"\`"$c1"$; _a2\""$c2"\` %s" +"$c1 .m"$c2":"$c1" \`~M"$c2"\`"$c1"1k"$c2"\`"$c1"5?!\`"$c2"\` %s" +"$c1 :#"$c2":"$c1" "$c2"\`"$c1")e"$c2"\`\`\` %s" +"$c1 :m"$c2":"$c1" ,#'"$c2"\` %s" +"$c1 :#"$c2":"$c1" .s2'"$c2"\` %s" +"$c1 :m,________.aa7^"$c2"\` %s" +"$c1 :#baaaaaaas!J'"$c2"\` %s" +"$c2 \`\`\`\`\`\`\`\`\`\`\` %s") + ;; + + "gNewSense") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'light blue') # Light Blue + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi + startline="0" + fulloutput=("$c1 ..,,,,.. %s" +"$c1 .oocchhhhhhhhhhccoo. %s" +"$c1 .ochhlllllllc hhhhhh ollllllhhco. %s" +"$c1 ochlllllllllll hhhllllllhhh lllllllllllhco %s" +"$c1 .cllllllllllllll hlllllo +hllh llllllllllllllc. %s" +"$c1 ollllllllllhco\'\' hlllllo +hllh \`\`ochllllllllllo %s" +"$c1 hllllllllc\' hllllllllllllh \`cllllllllh %s" +"$c1 ollllllh +llllllllllll+ hllllllo %s" +"$c1 \`cllllh. ohllllllho .hllllc\' %s" +"$c1 ochllc. ++++ .cllhco %s" +"$c1 \`+occooo+. .+ooocco+\' %s" +"$c1 \`+oo++++ ++++oo+\' %s" +"$c1 %s") + ;; + + "BLAG") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'light purple') + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi + startline="0" + fulloutput=("$c1 d %s" +"$c1 ,MK: %s" +"$c1 xMMMX: %s" +"$c1 .NMMMMMX; %s" +"$c1 lMMMMMMMM0clodkO0KXWW: %s" +"$c1 KMMMMMMMMMMMMMMMMMMX' %s" +"$c1 .;d0NMMMMMMMMMMMMMMMMMMK. %s" +"$c1 .;dONMMMMMMMMMMMMMMMMMMMMMMx %s" +"$c1 'dKMMMMMMMMMMMMMMMMMMMMMMMMl %s" +"$c1 .:xKWMMMMMMMMMMMMMMMMMMM0. %s" +"$c1 .:xNMMMMMMMMMMMMMMMMMK. %s" +"$c1 lMMMMMMMMMMMMMMMMMMK. %s" +"$c1 ,MMMMMMMMWkOXWMMMMMM0 %s" +"$c1 .NMMMMMNd. \`':ldko %s" +"$c1 OMMMK: %s" +"$c1 oWk, %s" +"$c1 ;: %s") + ;; + + "FreeBSD") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # white + c2=$(getColor 'light red') # Light Red + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=(" %s" # user@host +" "$c1"\`\`\` "$c2"\` %s" # OS +" "$c1"\` \`.....---..."$c2"....--.\`\`\` -/ %s" # Kernel +" "$c1"+o .--\` "$c2"/y:\` +. %s" # Uptime +" "$c1" yo\`:. "$c2":o \`+- %s" # Packages +" "$c1"y/ "$c2"-/\` -o/ %s" # Shell +" "$c1".- "$c2"::/sy+:. %s" # Resolution +" "$c1"/ "$c2"\`-- / %s" # DE +" "$c1"\`: "$c2":\` %s" # WM +" "$c1"\`: "$c2":\` %s" # WM Theme +" "$c1"/ "$c2"/ %s" # GTK2 Theme +" "$c1".- "$c2"-. %s" # GTK3 Theme +" "$c1"-- "$c2"-. %s" # Icon Theme +" "$c1"\`:\` "$c2"\`:\` %s" # Font +" "$c2".-- \`--. %s" # Disk +" "$c2" .---.....----. %s" # CPU +" %s" # GPU +" %s" # RAM +) + ;; + + "FreeBSD - Old") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # white + c2=$(getColor 'light red') # Light Red + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=("$c2 , , %s" # user@host +"$c2 /( )\` %s" # OS +"$c2 \ \___ / | %s" # Kernel +"$c2 /- "$c1"_$c2 \`-/ ' %s" # Uptime +"$c2 ($c1/\/ \ $c2\ /\\ %s" # Packages +"$c1 / / |$c2 \` \\ %s" # Shell +"$c1 O O )$c2 / | %s" # Resolution +"$c1 \`-^--'\`$c2< ' %s" # DE +"$c2 (_.) _ ) / %s" # WM +"$c2 \`.___/\` / %s" # WM Theme +"$c2 \`-----' / %s" # GTK2 Theme +"$c1 <----. "$c2"__/ __ \\ %s" # GTK3 Theme +"$c1 <----|===="$c2"O}}}$c1==$c2} \} \/$c1==== %s" # Icon Theme +"$c1 <----' $c2\`--' \`.__,' \\ %s" # Font +"$c2 | | %s" # Disk +"$c2 \ / /\\ %s" # CPU +"$c2 ______( (_ / \______/ %s" # GPU +"$c2 ,' ,-----' | %s" # RAM +"$c2 \`--{__________)" +"") + ;; + + "OpenBSD") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'yellow') # Light Yellow + c2=$(getColor 'brown') # Bold Yellow + c3=$(getColor 'light cyan') # Light Cyan + c4=$(getColor 'light red') # Light Red + c5=$(getColor 'dark grey') + fi + if [ -n "${my_lcolor}" ]; then c1="$my_lcolor"; c2="${my_color}"; fi + startline="3" + fulloutput=( +" "$c3" _ " +" "$c3"(_) " +""$c1" | . " +""$c1" . |L /| . "$c3" _ %s" +""$c1" _ . |\ _| \--+._/| . "$c3"(_) %s" +""$c1" / ||\| Y J ) / |/| ./ %s" +""$c1" J |)'( | \` F\`.'/ "$c3" _ %s" +""$c1" -<| F __ .-< "$c3"(_) %s" +""$c1" | / .-'"$c3". "$c1"\`. /"$c3"-. "$c1"L___ %s" +""$c1" J \ < "$c3"\ "$c1" | | "$c5"O"$c3"\\\\"$c1"|.-' "$c3" _ %s" +""$c1" _J \ .- \\\\"$c3"/ "$c5"O "$c3"| "$c1"| \ |"$c1"F "$c3"(_) %s" +""$c1" '-F -<_. \ .-' \`-' L__ %s" +""$c1"__J _ _. >-' "$c2")"$c4"._. "$c1"|-' %s " +""$c1" \`-|.' /_. "$c4"\_| "$c1" F %s " +""$c1" /.- . _.< %s" +""$c1" /' /.' .' \`\ %s" +""$c1" /L /' |/ _.-'-\ %s " +""$c1" /'J ___.---'\| %s" +""$c1" |\ .--' V | \`. \` %s " +""$c1" |/\`. \`-. \`._) %s" +""$c1" / .-.\ %s" +""$c1" \ ( \`\ " +""$c1" \`.\ " +) + ;; + + "DragonFlyBSD") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'light red') # Red + c2=$(getColor 'white') # White + c3=$(getColor 'yellow') # + c4=$(getColor 'light red') + fi + startline="0" + fulloutput=(" "$c1" | %s" +" "$c1" .-. %s" +" "$c3" ()"$c1"I"$c3"() %s" +" "$c1" \"==.__:-:__.==\" %s" +" "$c1"\"==.__/~|~\__.==\" %s" +" "$c1"\"==._( Y )_.==\" %s" +" "$c2".-'~~\"\"~=--...,__"$c1"\/|\/"$c2"__,...--=~\"\"~~'-. %s" +" "$c2"( ..="$c1"\\\\="$c1"/"$c2"=.. )%s" +" "$c2"\`'-. ,.-\"\`;"$c1"/=\\\\"$c2" ;\"-.,_ .-'\`%s" +" "$c2" \`~\"-=-~\` .-~\` "$c1"|=|"$c2" \`~-. \`~-=-\"~\` %s" +" "$c2" .-~\` /"$c1"|=|"$c2"\ \`~-. %s" +" "$c2" .~\` / "$c1"|=|"$c2" \ \`~. %s" +" "$c2" .-~\` .' "$c1"|=|"$c2" \\\\\`. \`~-. %s" +" "$c2" (\` _,.-=\"\` "$c1" |=|"$c2" \`\"=-.,_ \`) %s" +" "$c2" \`~\"~\"\` "$c1" |=|"$c2" \`\"~\"~\` %s" +" "$c1" /=\ %s" +" "$c1" \=/ %s" +" "$c1" ^ %s" +) + ;; + + "NetBSD") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'orange') # Orange + c2=$(getColor 'white') # White + fi + startline="0" + fulloutput=( +" "$c1"__,gnnnOCCCCCOObaau,_ %s" +" "$c2"_._ "$c1"__,gnnCCCCCCCCOPF\"'' %s" +" "$c2"(N\\\\\\\\"$c1"XCbngg,._____.,gnnndCCCCCCCCCCCCF\"___,,,,___ %s" +" "$c2"\\\\N\\\\\\\\"$c1"XCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCOOOOPYvv. %s" +" "$c2"\\\\N\\\\\\\\"$c1"XCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCPF\"'' %s" +" "$c2"\\\\N\\\\\\\\"$c1"XCCCCCCCCCCCCCCCCCCCCCCCCCOF\"' %s" +" "$c2"\\\\N\\\\\\\\"$c1"XCCCCCCCCCCCCCCCCCCCCOF\"' %s" +" "$c2"\\\\N\\\\\\\\"$c1"XCCCCCCCCCCCCCCCPF\"' %s" +" "$c2"\\\\N\\\\\\\\"$c1"\"PCOCCCOCCFP\"\" %s" +" "$c2"\\\\N\ %s" +" "$c2"\\\\N\ %s" +" "$c2"\\\\N\ %s" +" "$c2"\\\\NN\ %s" +" "$c2"\\\\NN\ %s" +" "$c2"\\\\NNA. %s" +" "$c2"\\\\NNA, %s" +" "$c2"\\\\NNN, %s" +" "$c2"\\\\NNN\ %s" +" "$c2"\\\\NNN\ " +" "$c2"\\\\NNNA") + ;; + + "Mandriva"|"Mandrake") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'light blue') # Light Blue + c2=$(getColor 'yellow') # Bold Yellow + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=(" %s" +"$c2 \`\` %s" +"$c2 \`-. %s" +"$c1 \` $c2.--- %s" +"$c1 -/ $c2-::--\` %s" +"$c1 \`++ $c2\`----...\`\`\`-:::::. %s" +"$c1 \`os. $c2.::::::::::::::-\`\`\` \` \` %s" +"$c1 +s+ $c2.::::::::::::::::---...--\` %s" +"$c1 -ss: $c2\`-::::::::::::::::-.\`\`.\`\` %s" +"$c1 /ss- $c2.::::::::::::-.\`\` \` %s" +"$c1 +ss: $c2.::::::::::::- %s" +"$c1 /sso $c2.::::::-::::::- %s" +"$c1 .sss/ $c2-:::-.\` .::::: %s" +"$c1 /sss+. $c2..\`$c1 \`--\` $c2.::: %s" +"$c1 -ossso+/:://+/-\` $c2.:\` %s" +"$c1 -/+ooo+/-. $c2\` %s" +" %s" +" %s") + ;; + + "openSUSE") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'light green') # Bold Green + c2=$c0$bold + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=("$c2 .;ldkO0000Okdl;. %s" +"$c2 .;d00xl:^''''''^:ok00d;. %s" +"$c2 .d00l' 'o00d. %s" +"$c2 .d0Kd'"$c1" Okxol:;,. "$c2":O0d. %s" +"$c2 .OK"$c1"KKK0kOKKKKKKKKKKOxo:, "$c2"lKO. %s" +"$c2 ,0K"$c1"KKKKKKKKKKKKKKK0P^"$c2",,,"$c1"^dx:"$c2" ;00, %s" +"$c2 .OK"$c1"KKKKKKKKKKKKKKKk'"$c2".oOPPb."$c1"'0k."$c2" cKO. %s" +"$c2 :KK"$c1"KKKKKKKKKKKKKKK: "$c2"kKx..dd "$c1"lKd"$c2" 'OK: %s" +"$c2 dKK"$c1"KKKKKKKKKOx0KKKd "$c2"^0KKKO' "$c1"kKKc"$c2" dKd %s" +"$c2 dKK"$c1"KKKKKKKKKK;.;oOKx,.."$c2"^"$c1"..;kKKK0."$c2" dKd %s" +"$c2 :KK"$c1"KKKKKKKKKK0o;...^cdxxOK0O/^^' "$c2".0K: %s" +"$c2 kKK"$c1"KKKKKKKKKKKKK0x;,,......,;od "$c2"lKk %s" +"$c2 '0K"$c1"KKKKKKKKKKKKKKKKKKKK00KKOo^ "$c2"c00' %s" +"$c2 'kK"$c1"KKOxddxkOO00000Okxoc;'' "$c2".dKk' %s" +"$c2 l0Ko. .c00l' %s" +"$c2 'l0Kk:. .;xK0l' %s" +"$c2 'lkK0xl:;,,,,;:ldO0kl' %s" +"$c2 '^:ldxkkkkxdl:^' %s") + ;; + + "Slackware") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'light blue') # Light Blue + c2=$(getColor 'white') # Bold White + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="1" + fulloutput=("$c1 :::::::" +"$c1 ::::::::::::::::::: %s" +"$c1 ::::::::::::::::::::::::: %s" +"$c1 ::::::::"${c2}"cllcccccllllllll"${c1}":::::: %s" +"$c1 :::::::::"${c2}"lc dc"${c1}"::::::: %s" +"$c1 ::::::::"${c2}"cl clllccllll oc"${c1}"::::::::: %s" +"$c1 :::::::::"${c2}"o lc"${c1}"::::::::"${c2}"co oc"${c1}":::::::::: %s" +"$c1 ::::::::::"${c2}"o cccclc"${c1}":::::"${c2}"clcc"${c1}":::::::::::: %s" +"$c1 :::::::::::"${c2}"lc cclccclc"${c1}"::::::::::::: %s" +"$c1 ::::::::::::::"${c2}"lcclcc lc"${c1}":::::::::::: %s" +"$c1 ::::::::::"${c2}"cclcc"${c1}":::::"${c2}"lccclc oc"${c1}"::::::::::: %s" +"$c1 ::::::::::"${c2}"o l"${c1}"::::::::::"${c2}"l lc"${c1}"::::::::::: %s" +"$c1 :::::"${c2}"cll"${c1}":"${c2}"o clcllcccll o"${c1}"::::::::::: %s" +"$c1 :::::"${c2}"occ"${c1}":"${c2}"o clc"${c1}"::::::::::: %s" +"$c1 ::::"${c2}"ocl"${c1}":"${c2}"ccslclccclclccclclc"${c1}"::::::::::::: %s" +"$c1 :::"${c2}"oclcccccccccccccllllllllllllll"${c1}"::::: %s" +"$c1 ::"${c2}"lcc1lcccccccccccccccccccccccco"${c1}":::: %s" +"$c1 :::::::::::::::::::::::::::::::: %s" +"$c1 :::::::::::::::::::::::::::: %s" +"$c1 ::::::::::::::::::::::" +"$c1 ::::::::::::") + ;; + + "unRAID") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'green') # Green + c2=$(getColor 'light green') # Light Green + c3=$(getColor 'white') # White + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="1" + fulloutput=("$c1 :++====+===:. " +"$c1 ++$c3.,...=+=.~$c1=====~. %s" +"$c1 =+.$c3++$c2++$c3.$c2=++==$c3=.$c1======= %s" +"$c1 +,$c3++$c2+,++$c3.$c2+++===$c3..$c1======== %s" +"$c1 ,+$c3..$c2+++~++$c3~$c2++====$c3...$c1========= %s" +"$c1 +$c3...$c2+++++++++:=+$c3.$c2=$c3==$c1~========~ %s" +"$c1 +$c3:$c2++$c3.$c2+++++++=~==$c3.$c2===$c3=.$c1========~~ %s" +"$c1 +$c3.,$c2+++$c3.$c2++++=++=$c3+$c2==.==$c3=.$c1=======~~~~ %s" +"$c1 ,,$c3++$c2++++$c3.$c2+=+:==$c3:$c2======$c3=,$c1======~~~~~~ %s" +"$c1 +$c3+$c2+++++++$c3.$c2++~+=~======$c3=.$c1~=====~~~~~~~ %s" +"$c1 =$c3=+$c2:+=+++++=+=~+=======$c3..$c1=====~~~~~~~~ %s" +"$c1 +$c3......:+++~..=========$c3=,$c1=====~~~~~~~~ %s" +"$c1 =$c3.+$c2+++,=++=+=+========$c3==$c1======~~~~~~~~ %s" +"$c1 ~$c3=+$c2:+++~+=++++=$c3.$c2======$c3=.$c1=====~~~~~~~~~ %s" +"$c1 =$c3++$c2+++++$c3.$c2++++==+$c3,$c2=~==$c3=,$c1======~~~~~~~~ %s" +"$c1 +$c3=+$c2+:++$c3.$c2+++++:===$c3.$c2=,=$c3=$c1~=====~~~~~~~~~ %s" +"$c1 +.$c3++$c2++$c3,$c2++++=~+====$c3.$c2~$c3:.$c1======~~~~~~~~ %s" +"$c1 +~$c3++$c2,$c3.$c2+++++$c3,$c2~=====$c3...$c1======~~~~~~~ %s" +"$c1 +$c3..$c2.+$c3:$c2++++$c3.$c2==~===$c3..$c1=======~~~~~~ %s" +"$c1 ~+.$c3++$c2+++++$c3.$c2===~$c3=.$c1========~~~~~ %s" +"$c1 ++.$c3++$c2+++$c3..$c2===$c3::$c1=========~~~~ %s" +"$c1 ++$c3.,~.....$c1===========~~~ %s" +"$c1 ++++===============:") + ;; + + "Red Hat Enterprise Linux") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # White + c2=$(getColor 'light red') # Light Red + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=(" %s" +"$c2 \`.-..........\` %s" +"$c2 \`////////::.\`-/. %s" +"$c2 -: ....-////////. %s" +"$c2 //:-::///////////\` %s" +"$c2 \`--::: \`-://////////////: %s" +"$c2 //////- \`\`.-:///////// .\` %s" +"$c2 \`://////:-.\` :///////::///:\` %s" +"$c2 .-/////////:---/////////////: %s" +"$c2 .-://////////////////////. %s" +"$c1 yMN+\`.-$c2::///////////////-\` %s" +"$c1 .-\`:NMMNMs\` \`..-------..\` %s" +"$c1 MN+/mMMMMMhoooyysshsss %s" +"$c1 MMM MMMMMMMMMMMMMMyyddMMM+ %s" +"$c1 MMMM MMMMMMMMMMMMMNdyNMMh\` hyhMMM %s" +"$c1 MMMMMMMMMMMMMMMMyoNNNMMM+. MMMMMMMM %s" +"$c1 MMNMMMNNMMMMMNM+ mhsMNyyyyMNMMMMsMM %s" +" %s") + ;; + + "Frugalware") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # White + c2=$(getColor 'light blue') # Light Blue + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="3" + fulloutput=("${c2} \`++/::-.\`" +"${c2} /o+++++++++/::-.\`" +"${c2} \`o+++++++++++++++o++/::-.\`" +"${c2} /+++++++++++++++++++++++oo++/:-.\`\` %s" +"${c2} .o+ooooooooooooooooooosssssssso++oo++/:-\` %s" +"${c2} ++osoooooooooooosssssssssssssyyo+++++++o: %s" +"${c2} -o+ssoooooooooooosssssssssssssyyo+++++++s\` %s" +"${c2} o++ssoooooo++++++++++++++sssyyyyo++++++o: %s" +"${c2} :o++ssoooooo"${c1}"/-------------"${c2}"+syyyyyo+++++oo %s" +"${c2} \`o+++ssoooooo"${c1}"/-----"${c2}"+++++ooosyyyyyyo++++os: %s" +"${c2} /o+++ssoooooo"${c1}"/-----"${c2}"ooooooosyyyyyyyo+oooss %s" +"${c2} .o++++ssooooos"${c1}"/------------"${c2}"syyyyyyhsosssy- %s" +"${c2} ++++++ssooooss"${c1}"/-----"${c2}"+++++ooyyhhhhhdssssso %s" +"${c2} -s+++++syssssss"${c1}"/-----"${c2}"yyhhhhhhhhhhhddssssy. %s" +"${c2} sooooooyhyyyyyh"${c1}"/-----"${c2}"hhhhhhhhhhhddddyssy+ %s" +"${c2} :yooooooyhyyyhhhyyyyyyhhhhhhhhhhdddddyssy\` %s" +"${c2} yoooooooyhyyhhhhhhhhhhhhhhhhhhhddddddysy/ %s" +"${c2}-ysooooooydhhhhhhhhhhhddddddddddddddddssy %s" +"${c2} .-:/+osssyyyysyyyyyyyyyyyyyyyyyyyyyyssy: %s" +"${c2} \`\`.-/+oosysssssssssssssssssssssss %s" +"${c2} \`\`.:/+osyysssssssssssssh. %s" +"${c2} \`-:/+osyyssssyo" +"${c2} .-:+++\`") + ;; + + + "Peppermint") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # White + c2=$(getColor 'light red') # Light Red + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=("${c2} 8ZZZZZZ"${c1}"MMMMM %s" +"${c2} .ZZZZZZZZZ"${c1}"MMMMMMM. %s" +"${c1} MM"${c2}"ZZZZZZZZZ"${c1}"MMMMMMM"${c2}"ZZZZ %s" +"${c1} MMMMM"${c2}"ZZZZZZZZ"${c1}"MMMMM"${c2}"ZZZZZZZM %s" +"${c1} MMMMMMM"${c2}"ZZZZZZZ"${c1}"MMMM"${c2}"ZZZZZZZZZ. %s" +"${c1} MMMMMMMMM"${c2}"ZZZZZZ"${c1}"MMM"${c2}"ZZZZZZZZZZZI %s" +"${c1} MMMMMMMMMMM"${c2}"ZZZZZZ"${c1}"MM"${c2}"ZZZZZZZZZZ"${c1}"MMM %s" +"${c2} .ZZZ"${c1}"MMMMMMMMMM"${c2}"IZZ"${c1}"MM"${c2}"ZZZZZ"${c1}"MMMMMMMMM %s" +"${c2} ZZZZZZZ"${c1}"MMMMMMMM"${c2}"ZZ"${c1}"M"${c2}"ZZZZ"${c1}"MMMMMMMMMMM %s" +"${c2} ZZZZZZZZZZZZZZZZ"${c1}"M"${c2}"Z"${c1}"MMMMMMMMMMMMMMM %s" +"${c2} .ZZZZZZZZZZZZZ"${c1}"MMM"${c2}"Z"${c1}"M"${c2}"ZZZZZZZZZZ"${c1}"MMMM %s" +"${c2} .ZZZZZZZZZZZ"${c1}"MMM"${c2}"7ZZ"${c1}"MM"${c2}"ZZZZZZZZZZ7"${c1}"M %s" +"${c2} ZZZZZZZZZ"${c1}"MMMM"${c2}"ZZZZ"${c1}"MMMM"${c2}"ZZZZZZZ77 %s" +"${c1} MMMMMMMMMMMM"${c2}"ZZZZZ"${c1}"MMMM"${c2}"ZZZZZ77 %s" +"${c1} MMMMMMMMMM"${c2}"7ZZZZZZ"${c1}"MMMMM"${c2}"ZZ77 %s" +"${c1} .MMMMMMM"${c2}"ZZZZZZZZ"${c1}"MMMMM"${c2}"Z7Z %s" +"${c1} MMMMM"${c2}"ZZZZZZZZZ"${c1}"MMMMMMM %s" +"${c2} NZZZZZZZZZZZ"${c1}"MMMMM %s" +"${c2} ZZZZZZZZZ"${c1}"MM") + ;; + + "Solus") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # White + c2=$(getColor 'dark grey') # Light Gray + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=("${c1} e e %s" +"${c1} eee ee %s" +"${c1} eeee eee %s" +"${c2} wwwwwwwww"${c1}"eeeeee %s" +"${c2} wwwwwwwwwwwwwww"${c1}"eee %s" +"${c2} wwwwwwwwwwwwwwwwwww"${c1}"eeeeeeee %s" +"${c2} wwwww "${c1}"eeeee"${c2}"wwwwww"${c1}"eeee %s" +"${c2} www "${c1}"eeee"${c2}"wwwwww"${c1}"e %s" +"${c2} ww "${c1}"ee"${c2}"wwwwww %s" +"${c2} w wwwww %s" +"${c2} wwwww %s" +"${c2} wwwww %s" +"${c2} wwwww %s" +"${c2} wwww %s" +"${c2} wwww %s" +"${c2} wwww %s" +"${c2} www %s" +"${c2} ww %s") + ;; + + "Mageia") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # White + c2=$(getColor 'light cyan') # Light Cyan + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=("$c2 .°°. %s" +"$c2 °° .°°. %s" +"$c2 .°°°. °° %s" +"$c2 . . %s" +"$c2 °°° .°°°. %s" +"$c2 .°°°. '___' %s" +"$c1 .${c2}'___' $c1 . %s" +"$c1 :dkxc;'. ..,cxkd; %s" +"$c1 .dkk. kkkkkkkkkk .kkd. %s" +"$c1 .dkk. ';cloolc;. .kkd %s" +"$c1 ckk. .kk; %s" +"$c1 xO: cOd %s" +"$c1 xO: lOd %s" +"$c1 lOO. .OO: %s" +"$c1 .k00. .00x %s" +"$c1 .k00; ;00O. %s" +"$c1 .lO0Kc;,,,,,,;c0KOc. %s" +"$c1 ;d00KKKKKK00d; %s" +"$c1 .,KKKK,. ") + ;; + + + "Parabola GNU/Linux-libre") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'light purple') # Light Purple + c2=$(getColor 'white') # White + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=(" %s" +"${c1} eeeeeeeee %s" +"${c1} eeeeeeeeeeeeeee %s" +"${c1} eeeeee"${c2}"//////////"${c1}"eeeee %s" +"${c1} eeeee"${c2}"///////////////"${c1}"eeeee %s" +"${c1} eeeee"${c2}"/// ////"${c1}"eeee %s" +"${c1} eeee"${c2}"// ///"${c1}"eeeee %s" +"${c1} eee "${c2}"///"${c1}"eeeee %s" +"${c1}ee "${c2}"//"${c1}"eeeeee %s" +"${c1}e "${c2}"/"${c1}"eeeeeee %s" +"${c1} eeeeeee %s" +"${c1} eeeeee %s" +"${c1} eeeeee %s" +"${c1} eeeee %s" +"${c1} eeee %s" +"${c1} eee %s" +"${c1} ee %s" +"${c1} e %s") + ;; + + + "Viperr") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # White + c2=$(getColor 'dark grey') # Dark Gray + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=("${c1} wwzapd dlzazw %s" +"${c1} an"${c2}"#"${c1}"zncmqzepweeirzpas"${c2}"#"${c1}"xz %s" +"${c1} apez"${c2}"##"${c1}"qzdkawweemvmzdm"${c2}"##"${c1}"dcmv %s" +"${c1}zwepd"${c2}"####"${c1}"qzdweewksza"${c2}"####"${c1}"ezqpa %s" +"${c1}ezqpdkapeifjeeazezqpdkazdkwqz %s" +"${c1} ezqpdksz"${c2}"##"${c1}"wepuizp"${c2}"##"${c1}"wzeiapdk %s" +"${c1} zqpakdpa"${c2}"#"${c1}"azwewep"${c2}"#"${c1}"zqpdkqze %s" +"${c1} apqxalqpewenwazqmzazq %s" +"${c1} mn"${c2}"##"${c1}"=="${c2}"#######"${c1}"=="${c2}"##"${c1}"qp %s" +"${c1} qw"${c2}"##"${c1}"="${c2}"#######"${c1}"="${c2}"##"${c1}"zl %s" +"${c1} z0"${c2}"######"${c1}"="${c2}"######"${c1}"0a %s" +"${c1} qp"${c2}"#####"${c1}"="${c2}"#####"${c1}"mq %s" +"${c1} az"${c2}"####"${c1}"==="${c2}"####"${c1}"mn %s" +"${c1} ap"${c2}"#########"${c1}"qz %s" +"${c1} 9qlzskwdewz %s" +"${c1} zqwpakaiw %s" +"${c1} qoqpe %s" +" %s") + ;; + + + "LinuxDeepin") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'light green') # Bold Green + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi + startline="0" + fulloutput=("${c1} eeeeeeeeeeeeeeeeeeeeeeeeeeee %s" +"${c1} eee eeeeeee eeeeeeee %s" +"${c1}ee eeeeeeeee eeeeeeeee ee %s" +"${c1}e eeeeeeeee eeeeeeeee e %s" +"${c1}e eeeeeee eeeeeeeeee e %s" +"${c1}e eeeeee eeeee e %s" +"${c1}e eeeee eee eee e %s" +"${c1}e eeeee ee eeeeee e %s" +"${c1}e eeeee eee eee e %s" +"${c1}e eeeeeeeeee eeee e %s" +"${c1}e eeeee eeee e %s" +"${c1}e eeeeee e %s" +"${c1}e eeeeeee e %s" +"${c1}e eee eeeeeeee e %s" +"${c1}eeeeeeeeeeeeeeee e %s" +"${c1}eeeeeeeeeeeee ee %s" +"${c1} eeeeeeeeeee eee %s" +"${c1} eeeeeeeeeeeeeeeeeeeeeeeeeeee %s" +" %s") + ;; + + "Deepin") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'cyan') # Bold Green + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi + startline="0" + fulloutput=("${c1} ............ %s" +"${c1} .';;;;;. .,;,. %s" +"${c1} .,;;;;;;;. ';;;;;;;. %s" +"${c1} .;::::::::' .,::;;,''''',. %s" +"${c1} ,'.:::::::: .;;'. '; %s" +"${c1} ;' 'cccccc, ,' :: '.. .: %s" +"${c1} ,, :ccccc. ;: .c, '' :. ,; %s" +"${c1} .l. cllll' ., .lc :; .l' l. %s" +"${c1} .c :lllc ;cl: .l' .ll. :' %s" +"${c1} .l 'looc. . ,o: 'oo' c, %s" +"${c1} .o. .:ool::coc' .ooo' o. %s" +"${c1} :: ..... .;dddo ;c %s" +"${c1} l:... .';lddddo. ,o %s" +"${c1} lxxxxxdoolllodxxxxxxxxxc :l %s" +"${c1} ,dxxxxxxxxxxxxxxxxxxl. 'o, %s" +"${c1} ,dkkkkkkkkkkkkko;. .;o; %s" +"${c1} .;okkkkkdl;. .,cl:. %s" +"${c1} .,:cccccccc:,. %s") + ;; + + "Chakra") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'light blue') # Light Blue + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi + startline="0" + fulloutput=("${c1} _ _ _ \"kkkkkkkk. %s" +"${c1} ,kkkkkkkk., \'kkkkkkkkk, %s" +"${c1} ,kkkkkkkkkkkk., \'kkkkkkkkk. %s" +"${c1} ,kkkkkkkkkkkkkkkk,\'kkkkkkkk, %s" +"${c1} ,kkkkkkkkkkkkkkkkkkk\'kkkkkkk. %s" +"${c1} \"\'\'\"\'\'\',;::,,\"\'\'kkk\'\'kkkkk; __ %s" +"${c1} ,kkkkkkkkkk, \"k\'\'kkkkk\' ,kkkk %s" +"${c1} ,kkkkkkk\' ., \' .: \'kkkk\',kkkkkk %s" +"${c1} ,kkkkkkkk\'.k\' , ,kkkk;kkkkkkkkk %s" +"${c1} ,kkkkkkkk\';kk \'k \"\'k\',kkkkkkkkkkkk %s" +"${c1} .kkkkkkkkk.kkkk.\'kkkkkkkkkkkkkkkkkk\' %s" +"${c1} ;kkkkkkkk\'\'kkkkkk;\'kkkkkkkkkkkkk\'\' %s" +"${c1} \'kkkkkkk; \'kkkkkkkk.,\"\"\'\'\"\'\'\"\" %s" +"${c1} \'\'kkkk; \'kkkkkkkkkk., %s" +"${c1} \';\' \'kkkkkkkkkkkk., %s" +"${c1} ';kkkkkkkkkk\' %s" +"${c1} ';kkkkkk\' %s" +"${c1} \"\'\'\" %s") + ;; + + + "Fuduntu") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'dark grey') # Dark Gray + c2=$(getColor 'yellow') # Bold Yellow + c3=$(getColor 'light red') # Light Red + c4=$(getColor 'white') # White + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi + startline="1" + fulloutput=("${c1} \`dwoapfjsod\`"${c2}" \`dwoapfjsod\`" +"${c1} \`xdwdsfasdfjaapz\`"${c2}" \`dwdsfasdfjaapzx\` %s" +"${c1} \`wadladfladlafsozmm\`"${c2}" \`wadladfladlafsozmm\` %s" +"${c1} \`aodowpwafjwodisosoaas\`"${c2}" \`odowpwafjwodisosoaaso\` %s" +"${c1} \`adowofaowiefawodpmmxs\`"${c2}" \`dowofaowiefawodpmmxso\` %s" +"${c1} \`asdjafoweiafdoafojffw\`"${c2}" \`sdjafoweiafdoafojffwq\` %s" +"${c1} \`dasdfjalsdfjasdlfjdd\`"${c2}" \`asdfjalsdfjasdlfjdda\` %s" +"${c1} \`dddwdsfasdfjaapzxaw\`"${c2}" \`ddwdsfasdfjaapzxawo\` %s" +"${c1} \`dddwoapfjsowzocmw\`"${c2}" \`ddwoapfjsowzocmwp\` %s" +"${c1} \`ddasowjfowiejao\`"${c2}" \`dasowjfowiejaow\` %s" +" %s" +"${c3} \`ddasowjfowiejao\`"${c4}" \`dasowjfowiejaow\` %s" +"${c3} \`dddwoapfjsowzocmw\`"${c4}" \`ddwoapfjsowzocmwp\` %s" +"${c3} \`dddwdsfasdfjaapzxaw\`"${c4}" \`ddwdsfasdfjaapzxawo\` %s" +"${c3} \`dasdfjalsdfjasdlfjdd\`"${c4}" \`asdfjalsdfjasdlfjdda\` %s" +"${c3} \`asdjafoweiafdoafojffw\`"${c4}" \`sdjafoweiafdoafojffwq\` %s" +"${c3} \`adowofaowiefawodpmmxs\`"${c4}" \`dowofaowiefawodpmmxso\` %s" +"${c3} \`aodowpwafjwodisosoaas\`"${c4}" \`odowpwafjwodisosoaaso\` %s" +"${c3} \`wadladfladlafsozmm\`"${c4}" \`wadladfladlafsozmm\` %s" +"${c3} \`dwdsfasdfjaapzx\`"${c4}" \`dwdsfasdfjaapzx\`" +"${c3} \`woapfjsod\`"${c4}" \`woapfjsod\`") + ;; + + "Mac OS X") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'green') # Green + c2=$(getColor 'brown') # Yellow + c3=$(getColor 'light red') # Orange + c4=$(getColor 'red') # Red + c5=$(getColor 'purple') # Purple + c6=$(getColor 'blue') # Blue + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; c3="${my_lcolor}"; c4="${my_lcolor}"; c5="${my_lcolor}"; c6="${my_lcolor}"; fi + startline="0" + fulloutput=("\n${c1} -/+:. %s" +"${c1} :++++. %s" +"${c1} /+++/. %s" +"${c1} .:-::- .+/:-\`\`.::- %s" +"${c1} .:/++++++/::::/++++++/:\` %s" +"${c2} .:///////////////////////:\` %s" +"${c2} ////////////////////////\` %s" +"${c3} -+++++++++++++++++++++++\` %s" +"${c3} /++++++++++++++++++++++/ %s" +"${c4} /sssssssssssssssssssssss. %s" +"${c4} :ssssssssssssssssssssssss- %s" +"${c5} osssssssssssssssssssssssso/\` %s" +"${c5} \`syyyyyyyyyyyyyyyyyyyyyyyy+\` %s" +"${c6} \`ossssssssssssssssssssss/ %s" +"${c6} :ooooooooooooooooooo+. %s" +"${c6} \`:+oo+/:-..-:/+o+/- %s\n") + ;; + + "Mac OS X - Classic") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'blue') # Blue + c2=$(getColor 'light blue') # Light blue + c3=$(getColor 'light grey') # Gray + c4=$(getColor 'dark grey') # Dark Ggray + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=("${c3}\n .. %s" +"${c3} dWc %s" +"${c3} ,X0' %s" +"${c1} ;;;;;;;;;;;;;;;;;;${c3}0Mk${c2}::::::::::::::: %s" +"${c1} ;;;;;;;;;;;;;;;;;${c3}KWo${c2}:::::::::::::::: %s" +"${c1} ;;;;;;;;;${c4}NN${c1};;;;;${c3}KWo${c2}:::::${c3}NN${c2}:::::::::: %s" +"${c1} ;;;;;;;;;${c4}NN${c1};;;;${c3}0Md${c2}::::::${c3}NN${c2}:::::::::: %s" +"${c1} ;;;;;;;;;${c4}NN${c1};;;${c3}xW0${c2}:::::::${c3}NN${c2}:::::::::: %s" +"${c1} ;;;;;;;;;;;;;;${c3}KMc${c2}::::::::::::::::::: %s" +"${c1} ;;;;;;;;;;;;;${c3}lWX${c2}:::::::::::::::::::: %s" +"${c1} ;;;;;;;;;;;;;${c3}xWWXXXXNN7${c2}::::::::::::: %s" +"${c1} ;;;;;;;;;;;;;;;;;;;;${c3}WK${c2}:::::::::::::: %s" +"${c1} ;;;;;${c4}TKX0ko.${c1};;;;;;;${c3}kMx${c2}:::${c3}.cOKNF${c2}::::: %s" +"${c1} ;;;;;;;;${c4}\`kO0KKKKKKK${c3}NMNXK0OP*${c2}:::::::: %s" +"${c1} ;;;;;;;;;;;;;;;;;;;${c3}kMx${c2}:::::::::::::: %s" +"${c1} ;;;;;;;;;;;;;;;;;;;;${c3}WX${c2}:::::::::::::: %s" +"${c3} lMc %s" +"${c3} kN. %s" +"${c3} o' %s\n") + ;; + + "Windows"|"Cygwin") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'light red') # Red + c2=$(getColor 'light green') # Green + c3=$(getColor 'light blue') # Blue + c4=$(getColor 'yellow') # Yellow + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; c3="${my_lcolor}"; c4="${my_lcolor}"; fi + startline="0" + fulloutput=("${c1} ,.=:!!t3Z3z., %s" +"${c1} :tt:::tt333EE3 %s" +"${c1} Et:::ztt33EEEL${c2} @Ee., .., %s" +"${c1} ;tt:::tt333EE7${c2} ;EEEEEEttttt33# %s" +"${c1} :Et:::zt333EEQ.${c2} \$EEEEEttttt33QL %s" +"${c1} it::::tt333EEF${c2} @EEEEEEttttt33F %s" +"${c1} ;3=*^\`\`\`\"*4EEV${c2} :EEEEEEttttt33@. %s" +"${c3} ,.=::::!t=., ${c1}\`${c2} @EEEEEEtttz33QF %s" +"${c3} ;::::::::zt33)${c2} \"4EEEtttji3P* %s" +"${c3} :t::::::::tt33.${c4}:Z3z..${c2} \`\`${c4} ,..g. %s" +"${c3} i::::::::zt33F${c4} AEEEtttt::::ztF %s" +"${c3} ;:::::::::t33V${c4} ;EEEttttt::::t3 %s" +"${c3} E::::::::zt33L${c4} @EEEtttt::::z3F %s" +"${c3}{3=*^\`\`\`\"*4E3)${c4} ;EEEtttt:::::tZ\` %s" +"${c3} \`${c4} :EEEEtttt::::z7 %s" +"${c4} \"VEzjt:;;z>*\` %s") + ;; + + "Windows 10") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'light blue') # Blue + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi + startline="0" + fulloutput=("${c1} .., %s" +"${c1} ....,,:;+ccllll %s" +"${c1} ...,,+:; cllllllllllllllllll %s" +"${c1} ,cclllllllllll lllllllllllllllllll %s" +"${c1} llllllllllllll lllllllllllllllllll %s" +"${c1} llllllllllllll lllllllllllllllllll %s" +"${c1} llllllllllllll lllllllllllllllllll %s" +"${c1} llllllllllllll lllllllllllllllllll %s" +"${c1} llllllllllllll lllllllllllllllllll %s" +"${c1} %s" +"${c1} llllllllllllll lllllllllllllllllll %s" +"${c1} llllllllllllll lllllllllllllllllll %s" +"${c1} llllllllllllll lllllllllllllllllll %s" +"${c1} llllllllllllll lllllllllllllllllll %s" +"${c1} llllllllllllll lllllllllllllllllll %s" +"${c1} \`'ccllllllllll lllllllllllllllllll %s" +"${c1} \`'\"\"*:: :ccllllllllllllllll %s" +"${c1} \`\`\`\`''\"*::cll %s" +"${c1} \`\` %s") + ;; + + "Haiku") + if [[ "$no_color" != "1" ]]; then + if [ "$haikualpharelease" == "yes" ]; then + c1=$(getColor 'black_haiku') # Black + c2=$(getColor 'light grey') # Light Gray + else + c1=$(getColor 'black') # Black + c2=${c1} + fi + c3=$(getColor 'green') # Green + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; c3="${my_lcolor}"; fi + startline="0" + fulloutput=( +"${c1} :dc' %s" +"${c1} 'l:;'${c2},${c1}'ck. .;dc:. %s" +"${c1} co ${c2}..${c1}k. .;; ':o. %s" +"${c1} co ${c2}..${c1}k. ol ${c2}.${c1}0. %s" +"${c1} co ${c2}..${c1}k. oc ${c2}..${c1}0. %s" +"${c1} co ${c2}..${c1}k. oc ${c2}..${c1}0. %s" +"${c1}.Ol,. co ${c2}...''${c1}Oc;kkodxOdddOoc,. %s" +"${c1} ';lxxlxOdxkxk0kd${c3}oooll${c1}dl${c3}ccc:${c1}clxd; %s" +"${c1} ..${c3}oOolllllccccccc:::::${c1}od; %s" +"${c1} cx:ooc${c3}:::::::;${c1}cooolcX. %s" +"${c1} cd${c2}.${c1}''cloxdoollc' ${c2}...${c1}0. %s" +"${c1} cd${c2}......${c1}k;${c2}.${c1}xl${c2}.... .${c1}0. %s" +"${c1} .::c${c2};..${c1}cx;${c2}.${c1}xo${c2}..... .${c1}0. %s" +"${c1} '::c'${c2}...${c1}do${c2}..... .${c1}K, %s" +"${c1} cd,.${c2}....:${c1}O,${c2}...... %s" +"${c1} ':clod:'${c2}...... %s" +"${c1} ${c2}. %s") + ;; + + "Trisquel") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'light blue') # Light Blue + c2=$(getColor 'light cyan') # Blue + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=( +"${c1} ▄▄▄▄▄▄ %s" +"${c1} ▄█████████▄ %s" +"${c1} ▄▄▄▄▄▄ ████▀ ▀████ %s" +"${c1} ▄██████████▄ ████▀ ▄▄ ▀███ %s" +"${c1} ▄███▀▀ ▀▀████ ███▄ ▄█ ███ %s" +"${c1} ▄███ ▄▄▄ ████▄ ▀██████ ▄███ %s" +"${c1} ███ █▀▀██▄ █████▄ ▀▀ ▄████ %s" +"${c1} ▀███ ███ ███████▄▄ ▄▄██████ %s" +"${c1} ▀███▄ ▄███ █████████████${c2}████▀ %s" +"${c1} ▀█████████ ███████${c2}███▀▀▀ %s" +"${c1} ▀▀███▀▀ ██${c2}████▀▀ %s" +"${c2} ██████▀ ▄▄▄▄ %s" +"${c2} █████▀ ████████ %s" +"${c2} █████ ███▀ ▀███ %s" +"${c2} ████▄ ██▄▄▄ ███ %s" +"${c2} █████▄ ▀▀ ▄██ %s" +"${c2} ██████▄▄▄████ %s" +"${c2} ▀▀█████▀▀ %s") + ;; + + "Manjaro") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'light green') # Green + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi + startline="0" + fulloutput=( +"${c1} ██████████████████ ████████ %s" +"${c1} ██████████████████ ████████ %s" +"${c1} ██████████████████ ████████ %s" +"${c1} ██████████████████ ████████ %s" +"${c1} ████████ ████████ %s" +"${c1} ████████ ████████ ████████ %s" +"${c1} ████████ ████████ ████████ %s" +"${c1} ████████ ████████ %s" +"${c1} ████████ ████████ ████████ %s" +"${c1} ████████ ████████ ████████ %s" +"${c1} ████████ ████████ ████████ %s" +"${c1} ████████ ████████ ████████ %s" +"${c1} ████████ ████████ ████████ %s" +"${c1} ████████ ████████ ████████ %s" +"${c1} ████████ ████████ ████████ %s" +"${c1} ████████ ████████ ████████ %s" +"${c1} ████████ ████████ ████████ %s" +" %s") + ;; + + "Logos") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'green') # Green + c2=$(getColor 'white') # White + fi + startline="0" + fulloutput=( +"$c1 ..:.:. $c2%s" +"$c1 ..:.:.:.:. $c2%s" +"$c1 ..:.:.:.:.:.:. $c2%s" +"$c1 ..:.:.:.:.:.:.:.:. $c2%s" +"$c1 .:.::;.::::..:.:.:. $c2%s" +"$c1 .:.:.::.::.::.;;/ $c2%s" +"$c1 .:.::.:::///// $c2%s" +"$c1 ..;;/////// $c2%s" +"$c1 /////////// $c2%s" +"$c1 ////////////// $c2%s" +"$c1 ///////////////// $c2%s" +"$c1 /////////////////// $c2%s" +"$c1 ////////////////// $c2%s" +"$c1 ////////////// $c2%s" +"$c1 ////////// $c2%s" +"$c1 ////// $c2%s" +"$c1 // $c2%s") + ;; + "Manjaro-tree") + if [[ "$no_color" != "1" ]]; then + c1="\e[1;32m" # Green + c2="\e[1;33m" # Yellow + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=( +"${c1} ### %s" +"${c1} ### #### %s" +"${c1} ### #### %s" +"${c1} ##### ##### %s" +"${c1} ################# %s" +"${c1} ### ##### #### %s" +"${c1} ## ${c2}OOO ${c1}### %s" +"${c1} # ${c2}WW ${c1}## %s" +"${c1} ${c2}WW ${c1}# %s" +"${c2} WW %s" +"${c2} WW %s" +"${c2} WW %s" +"${c2} WW %s" +"${c2} WW %s" +"${c2} WW %s" +"${c2} WW %s" +"${c2} WW %s" +" %s") + ;; + + + + "elementary OS"|"elementary os") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # White + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi + startline="0" + fulloutput=( +" %s" +"${c1} eeeeeeeeeeeeeeeee %s" +"${c1} eeeeeeeeeeeeeeeeeeeeeee %s" +"${c1} eeeee eeeeeeeeeeee eeeee %s" +"${c1} eeee eeeee eee eeee %s" +"${c1} eeee eeee eee eeee %s" +"${c1}eee eee eee eee %s" +"${c1}eee eee eee eee %s" +"${c1}ee eee eeee eeee %s" +"${c1}ee eee eeeee eeeeee %s" +"${c1}ee eee eeeee eeeee ee %s" +"${c1}eee eeee eeeeee eeeee eee %s" +"${c1}eee eeeeeeeeee eeeeee eee %s" +"${c1} eeeeeeeeeeeeeeeeeeeeeeee eeeee %s" +"${c1} eeeeeeee eeeeeeeeeeee eeee %s" +"${c1} eeeee eeeee %s" +"${c1} eeeeeee eeeeeee %s" +"${c1} eeeeeeeeeeeeeeeee %s") + ;; + + + "Android") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # White + c2=$(getColor 'light green') # Bold Green + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi + startline="2" + fulloutput=( +"${c2} ╲ ▁▂▂▂▁ ╱" +"${c2} ▄███████▄ " +"${c2} ▄██${c1} ${c2}███${c1} ${c2}██▄ %s" +"${c2} ▄███████████▄ %s" +"${c2} ▄█ ▄▄▄▄▄▄▄▄▄▄▄▄▄ █▄ %s" +"${c2} ██ █████████████ ██ %s" +"${c2} ██ █████████████ ██ %s" +"${c2} ██ █████████████ ██ %s" +"${c2} ██ █████████████ ██ %s" +"${c2} █████████████ %s" +"${c2} ███████████ %s" +"${c2} ██ ██" +"${c2} ██ ██") + ;; + + "Scientific Linux") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'light blue') + c2=$(getColor 'light red') + c3=$(getColor 'white') + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="1" + fulloutput=("${c1} =/;;/-" +"${c1} +: // %s" +"${c1} /; /; %s" +"${c1} -X H. %s" +"${c1} .//;;;:;;-, X= :+ .-;:=;:;#;. %s" +"${c1} M- ,=;;;#:, ,:#;;:=, ,@ %s" +"${c1} :# :#.=/++++/=.$= #= %s" +"${c1} ,#; #/:+/;,,/++:+/ ;+. %s" +"${c1} ,+/. ,;@+, ,#H;, ,/+, %s" +"${c1} ;+;;/= @. ${c2}.H${c3}#${c2}#X ${c1}-X :///+; %s" +"${c1} ;+=;;;.@, ${c3}.X${c2}M${c3}@$. ${c1}=X.//;=#/. %s" +"${c1} ,;: :@#= =\$H: .+#- %s" +"${c1} ,#= #;-///==///-// =#, %s" +"${c1} ;+ :#-;;;:;;;;-X- +: %s" +"${c1} @- .-;;;;M- =M/;;;-. -X %s" +"${c1} :;;::;;-. #- :+ ,-;;-;:== %s" +"${c1} ,X H. %s" +"${c1} ;/ #= %s" +"${c1} // +; %s" +"${c1} '////'") + ;; + + "BackTrack Linux") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # White + c2=$(getColor 'light red') # Light Red + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="1" + fulloutput=("${c1}.............." +"${c1} ..,;:ccc,. %s" +"${c1} ......''';lxO. %s" +"${c1}.....''''..........,:ld; %s" +"${c1} .';;;:::;,,.x, %s" +"${c1} ..'''. 0Xxoc:,. ... %s" +"${c1} .... ,ONkc;,;cokOdc',. %s" +"${c1} . OMo ':"${c2}"dd"${c1}"o. %s" +"${c1} dMc :OO; %s" +"${c1} 0M. .:o. %s" +"${c1} ;Wd %s" +"${c1} ;XO, %s" +"${c1} ,d0Odlc;,.. %s" +"${c1} ..',;:cdOOd::,. %s" +"${c1} .:d;.':;. %s" +"${c1} 'd, .' %s" +"${c1} ;l ..%s" +"${c1} .o %s" +"${c1} c %s" +"${c1} .'" +"${c1} .") + ;; + + "Kali Linux") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'light blue') # White + c2=$(getColor 'black') # Light Red + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="1" + fulloutput=("${c1}.............." +"${c1} ..,;:ccc,. %s" +"${c1} ......''';lxO. %s" +"${c1}.....''''..........,:ld; %s" +"${c1} .';;;:::;,,.x, %s" +"${c1} ..'''. 0Xxoc:,. ... %s" +"${c1} .... ,ONkc;,;cokOdc',. %s" +"${c1} . OMo ':"${c2}"dd"${c1}"o. %s" +"${c1} dMc :OO; %s" +"${c1} 0M. .:o. %s" +"${c1} ;Wd %s" +"${c1} ;XO, %s" +"${c1} ,d0Odlc;,.. %s" +"${c1} ..',;:cdOOd::,. %s" +"${c1} .:d;.':;. %s" +"${c1} 'd, .' %s" +"${c1} ;l ..%s" +"${c1} .o %s" +"${c1} c %s" +"${c1} .'" +"${c1} .") + ;; + + "Sabayon") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # White + c2=$(getColor 'light blue') # Blue + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi + startline="0" + fulloutput=("${c2} ........... %s" +"${c2} .. .. %s" +"${c2} .. .. %s" +"${c2} .. ${c1}o ${c2}.. %s" +"${c2} .. ${c1}:W' ${c2}.. %s" +"${c2} .. ${c1}.d. ${c2}.. %s" +"${c2}:. ${c1}.KNO ${c2}.: %s" +"${c2}:. ${c1}cNNN. ${c2}.: %s" +"${c2}: ${c1}dXXX, ${c2}: %s" +"${c2}: ${c1}. dXXX, .cd, ${c2}: %s" +"${c2}: ${c1}'kc .. dKKK. ,ll;:' ${c2}: %s" +"${c2}: ${c1}.xkkxc;..dkkkc',cxkkl ${c2}: %s" +"${c2}:. ${c1}.,cdddddddddddddo:. ${c2}.: %s" +"${c2} .. ${c1}:lllllll: ${c2}.. %s" +"${c2} .. ${c1}',,,,, ${c2}.. %s" +"${c2} .. .. %s" +"${c2} .. .. %s" +"${c2} ............... %s") + ;; + + + "KaOS") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'light blue') + c2=$(getColor 'light grey') + c3=$(getColor 'red') + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=( +"${c1} ████████ ████████ %s" +"${c1} ██████ ██████ %s" +"${c1} ████ ████ %s" +"${c1} █ █ %s" +"${c1} █ %s" +"${c1} █ ${c2} ████████ ████████%s" +"${c1} █ ${c2} ██████ ██████ %s" +"${c1} █ ${c2} ████ ████ %s" +"${c1} █ ${c2} █ █ %s" +"${c1} █ ${c2} █ %s" +"${c1} ${c3}███████ ███████ %s" +"${c1} ${c3} █████ █████${c2} █ %s" +"${c1} █${c3} ███ ███ ${c2} █ %s" +"${c1} █ ${c3} █ ${c2} █ %s" +"${c1} █ ${c3}█ ${c2} █ %s" +"${c1} █ ${c3}█ ${c2} █ %s") + ;; + + + "CentOS") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'yellow') # White + c2=$(getColor 'light green') # White + c3=$(getColor 'light blue') # White + c4=$(getColor 'light purple') # White + c5=$(getColor 'white') # White + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi + startline="0" + fulloutput=("${c1} .. %s" +"${c1} .PLTJ. %s" +"${c1} <><><><> %s" +" ${c2}KKSSV' 4KKK ${c1}LJ${c4} KKKL.'VSSKK %s" +" ${c2}KKV' 4KKKKK ${c1}LJ${c4} KKKKAL 'VKK %s" +" ${c2}V' ' 'VKKKK ${c1}LJ${c4} KKKKV' ' 'V %s" +" ${c2}.4MA.' 'VKK ${c1}LJ${c4} KKV' '.4Mb. %s" +"${c4} . ${c2}KKKKKA.' 'V ${c1}LJ${c4} V' '.4KKKKK ${c3}. %s" +"${c4} .4D ${c2}KKKKKKKA.'' ${c1}LJ${c4} ''.4KKKKKKK ${c3}FA. %s" +"${c4} %s" +"${c4} 'VD ${c3}KKKKKKKK'.. ${c2}LJ ${c1}..'KKKKKKKK ${c3}FV %s" +"${c4} ' ${c3}VKKKKK'. .4 ${c2}LJ ${c1}K. .'KKKKKV ${c3}' %s" +" ${c3} 'VK'. .4KK ${c2}LJ ${c1}KKA. .'KV' %s" +" ${c3}A. . .4KKKK ${c2}LJ ${c1}KKKKA. . .4 %s" +" ${c3}KKA. 'KKKKK ${c2}LJ ${c1}KKKKK' .4KK %s" +" ${c3}KKSSA. VKKK ${c2}LJ ${c1}KKKV .4SSKK %s" +"${c2} <><><><> %s" +"${c2} 'MKKM' %s" +"${c2} ''") + ;; + + + "Jiyuu Linux") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'light blue') # Light Blue + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi + startline="0" + fulloutput=("${c1}+++++++++++++++++++++++. %s" +"${c1}ss:-......-+so/:----.os- %s" +"${c1}ss +s/ os- %s" +"${c1}ss :s+ os- %s" +"${c1}ss os. os- %s" +"${c1}ss .so os- %s" +"${c1}ss :s+ os- %s" +"${c1}ss /s/ os- %s" +"${c1}ss /s: os- %s" +"${c1}ss +s- os- %s" +"${c1}ss-.....os:..........os- %s" +"${c1}++++++++os+++++++++oooo. %s" +"${c1} os. ./oo/. %s" +"${c1} os. ./oo: %s" +"${c1} os. ./oo: %s" +"${c1} os oo+- %s" +"${c1} os+- %s" +"${c1} /. %s") + ;; + + "Antergos") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'blue') # Light Blue + c2=$(getColor 'light blue') # Light Blue + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi + startline="1" + fulloutput=("${c1} \`.-/::/-\`\`" +"${c1} .-/osssssssso/. %s" +"${c1} :osyysssssssyyys+- %s" +"${c1} \`.+yyyysssssssssyyyyy+. %s" +"${c1} \`/syyyyyssssssssssyyyyys-\` %s" +"${c1} \`/yhyyyyysss${c2}++${c1}ssosyyyyhhy/\` %s" +"${c1} .ohhhyyyys${c2}o++/+o${c1}so${c2}+${c1}syy${c2}+${c1}shhhho. %s" +"${c1} .shhhhys${c2}oo++//+${c1}sss${c2}+++${c1}yyy${c2}+s${c1}hhhhs. %s" +"${c1} -yhhhhs${c2}+++++++o${c1}ssso${c2}+++${c1}yyy${c2}s+o${c1}hhddy: %s" +"${c1} -yddhhy${c2}o+++++o${c1}syyss${c2}++++${c1}yyy${c2}yooy${c1}hdddy- %s" +"${c1} .yddddhs${c2}o++o${c1}syyyyys${c2}+++++${c1}yyhh${c2}sos${c1}hddddy\` %s" +"${c1}\`odddddhyosyhyyyyyy${c2}++++++${c1}yhhhyosddddddo %s" +"${c1}.dmdddddhhhhhhhyyyo${c2}+++++${c1}shhhhhohddddmmh. %s" +"${c1}ddmmdddddhhhhhhhso${c2}++++++${c1}yhhhhhhdddddmmdy %s" +"${c1}dmmmdddddddhhhyso${c2}++++++${c1}shhhhhddddddmmmmh %s" +"${c1}-dmmmdddddddhhys${c2}o++++o${c1}shhhhdddddddmmmmd- %s" +"${c1} .smmmmddddddddhhhhhhhhhdddddddddmmmms. %s" +"${c1} \`+ydmmmdddddddddddddddddddmmmmdy/. %s" +"${c1} \`.:+ooyyddddddddddddyyso+:.\`") + ;; + + "Void") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'green') # Dark Green + c2=$(getColor 'light green') # Light Green + c3=$(getColor 'dark grey') # Black + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; c3="${my_lcolor}"; fi + startline="0" + fulloutput=("${c2} __.;=====;.__ %s" +"${c2} _.=+==++=++=+=+===;. %s" +"${c2} -=+++=+===+=+=+++++=_ %s" +"${c1} . "${c2}"-=:\`\` \`--==+=++==. %s" +"${c1} _vi, "${c2}"\` --+=++++: %s" +"${c1} .uvnvi. "${c2}"_._ -==+==+. %s" +"${c1} .vvnvnI\` "${c2}".;==|==;. :|=||=|. %s" +"${c3} +QmQQm"${c1}"pvvnv; "${c3}"_yYsyQQWUUQQQm #QmQ#"${c2}":"${c3}"QQQWUV\$QQmL %s" +"${c3} -QQWQW"${c1}"pvvo"${c3}"wZ?.wQQQE"${c2}"==<"${c3}"QWWQ/QWQW.QQWW"${c2}"(: "${c3}"jQWQE %s" +"${c3} -\$QQQQmmU' jQQQ@"${c2}"+=<"${c3}"QWQQ)mQQQ.mQQQC"${c2}"+;${c3}jWQQ@' %s" +"${c3} -\$WQ8Y"${c1}"nI: ${c3}QWQQwgQQWV"${c2}"\`"${c3}"mWQQ.jQWQQgyyWW@! %s" +"${c1} -1vvnvv. "${c2}"\`~+++\` ++|+++ %s" +"${c1} +vnvnnv, "${c2}"\`-|=== %s" +"${c1} +vnvnvns. . "${c2}":=- %s" +"${c1} -Invnvvnsi..___..=sv=. "${c2}"\` %s" +"${c1} +Invnvnvnnnnnnnnvvnn;. %s" +"${c1} ~|Invnvnvvnvvvnnv}+\` %s" +"${c1} -~\"|{*l}*|\"\"~ %s") + ;; + + "NixOS") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'blue') + c2=$(getColor 'light blue') + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; fi + startline="0" + fulloutput=("${c1} ::::. ${c2}'::::: ::::' %s" +"${c1} '::::: ${c2}':::::. ::::' %s" +"${c1} ::::: ${c2}'::::.::::: %s" +"${c1} .......:::::..... ${c2}:::::::: %s" +"${c1} ::::::::::::::::::. ${c2}:::::: ${c1}::::. %s" +"${c1} ::::::::::::::::::::: ${c2}:::::. ${c1}.::::' %s" +"${c2} ..... ::::' ${c1}:::::' %s" +"${c2} ::::: '::' ${c1}:::::' %s" +"${c2} ........::::: ' ${c1}:::::::::::. %s" +"${c2}::::::::::::: ${c1}::::::::::::: %s" +"${c2} ::::::::::: ${c1}.. ${c1}::::: %s" +"${c2} .::::: ${c1}.::: ${c1}::::: %s" +"${c2} .::::: ${c1}::::: ${c1}''''' ${c2}..... %s" +"${c2} ::::: ${c1}':::::. ${c2}......:::::::::::::' %s" +"${c2} ::: ${c1}::::::. ${c2}':::::::::::::::::' %s" +"${c1} .:::::::: ${c2}':::::::::: %s" +"${c1} .::::''::::. ${c2}'::::. %s" +"${c1} .::::' ::::. ${c2}'::::. %s" +"${c1} .:::: :::: ${c2}'::::. %s") + ;; + + "SailfishOS") + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'blue') # Blue + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi + startline="0" + fulloutput=("${c1} .+eWWW %s" +"${c1} .+ee+++eee e. %s" +"${c1} .ee++eeeeeeee +e. %s" +"${c1} .e++ee++eeeeeee+eee+e+ %s" +"${c1} ee.e+.ee+eee++eeeeee+ %s" +"${c1} W.+e.e+.e++ee+eee %s" +"${c1} W.+e.W.ee.W++ee' %s" +"${c1} +e.W W.e+.W.W+ %s" +"${c1} W.e.+e.W W W. %s" +"${c1} e e e +e.W.W %s" +"${c1} .W W W. %s" +"${c1} W.+e.W. %s" +"${c1} W++e.ee+. %s" +"${c1} ++ +ee++eeeee++. %s" +"${c1} ' '+++e 'ee. %s" +"${c1} ee %s" +"${c1} ee %s" +"${c1} e %s") + ;; + + *) + if [ "$(echo "${kernel}" | grep 'Linux' )" ]; then + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'white') # White + c2=$(getColor 'dark grey') # Light Gray + c3=$(getColor 'yellow') # Light Yellow + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; c2="${my_lcolor}"; c3="${my_lcolor}"; fi + startline="0" + fulloutput=(" %s" +" %s" +" %s" +"$c2 #####$c0 %s" +"$c2 ####### %s" +"$c2 ##"$c1"O$c2#"$c1"O$c2## %s" +"$c2 #$c3#####$c2# %s" +"$c2 ##$c1##$c3###$c1##$c2## %s" +"$c2 #$c1##########$c2## %s" +"$c2 #$c1############$c2## %s" +"$c2 #$c1############$c2### %s" +"$c3 ##$c2#$c1###########$c2##$c3# %s" +"$c3 ######$c2#$c1#######$c2#$c3###### %s" +"$c3 #######$c2#$c1#####$c2#$c3####### %s" +"$c3 #####$c2#######$c3##### %s" +" %s" +" %s" +" %s") + + elif [[ "$(echo "${kernel}" | grep 'GNU' )" || "$(echo "${kernel}" | grep 'Hurd' )" || "${OSTYPE}" == "gnu" ]]; then + startline="0" + fulloutput=( +" _-\`\`\`\`\`-, ,- '- . %s" +" .' .- - | | - -. \`. %s" +" /.' / \`. \\ %s" +" :/ : _... ..._ \`\` : %s" +" :: : /._ .\`:'_.._\\. || : %s" +" :: \`._ ./ ,\` : \\ . _.'' . %s" +" \`:. / | -. \\-. \\\\\_ / %s" +" \\:._ _/ .' .@) \\@) \` \`\\ ,.' %s" +" _/,--' .- .\\,-.\`--\`. %s" +" ,'/'' (( \\ \` ) %s" +" /'/' \\ \`-' ( %s" +" '/'' \`._,-----' %s" +" ''/' .,---' %s" +" ''/' ;: %s" +" ''/'' ''/ %s" +" ''/''/'' %s" +" '/'/' %s" +" \`; %s") +# Source: https://www.gnu.org/graphics/alternative-ascii.en.html +# Copyright (C) 2003, Vijay Kumar +# Permission is granted to copy, distribute and/or modify this image under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. + + else + if [[ "$no_color" != "1" ]]; then + c1=$(getColor 'light green') # Light Green + fi + if [ -n "${my_lcolor}" ]; then c1="${my_lcolor}"; fi + startline="0" + fulloutput=(" %s" + " %s" +"$c1 UUU UUU NNN NNN IIIII XXX XXXX%s" +"$c1 UUU UUU NNNN NNN III XX xXX %s" +"$c1 UUU UUU NNNNN NNN III XX xXX %s" +"$c1 UUU UUU NNN NN NNN III XXXX %s" +"$c1 UUU UUU NNN NN NNN III xXX %s" +"$c1 UUU UUU NNN NN NNN III xXXXX %s" +"$c1 UUU UUU NNN NNNNN III xXX XX %s" +"$c1 UUUuuuUUU NNN NNNN III xXX XX %s" +"$c1 UUUUU NNN NNN IIIII xXXx xXXx%s" + " %s" + " %s" + " %s" + " %s") + fi + ;; + esac + + + # Truncate lines based on terminal width. + if [ "$truncateSet" == "Yes" ]; then + for ((i=0; i<${#fulloutput[@]}; i++)); do + my_out=$(printf "${fulloutput[i]}$c0\n" "${out_array}") + my_out_full=$(echo "$my_out" | cat -v) + termWidth=$(tput cols) + SHOPT_EXTGLOB_STATE=$(shopt -p extglob) + read SHOPT_CMD SHOPT_STATE SHOPT_OPT <<< ${SHOPT_EXTGLOB_STATE} + if [[ ${SHOPT_STATE} == "-u" ]]; then + shopt -s extglob + fi + + stringReal="${my_out_full//\^\[\[@([0-9]|[0-9];[0-9][0-9])m}" + + if [[ ${SHOPT_STATE} == "-u" ]]; then + shopt -u extglob + fi + + if [[ "${#stringReal}" -le "${termWidth}" ]]; then + echo -e "${my_out}"$c0 + elif [[ "${#stringReal}" -gt "${termWidth}" ]]; then + ((NORMAL_CHAR_COUNT=0)) + for ((j=0; j<=${#my_out_full}; j++)); do + if [[ "${my_out_full:${j}:3}" == '^[[' ]]; then + if [[ "${my_out_full:${j}:5}" =~ ^\^\[\[[[:digit:]]m$ ]]; then + if [[ ${j} -eq 0 ]]; then + j=$((${j} + 5)) + else + j=$((${j} + 4)) + fi + elif [[ "${my_out_full:${j}:8}" =~ ^\^\[\[[[:digit:]]\;[[:digit:]][[:digit:]]m ]]; then + if [[ ${j} -eq 0 ]]; then + j=$((${j} + 8)) + else + j=$((${j} + 7)) + fi + fi + else + ((NORMAL_CHAR_COUNT++)) + if [[ ${NORMAL_CHAR_COUNT} -ge ${termWidth} ]]; then + echo -e "${my_out:0:$((${j} - 5))}"$c0 + break 1 + fi + fi + done + fi + + if [[ "$i" -ge "$startline" ]]; then + unset out_array[0] + out_array=( "${out_array[@]}" ) + fi + done + + elif [[ "$portraitSet" = "Yes" ]]; then + for ((i=0; $i<${#fulloutput[*]}; i++)); do + printf "${fulloutput[$i]}$c0\n" + done + + printf "\n" + + for ((i=0; $i<${#fulloutput[*]}; i++)); do + [[ -z "$out_array" ]] && continue + printf "%s\n" "${out_array}" + unset out_array[0] + out_array=( "${out_array[@]}" ) + done + + elif [[ "$display_logo" == "Yes" ]]; then + for ((i=0; i<${#fulloutput[*]}; i++)); do + printf "${fulloutput[i]}\n" + done + + else + #n=${#fulloutput[*]} + for ((i=0; i<${#fulloutput[*]}; i++)); do + # echo "${out_array[@]}" + febreeze=$(awk 'BEGIN{srand();print int(rand()*(1000-1))+1 }') + if [[ "${febreeze}" == "411" || "${febreeze}" == "188" || "${febreeze}" == "15" || "${febreeze}" == "166" || "${febreeze}" == "609" ]]; then + f_size=${#fulloutput[*]} + o_size=${#out_array[*]} + f_max=$(( 32768 / f_size * f_size )) + #o_max=$(( 32768 / o_size * o_size )) + for ((a=f_size-1; a>0; a--)); do + while (( (rand=$RANDOM) >= f_max )); do :; done + rand=$(( rand % (a+1) )) + tmp=${fulloutput[a]} fulloutput[a]=${fulloutput[rand]} fulloutput[rand]=$tmp + done + for ((b=o_size-1; b>0; b--)); do + rand=$(( rand % (b+1) )) + tmp=${out_array[b]} out_array[b]=${out_array[rand]} out_array[rand]=$tmp + done + fi + printf "${fulloutput[i]}$c0\n" "${out_array}" + if [[ "$i" -ge "$startline" ]]; then + unset out_array[0] + out_array=( "${out_array[@]}" ) + fi + done + fi + # Done with ASCII output +} + +infoDisplay () { + textcolor="\033[0m" + [[ "$my_hcolor" ]] && textcolor="${my_hcolor}" + #TODO: Centralize colors and use them across the board so we only change them one place. + myascii="${distro}" + [[ "${asc_distro}" ]] && myascii="${asc_distro}" + case ${myascii} in + "Arch Linux - Old"|"Fedora"|"Korora"|"Chapeau"|"Mandriva"|"Mandrake"|"Chakra"|"ChromeOS"|"Sabayon"|"Slackware"|"Mac OS X"|"Trisquel"|"Kali Linux"|"Jiyuu Linux"|"Antergos"|"KaOS"|"Logos"|"gNewSense"|"NixOS"|"SailfishOS") labelcolor=$(getColor 'light blue');; + "Arch Linux"|"Frugalware"|"Mageia"|"Deepin"|"CRUX") labelcolor=$(getColor 'light cyan');; + "Mint"|"LMDE"|"openSUSE"|"LinuxDeepin"|"DragonflyBSD"|"Manjaro"|"Manjaro-tree"|"Android"|"Void") labelcolor=$(getColor 'light green');; + "Ubuntu"|"FreeBSD"|"FreeBSD - Old"|"Debian"|"Raspbian"|"BSD"|"Red Hat Enterprise Linux"|"Peppermint"|"Cygwin"|"Fuduntu"|"Scientific Linux"|"DragonFlyBSD"|"BackTrack Linux") labelcolor=$(getColor 'light red');; + "CrunchBang"|"Solus"|"Viperr"|"elementary"*) labelcolor=$(getColor 'dark grey');; + "Gentoo"|"Parabola GNU/Linux-libre"|"Funtoo"|"Funtoo-text"|"BLAG") labelcolor=$(getColor 'light purple');; + "Haiku") labelcolor=$(getColor 'green');; + "NetBSD") labelcolor=$(getColor 'orange');; + "unRAID") labelcolor=$(getColor 'light green');; + "CentOS"|*) labelcolor=$(getColor 'yellow');; + esac + [[ "$my_lcolor" ]] && labelcolor="${my_lcolor}" + if [[ "$art" ]]; then source "$art"; fi + if [[ "$no_color" == "1" ]]; then labelcolor=""; bold=""; c0=""; textcolor=""; fi + # Some verbosity stuff + [[ "$screenshot" == "1" ]] && verboseOut "Screenshot will be taken after info is displayed." + [[ "$upload" == "1" ]] && verboseOut "Screenshot will be transferred/uploaded to specified location." + ######################### + # Info Variable Setting # + ######################### + if [[ "$distro" == "unRAID" ]]; then + source /var/local/emhttp/var.ini + fi + if [[ "${distro}" == "Android" ]]; then + myhostname=$(echo -e "${labelcolor}${hostname}"); out_array=( "${out_array[@]}" "$myhostname" ) + mydistro=$(echo -e "$labelcolor OS:$textcolor $distro $distro_ver"); out_array=( "${out_array[@]}" "$mydistro" ) + mydevice=$(echo -e "$labelcolor Device:$textcolor $device"); out_array=( "${out_array[@]}" "$mydevice" ) + myrom=$(echo -e "$labelcolor ROM:$textcolor $rom"); out_array=( "${out_array[@]}" "$myrom" ) + mybaseband=$(echo -e "$labelcolor Baseband:$textcolor $baseband"); out_array=( "${out_array[@]}" "$mybaseband" ) + mykernel=$(echo -e "$labelcolor Kernel:$textcolor $kernel"); out_array=( "${out_array[@]}" "$mykernel" ) + myuptime=$(echo -e "$labelcolor Uptime:$textcolor $uptime"); out_array=( "${out_array[@]}" "$myuptime" ) + mycpu=$(echo -e "$labelcolor CPU:$textcolor $cpu"); out_array=( "${out_array[@]}" "$mycpu" ) + mygpu=$(echo -e "$labelcolor GPU:$textcolor $cpu"); out_array=( "${out_array[@]}" "$mygpu" ) + mymem=$(echo -e "$labelcolor RAM:$textcolor $mem"); out_array=( "${out_array[@]}" "$mymem" ) + else + if [[ "${display[@]}" =~ "host" ]]; then myinfo=$(echo -e "${labelcolor}${myUser}$textcolor${bold}@${c0}${labelcolor}${myHost}"); out_array=( "${out_array[@]}" "$myinfo" ); ((display_index++)); fi + if [[ "${display[@]}" =~ "distro" ]]; then + if [ "$distro" == "Mac OS X" ]; then + sysArch=`str1=$(ioreg -l -p IODeviceTree | grep firmware-abi);echo ${str1: -4: 2}bit` + prodVers=`prodVers=$(sw_vers|grep ProductVersion);echo ${prodVers:15}` + buildVers=`buildVers=$(sw_vers|grep BuildVersion);echo ${buildVers:14}` + if [ -n "$distro_more" ]; then mydistro=$(echo -e "$labelcolor OS:$textcolor $distro_more $sysArch") + else mydistro=$(echo -e "$labelcolor OS:$textcolor $sysArch $distro $prodVers $buildVers"); fi + elif [[ "$distro" == "Cygwin" ]]; then + distro="$(wmic os get caption | sed 's/\r//g; s/[ \t]*$//g; 2!d')" + if [[ "$(wmic os get version | grep -o '^10\.')" == "10." ]]; then + distro="$distro (v$(wmic os get version | grep '^10\.' | tr -d ' '))" + fi + sysArch=$(wmic os get OSArchitecture | sed 's/\r//g; s/[ \t]*$//g; 2!d') + mydistro=$(echo -e "$labelcolor OS:$textcolor $distro $sysArch") + elif [[ "$distro" == "unRAID" ]]; then + OSversion=$(cat /etc/slackware-version) + mydistro=$(echo -e "$labelcolor OS:$textcolor $distro $version ($OSversion)") + else + if [ -n "$distro_more" ]; then mydistro=$(echo -e "$labelcolor OS:$textcolor $distro_more") + else mydistro=$(echo -e "$labelcolor OS:$textcolor $distro $sysArch"); fi + fi + out_array=( "${out_array[@]}" "$mydistro" ) + ((display_index++)) + fi + if [[ "${display[@]}" =~ "kernel" ]]; then mykernel=$(echo -e "$labelcolor Kernel:$textcolor $kernel"); out_array=( "${out_array[@]}" "$mykernel" ); ((display_index++)); fi + if [[ "${display[@]}" =~ "uptime" ]]; then myuptime=$(echo -e "$labelcolor Uptime:$textcolor $uptime"); out_array=( "${out_array[@]}" "$myuptime" ); ((display_index++)); fi + if [[ "${display[@]}" =~ "pkgs" ]]; then + if [[ "$distro" == "unRAID" ]]; then + resync="n/a" + [[ ! $mdResync == "0" ]] && resync=$(($mdResyncPos*100/$mdResync))% + mypkgs=$(echo -e "$labelcolor Array:$textcolor$fsState$labelcolor Parity Check:$textcolor$resync") + else + mypkgs=$(echo -e "$labelcolor Packages:$textcolor $pkgs") + fi + out_array=( "${out_array[@]}" "$mypkgs" ) + ((display_index++)) + fi + if [[ "${display[@]}" =~ "shell" ]]; then + if [[ "$distro" == "unRAID" ]]; then + myshell=$(echo -e "$labelcolor Disks:$textcolor$mdNumDisks$labelcolor Cache:$textcolor$cacheNumDevices$labelcolor Disabled:$textcolor$fsNumUnmountable") + else + myshell=$(echo -e "$labelcolor Shell:$textcolor $myShell") + fi + out_array=( "${out_array[@]}" "$myshell" ) + ((display_index++)) + fi + if [[ -n "$DISPLAY" || "$distro" == "Mac OS X" ]]; then + if [ -n "${xResolution}" ]; then + if [[ "${display[@]}" =~ "res" ]]; then myres=$(echo -e "$labelcolor Resolution:${textcolor} $xResolution"); out_array=( "${out_array[@]}" "$myres" ); ((display_index++)); fi + fi + if [[ "${display[@]}" =~ "de" ]]; then + if [[ "${DE}" != "Not Present" ]]; then + myde=$(echo -e "$labelcolor DE:$textcolor $DE"); out_array=( "${out_array[@]}" "$myde" ); ((display_index++)) + fi + fi + if [[ "${display[@]}" =~ "wm" ]]; then mywm=$(echo -e "$labelcolor WM:$textcolor $WM"); out_array=( "${out_array[@]}" "$mywm" ); ((display_index++)); fi + if [[ "${display[@]}" =~ "wmtheme" ]]; then + if [[ "${Win_theme}" == "Not Applicable" || "${Win_theme}" == "Not Found" ]]; then + : + else + mywmtheme=$(echo -e "$labelcolor WM Theme:$textcolor $Win_theme"); out_array=( "${out_array[@]}" "$mywmtheme" ); ((display_index++)); fi + fi + if [[ "${display[@]}" =~ "gtk" ]]; then + if [ "$distro" == "Mac OS X" ]; then + if [[ "$gtkFont" != "Not Applicable" && "$gtkFont" != "Not Found" ]]; then + if [ -n "$gtkFont" ]; then + myfont=$(echo -e "$labelcolor Font:$textcolor $gtkFont"); out_array=( "${out_array[@]}" "$myfont" ); ((display_index++)) + fi + fi + else + if [[ "$gtk2Theme" != "Not Applicable" && "$gtk2Theme" != "Not Found" ]]; then + if [ -n "$gtk2Theme" ]; then + mygtk2="${gtk2Theme} [GTK2]" + fi + fi + if [[ "$gtk3Theme" != "Not Applicable" && "$gtk3Theme" != "Not Found" ]]; then + if [ -n "$mygtk2" ]; then + mygtk3=", ${gtk3Theme} [GTK3]" + else + mygtk3="${gtk3Theme} [GTK3]" + fi + fi + if [[ "$gtk_2line" == "yes" ]]; then + mygtk2=$(echo -e "$labelcolor GTK2 Theme:$textcolor $gtk2Theme"); out_array=( "${out_array[@]}" "$mygtk2" ); ((display_index++)) + mygtk3=$(echo -e "$labelcolor GTK3 Theme:$textcolor $gtk3Theme"); out_array=( "${out_array[@]}" "$mygtk3" ); ((display_index++)) + else + if [[ "$gtk2Theme" == "$gtk3Theme" ]]; then + if [[ "$gtk2Theme" != "Not Applicable" && "$gtk2Theme" != "Not Found" ]]; then + mygtk=$(echo -e "$labelcolor GTK Theme:$textcolor ${gtk2Theme} [GTK2/3]"); out_array=( "${out_array[@]}" "$mygtk" ); ((display_index++)) + fi + else + mygtk=$(echo -e "$labelcolor GTK Theme:$textcolor ${mygtk2}${mygtk3}"); out_array=( "${out_array[@]}" "$mygtk" ); ((display_index++)) + fi + fi + if [[ "$gtkIcons" != "Not Applicable" && "$gtkIcons" != "Not Found" ]]; then + if [ -n "$gtkIcons" ]; then + myicons=$(echo -e "$labelcolor Icon Theme:$textcolor $gtkIcons"); out_array=( "${out_array[@]}" "$myicons" ); ((display_index++)) + fi + fi + if [[ "$gtkFont" != "Not Applicable" && "$gtkFont" != "Not Found" ]]; then + if [ -n "$gtkFont" ]; then + myfont=$(echo -e "$labelcolor Font:$textcolor $gtkFont"); out_array=( "${out_array[@]}" "$myfont" ); ((display_index++)) + fi + fi + # [ "$gtkBackground" ] && mybg=$(echo -e "$labelcolor BG:$textcolor $gtkBackground"); out_array=( "${out_array[@]}" "$mybg" ); ((display_index++)) + fi + fi + elif [[ "$fake_distro" == "Cygwin" || "$fake_distro" == "Windows 10" ]]; then + if [[ "${display[@]}" =~ "res" && -n "$xResolution" ]]; then myres=$(echo -e "$labelcolor Resolution:${textcolor} $xResolution"); out_array=( "${out_array[@]}" "$myres" ); ((display_index++)); fi + if [[ "${display[@]}" =~ "de" ]]; then + if [[ "${DE}" != "Not Present" ]]; then + myde=$(echo -e "$labelcolor DE:$textcolor $DE"); out_array=( "${out_array[@]}" "$myde" ); ((display_index++)) + fi + fi + if [[ "${display[@]}" =~ "wm" ]]; then mywm=$(echo -e "$labelcolor WM:$textcolor $WM"); out_array=( "${out_array[@]}" "$mywm" ); ((display_index++)); fi + if [[ "${display[@]}" =~ "wmtheme" ]]; then + if [[ "${Win_theme}" == "Not Applicable" || "${Win_theme}" == "Not Found" ]]; then + : + else + mywmtheme=$(echo -e "$labelcolor WM Theme:$textcolor $Win_theme"); out_array=( "${out_array[@]}" "$mywmtheme" ); ((display_index++)) + fi + fi + elif [[ "$distro" == "Haiku" ]]; then + if [ -n "${xResolution}" ]; then + if [[ "${display[@]}" =~ "res" ]]; then myres=$(echo -e "$labelcolor Resolution:${textcolor} $xResolution"); out_array=( "${out_array[@]}" "$myres" ); ((display_index++)); fi + fi + fi + [[ "${fake_distro}" != "Cygwin" && "$fake_distro" != "Windows 10" ]] && if [[ "${display[@]}" =~ "disk" ]]; then mydisk=$(echo -e "$labelcolor Disk:$textcolor $diskusage"); out_array=( "${out_array[@]}" "$mydisk" ); ((display_index++)); fi + if [[ "${display[@]}" =~ "cpu" ]]; then mycpu=$(echo -e "$labelcolor CPU:$textcolor $cpu"); out_array=( "${out_array[@]}" "$mycpu" ); ((display_index++)); fi + if [[ "${display[@]}" =~ "gpu" ]] && [[ "$gpu" != "Not Found" ]]; then mygpu=$(echo -e "$labelcolor GPU:$textcolor $gpu"); out_array=( "${out_array[@]}" "$mygpu" ); ((display_index++)); fi + if [[ "${display[@]}" =~ "mem" ]]; then mymem=$(echo -e "$labelcolor RAM:$textcolor $mem"); out_array=( "${out_array[@]}" "$mymem" ); ((display_index++)); fi + fi + if [[ "$display_type" == "ASCII" ]]; then + asciiText + else + if [[ "${display[@]}" =~ "host" ]]; then echo -e " $myinfo"; fi + if [[ "${display[@]}" =~ "distro" ]]; then echo -e "$mydistro"; fi + if [[ "${display[@]}" =~ "kernel" ]]; then echo -e "$mykernel"; fi + if [[ "${distro}" == "Android" ]]; then + echo -e "$mydevice" + echo -e "$myrom" + echo -e "$mybaseband" + echo -e "$mykernel" + echo -e "$myuptime" + echo -e "$mycpu" + echo -e "$mymem" + else + if [[ "${display[@]}" =~ "uptime" ]]; then echo -e "$myuptime"; fi + if [[ "${display[@]}" =~ "pkgs" ]]; then echo -e "$mypkgs"; fi + if [[ "${display[@]}" =~ "shell" ]]; then echo -e "$myshell"; fi + if [[ "${display[@]}" =~ "res" ]]; then echo -e "$myres"; fi + if [[ "${display[@]}" =~ "de" ]]; then + if [[ "${DE}" != "Not Present" ]]; then echo -e "$myde"; fi + fi + if [[ "${display[@]}" =~ "wm" ]]; then + echo -e "$mywm" + if [[ "${Win_theme}" != "Not Applicable" && "${Win_theme}" != "Not Found" ]]; then + echo -e "$mywmtheme" + fi + fi + if [[ "${display[@]}" =~ "gtk" ]]; then + echo -e "$mygtk2" + echo -e "$mygtk3" + echo -e "$myicons" + echo -e "$myfont" + fi + if [[ "${display[@]}" =~ "disk" ]]; then echo -e "$mydisk"; fi + if [[ "${display[@]}" =~ "cpu" ]]; then echo -e "$mycpu"; fi + if [[ "${display[@]}" =~ "gpu" ]]; then echo -e "$mygpu"; fi + if [[ "${display[@]}" =~ "mem" ]]; then echo -e "$mymem"; fi + fi + fi +} + +################## +# Let's Do This! +################## + +if [[ -f "$HOME/.screenfetchOR" ]]; then + source $HOME/.screenfetchOR +fi + + +if [[ "$overrideDisplay" ]]; then + verboseOut "Found 'd' flag in syntax. Overriding display..." + OLDIFS=$IFS + IFS=';' + for i in ${overrideDisplay}; do + modchar="${i:0:1}" + if [[ "${modchar}" == "-" ]]; then + i=${i/${modchar}} + _OLDIFS=IFS + IFS=, + for n in $i; do + if [[ ! "${display[@]}" =~ "$n" ]]; then + echo "The var $n is not currently being displayed." + else + display=( "${display[@]/${n}}" ) + fi + done + IFS=$_OLDIFS + elif [[ "${modchar}" == "+" ]]; then + i=${i/${modchar}} + _OLDIFS=IFS + IFS=, + for n in $i; do + if [[ "${valid_display[@]}" =~ "$n" ]]; then + if [[ "${display[@]}" =~ "$n" ]]; then + echo "The $n var is already being displayed." + else + display+=($n) + fi + else + echo "The var $n is not a valid display var." + fi + done + IFS=$_OLDIFS + else + IFS=$OLDIFS + i="${i//,/ }" + display=( $i ) + fi + done + IFS=$OLDIFS +fi + +# Check for android +#if type -p getprop >/dev/null 2>&1; then +# distro="Android" +# detectmem +# detectuptime +# detectkernel +# detectdroid +# infoDisplay +# exit 0 +#fi + +for i in "${display[@]}"; do + if [[ ! "$i" == "" ]]; then + if [[ $i =~ wm ]]; then + ! [[ $WM ]] && detectwm; + ! [[ $Win_theme ]] && detectwmtheme; + else + if [[ "${display[*]}" =~ "$i" ]]; then + if [[ "$errorSuppress" == "1" ]]; then detect${i} 2>/dev/null + else + exec 3> >(stderrOut) + detect${i} 2>&3 + exec 3>&- + fi + fi + fi + fi +done + +infoDisplay +[ "$screenshot" == "1" ] && takeShot +[ "$exportTheme" == "1" ] && themeExport + +exit 0 \ No newline at end of file From de15951538f182b0734b2c432a69d0cdcf02e840 Mon Sep 17 00:00:00 2001 From: dmacias72 Date: Thu, 11 Feb 2016 00:24:15 -0700 Subject: [PATCH 3/9] move scripts to rc script --- .../etc/rc.d/rc.shellinaboxd | 126 ++++++++++++++++++ .../plugins/shellinabox-plugin/event/started | 5 - .../shellinabox-plugin/event/stopping_svcs | 3 - 3 files changed, 126 insertions(+), 8 deletions(-) create mode 100755 source/shellinabox-plugin/etc/rc.d/rc.shellinaboxd delete mode 100755 source/shellinabox-plugin/usr/local/emhttp/plugins/shellinabox-plugin/event/started delete mode 100755 source/shellinabox-plugin/usr/local/emhttp/plugins/shellinabox-plugin/event/stopping_svcs diff --git a/source/shellinabox-plugin/etc/rc.d/rc.shellinaboxd b/source/shellinabox-plugin/etc/rc.d/rc.shellinaboxd new file mode 100755 index 00000000..75d059bf --- /dev/null +++ b/source/shellinabox-plugin/etc/rc.d/rc.shellinaboxd @@ -0,0 +1,126 @@ +#!/bin/sh +# start/stop/shutdown/restart shellinabox daemon: + +PROG="shellinaboxd" +SHELLINABOXD="/usr/sbin/$PROG" +LOCKFILE="/var/lock/$PROG" +PIDFILE="/var/run/$PROG.pid" +PROFILE="/root/.bash_profile" +STYLES="/usr/local/emhttp/plugins/shellinabox-plugin/styles" +PLGPATH="/boot/config/plugins/shellinabox-plugin" +CONFIG="$PLGPATH/shellinabox-plugin.cfg" +USER_CSS="Color:+$STYLES/color.css,Monochrome:-$STYLES/monochrome.css;White:+$STYLES/white-on-black.css,Black:-$STYLES/black-on-white.css,Blue:-$STYLES/blue-on-black.css,Green:-$STYLES/green-on-black.css,Pink:-$STYLES/pink-on-black.css,Purple:-$STYLES/purple-on-black.css,Red:-$STYLES/red-on-black.css,Yellow:-$STYLES/yellow-on-black.css" + +# read our configuration +[ -e "$CONFIG" ] && source $CONFIG + +# add screenfetch to bash profile +if [ "$SCREEN" == "enable" ]; then + if ! grep "/usr/sbin/screenfetch" $PROFILE >/dev/null 2>&1 + #append command to file + then echo -e "\n/usr/sbin/screenfetch" >> $PROFILE + else + #uncomment command + sed -e '/\/usr\/sbin\/screenfetch/s/^#//g' -i $PROFILE + fi +else + #comment out command + sed -e '/\/usr\/sbin\/screenfetch/ s/^#*/#/' -i $PROFILE +fi + +# Start shellinaboxd: +shellinaboxd_start() { + # no-op if already running + if [[ "$SERVICE" == "enable" && ! -r "$PIDFILE" ]]; then + + SSL_CONFIG="" + [ $SSL == "disable" ] && SSL_CONFIG="--disable-ssl" + + echo "starting shellinaboxd..." + sleep 1 + nohup /usr/sbin/$PROG --user=$RUNAS --background=$PIDFILE --port=$PORT --cert=$PLGPATH --user-css=$USER_CSS $SSL_CONFIG > /dev/null 2>&1 | logger -t$PROG & + touch $LOCKFILE + TIMER=0 + while [ ! -e $PIDFILE ]; do + sleep 1 + let TIMER=$TIMER+1 + if [ $TIMER -gt 5 ]; then + echo -n "$PIDFILE not created" + break + fi + done + else + echo "shellinaboxd is running" + fi +} + +# Stop shellinaboxd: +shellinaboxd_stop() { + # no-op if not running + if [ -r "$PIDFILE" ]; then + echo "stopping shellinaboxd..." + + TIMER=0 + while `killall $PROG 2>/dev/null`; do + sleep 1 + TIMER=$((TIMER+1)) + if [ $TIMER -ge 30 ]; then + killall -9 $PROG + sleep 1 + break + fi + done + rm -f $LOCKFILE && rm -f $PIDFILE + else + echo "shellinaboxd is stopped" + fi +} + +# Restart shellinaboxd: +shellinaboxd_restart() { + shellinaboxd_stop + sleep 1 + shellinaboxd_start +} + +# Restore shellinaboxd: +shellinaboxd_restore() { + if [ "$BACKUP" == "enable" ]; then + # backup home directory + echo "restoring home directory..." + tar -zxf $PLGPATH/home_directory.tar.gz -p -C / > /dev/null 2>&1 + sleep 1 + fi + shellinaboxd_start +} + +# Shutdown shellinaboxd: +shellinaboxd_shutdown() { + if [ "$BACKUP" == "enable" ]; then + # backup home directory + echo "saving home directory..." + tar -zcf $PLGPATH/home_directory.tar.gz -p -C / root > /dev/null 2>&1 + sleep 1 + fi + shellinaboxd_stop +} + +case "$1" in +'start') + shellinaboxd_start + ;; +'stop') + shellinaboxd_stop + ;; +'shutdown') + shellinaboxd_shutdown + ;; +'restore') + shellinaboxd_restore + ;; +'restart') + shellinaboxd_restart + ;; +*) + echo "usage rc.shellinaboxd: start|stop|shutdown|restore|restart" +esac \ No newline at end of file diff --git a/source/shellinabox-plugin/usr/local/emhttp/plugins/shellinabox-plugin/event/started b/source/shellinabox-plugin/usr/local/emhttp/plugins/shellinabox-plugin/event/started deleted file mode 100755 index 112bbdac..00000000 --- a/source/shellinabox-plugin/usr/local/emhttp/plugins/shellinabox-plugin/event/started +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -source /boot/config/plugins/shellinabox-plugin/shellinabox-plugin.cfg -if [ $SERVICE = enable ]; then - /usr/local/emhttp/plugins/shellinabox-plugin/scripts/start -fi diff --git a/source/shellinabox-plugin/usr/local/emhttp/plugins/shellinabox-plugin/event/stopping_svcs b/source/shellinabox-plugin/usr/local/emhttp/plugins/shellinabox-plugin/event/stopping_svcs deleted file mode 100755 index 6972f86f..00000000 --- a/source/shellinabox-plugin/usr/local/emhttp/plugins/shellinabox-plugin/event/stopping_svcs +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -/usr/local/emhttp/plugins/shellinabox-plugin/scripts/stop - From ef80ad1a12a14664bd002e9cf6f94c8fba4392b5 Mon Sep 17 00:00:00 2001 From: dmacias72 Date: Thu, 11 Feb 2016 00:25:15 -0700 Subject: [PATCH 4/9] update package install script to add shutdown script --- source/shellinabox-plugin/install/doinst.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/source/shellinabox-plugin/install/doinst.sh b/source/shellinabox-plugin/install/doinst.sh index 1a248525..ed27a911 100644 --- a/source/shellinabox-plugin/install/doinst.sh +++ b/source/shellinabox-plugin/install/doinst.sh @@ -1 +1,14 @@ #!/bin/sh +RC_SCRIPT="/etc/rc.d/rc.shellinaboxd shutdown" +SD_RCFILE="/etc/rc.d/rc.local_shutdown" + +# Update file permissions of scripts +chmod +0755 /usr/local/emhttp/plugins/shellinabox-plugin/scripts/* \ + /etc/rc.d/rc.shellinaboxd \ + /usr/local/bin/screenfetch + +# add stop to shutdown script +if ! grep "$RC_SCRIPT" $SD_RCFILE >/dev/null 2>&1 + then echo -e "\n[ -x $RC_SCRIPT ] && $RC_SCRIPT" >> $SD_RCFILE +fi +[ ! -x $SD_RCFILE ] && chmod u+x $SD_RCFILE From 121d89e07663096a0e9b88587f21219142f23157 Mon Sep 17 00:00:00 2001 From: dmacias72 Date: Thu, 11 Feb 2016 00:26:06 -0700 Subject: [PATCH 5/9] add screenshot and backup --- plugins/shellinabox-plugin.plg | 103 +++++++++++------- plugins/shellinabox-plugin.xml | 9 +- .../shellinabox-plugin/Shellinabox.page | 79 ++++++++------ .../plugins/shellinabox-plugin/scripts/start | 33 +----- .../plugins/shellinabox-plugin/scripts/stop | 20 +--- 5 files changed, 119 insertions(+), 125 deletions(-) diff --git a/plugins/shellinabox-plugin.plg b/plugins/shellinabox-plugin.plg index 66bdccc0..e832fb0c 100755 --- a/plugins/shellinabox-plugin.plg +++ b/plugins/shellinabox-plugin.plg @@ -3,13 +3,13 @@ - + - - + + ]> @@ -20,6 +20,13 @@ This Plugin installs and controls shellinabox for unRaid 6.1 All dependencies a --> +###2016.02.10 +- remove array event scripts and move to rc script +- start and stop with system not array +- add: choice for command line screenshot +- add: choice to backup settings in root directory on shutdown +- add: backup restore on reboot e.g. mc settings, bash history +- add: selection of all users of group users for runas ###2016.01.07c - add option to disable SSL ###2016.01.07b @@ -33,7 +40,9 @@ This Plugin installs and controls shellinabox for unRaid 6.1 All dependencies a - default config file ###2016.01.06 - change package path to plugin directory -- fix Tool/Command Line page misspelled cfg file and defaulting to port 8088 instead of 4200 +- fix Tool/Command Line page +- fix misspelled cfg file +- fix default port 8088 to 4200 ###2015.12.30 - remove old plugin directory on install ###2015.12.21 @@ -64,19 +73,21 @@ This Plugin installs and controls shellinabox for unRaid 6.1 All dependencies a - + &pkgURL;/shellinabox-2.19-x86_64-1sl.txz 96f21406d18181f469e732795d2965e8 - + &pkgURL;/linux-pam-1.1.8-x86_64-1gds.txz f5d4e99dc0b65f4d6b3bacf479c9c6e2 - + - -&gitURL;/archive/&plgname;.txz + +&gitURL;/archive/&plgNAME;.txz - -&gitURL;/archive/&plgname;.md5 + +&gitURL;/archive/&plgNAME;.md5 -/usr/local/emhttp/plugins/&name;/scripts/stop -removepkg &plgpath;/*.txz + +/etc/rc.d/rc.shellinaboxd shutdown + +removepkg &plgPATH;/*.txz rm -rf &emhttp; -rm -f &plgpath;/*.txz -rm -f &plgpath;/*.md5 +rm -f &plgPATH;/*.txz \ + &plgPATH;/*.md5 \ + /etc/rc.d/rc.shellinaboxd echo "" echo "-----------------------------------------------------------" @@ -173,6 +190,8 @@ echo "" # This will check each entry in the config so nothing is missing, and if missing, sets to default CFGFILE=/boot/config/plugins/shellinabox-plugin/shellinabox-plugin.cfg [ ! `cat "$CFGFILE" | grep SERVICE` ] && echo "SERVICE=\"disable\"" >> "$CFGFILE" +[ ! `cat "$CFGFILE" | grep SCREEN` ] && echo "SCREEN=\"disable\"" >> "$CFGFILE" +[ ! `cat "$CFGFILE" | grep SSL` ] && echo "SSL=\"disable\"" >> "$CFGFILE" [ ! `cat "$CFGFILE" | grep IPADDR` ] && echo "IPADDR=\"disable\"" >> "$CFGFILE" [ ! `cat "$CFGFILE" | grep ^PORT` ] && echo "PORT=\"4200\"" >> "$CFGFILE" [ ! `cat "$CFGFILE" | grep RUNAS` ] && echo "RUNAS=\"nobody\"" >> "$CFGFILE" diff --git a/plugins/shellinabox-plugin.xml b/plugins/shellinabox-plugin.xml index ec8bc736..295303c4 100644 --- a/plugins/shellinabox-plugin.xml +++ b/plugins/shellinabox-plugin.xml @@ -11,8 +11,15 @@ Shell In A Box implements a web server that can export arbitrary command line to http://lime-technology.com/forum/index.php?topic=42683.0 https://raw.githubusercontent.com/dmacias72/unRAID-plugins/master/plugins/shellinabox-plugin.png -2016-01-07 +2016-02-10 +###2016.02.10 +- remove array event scripts and move to rc script +- start and stop with system not array +- add: choice for command line screenshot +- add: choice to backup settings in root directory on shutdown +- add: backup restore on reboot e.g. mc settings, bash history +- add: selection of all users of group users for runas ###2016.01.07c - add option to disable SSL ###2016.01.07b diff --git a/source/shellinabox-plugin/usr/local/emhttp/plugins/shellinabox-plugin/Shellinabox.page b/source/shellinabox-plugin/usr/local/emhttp/plugins/shellinabox-plugin/Shellinabox.page index c4e37dfc..409bbbd4 100644 --- a/source/shellinabox-plugin/usr/local/emhttp/plugins/shellinabox-plugin/Shellinabox.page +++ b/source/shellinabox-plugin/usr/local/emhttp/plugins/shellinabox-plugin/Shellinabox.page @@ -5,17 +5,21 @@ Title="Command Line" 0 && $shellinabox_cfg['PORT'] < 65535 ) ? $shellinabox_cfg['PORT'] : "4200"; -$shellinabox_cert = isset($shellinabox_cfg['CERT']) ? $shellinabox_cfg['CERT'] : "certificate.pem"; -$shellinabox_running = trim(shell_exec( "[ -f /proc/`cat /var/run/shellinaboxd.pid 2> /dev/null`/exe ] && echo 'yes' || echo 'no' 2> /dev/null" )); -$shellinabox_version = shell_exec( "/usr/sbin/shellinaboxd --version 2>&1 | grep ShellInABox | sed -e 's/^ShellInABox version //'" ); -$shellinabox_version = ($shellinabox_running == "yes") ? - "$shellinabox_version": - "$shellinabox_version"; +$shellinabox_running = trim(shell_exec( "[ -f /proc/`cat /var/run/shellinaboxd.pid 2> /dev/null`/exe ] && echo 1 || echo 0 2> /dev/null" )); +$shellinabox_version = shell_exec( "/usr/sbin/shellinaboxd --version 2>&1 | grep ShellInABox | sed -e 's/^ShellInABox version //;s/(.*//'" ); +$shellinabox_port_status = ($shellinabox_running) ? + "$shellinabox_port": + "$shellinabox_port"; +exec("awk -F':' '{ if ( $3 >= 1000 ) print $1}' /etc/passwd", $shellinabox_users); // get array of group users ?>
@@ -28,29 +32,43 @@ Enable Shellinabox Server : +Port (): +: + +Run as User: +: + > + Connect by IP Address: -: Enable SSL connection: -: -Port: -: - -Run as User: -: + + - > - +Enable Home Directory Backup: +: + + :
@@ -64,19 +82,21 @@ $(function(){ function resetDATA(form) { form.IPADDR.value = "disable"; form.SSL.value = "disable"; + form.SCREEN.value = "disable"; + form.BACKUP.value = "disable"; form.PORT.value = "4200"; form.RUNAS.value = "nobody"; form.USERS.value = "nobody"; } function checkRUNNING(form) { - if ("" == "yes") + if ("" == true) { - $(".stopped").prop("disabled", true); + $(".shellinabox-run").prop("disabled", true); form.btnApply.disabled = true; //form.btnCert.disabled = false; }else{ - $(".stopped").prop("disabled", false); + $(".shellinabox-run").prop("disabled", false); //form.btnCert.disabled = true; } @@ -89,7 +109,7 @@ function checkRUNNING(form) { } function checkUSER(form, currentUSER) { - if (form.USERS.selectedIndex < 1 ) { + if (form.USERS.value != "other" ) { form.RUNAS.value = form.USERS.options[form.USERS.selectedIndex].value; form.RUNAS.type = "hidden"; } @@ -104,20 +124,17 @@ function checkUSER(form, currentUSER) { } function verifyDATA(form) { - if (isNumber(form.PORT.value)){ - if (form.PORT.value < 0 || form.PORT.value > 65535){ + if (!isNumber(form.PORT.value) || form.PORT.value < 0 || form.PORT.value > 65535){ form.PORT.value = "4200"; - } - } else { - form.PORT.value = "4200"; } - if (form.RUNAS.value == null || form.RUNAS.value == "" || form.RUNAS.value == "root" ){ + if (form.RUNAS.value == null || form.RUNAS.value == ""){ form.RUNAS.value = "nobody"; $shellinabox_runas = "nobody"; } form.SERVICE.value = form.SERVICE.value.replace(/ /g,"_"); form.IPADDR.value = form.IPADDR.value.replace(/ /g,"_"); form.SSL.value = form.SSL.value.replace(/ /g,"_"); + form.SCREEN.value = form.SCREEN.value.replace(/ /g,"_"); form.PORT.value = form.PORT.value.replace(/ /g,"_"); form.RUNAS.value = form.RUNAS.value.replace(/ /g,"_"); } diff --git a/source/shellinabox-plugin/usr/local/emhttp/plugins/shellinabox-plugin/scripts/start b/source/shellinabox-plugin/usr/local/emhttp/plugins/shellinabox-plugin/scripts/start index ef2ecbed..c7299a78 100755 --- a/source/shellinabox-plugin/usr/local/emhttp/plugins/shellinabox-plugin/scripts/start +++ b/source/shellinabox-plugin/usr/local/emhttp/plugins/shellinabox-plugin/scripts/start @@ -1,33 +1,2 @@ #!/bin/sh -# read our configuration -source /boot/config/plugins/shellinabox-plugin/shellinabox-plugin.cfg - -prog="shellinaboxd" -SHELLINABOXD="/usr/sbin/$prog" -LOCKFILE="/var/lock/$prog" -PIDFILE="/var/run/$prog.pid" -STYLES="/usr/local/emhttp/plugins/shellinabox-plugin/styles" -CONFIG="/boot/config/plugins/shellinabox-plugin" -USER_CSS="Color:+$STYLES/color.css,Monochrome:-$STYLES/monochrome.css;White:+$STYLES/white-on-black.css,Black:-$STYLES/black-on-white.css,Blue:-$STYLES/blue-on-black.css,Green:-$STYLES/green-on-black.css,Pink:-$STYLES/pink-on-black.css,Purple:-$STYLES/purple-on-black.css,Red:-$STYLES/red-on-black.css,Yellow:-$STYLES/yellow-on-black.css" - -# no-op if already running -if [ ! -r $PIDFILE ]; then - - SSL_CONFIG="" - if [ $SSL == "disable" ]; then - SSL_CONFIG="--disable-ssl" - fi - - sleep 1 - nohup /usr/sbin/$prog --user=$RUNAS --background=$PIDFILE --port=$PORT --cert=$CONFIG --user-css=$USER_CSS $SSL_CONFIG > /dev/null 2>&1 | logger -tshellinaboxd & - touch $LOCKFILE - TIMER=0 - while [ ! -e $PIDFILE ]; do - sleep 1 - let TIMER=$TIMER+1 - if [ $TIMER -gt 5 ]; then - echo -n "$PIDFILE not created" - break - fi - done -fi +/etc/rc.d/rc.shellinaboxd start diff --git a/source/shellinabox-plugin/usr/local/emhttp/plugins/shellinabox-plugin/scripts/stop b/source/shellinabox-plugin/usr/local/emhttp/plugins/shellinabox-plugin/scripts/stop index 3abb73aa..27b35b70 100755 --- a/source/shellinabox-plugin/usr/local/emhttp/plugins/shellinabox-plugin/scripts/stop +++ b/source/shellinabox-plugin/usr/local/emhttp/plugins/shellinabox-plugin/scripts/stop @@ -1,20 +1,2 @@ #!/bin/sh -prog="shellinaboxd" -SHELLINABOXD="/usr/sbin/$prog" -LOCKFILE="/var/lock/$prog" -PIDFILE="/var/run/$prog.pid" - -# no-op if not running -if [ -r $PIDFILE ]; then -TIMER=0 -while `killall $prog 2>/dev/null`; do - sleep 1 - TIMER=$((TIMER+1)) - if [ $TIMER -ge 30 ]; then - killall -9 $prog - sleep 1 - break - fi -done -rm -f $LOCKFILE && rm -f $PIDFILE -fi +/etc/rc.d/rc.shellinaboxd stop From d645ea7e9be532e9b86e7079d489f7a7a8573459 Mon Sep 17 00:00:00 2001 From: dmacias72 Date: Thu, 11 Feb 2016 00:58:55 -0700 Subject: [PATCH 6/9] fix shutdown not saving, chmod error --- plugins/shellinabox-plugin.plg | 5 ++++- plugins/shellinabox-plugin.xml | 5 ++++- source/shellinabox-plugin/install/doinst.sh | 6 +++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/plugins/shellinabox-plugin.plg b/plugins/shellinabox-plugin.plg index e832fb0c..14cefb1e 100755 --- a/plugins/shellinabox-plugin.plg +++ b/plugins/shellinabox-plugin.plg @@ -3,7 +3,7 @@ - + @@ -20,6 +20,9 @@ This Plugin installs and controls shellinabox for unRaid 6.1 All dependencies a --> +###2016.02.11 +- fix: chmod error +- fix: shutdown not saving ###2016.02.10 - remove array event scripts and move to rc script - start and stop with system not array diff --git a/plugins/shellinabox-plugin.xml b/plugins/shellinabox-plugin.xml index 295303c4..0d8eed10 100644 --- a/plugins/shellinabox-plugin.xml +++ b/plugins/shellinabox-plugin.xml @@ -11,8 +11,11 @@ Shell In A Box implements a web server that can export arbitrary command line to http://lime-technology.com/forum/index.php?topic=42683.0 https://raw.githubusercontent.com/dmacias72/unRAID-plugins/master/plugins/shellinabox-plugin.png -2016-02-10 +2016-02-11 +###2016.02.11 +- fix: chmod error +- fix: shutdown not saving ###2016.02.10 - remove array event scripts and move to rc script - start and stop with system not array diff --git a/source/shellinabox-plugin/install/doinst.sh b/source/shellinabox-plugin/install/doinst.sh index ed27a911..8b4b7e3b 100644 --- a/source/shellinabox-plugin/install/doinst.sh +++ b/source/shellinabox-plugin/install/doinst.sh @@ -1,14 +1,14 @@ #!/bin/sh -RC_SCRIPT="/etc/rc.d/rc.shellinaboxd shutdown" +RC_SCRIPT="/etc/rc.d/rc.shellinaboxd" SD_RCFILE="/etc/rc.d/rc.local_shutdown" # Update file permissions of scripts chmod +0755 /usr/local/emhttp/plugins/shellinabox-plugin/scripts/* \ /etc/rc.d/rc.shellinaboxd \ - /usr/local/bin/screenfetch + /usr/sbin/screenfetch # add stop to shutdown script if ! grep "$RC_SCRIPT" $SD_RCFILE >/dev/null 2>&1 - then echo -e "\n[ -x $RC_SCRIPT ] && $RC_SCRIPT" >> $SD_RCFILE + then echo -e "\n[ -x $RC_SCRIPT ] && $RC_SCRIPT shutdown" >> $SD_RCFILE fi [ ! -x $SD_RCFILE ] && chmod u+x $SD_RCFILE From e81ecdcc4b5b46f02e856c0bcab6f3880e0ea6a3 Mon Sep 17 00:00:00 2001 From: dmacias72 Date: Thu, 11 Feb 2016 01:23:47 -0700 Subject: [PATCH 7/9] shellinabox screenshots From 1828f9eba27273c805d8b737096777fa2b8f4cfa Mon Sep 17 00:00:00 2001 From: dmacias72 Date: Thu, 11 Feb 2016 01:26:56 -0700 Subject: [PATCH 8/9] update shellinabox screenshot From 9589e693cd1600e6c3df375ad5af7ab0527af1d2 Mon Sep 17 00:00:00 2001 From: dmacias72 Date: Thu, 11 Feb 2016 01:50:55 -0700 Subject: [PATCH 9/9] fix screenfetch error if emhttp/var.ini were not ready --- plugins/shellinabox-plugin.plg | 4 +++- plugins/shellinabox-plugin.xml | 2 ++ source/shellinabox-plugin/usr/sbin/screenfetch | 13 +++++++++++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/plugins/shellinabox-plugin.plg b/plugins/shellinabox-plugin.plg index 14cefb1e..1f1fb79d 100755 --- a/plugins/shellinabox-plugin.plg +++ b/plugins/shellinabox-plugin.plg @@ -3,7 +3,7 @@ - + @@ -20,6 +20,8 @@ This Plugin installs and controls shellinabox for unRaid 6.1 All dependencies a --> +###2016.02.11a +- fix screenfetch error if emhttp/var.ini were not ready ###2016.02.11 - fix: chmod error - fix: shutdown not saving diff --git a/plugins/shellinabox-plugin.xml b/plugins/shellinabox-plugin.xml index 0d8eed10..cad32e54 100644 --- a/plugins/shellinabox-plugin.xml +++ b/plugins/shellinabox-plugin.xml @@ -13,6 +13,8 @@ Shell In A Box implements a web server that can export arbitrary command line to https://raw.githubusercontent.com/dmacias72/unRAID-plugins/master/plugins/shellinabox-plugin.png 2016-02-11 +###2016.02.11a +- fix screenfetch error if emhttp/var.ini were not ready ###2016.02.11 - fix: chmod error - fix: shutdown not saving diff --git a/source/shellinabox-plugin/usr/sbin/screenfetch b/source/shellinabox-plugin/usr/sbin/screenfetch index 12ade5da..a71673d7 100755 --- a/source/shellinabox-plugin/usr/sbin/screenfetch +++ b/source/shellinabox-plugin/usr/sbin/screenfetch @@ -4129,8 +4129,17 @@ infoDisplay () { # Info Variable Setting # ######################### if [[ "$distro" == "unRAID" ]]; then - source /var/local/emhttp/var.ini - fi + if [ -e /var/local/emhttp/var.ini ]; then + source /var/local/emhttp/var.ini + else + fsState="n/a" + mdNumDisks="n/a" + mdResync="0" + mdResyncPos="0" + cacheNumDevices="n/a" + fsNumUnmountable="n/a" + fi + fi if [[ "${distro}" == "Android" ]]; then myhostname=$(echo -e "${labelcolor}${hostname}"); out_array=( "${out_array[@]}" "$myhostname" ) mydistro=$(echo -e "$labelcolor OS:$textcolor $distro $distro_ver"); out_array=( "${out_array[@]}" "$mydistro" )