-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtimer
More file actions
executable file
·121 lines (107 loc) · 1.95 KB
/
Copy pathtimer
File metadata and controls
executable file
·121 lines (107 loc) · 1.95 KB
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
#!/bin/bash
MSG=""
TITLE_PREFIX=""
MINUTES=0 # Minutes for the timer
SECONDS=0 # Seconds for the timer
PAUSE=60 # Time between updates. Default: 60"
PRINT_SECONDS=false
# Input: number of seconds left
print_time_left() {
if [ ${PRINT_SECONDS} = true ]; then
print_minutes_seconds $1
else
print_only_minutes $1
fi
}
print_only_minutes() {
if [ $1 -ge 60 ]; then
echo "$(($1/60))' left..."
else
echo "$1\" left..."
fi
}
print_minutes_seconds() {
MINUTES=$(($1/60))
SECONDS=$(($1-60*MINUTES))
if [ $MINUTES -lt 1 ]; then
echo "$SECONDS\" left..."
else
echo "$MINUTES' $SECONDS\" left..."
fi
}
set_message() {
MSG="$1"
}
set_title_prefix() {
TITLE_PREFIX="$1"
}
set_minutes() {
MINUTES=$1
}
set_pause() {
PAUSE=$1
if [ $PAUSE -lt 60 ]; then
PRINT_SECONDS=true
fi
}
set_seconds() {
SECONDS=$1
}
clear_window_title() {
echo -en "\033]2;Terminal\007"
}
set_window_title() {
echo -en "\033]2;$1 left\007"
}
usage() {
echo "USAGE: timer <[-m <minutes>] | [-s <seconds>]> [-p <pause in seconds>] [-t text] [-tp <title_prefix>]"
exit
}
while [ "$1" ]; do
if [ -z "$2" ]; then
usage
fi
case $1 in
"-m")
set_minutes $2;
shift 2;
;;
"-p")
set_pause $2;
shift 2;
;;
"-s")
set_seconds $2;
shift 2;
;;
"-t")
set_message "$2"
shift 2;
;;
"-tp")
set_title_prefix "$2"
shift 2;
;;
*)
usage
;;
esac
done
if [ $MINUTES -eq 0 -a $SECONDS -eq 0 ]; then
usage
else
TIME_LEFT=$((MINUTES*60+SECONDS))
fi
set_window_title
# echo "Timer running for $MINUTES', $SECONDS\"..."
while [ ${TIME_LEFT} -gt 0 ] ; do
print_time_left $TIME_LEFT
set_window_title "${TITLE_PREFIX}$((TIME_LEFT/60))'"
if [ $PAUSE -gt $TIME_LEFT ]; then
PAUSE=$TIME_LEFT
fi
sleep $PAUSE;
TIME_LEFT=$((TIME_LEFT - PAUSE))
done
gnome-terminal -e "say_THE_END $MSG" --geometry 120x30+50+50
clear_window_title