#!/bin/bash
#
#    mb-fetch: a little eye candy + system information for Mabox
#    Copyright (C) 2022  Daniel Napora  <napcok@gmail.com>
wmctrl -k on
sleep 0.1
. $HOME/.config/mabox/mabox.conf

case $LANG in
    pl*)
    DAYS_AGO="dni temu"
    ;;
    *)
    DAYS_AGO="days ago"
    ;;
esac


jgmenu_theme=${jgmenu_theme:-obtheme}

case $jgmenu_theme in
    default) 
    export color_norm_fg="#FFFFFF "
    ;;
    obtheme) 
        export color_title_fg="#FFFFFF "
        ob_file=$HOME/.config/openbox/rc.xml
        [[ -f $ob_file ]] && wm_theme=$(awk '/<theme>/ {while (getline n) {if (match(n, /<name>/)){l=n; exit}}} END {split(l, a, "[<>]"); print a[3]}' "$ob_file")
        while read -r a b c 
		do
			[[ -n "$a" && "$a" != [[:blank:]#]* ]] && export "$a$b$c"
		done <  $HOME/.config/mabox/jgobthemes/$wm_theme.colorrc
    ;;
    *) 
    export color_norm_fg="#FFFFFF "
    while read -r a b c 
		do
			[[ -n "$a" && "$a" != [[:blank:]#]* ]] && export "$a$b$c"
		done <  $HOME/.config/mabox/jgobthemes/$jgmenu_theme.colorrc
    ;;
esac

menu_font_size=${menu_font_size:-9}
menu_font_family=${menu_font_family:-Noto Sans Medium}
jgmenu_font="${menu_font_family} ${menu_font_size}"

#echo "${menu_font_family} ${menu_font_size}"

[ $(pidof picom) ] && RADIUS="12"

OSNAME=$(lsb_release -d | awk '{print $2}')
OSVERSION=$(lsb_release -r | awk '{print $2}')
OSCODE=$(lsb_release -c | awk '{print $2}')

mkconfigfile() {
cat <<EOF > ${CONFIG_FILE}
position_mode		= ${POSITION_MODE:-fixed}
csv_cmd             = lx
stay_alive			= 0
hide_back_items		= ${HIDE_BACK_ITEMS:-0}
terminal_exec 		= terminator
terminal_args 		= -e
tabs 				= ${TABS:-220}
menu_margin_x 		= 00
menu_margin_y 		= 120
menu_width 			= $JGWIDTH
menu_height_min 	= ${MENU_HEIGHT_MIN:-0}
menu_height_max		= ${MENU_HEIGHT_MAX:-0}
menu_padding_top 	= ${MENU_PADDING_TOP:-70}
menu_padding_right 	= ${MENU_PADDING_RIGHT:-2}
menu_padding_bottom = ${MENU_PADDING_BOTTOM:-0}
menu_padding_left	= ${MENU_PADDING_LEFT:-2}
menu_radius 		= ${MENU_RADIUS:-0}
menu_valign 		= ${MENU_VALIGN:-top}
menu_halign 		= ${MENU_HALIGN:-left}

item_height 		= ${jgmenu_item_height:-20}
item_halign 		= ${ITEM_HALIGN:-left}
item_padding		= 4
item_margin_y		= ${item_margin_y:-3}
item_radius			= ${item_radius:-2}
item_border			= ${item_border:-0}
arrow_string		= ${ARROW_STRING:-⮞}

columns				= ${COLUMNS:-1}

color_menu_bg		= ${color_menu_bg:-#222222 80}
color_menu_border 	= ${color_menu_border:-#2f9b85 100}
color_norm_bg		= ${color_norm_bg:-#000000 0}
color_norm_fg 		= ${color_norm_fg:-#CCCCCC 100}
color_sel_bg 		= ${color_sel_bg:-#169f6f 60}
color_sel_fg 		= ${color_sel_fg:-#f8f8f8 100}
color_sel_border 	= ${color_sel_border:-#504e65 100}
color_sep_fg 		= ${color_sep_fg:-#4D4D4D 100}
color_sep_bg 		= ${color_sep_bg:-#262626 100}
color_title_fg		= ${color_title_fg:-#4D4D4D 100}
color_title_border	= ${color_title_border:-#169f6f 100}
color_title_bg		= ${color_title_bg:-#262626 100}
color_scroll_ind 	= ${COLOR_SCROLL_IND:-#504e65 100}

sep_markup 			= weight="bold" foreground="${color_title_fg% *}"
sep_height			= ${sep_height:-5}
font 				= ${jgmenu_font:-Noto Sans Medium 9}
icon_size 			= ${jgmenu_icon_size:-16}
icon_theme			= ${jgmenu_icon_theme:-Numix-Square}
EOF

unset font
}

# Get wallpaper palette
WALLPALDIR="$HOME/.cache/colorizer/palettes"
mkdir -p "$WALLPALDIR"
read WALLPATH<<< $(grep file "$HOME"/.config/nitrogen/bg-saved.cfg | cut -d'=' -f2)

NAME=${WALLPATH////_}
if [[ "${NAME}" =~ ^_home_.* ]]; then
n=${#HOME}
((n++))
NAME=${NAME:${n}}
fi


if [ ! -f "$WALLPALDIR/$NAME.clr" ]; then
convert ${WALLPATH} -resize 25% -colors 16 -unique-colors txt:- |grep -v '^#'| awk '{print substr($3,1,7)}' |pastel sort-by brightness |pastel format hex > "$WALLPALDIR/$NAME.clr"
fi
mapfile -t w < "$WALLPALDIR/$NAME.clr"


fetch(){
CONFIG_FILE=$(mktemp)
MENU_ITEMS=$(mktemp)
trap "rm -f ${CONFIG_FILE} ${MENU_ITEMS};wmctrl -k off" EXIT
[ $jgmenu_use_icons == false ] && jgmenu_icon_size=0

 # system uptime
UPT="$(uptime -p)"
UPT="${UPT/up /}"
UPT="${UPT/ day?/d}"
UPT="${UPT/ hour?/h}"
UPT="${UPT/ minute?/m}"
# install date
if [[ -e /var/log/pacman.log ]]; then
        INST="$(sed 1q /var/log/pacman.log)"
        INST="${INST/ */}"
        INST="${INST/T*/}"
        INST="${INST/\[/}"
fi
# Days ago
TODAY=$(date +%F)
let DIFF=($(date +%s -d ${TODAY})-$(date +%s -d ${INST}))/86400
[[ "$DIFF" > "1" ]] && DAGO="(${DIFF} ${DAYS_AGO})" || DAGO=""


PKGS=$(pacman -Qq 2>/dev/null | wc -l)
# kernel version
KERN="${KERN:-$(uname -sr | awk '{print $2}')}"
KERN="${KERN/-*/}"
KERN="${KERN/linux/}"
KERN="${KERN,,}"

CPU=$(awk -F '\\s*: | @' \ '/model name|Hardware|Processor|^cpu model|chip type|^cpu type/ { cpu=$2; if ($1 == "Hardware") exit } END { print cpu }' /proc/cpuinfo)

RESOLUTION=$(xdpyinfo | awk '/^ +dimensions/ {print $2}')
SCR_WIDTH=$(echo $RESOLUTION |  cut -d 'x' -f1)
SCR_HEIGHT=$(echo $RESOLUTION |  cut -d 'x' -f2)

# Global padding, not "menu" one
#G_PADD=20
G_PADD=${jgtools_padding:-20}

JGWIDTH=$(($SCR_WIDTH/4+$SCR_WIDTH/5+$G_PADD*2))
T_WIDTH=$(($SCR_WIDTH/4))
T_HEIGHT=$(($SCR_HEIGHT/4))

MENU_HEIGHT_MIN=$(($SCR_HEIGHT/4+G_PADD*2))
MENU_PADDING_LEFT=$(($SCR_WIDTH / 4 + $G_PADD*2))
MENU_PADDING_RIGHT=$G_PADD
#echo $JGWIDTH
#echo $T_WIDTH
MENU_PADDING_TOP=$((G_PADD+80))
MENU_HALIGN="center"
MENU_VALIGN="bottom"
TABS="200"
jgmenu_item_height=20
jgmenu_icon_size=0
#jgmenu_font='Noto Sans Medium 10'
MENU_RADIUS=${RADIUS:-0}

THUMB="$(DISPLAY=:0 scrot -t ${T_WIDTH}x${T_HEIGHT} -o $HOME/.config/mabox/jgfetch.png -e 'echo $m')"

 # colors 
    n=0
    m=0
    X=$((G_PADD + 12))
    Y=$((G_PADD + 89))
    for i in "${w[@]}"
    do
    if [[ "$n" -lt "12" ]];then
    dots+=("@rect,,$((X + 25*n)),$((Y)),22,22,1,left,top,#FFFFFF 60,${i} 100,")
    else
    dots+=("@rect,,$((X + 25*m)),$((Y+24)),22,22,1,left,top,#FFFFFF 80,${i} 100,")
    ((m=m+1))
    fi
    ((n=n+1))

    done


mkconfigfile

cat <<EOF > ${MENU_ITEMS}
@icon,,${G_PADD},${G_PADD},${T_WIDTH},${T_HEIGHT},4,left,top,,,$THUMB
@rect,,$((G_PADD+12)),$((G_PADD + 40)),$((T_WIDTH-170)),46,2,left,top,#ffffff 0,#222222 80,
@text,,$((G_PADD+16)),$((G_PADD + 46)),200,20,4,left,top,#ffffff,#ffffff,<span size='10400' font_family='Ubuntu'><b>$OSNAME</b> Linux <b>$OSVERSION</b> <i>$OSCODE</i></span>
@text,,$((G_PADD+16)),$((G_PADD + 66)),300,20,4,left,top,#999999,,"""<small>up:${UPT}</small>"""
@text,,$((G_PADD+116)),$((G_PADD + 66)),300,20,4,left,top,#bbbbbb,,"""<small>installed: <i>${INST}</i> ${DAGO}</small>"""
$(printf '%s\n' "${dots[@]}")
@icon,,$((JGWIDTH-G_PADD-96)),${G_PADD},96,96,4,left,top,,,/usr/share/icons/hicolor/128x128/apps/mbcc.png
@text,,$((G_PADD+T_WIDTH + 24)),32,340,20,4,left,top,${color_norm_fg},,"""<i>Your fast, lightweight and functional</i>"""
@text,,$((G_PADD+T_WIDTH + 24)),52,340,20,4,left,top,${color_norm_fg},,"""<i>                        Linux Desktop</i>"""
<big></big>   Kernel:	 <b>$KERN</b>,manjaro-settings-manager -m msm_kernel
<big></big>   Installed packages:	 <b>$PKGS</b>,^root(pkgs)
<big>󰍹</big>   Resolution:	 <b>$RESOLUTION</b>,arandr
<big>󰻠</big>   CPU: ${CPU}
<big>󱀤</big>   GPU:
<big>󰍛</big>   Memory:
<big>󱎌</big>   New to Mabox? Take a tour...,^root(tools)
<big></big>   Mabox Linux online,^root(www)

^tag(pkgs)
^sep(Installed Packages: $PKGS)
Check updates Pamac,pamac-manager --updates
Check updates CLI,^term(yay -Syyu;read -p "FINISHED")
⮜⮜⮜,^back()

^tag(tools)
^sep(Learn Mabox)
Mabox Tour <i>(planned)</i>,mb-fetch
Read the fine Manual (online),xdg-open https://manual.maboxlinux.org
^sep(Mabox tools)
Mabox Control Center,mcc


⮜⮜⮜,^back()

^tag(www)
^sep(Mabox Linux online)
  Website,xdg-open https://maboxlinux.org
  Community Forum,xdg-open https://forum.maboxlinux.org
  Manual,xdg-open https://manual.maboxlinux.org
<span color='red'></span>  Donate,xdg-open https://ko-fi.com/maboxlinux
^sep()
  Mabox on Distrowatch,xdg-open https://distrowatch.com/table.php?distribution=mabox

Social Media,^root(social)
⮜⮜⮜,^back()

^tag(social)
^sep(Social Media)
  Telegram Group,xdg-open https://old.reddit.com/r/MaboxLinux/
  Reddit,xdg-open https://old.reddit.com/r/MaboxLinux/
  Youtube,xgd-open https://www.youtube.com/c/MaboxLinux
  Odysee,xdg-open https://odysee.com/@mabox-linux:8
  Facebook,xgd-open https://facebook.com/maboxlinux/
  Twitter,xgd-open https://twitter.com/MaboxLinux/

⮜⮜⮜,^back(www)

EOF

jgmenu --config-file=${CONFIG_FILE} --csv-file=${MENU_ITEMS} 2>/dev/null
}

fetch

exit 0
