OSDN Git Service

rework status
[instantos/instantOS.git] / status.sh
index 198ef7f..4f6fdd2 100755 (executable)
--- a/status.sh
+++ b/status.sh
@@ -1,53 +1,79 @@
 #!/bin/bash
 
+##################################
+## status monitor for instantWM ##
+##################################
+
 INTERNET="X"
-REPETITIONS="xxxxxx"
 date=""
 
+# append item with brackets
 addstatus() {
-    date="$date[$@] "
+    date="${date}[$@] "
 }
 
-# status bar loop
+# update different parts with different frequency
+
+# 1m loop
 while :; do
-    if [ -e ~/.instantsilent ]; then
-        sleep 1m
-        continue
+    if ping -q -c 1 -W 1 8.8.8.8; then
+        INTERNET="i"
+    else
+        INTERNET="^c#ff0000^X^d^"
     fi
 
-    # run every 60 seconds
-    if [ "$REPETITIONS" = "xxxxxx" ]; then
-        REPETITIONS="x"
-        if ping -q -c 1 -W 1 8.8.8.8; then
-            INTERNET="i"
+    # battery indicator on laptop
+    if [ -n "$ISLAPTOP" ]; then
+        TMPBAT=$(acpi)
+        if [[ $TMPBAT =~ "Charging" ]]; then
+            BATTERY="^c#00ff00^B"$(egrep -o '[0-9]*%' <<<"$TMPBAT")"^d^"
         else
-            INTERNET="^c#ff0000^X^d^"
+            BATTERY="B"$(egrep -o '[0-9]*%' <<<"$TMPBAT")
+            # make indicator red on low battery
+            if [ $(grep '[0-9]*' <<<$BATTERY) -lt 10 ]; then
+                BATTERY="^c#ff0000^$BATTERY^d^"
+            fi
         fi
+    fi
+    sleep 2m
+done &
 
-        # battery indicator on laptop
-        if [ -n "$ISLAPTOP" ]; then
-            TMPBAT=$(acpi)
-            if [[ $TMPBAT =~ "Charging" ]]; then
-                BATTERY="^c#00ff00^B"$(egrep -o '[0-9]*%' <<<"$TMPBAT")"^d^"
-            else
-                BATTERY="B"$(egrep -o '[0-9]*%' <<<"$TMPBAT")
-                # make indicator red on low battery
-                if [ $(grep '[0-9]*' <<<$BATTERY) -lt 10 ]; then
-                    BATTERY="^c#ff0000^$BATTERY^d^"
-                fi
-            fi
+# 30m loop
+while :; do
+    sleep 30m
+    # check for pacman updates
+    if [ "$INTERNET" = "i" ]; then
+        if UPDATES=$(checkupdates); then
+            echo "$UPDATES updates found"
+            UPDATES=$(wc -l <<<"$UPDATES")
+        else
+            echo "system is up to date"
+            unset UPDATES
         fi
+    fi
+done &
 
-    else
-        # increase counter
-        REPETITIONS="$REPETITIONS"x
+sleep 2
+
+# 10 sec loop
+while :; do
+
+    # option to disable status text and check for enabling it again
+    if [ -e ~/.instantsilent ]; then
+        sleep 1m
+        continue
     fi
 
+    # date time
     addstatus "$(date +'%d-%m|%H:%M')"
+    # volume
     addstatus "A$(amixer get Master | egrep -o '[0-9]{1,3}%' | head -1)"
-    [ -n "$ISLAPTOP" ] && addstatus "$BATTERY"
-    addstatus "$INTERNET"
 
+    # 60 sec info
+    [ -n "$ISLAPTOP" ] && addstatus "B$BATTERY"
+    addstatus "$INTERNET"
+    [ -n "$UPDATES" ] && addstatus "U$UPDATES"
+    # add 11 px spacing
     xsetroot -name "^f11^$date"
     date=""