-
Notifications
You must be signed in to change notification settings - Fork 0
/
now
executable file
·133 lines (108 loc) · 5.08 KB
/
now
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/usr/bin/env bash
# NAME : now
# PATH : $HOME/bin
# DESC : Display current weather, calendar and time
# CALL : Called from terminal or ~/.bashrc
# DATE : Apr 6, 2017. Modified: May 24, 2019.
# CREDIT : https://askubuntu.com/a/1020693/92979
# UPDT : 2019-05-24 If Weather unavailable nicely formatted error message.
# NOTE : to display all available toilet fonts use this one-liner:
# for i in ${TOILET_FONT_PATH:=/usr/share/figlet}/*.{t,f}lf; do j=${i##*/}; toilet -d "${i%/*}" -f "$j" "${j%.*}"; done
# setup for 92 character wide terminal
dateColumn=34 # default is 27 for 80 character line, 34 for 92 character line
timeColumn=61 # default is 49 for " " " " 61 " " " "
curlOpt="-k"
#------------------------------ WEATHER -------------------------------------
# current weather, already in color so no need to override
# replace edmonton with your city name, gps, etc. see: curl wttr.in/:help
if ! curl ${curlOpt} wttr.in/sanjose?QmM0 --fail --silent --max-time 3 > /tmp/now-weather; then
# timeout #. increase for slow connection---^
~/.marslo/bin/iweather > /tmp/now-weather
fi
# was valid weather report found or an error message?
if grep '°C' /tmp/now-weather >/dev/null 2>&1; then
WeatherSuccess=true
cat /tmp/now-weather
else
WeatherSuccess=false
echo " "
echo " "
echo " "
echo " "
echo " " # replace edmonton with your city
echo " "
echo " "
echo " "
fi
echo " " # pad blank lines for calendar & time to fit
rm -rf /tmp/now-weather
#------------------------------- DATA ---------------------------------------
# calendar current month with today highlighted.
# colors 00=bright white, 31=red, 32=green, 33=yellow, 34=blue, 35=purple,
# 36=cyan, 37=white
tput sc # save cursor position.
tput cuu 7 # move up 9 lines
# i=0; while [ $((++i)) -lt 10 ]; do tput cuu1; done
if [[ "$WeatherSuccess" == true ]] ; then
# depending on length of your city name and country name you will:
# 1. comment out next three lines of code. uncomment fourth code line.
# 2. change subtraction value and set number of print spaces to match
# subtraction value. then place comment on fourth code line.
Column=$((dateColumn - 10))
tput cuf $Column # move x column number
printf " " # blank out ", country" with x spaces
else
tput cuf $dateColumn # position to column 27 for date display
fi
# -h needed to turn off formatting: https://askubuntu.com/questions/1013954/bash-substring-stringoffsetlength-error/1013960#1013960
# -h not supported in Ubuntu 18.04. Use second answer: https://askubuntu.com/a/1028566/307523
cal | tr -cd '\11\12\15\40\60-\136\140-\176' > /tmp/terminal
calLineCnt=1
Today=$(date +"%e")
printf "\033[32m" # color green -- see list above.
while IFS= read -r Cal; do
printf "%s" "$Cal"
if [[ $calLineCnt -gt 2 ]] ; then
tput cub 22 # see if today is on current line & invert background
for (( j=0 ; j <= 18 ; j += 3 )) ; do
Test=${Cal:$j:2} # current day on calendar line
if [[ "$Test" == "$Today" ]] ; then
printf "\033[7m" # reverse: [7m
printf "%s" "$Today"
printf "\033[0m" # normal: [0m
printf "\033[32m" # color green -- see list above.
tput cuf 1
else
tput cuf 3
fi
done
fi
tput cud1 # down one line
tput cuf $dateColumn # move 27 columns right
calLineCnt=$((++calLineCnt))
done < /tmp/terminal
printf "\033[00m" # color -- bright white (default)
echo ""
tput rc # restore saved cursor position.
#------------------------------- TIME ---------------------------------------
tput sc # save cursor position.
tput cuu 7 # move up 9 lines
# Move up 8 lines
# i=0; while [ $((++i)) -lt 9 ]; do tput cuu1; done
tput cuf $timeColumn # move 49 columns right
if hash toilet 2>/dev/null; then # if has toilet
date +"%I:%M %P" | toilet -f future > /tmp/terminal
elif hash figlet 2>/dev/null; then # if has figlet
date +"%I:%M %P" | figlet -f /usr/local/share/figlet/future.tlf > /tmp/terminal
else
date +"%I:%M %P" > /tmp/terminal
fi
while IFS= read -r Time; do
printf "\033[01;36m" # color cyan
printf "%s" "$Time"
tput cud1 # up one line
tput cuf $timeColumn # move 49 columns right
done < /tmp/terminal
tput rc # restore saved cursor position.
exit 0
# vim:tabstop=2:softtabstop=2:shiftwidth=2:expandtab:filetype=sh