OSDN Git Service

add debug option to status
[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 mkdir -p /tmp/instantos/status
20
21 # update different parts with different frequency
22
23 # 1m loop
24 while :; do
25     if ping -q -c 1 -W 1 8.8.8.8; then
26         INTERNET="^c$GREEN^  i  ^d^"
27     else
28         INTERNET="^c$RED^  i  ^d^"
29     fi
30
31     istat INTERNET "$INTERNET"
32
33     # battery indicator on laptop
34     if [ -n "$ISLAPTOP" ]; then
35         TMPBAT=$(acpi)
36         if [[ $TMPBAT =~ "Charging" ]]; then
37             BATTERY="^c$GREEN^  B"$(egrep -o '[0-9]*%' <<<"$TMPBAT")"  "
38         else
39             BATTERY="  B"$(egrep -o '[0-9]*%' <<<"$TMPBAT")"  "
40             # make indicator red on low battery
41             if [ $(grep '[0-9]*' <<<"$BATTERY") -lt 10 ]; then
42                 BATTERY="^c$RED^  B$BATTERY  ^d^"
43             fi
44         fi
45         istat BATTERY "$BATTERY"
46     fi
47     sleep 1m
48
49     # needed only for shorttime cache, remove in case it changes
50     [ -e /tmp/instantos/pasink ] && rm /tmp/instantos/pasink
51 done &
52
53 # 30m loop
54 while :; do
55     sleep 30m
56     # check for pacman updates
57     if [ "$INTERNET" = "i" ]; then
58         if UPDATES=$(checkupdates); then
59             echo "$UPDATES updates found"
60             UPDATES=$(wc -l <<<"$UPDATES")
61         else
62             echo "system is up to date"
63             unset UPDATES
64         fi
65         istat UPDATES "U$UPDATES"
66     fi
67
68     if ! iconf -i notheming; then
69         DATEHOUR="$(date +%H)"
70         if [ "$DATEHOUR" -lt "7" ] || [ "$DATEHOUR" -gt "20" ]; then
71             if ! [ -e /tmp/instantdarkmode ]; then
72                 instantthemes d &
73                 touch /tmp/instantdarkmode
74                 [ -e /tmp/instantlightmode ] && rm /tmp/instantlightmode
75             fi
76         else
77             if ! [ -e /tmp/instantlightmode ]; then
78                 instantthemes l &
79                 touch /tmp/instantlightmode
80                 [ -e /tmp/instantdarkmode ] && rm /tmp/instantdarkmode
81
82             fi
83         fi
84     fi
85
86 done &
87
88 sleep 2
89
90 # 10 sec loop
91 while :; do
92
93     for i in /tmp/instantos/status/*; do
94         date="${date}$(cat $i)"
95     done
96
97     # date time
98     date="$date^d^  $(date +'%d-%m')  ^c$DARKBACK^  $(date +'%H:%M')  "
99     # volume
100     date="$date^c$LIGHTBACK^  A$(amixer get Master | grep -Eo '[0-9]{1,3}%' | head -1)  "
101
102     # option to disable status text
103     if [ -e ~/.instantsilent ] && [ -z "$FORCESTATUS" ]; then
104         echo "^d^^f11^$date^d^"
105     else
106         # add 11 px spacing
107         xsetroot -name "^d^^f11^$date^d^"
108     fi
109
110     date=""
111     sleep 10
112 done