From cabf188ae487120d4b9ac1fe21fff45403a787b4 Mon Sep 17 00:00:00 2001 From: Ryan Schanzenbacher Date: Mon, 24 Aug 2026 01:09:49 -0400 Subject: various fixes to guix --- users/ryan/linux/waybar/modules/storage.sh | 77 +++++++++++++++++++++++------- 1 file changed, 61 insertions(+), 16 deletions(-) (limited to 'users/ryan/linux/waybar/modules/storage.sh') diff --git a/users/ryan/linux/waybar/modules/storage.sh b/users/ryan/linux/waybar/modules/storage.sh index 90cc3dc..7cb7249 100755 --- a/users/ryan/linux/waybar/modules/storage.sh +++ b/users/ryan/linux/waybar/modules/storage.sh @@ -1,25 +1,70 @@ #!/bin/sh -mount="/" +set -eu + +mountpoint="/" warning=20 critical=10 -df -h -P -l "$mount" | awk -v warning=$warning -v critical=$critical ' -/\/.*/ { - text=$4 - tooltip="Filesystem: "$1"\rSize: "$2"\rUsed: "$3"\rAvail: "$4"\rUse%: "$5"\rMounted on: "$6 - use=$5 - exit 0 +error() { + jq -cn --arg message "$1" '{ + text: "N/A", + percentage: 0, + tooltip: $message, + class: "critical" + }' + exit 0 } -END { - class="" - gsub(/%$/,"",use) - if ((100 - use) < critical) { + +line=$(df -hP -l "$mountpoint" 2>/dev/null | tail -n 1) || + error "Unable to read filesystem statistics" + +# df -P guarantees a single line per filesystem. +set -- $line + +[ "$#" -ge 6 ] || error "Unable to parse filesystem statistics" + +filesystem=$1 +size=$2 +used=$3 +available=$4 +use=${5%\%} +mounted=$6 + +case "$use" in + ''|*[!0-9]*) error "Invalid filesystem usage percentage: $use%" ;; +esac + +free=$((100 - use)) + +if [ "$free" -le "$critical" ]; then class="critical" - } else if ((100 - use) < warning) { +elif [ "$free" -le "$warning" ]; then class="warning" - } - print "{\"text\":\""text"\", \"percentage\":"use",\"tooltip\":\""tooltip"\", \"class\":\""class"\"}" -} -' +else + class="" +fi + +jq -cn \ + --arg text "${use}%" \ + --argjson percentage "$use" \ + --arg filesystem "$filesystem" \ + --arg size "$size" \ + --arg used "$used" \ + --arg available "$available" \ + --arg mounted "$mounted" \ + --arg class "$class" \ + '{ + text: $text, + percentage: $percentage, + tooltip: ( + "Filesystem: " + $filesystem + + "\rSize: " + $size + + "\rUsed: " + $used + + "\rAvail: " + $available + + "\rUse%: " + $text + + "\rMounted on: " + $mounted + ), + class: $class + }' -- cgit v1.3.1