OSDN Git Service

87915da13880bed809459786f8c7b1dca5a568df
[instantos/instantOS.git] / status.sh
1 #!/bin/bash
2
3 ##################################
4 ## status monitor for instantWM ##
5 ##################################
6
7 # will be rewritten soon
8
9 INTERNET="X"
10 date=""
11
12 RED='#fc4138'
13 GREEN='#52E067'
14 DARKBACK='#3E485A'
15 LIGHTBACK='#5B6579'
16
17 istat() {
18     echo "$2" >/tmp/instantos/status/"$1"
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^  i  ^d^"
31     fi
32
33     istat INTERNET "$INTERNET"
34
35     # battery indicator on laptop
36     if [ -n "$ISLAPTOP" ]; then
37         TMPBAT=$(acpi)
38         if [[ $TMPBAT =~ "Charging" ]]; then
39             BATTERY="^c$GREEN^  B"$(egrep -o '[0-9]*%' <<<"$TMPBAT")"  "
40         else
41             BATTERY="  B"$(egrep -o '[0-9]*%' <<<"$TMPBAT")"  "
42             # make indicator red on low battery
43             if [ $(grep '[0-9]*' <<<"$BATTERY") -lt 10 ]; then
44                 BATTERY="^c$RED^  B$BATTERY  ^d^"
45             fi
46         fi
47         istat BATTERY "$BATTERY"
48     fi
49     sleep 1m
50
51     # needed only for shorttime cache, remove in case it changes
52     [ -e /tmp/instantos/pasink ] && rm /tmp/instantos/pasink
53 done &
54
55 # 30m loop
56 while :; do
57     sleep 30m
58     # check for pacman updates
59     if [ "$INTERNET" = "i" ]; then
60         if UPDATES=$(checkupdates); then
61             echo "$UPDATES updates found"
62             UPDATES=$(wc -l <<<"$UPDATES")
63         else
64             echo "system is up to date"
65             unset UPDATES
66         fi
67         istat UPDATES "U$UPDATES"
68     fi
69
70     if ! iconf -i notheming; then
71         DATEHOUR="$(date +%H)"
72         if [ "$DATEHOUR" -lt "7" ] || [ "$DATEHOUR" -gt "20" ]; then
73             if ! [ -e /tmp/instantdarkmode ]; then
74                 instantthemes d &
75                 touch /tmp/instantdarkmode
76                 [ -e /tmp/instantlightmode ] && rm /tmp/instantlightmode
77             fi
78         else
79             if ! [ -e /tmp/instantlightmode ]; then
80                 instantthemes l &
81                 touch /tmp/instantlightmode
82                 [ -e /tmp/instantdarkmode ] && rm /tmp/instantdarkmode
83
84             fi
85         fi
86     fi
87
88 done &
89
90 sleep 2
91
92 # 10 sec loop
93 while :; do
94
95     for i in /tmp/instantos/status/*; do
96         date="${date}$(cat "$i")"
97     done
98
99     # date time
100     date="$date^d^  $(date +'%d-%m')  ^c$DARKBACK^  $(date +'%H:%M')  "
101     # volume
102     date="$date^c$LIGHTBACK^  A$(
103         {
104             amixer -D pulse get Master || amixer sget Master
105         } 2>/dev/null |
106             grep -Eo -m1 '1?[0-9]{1,2}%'
107     )  "
108
109     # option to disable status text
110     if [ -e ~/.instantsilent ] && [ -z "$FORCESTATUS" ]; then
111         echo "^d^^f11^$date^d^"
112     else
113         # add 11 px spacing
114         xsetroot -name "^d^^f11^$date^d^"
115     fi
116
117     date=""
118     sleep 10
119 done