#!/bin/sh

# Maintenance variables
FREETUBELINK="https://github.com/FreeTubeApp/FreeTube/releases/download/v0.24.0-beta/freetube-0.24.0-beta.amd64.rpm"
# DNS servers
CLOUDFLARE="servers=1.1.1.1#cloudflare-dns.com,1.0.0.1#cloudflare-dns.com"
CONTROLD="servers=76.76.2.0,76.76.10.0"
GCORE="servers=95.85.95.85,2.56.220.2"
GOOGLE="servers=8.8.8.8,8.8.4.4"
NEXTDNS="servers=45.90.28.0,45.90.28.255"
OPENDNS="servers=208.67.222.222,208.67.220.220,208.67.222.220"
OPENNIC="servers=216.87.84.211,23.90.4.6,216.87.84.211"
QUAD9="servers=9.9.9.9#dns.quad9.net,9.9.9.11#dns.quad9.net"
VERISIGN="servers=64.6.64.6,64.6.65.6"
YANDEX="servers=77.88.8.8#common.dot.dns.yandex.net,77.88.8.1#common.dot.dns.yandex.net"


# labnag colors
LABNAGTHEME='--details-border-size 0 \
--message-padding 6 \
--button-padding 3 \
--button-gap 3 \
--button-border-size 1 \
--background-color 035b00 \
--button-background-color 012900 \
--button-border-color 06ac00 \
--border-bottom-color 011d00 \
--details-background-color 011d00'

# CPU section
cpu_gov() {
echo "$(cpupower frequency-info |grep governor |sed /available/d |sed s/.*governor// |sed s/may.*//)" \
 | labnag -f Mono -t 0 \
-l -L " Current Governor " \
-k on-demand -y top \
-m " Choose CPU Governor: " \
-Z " Performance " "run0 cpupower  frequency-set -g performance  && zeuspanel cpu_menu" \
-Z " Powersave " "run0 cpupower  frequency-set -g powersave  && zeuspanel cpu_menu" \
-Z " Schedutil " "run0 cpupower  frequency-set -g schedutil  && zeuspanel cpu_menu" \
-Z " X " "zeuspanel cpu_menu" \
$LABNAGTHEME
}

cpu_amdpstate() {
labnag -f Mono -t 0 \
-k on-demand \
-m " Choose Pstate Driver: " \
-Z " Active " "run0 cpupower set -m active && zeuspanel cpu_menu" \
-Z " Guided " "run0 cpupower set -m guided && zeuspanel cpu_menu" \
-Z " Passive " "run0 cpupower set -m passive && zeuspanel cpu_menu" \
-Z " EPP Hint (Active) " "zeuspanel cpu_epp " \
-Z " X " "zeuspanel cpu_menu" \
$LABNAGTHEME
}

cpu_epp() {
labnag -f Mono -t 0 \
-k on-demand \
-m " Choose EPP Hint: " \
-Z " Performance " "run0 cpupower set -e performance && zeuspanel cpu_menu" \
-Z " Balance Perf " "run0 cpupower set -e balance_performance && zeuspanel cpu_menu" \
-Z " Balance Power " "run0 cpupower set -e balance_power && zeuspanel cpu_menu" \
-Z " Powersave " "run0 cpupower set -e power && zeuspanel cpu_menu" \
-Z " X " "zeuspanel cpu_menu"  \
$LABNAGTHEME
}

cpu_turbo() {
echo "$(cpupower frequency-info |grep Active:)" \
 | labnag -f Mono -t 0 \
-l -L " Current Status " \
-k on-demand -y top \
-m " Turbo Boost: " \
-Z " On " "run0 cpupower set -t 1  && zeuspanel cpu_menu" \
-Z " Off " "run0 cpupower set -t 0  && zeuspanel cpu_menu" \
-Z " X " "zeuspanel cpu_menu" \
$LABNAGTHEME
}

cpu_menu() {
echo "$(cpupower frequency-info)" \
| labnag -f Mono -t 0 \
-l -L " CPU Info " \
-k on-demand \
-m " Choose: " \
-Z " AMD Pstate " "zeuspanel cpu_amdpstate" \
-Z " Governor " "zeuspanel cpu_gov" \
-Z " Turbo " "zeuspanel cpu_turbo" \
-Z " X "  \
$LABNAGTHEME
}

