X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=home%2Flib%2Flogin_functions.sh;h=2a906953094b40c3e9dc81bb1cb8ab416b8c55ba;hb=3f673776ca36a17bb26c425303151325577b120b;hp=45460f4aa487a1393c01936b74bbee32dc62adb8;hpb=06cb5310348b6fb9d49e0c3ca6e04e2b61409bc0;p=khome.git diff --git a/home/lib/login_functions.sh b/home/lib/login_functions.sh index 45460f4..2a90695 100644 --- a/home/lib/login_functions.sh +++ b/home/lib/login_functions.sh @@ -364,3 +364,81 @@ run() { notify-send -u "$urgency" "Job done: $code" "$(cat $stderr)" rm "$stderr" } + +bar_gauge() { + local -r width="$1" + + awk -v width="$width" ' + { + used = $1 + total = $2 + + u = num_scale(used, total, 1, width) + + printf "[" + for (i=1; i<=width; i++) { + c = i <= u ? "|" : " " + printf "%c", c + } + printf "]\n" + } + + function num_scale(src_cur, src_max, dst_min, dst_max) { + return dst_min + ((src_cur * (dst_max - dst_min)) / src_max) + } + ' +} + +motd() { + uname -srvmo + hostname | figlet + uptime + + echo + + printf 'mem ' + free \ + | awk '$1 == "Mem:" {total=$2; used=$3; print used, total}' \ + | bar_gauge 73 + + printf 'disk ' + df ~ \ + | awk 'NR == 2 {used=$3; avail=$4; total=used+avail; print used, total}' \ + | bar_gauge 73 + + case "$(uname)" in + 'Linux') + printf 'batt ' + upower --dump \ + | awk ' + /^Device:[ \t]+/ { + device["path"] = $2 + next + } + + / battery/ && device["path"] { + device["is_battery"] = 1 + next + } + + / percentage:/ && device["is_battery"] { + device["battery_percentage"] = $2 + sub("%$", "", device["battery_percentage"]) + next + } + + /^$/ { + if (device["is_battery"] && device["path"] == "/org/freedesktop/UPower/devices/DisplayDevice") + print device["battery_percentage"], 100 + delete device + } + ' \ + | bar_gauge 73 + ;; + esac + + #echo + # TODO: netstat summary + # WARN: ensure: $USER ALL=(ALL) NOPASSWD:/bin/netstat + #sudo -n netstat -tulpn | awk '/^udp/ && !first++ {printf "\n"} 1' +}