OSDN Git Service

Merge branch 'master' of https://github.com/instantOS/instantOS
[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='#52E067'
12 DARKBACK='#3E485A'
13 LIGHTBACK='#5B6579'
14
15 istat() {
16     echo "$2" >/tmp/instantos/status/"$1"
17 }
18
19
20 mkdir -p /tmp/instantos/status
21
22 # update different parts with different frequency
23
24 # 1m loop
25 while :; do
26     if ping -q -c 1 -W 1 8.8.8.8; then
27         INTERNET="^c$GREEN^  i  ^d^"
28     else
29         INTERNET="^c$RED^  i  ^d^"
30     fi
31
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^  B"$(egrep -o '[0-9]*%' <<<"$TMPBAT")"  "
39         else
40             BATTERY="  B"$(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^  B$BATTERY  ^d^"
44             fi
45         fi
46         istat BATTERY "$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 ] && [ -z "$FORCESTATUS" ]; 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     date="$date^d^  $(date +'%d-%m')  ^c$DARKBACK^  $(date +'%H:%M')  "
86     # volume
87     date="$date^c$LIGHTBACK^  A$(amixer get Master | grep -Eo '[0-9]{1,3}%' | head -1)  "
88
89     # add 11 px spacing
90     xsetroot -name "^d^^f11^$date^d^"
91     date=""
92
93     sleep 10
94 done