OSDN Git Service

change theme on runtime
[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             fi
75         else
76             if ! [ -e /tmp/instantlightmode ]; then
77                 instantthemes l &
78                 touch /tmp/instantlightmode
79             fi
80         fi
81     fi
82
83 done &
84
85 sleep 2
86
87 # 10 sec loop
88 while :; do
89     # option to disable status text and check for enabling it again
90     if [ -e ~/.instantsilent ] && [ -z "$FORCESTATUS" ]; then
91         sleep 1m
92         continue
93     fi
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$(amixer get Master | grep -Eo '[0-9]{1,3}%' | head -1)  "
103
104     # add 11 px spacing
105     xsetroot -name "^d^^f11^$date^d^"
106     date=""
107
108     sleep 10
109 done