# network section
net_dns() {
echo "$(fastfetch --logo none -s dns)" \
|labnag -f Mono -t 0 \
-k on-demand \
-l -L " Current DNS " \
-m "Select DNS" \
-Z " Cloudflare " "run0 sh -c 'echo "[global-dns-domain-*]" > /tmp/dns.conf && echo $CLOUDFLARE >> /tmp/dns.conf && mv /tmp/dns.conf /etc/NetworkManager/conf.d/ && nmcli general reload'" \
-Z " Control D " "run0 sh -c  'echo "[global-dns-domain-*]" > /tmp/dns.conf && echo $CONTROLD >> /tmp/dns.conf && mv /tmp/dns.conf /etc/NetworkManager/conf.d/ && nmcli general reload'" \
-Z " G-Core " "run0 sh -c  'echo "[global-dns-domain-*]" > /tmp/dns.conf && echo $GCORE >> /tmp/dns.conf && mv /tmp/dns.conf /etc/NetworkManager/conf.d/ && nmcli general reload'" \
-Z " Google " "run0 sh -c  'echo "[global-dns-domain-*]" > /tmp/dns.conf && echo $GOOGLE  >> /tmp/dns.conf && mv /tmp/dns.conf /etc/NetworkManager/conf.d/ && nmcli general reload'" \
-Z " NextDNS " "run0 sh -c  'echo "[global-dns-domain-*]" > /tmp/dns.conf && echo $NEXTDNS >> /tmp/dns.conf && mv /tmp/dns.conf /etc/NetworkManager/conf.d/ && nmcli general reload'" \
-Z " OpenDNS " "run0 sh -c  'echo "[global-dns-domain-*]" > /tmp/dns.conf && echo $OPENDNS >> /tmp/dns.conf && mv /tmp/dns.conf /etc/NetworkManager/conf.d/ && nmcli general reload'" \
-Z " OpenNIC " "run0 sh -c  'echo "[global-dns-domain-*]" > /tmp/dns.conf && echo $OPENNIC >> /tmp/dns.conf && mv /tmp/dns.conf /etc/NetworkManager/conf.d/ && nmcli general reload'" \
-Z " Quad9 " "run0 sh -c  'echo "[global-dns-domain-*]" > /tmp/dns.conf && echo $QUAD9 >> /tmp/dns.conf && mv /tmp/dns.conf /etc/NetworkManager/conf.d/ && nmcli general reload'" \
-Z " Verisign " "run0 sh -c  'echo "[global-dns-domain-*]" > /tmp/dns.conf && echo $VERISIGN >> /tmp/dns.conf && mv /tmp/dns.conf /etc/NetworkManager/conf.d/ && nmcli general reload'" \
-Z " Yandex " "run0 sh -c  'echo "[global-dns-domain-*]" > /tmp/dns.conf && echo $YANDEX >> /tmp/dns.conf && mv /tmp/dns.conf /etc/NetworkManager/conf.d/ && nmcli general reload'" \
-Z " None " "run0 sh -c 'rm -f /etc/NetworkManager/conf.d/dns.conf && nmcli general reload'" \
-Z " X " \
$LABNAGTHEME
}

net_ipv6() {
echo "Disabled = $(cat /proc/sys/net/ipv6/conf/all/disable_ipv6)" \
| labnag -f Mono -t 0 \
-k on-demand \
-l -L " Status " \
-m "Enable / Disable ipv6 : Enabled by Default" \
-Z " Enable " " run0 sh -c 'sysctl -w net.ipv6.conf.all.disable_ipv6=0 && sysctl -w net.ipv6.conf.default.disable_ipv6=0 && sysctl -w net.ipv6.conf.lo.disable_ipv6=0' " \
-Z " Disable " " run0 sh -c 'sysctl -w net.ipv6.conf.all.disable_ipv6=1 && sysctl -w net.ipv6.conf.default.disable_ipv6=1 && sysctl -w net.ipv6.conf.lo.disable_ipv6=1' " \
-Z " X " \
$LABNAGTHEME
}

net_menu() {
labnag -f Mono -t 0 \
-k on-demand \
-m "Networking" \
-B " DNS " "zeuspanel net_dns " \
-B " ipv6 " "zeuspanel net_ipv6 " \
-B " NetworkManager TUI " " foot -a labicon -e run0 --background= nmtui " \
-Z " X " \
$LABNAGTHEME
}

# install software section
insoft_menu() {
_run0nobg="run0 --background="
labnag -f Mono -t 0 \
-k on-demand \
-m " Install: " \
-B " Bash-completions " "foot -a labicon -T 'Installing Bash-completion' --override locked-title=yes -e $_run0nobg zypper -n in -f --recommends bash-completion mpv-bash-completion pacman-bash-completion" \
-B " Codecs " "foot -a labicon -T 'Installing Codecs' --override locked-title=yes -e $_run0nobg sh -c 'zypper -n dup --from openh264 && zypper -n in libavcodec61 mozilla-openh264'" \
-B " Fish " "foot -a labicon -T 'Installing Fish Shell' --override locked-title=yes -e $_run0nobg zypper -n in --recommends fish && sed -i 's/#shell=foot-shell/shell=foot-shell/g' ~/.config/foot/foot*.ini" \
-B " FreeTube " "foot -a labicon -T 'Installing Freetube' --override locked-title=yes -e $_run0nobg zypper -n in --allow-unsigned-rpm $FREETUBELINK " \
-B " Hwcaps " "foot -a labicon -T 'Installing Hwcaps' --override locked-title=yes -e $_run0nobg zypper -n in -f --recommends patterns-glibc-hwcaps-x86_64_v3" \
-B " Myrlyn " "foot -a labicon -T 'Installing Myrlyn' --override locked-title=yes -e $_run0nobg zypper -n in myrlyn qt6-platformtheme-gtk3 " \
-B " Openbox " "foot -a labicon -T 'Installing Openbox' --override locked-title=yes -e $_run0nobg zypper -n in openbox xinit xorg-x11-server xorg-x11-driver-input xorg-x11-driver-video alacritty libxkbcommon-x11-0 && echo '#!/bin/sh' > ~/.xinitrc && echo 'exec openbox-session' >> ~/.xinitrc && chmod +x ~/.xinitrc" \
-B " TLDR " "foot -a labicon -T 'Installing TLDR' --override locked-title=yes -e $_run0nobg sh -c 'zypper -n in tealdeer && mkdir -p /root/.cache && ln -sf ~/.cache/tealdeer /root/.cache/' && tldr -u" \
-Z " X " \
$LABNAGTHEME
}

