restyled hdd bar

This commit is contained in:
2024-11-15 15:23:15 +03:00
parent 85fe881586
commit 07fbc5711c

View File

@@ -1,38 +1,42 @@
#!/bin/bash #!/bin/bash
# mountpoints=$(echo df -h | grep ^/dev/ | grep -v efi | awk '{print $1;}') # mountpoints=$(echo df -h | grep ^/dev/ | grep -v efi | awk '{print $1;}')
mapfile -t mountpoints < <( df -h | grep ^/dev/ | grep -v efi | awk '{print $1;}' ) mapfile -t mountpoints < <( df -h | grep ^/dev/ | grep -v efi | awk '{print $6;}' )
IFS=$'\n' mountpoints=($(sort <<<"${mountpoints[*]}")) IFS=$'\n' mountpoints=($(sort <<<"${mountpoints[*]}"))
unset IFS unset IFS
barWidth=38 barWidth=40
maxDiscUsage=85 maxDiscUsage=85
midDiscUsage=45
clear="\e[39m\e[0m" clear="\e[39m\e[0m"
dim="\e[2m" ok="\e[32m"
alert="\e[33m"
warn="\e[31m"
barclear="" barclear=""
echo echo
echo 'HDD free:' echo 'HDD free:'
for point in "${mountpoints[@]}"; do for point in "${mountpoints[@]}"; do
line=$(df -h "${point}") line=$(df -h "${point}")
# IFS=" " read fs size used avail use mount $(df -h "${point}") # IFS=" " read fs size used avail use mount $(df -h "${point}")
label=$(lsblk -o label "${point}")
usagePercent=$(echo "$line"|tail -n1|awk '{print $5;}'|sed 's/%//') usagePercent=$(echo "$line"|tail -n1|awk '{print $5;}'|sed 's/%//')
usedBarWidth=$((($usagePercent*$barWidth)/100)) usedBarWidth=$((($usagePercent*$barWidth)/100))
barContent="" barContent=""
color="\e[33m" color="${ok}"
if [ "${usagePercent}" -ge "${maxDiscUsage}" ]; then if [ "${usagePercent}" -ge "${maxDiscUsage}" ]; then
color="\e[31m" color="${warn}"
elif [ "${usagePercent}" -ge "${midDiscUsage}" ]; then
color="${alert}"
fi fi
barContent="${color}" barContent="${color}"
for sep in $(seq 1 $usedBarWidth); do for sep in $(seq 1 $usedBarWidth); do
barContent="${barContent}|" barContent="${barContent}"
done done
barContent="${barContent}${clear}${dim}" barContent="${barContent}${clear}${dim}"
for sep in $(seq 1 $(($barWidth-$usedBarWidth))); do for sep in $(seq 1 $(($barWidth-$usedBarWidth))); do
barContent="${barContent}-" barContent="${barContent}"
done done
bar=" [${barContent}${clear}]" bar=" ${barContent}${clear}"
echo "${point}" | awk '{printf(" %-14s", $1); }' echo "${point}" | awk '{printf(" %-14s", $1); }'
echo "${line}" | awk '{if ($1 != "Filesystem") printf("%+8s used out of %+5s\n", $3, $2); }' echo "${line}" | awk '{if ($1 != "Filesystem") printf("%+8s used out of %+5s\n", $3, $2); }'
echo -e "${bar}" echo -e "${bar}"