From cb14fc26c4a93d115c083f6cbf6706bcb7dfc19b Mon Sep 17 00:00:00 2001 From: Cyril Date: Mon, 13 Jan 2025 01:41:08 +0100 Subject: [PATCH] Improvements --- scripts/menu/functions.sh | 22 +++++++++++----------- scripts/menu/main_menu.sh | 2 +- scripts/menu/system_menu.sh | 34 +++++++++++++++++++++++++++------- 3 files changed, 39 insertions(+), 19 deletions(-) diff --git a/scripts/menu/functions.sh b/scripts/menu/functions.sh index 8a654ed..7384093 100755 --- a/scripts/menu/functions.sh +++ b/scripts/menu/functions.sh @@ -4,19 +4,19 @@ set -e function top_line() { echo -e "${white}" - echo -e " ┌──────────────────────────────────────────────────────────────┐" + echo -e " ┌────────────────────────────────────────────────────────────────┐" } function hr() { - echo -e " │ │" + echo -e " │ │" } function inner_line() { - echo -e " ├──────────────────────────────────────────────────────────────┤" + echo -e " ├────────────────────────────────────────────────────────────────┤" } function bottom_line() { - echo -e " └──────────────────────────────────────────────────────────────┘" + echo -e " └────────────────────────────────────────────────────────────────┘" echo -e "${white}" } @@ -27,7 +27,7 @@ function blank_line() { function title() { local text=$1 local color=$2 - local max_length=62 + local max_length=64 local text_length=${#text} local padding_left=$(((max_length - text_length) / 2)) local padding_right=$((max_length - text_length - padding_left)) @@ -36,7 +36,7 @@ function title() { function subtitle() { local menu_text1=$1 - local max_length=61 + local max_length=63 local padding=$((max_length - ${#menu_text1})) printf " │ ${blue}${menu_text1}%-${padding}s${white}│\n" '' } @@ -45,7 +45,7 @@ function main_menu_option() { local menu_number=$1 local menu_text1=$2 local menu_text2=$3 - local max_length=56 + local max_length=58 local total_text_length=$(( ${#menu_text1} + ${#menu_text2} )) local padding=$((max_length - total_text_length)) printf " │ ${yellow}${menu_number}${white}) ${green}${menu_text1} ${white}${menu_text2}%-${padding}s${white}│\n" '' @@ -55,7 +55,7 @@ function menu_option() { local menu_number=$1 local menu_text1=$2 local menu_text2=$3 - local max_length=60 + local max_length=62 local total_text_length=$(( ${#menu_text1} + ${#menu_text2} + ${#menu_number} + 4 )) local padding=$((max_length - total_text_length)) printf " │ ${yellow}${menu_number}${white}) ${white}${menu_text1} ${green}${menu_text2}%-${padding}s${white}│\n" '' @@ -65,7 +65,7 @@ function bottom_menu_option() { local menu_number=$1 local menu_text=$2 local color=$3 - local max_length=57 + local max_length=59 local padding=$((max_length - ${#menu_text})) printf " │ $color${menu_number}${white}) ${white}${menu_text}%-${padding}s${white}│\n" '' } @@ -74,7 +74,7 @@ function info_line() { local status=$1 local text=$2 local color=$3 - local max_length=66 + local max_length=68 local total_text_length=$(( ${#status} + ${#text} )) local padding=$((max_length - total_text_length)) printf " │ $color${status} ${white}${text}%-${padding}s${white}│\n" '' @@ -83,7 +83,7 @@ function info_line() { function system_line() { local title="$1" local value="$2" - local max_length=61 + local max_length=63 local title_length=${#title} local separator=": " local value_length=${#value} diff --git a/scripts/menu/main_menu.sh b/scripts/menu/main_menu.sh index 7421409..8f7ae57 100755 --- a/scripts/menu/main_menu.sh +++ b/scripts/menu/main_menu.sh @@ -30,7 +30,7 @@ function get_script_version() { function version_line() { local content="$1" local content_length="${#content}" - local width=$((73)) + local width=$((75)) local padding_length=$((width - content_length - 3)) printf " │ %*s%s%s\n" $padding_length '' "$content" " │" } diff --git a/scripts/menu/system_menu.sh b/scripts/menu/system_menu.sh index 11a763c..9fab4ff 100755 --- a/scripts/menu/system_menu.sh +++ b/scripts/menu/system_menu.sh @@ -23,6 +23,29 @@ function check_connection() { fi } +function format_uptime() { + local uptime=$1 + local upDays=$((uptime / 60 / 60 / 24)) + local upHours=$((uptime / 60 / 60 % 24)) + local upMins=$((uptime / 60 % 60)) + local output="" + if [ $upDays -gt 0 ]; then + output="$output$upDays day" + [ $upDays -gt 1 ] && output="${output}s" + output="$output " + fi + if [ $upHours -gt 0 ]; then + output="$output$upHours hour" + [ $upHours -gt 1 ] && output="${output}s" + output="$output " + fi + if [ $upMins -gt 0 ] || [ -z "$output" ]; then + output="$output$upMins minute" + [ $upMins -gt 1 ] && output="${output}s" + fi + echo "$output" +} + function system_menu_ui() { memfree=`cat /proc/meminfo | grep MemFree | awk {'print $2'}` memtotal=`cat /proc/meminfo | grep MemTotal | awk {'print $2'}` @@ -30,10 +53,8 @@ function system_menu_ui() { diskused=`df -h | grep /dev/mmcblk0p10 | awk {'print $3 " / " $2 " (" $4 " available)" '}` process=`ps ax | wc -l | tr -d " "` uptime=`cat /proc/uptime | cut -f1 -d.` - upDays=$((uptime/60/60/24)) - upHours=$((uptime/60/60%24)) - upMins=$((uptime/60%60)) - load=`cat /proc/loadavg | awk {'print $1 " (1 min.) / " $2 " (5 min.) / " $3 " (15 min.)"'}` + formatted_uptime=$(format_uptime $uptime) + load=`awk -v cpus=2 '{printf "%.2f%% (1 min) | %.2f%% (5 min) | %.2f%% (15 min)\n", $1*100/cpus, $2*100/cpus, $3*100/cpus}' /proc/loadavg` device_sn=$(cat /usr/data/creality/userdata/config/system_config.json | grep -o '"device_sn":"[^"]*' | awk -F '"' '{print $4}') mac_address=$(cat /usr/data/creality/userdata/config/system_config.json | grep -o '"device_mac":"[^"]*' | awk -F '"' '{print $4}' | sed 's/../&:/g; s/:$//') top_line @@ -46,11 +67,10 @@ function system_menu_ui() { system_line " Device SN" "$device_sn" system_line " IP Address" "$(check_connection)" system_line "MAC Address" "$mac_address" + system_line " CPU Usage" "$load" system_line " RAM Usage" "$(($memfree/1024)) MB / $(($memtotal/1024)) MB ($pourcent% available)" system_line " Disk Usage" "$diskused" - system_line " Uptime" "$upDays days $upHours hours $upMins minutes" - system_line " Processes" "$process running process" - system_line "System Load" "$load" + system_line " Uptime" "$formatted_uptime" hr inner_line hr