#!/bin/bash status_time() { date '+%a %d/%Hh%M' } status_bat() { local report=$(acpi) echo $report | grep -qv Unknown if [ "$?" = "0" ]; then local status=$(echo $report | cut -d, -f1 | cut -d: -f2- | cut -b2) local perc=$(echo $report | cut -d, -f2 | cut -b2-) local time=$(echo $report | cut -d, -f3 | cut -b2- | sed 's/\([0-9]*\):\([0-9]*\).*/\1h\2m/') local output="$status$perc" if [ -n "$time" ]; then output="$output"" $time" fi; echo "$output" else echo ? fi } status_load() { local load=$(uptime) load=${load/#*load average: } load=${load%,*,*} echo "Load: $load" } status_temp() { local temp=$(( $(cat /sys/class/thermal/thermal_zone0/temp) / 1000 )) echo "T ${temp}C" } status_autolock() { cat ~/.autolock_status } status_ram() { xl info | awk '/free_memory/ { printf("R %.0fG", $3/1024) } ' } status_qubes() { local qubes=$(qvm-ls --no-spinner --raw-data --fields FLAGS 2>/dev/null | grep -v '^0' | grep '^.r......' | wc -l) echo "$qubes Qubes" } status_disk() { local disk='' local free='' local size='' local usage='' read size usage <<< $(qvm-pool -i $(qubes-prefs default-pool) | grep 'size\|usage' | sort | awk '{print $2}') free=$(($size - $usage)) case ${#free} in 1[3-5]) disk="$(($free / 1099511627776))T" ;; 1[0-2]) disk="$(($free / 1073741824))G" ;; [7-9]) disk="$(($free / 1048576))M" ;; [4-6]) disk="$(($free / 1024))K" ;; [1-3]) disk="$free Bytes" ;; *) disk="Error" ;; esac echo "S $disk" } main() { local n for ((n=0; ; ++n)); do if (( n % 2 == 0 )); then #local load=$(status_load) local bat=$(status_bat) local time=$(status_time) fi local ram=$(status_ram) #local hdd=$(status_disk) local temp=$(status_temp) local qubes=$(status_qubes) local autolock=$(status_autolock) local status="$autolock$qubes | $ram $temp | $bat | $time" xsetroot -name "$status" sleep 30 done } main