#!/bin/bash

UNDERLINE="\033[4m"
RED="\033[1;31m"
YELLOW="\033[1;33m"
BLUE="\033[1;34m"
WHITE="\033[1;37m"
RESET="\033[0m"

USER=$(whoami)
HOSTNAME=$(hostname)
OS=$(
    if [ -f /etc/os-release ]; then
        PRETTY_NAME=$(grep -E "^PRETTY_NAME=" /etc/os-release | cut -d= -f2 | sed 's/^"//;s/"$//')
        if [ -n "$PRETTY_NAME" ]; then
            echo "$PRETTY_NAME"
        else
            NAME=$(grep -E "^NAME=" /etc/os-release | cut -d= -f2 | sed 's/^"//;s/"$//')
            if [ -n "$NAME" ]; then
                echo "$NAME"
            else
                echo "N/A"
            fi
        fi
    else
        echo "N/A"
    fi
)
KERNEL=$(uname -r)
UPTIME=$(awk '{ 
    days = int($1 / 86400); 
    hours = int(($1 % 86400) / 3600); 
    minutes = int(($1 % 3600) / 60); 
    seconds = int($1 % 60);

    if(days > 0) printf "%dd ", days;
    if(hours > 0 || days > 0) printf "%dh ", hours;
    if(minutes > 0 || hours > 0 || days > 0) printf "%dm ", minutes;
    printf "%ds\n", seconds
}' /proc/uptime)
RAM_USE=$(awk '/Active:/ {printf "%d MB", $2 / 1024}' /proc/meminfo || echo "N/A")
RAM_MAX=$(awk '/MemTotal:/ {printf "%d MB", $2 / 1024}' /proc/meminfo)
WM=$(ps -e | grep -E -o '2bwm|9wm|awesome|berry|blackbox|bspwm|cinnamon|compiz|cwm|dk|dwm|echinus|exwm|fluxbox|flwm|frankenwm|gala|herbstluftwm|i3|icewm|jwm|kwin|larswm|leftwm|lwm|marco|metacity|mlvwm|muffin|mutter|notion|openbox|openmotif|pawm|pekwm|qtile|ratpoison|sawfish|sowm|spectrwm|stumpwm|sway|tinywm|twm|ukwm|windowmaker|windwm|wingo|wm2|worm|xfwm4|xmonad|zwm' | { read wm || wm="N/A"; echo "$wm"; })
SERVER=${XDG_SESSION_TYPE:-"tty"}

BEE=(
    "           "
    "     ${WHITE}__${YELLOW}    "
    "    ${WHITE}// \\\\${YELLOW}   "
    "    ${WHITE}\\\\\_/${YELLOW} / "
    "  --(||)(${WHITE}'${YELLOW})"
    "     '''   "
    "           "
)

INFO=(
    "${UNDERLINE}${BLUE}${USER}${RESET}@${UNDERLINE}${BLUE}${HOSTNAME}${RESET}"
    "${RED}OS:${RESET} ${OS}"
    "${RED}Kernel:${RESET} ${KERNEL}"
    "${RED}Uptime:${RESET} ${UPTIME}"
    "${RED}RAM:${RESET} ${RAM_USE} / ${RAM_MAX}"
    "${RED}Window Manager:${RESET} ${WM}"
    "${RED}Server:${RESET} ${SERVER}"
)

for i in "${!BEE[@]}"; do
    printf "%b\t%b\n" "${YELLOW}${BEE[i]}${RESET}" "${INFO[i]}"
done