OSDN Git Service

fix status bar
[instantos/instantOS.git] / status.sh
1 #!/bin/bash
2
3 ##################################
4 ## status monitor for instantWM ##
5 ##################################
6
7 INTERNET="X"
8 date=""
9
10 RED='#fc4138'
11 GREEN='#73d216'
12
13 istat() {
14     echo "$2" >/tmp/instantos/status/"$1"
15 }
16
17 addstatus() {
18     date="${date} [$@]"
19 }
20
21 mkdir -p /tmp/instantos/status
22
23 # update different parts with different frequency
24
25 # 1m loop
26 while :; do
27     if ping -q -c 1 -W 1 8.8.8.8; then
28         INTERNET="^c$GREEN^i^d^"
29     else
30         INTERNET="^c$RED^X^d^"
31     fi
32     istat INTERNET "$INTERNET"
33
34     # battery indicator on laptop
35     if [ -n "$ISLAPTOP" ]; then
36         TMPBAT=$(acpi)
37         if [[ $TMPBAT =~ "Charging" ]]; then
38             BATTERY="^c$GREEN^"$(egrep -o '[0-9]*%' <<<"$TMPBAT")"^d^"
39         else
40             BATTERY=$(egrep -o '[0-9]*%' <<<"$TMPBAT")
41             # make indicator red on low battery
42             if [ $(grep '[0-9]*' <<<$BATTERY) -lt 10 ]; then
43                 BATTERY="^c$RED^$BATTERY^d^"
44             fi
45         fi
46         istat BATTERY "B$BATTERY"
47     fi
48     sleep 1m
49
50     # needed only for shorttime cache, remove in case it changes
51     [ -e /tmp/instantos/pasink ] && rm /tmp/instantos/pasink
52 done &
53
54 # 30m loop
55 while :; do
56     sleep 30m
57     # check for pacman updates
58     if [ "$INTERNET" = "i" ]; then
59         if UPDATES=$(checkupdates); then
60             echo "$UPDATES updates found"
61             UPDATES=$(wc -l <<<"$UPDATES")
62         else
63             echo "system is up to date"
64             unset UPDATES
65         fi
66         istat UPDATES "U$UPDATES"
67     fi
68 done &
69
70 sleep 2
71
72 # 10 sec loop
73 while :; do
74     # option to disable status text and check for enabling it again
75     if [ -e ~/.instantsilent ]; then
76         sleep 1m
77         continue
78     fi
79
80     for i in /tmp/instantos/status/*; do
81         date="${date} [$(cat $i)]"
82     done
83
84     # date time
85     addstatus "$(date +'%d-%m|%H:%M')"
86     # volume
87     addstatus "A$(amixer get Master | egrep -o '[0-9]{1,3}%' | head -1)"
88
89     # add 11 px spacing
90     xsetroot -name "^f11^$date"
91     date=""
92
93     sleep 10
94 done