# change passwords
zchpasswd() {
labnag -f Mono -t 0 \
-k on-demand \
-m " Change password: " \
-Z " root " "foot --override locked-title=yes -a labicon -T 'Enter root password' -W 60x10 su -c 'passwd root'" \
-Z " user " "foot --override locked-title=yes -a labicon -T 'Enter user password' -W 60x10 su -c 'passwd linux'" \
-Z " X " \
$LABNAGTHEME
}

# theme
zchtheme() {
echo 'Dark:  Dragon
Light: Adwaita'\
| \
labnag -f Mono -t 0 \
-k on-demand \
-l \
-m " Choose: " \
-Z " Dark " "gsettings set org.gnome.desktop.interface gtk-theme 'Dragon' && gsettings set org.gnome.desktop.wm.preferences theme 'Dragon' && gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' && sed -i 's/Adwaita/Dragon/g' ~/.config/labwc/rc.xml && ln -sf ~/.config/foot/foot-dark.ini ~/.config/foot/foot.ini && labwc -r && pkill -SIGHUP sfwbar" \
-Z " Light " "gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita' && gsettings set org.gnome.desktop.wm.preferences theme 'Adwaita' && gsettings set org.gnome.desktop.interface color-scheme 'prefer-light' && sed -i 's/Dragon/Adwaita/g' ~/.config/labwc/rc.xml && ln -sf ~/.config/foot/foot-light.ini ~/.config/foot/foot.ini && labwc -r && pkill -SIGHUP sfwbar" \
-Z " X " \
$LABNAGTHEME
}

# livecd ramdisk resizer
zchramsize() {
echo "$(fastfetch -s disk --logo none |grep overlay |sed s/.*://)" \
|labnag -f Mono -t 0 \
-k on-demand \
-l -L " Show Usage " \
-m "Resize RAM Disk" \
-Z " 2G " "run0 mount -o remount,size=2G /run " \
-Z " 3G " "run0 mount -o remount,size=3G /run " \
-Z " 4G " "run0 mount -o remount,size=4G /run " \
-Z " 5G " "run0 mount -o remount,size=5G /run " \
-Z " 6G " "run0 mount -o remount,size=6G /run " \
-Z " 8G " "run0 mount -o remount,size=8G /run " \
-Z " 33% " "run0 mount -o remount,size=33% /run " \
-Z " 50% " "run0 mount -o remount,size=50% /run " \
-Z " X " \
$LABNAGTHEME
}

#() {


#}

#() {


#}

#() {


#}

#() {


#}


main() {
echo "
System Info:     fastfetch
Install:         install software
CPU:             cpupower options
labTweaks:       labwc-tweaks-gtk
Network:         DNS & ipv6 & NetworkManager TUI
Password:        change password for root or user
RAMdisk:         resize RAM disk size
Theme:           choose light or dark theme
Timezone:        tzselect piped to timedatectl
" \
 | labnag -f Mono -t 0 \
-l -L " Details " \
-m " ZEUS Panel " \
-B " System Info " " foot -a labicon -H -T 'System Information' -e fastfetch --logo none -s os:host:chassis:kernel:initsystem:uptime:packages:display:DE:WM:cpu:gpu:vulkan:memory:swap:disk:dns:locale:sound:mouse:keyboard:datetime " \
-B " Install " " zeuspanel insoft_menu " \
-B " CPU " " zeuspanel cpu_menu " \
-B " labTweaks " " /usr/bin/labwc-tweaks-gtk " \
-B " Network " " zeuspanel net_menu " \
-B " Passwords " " zeuspanel zchpasswd " \
-B " RAMdisk " " zeuspanel zchramsize " \
-B " Theme " " zeuspanel zchtheme " \
-B " Timezone " " foot -a labicon -T 'Select Timezone' -e tzselect.sh " \
-Z " X " \
$LABNAGTHEME
}



case $1 in
  main|cpu_menu|cpu_gov|cpu_amdpstate|cpu_turbo|cpu_epp|net_menu|net_dns|net_ipv6|insoft_menu|zchpasswd|zchtheme|zchramsize) "$1" ;;
esac



