-
Notifications
You must be signed in to change notification settings - Fork 0
/
pomodoro.R
39 lines (39 loc) · 1.25 KB
/
pomodoro.R
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
#' Title
#'
#' @param minutes
#'
#' @return
#' @export
#'
#' @examples
pomodoro <- function(minutes = 25) {
old_title <- utils::getWindowTitle()
on.exit({
utils::setWindowTitle(title = old_title)
rui::clear()
})
# TODO make tick timing more steady?
# IDEA maybe combine multiple in single audio play call?
start <- Sys.time()
now <- Sys.time()
# tick <- audio::load.wave("C:/Windows/Media/Windows Navigation Start.wav")
# tick <- cbind(tick, tick * 0) # not sure why this is required
# done <- audio::load.wave("C:/Windows/Media/Windows Notify Calendar.wav")
rui::begin("{minutes}:00")
while (as.numeric(now - start, "mins") < minutes) {
rui::speaker("C:/Windows/Media/Windows Navigation Start.wav")
Sys.sleep(1)
now <- Sys.time()
passed <- as.numeric(now - start, "secs")
mins <- stringr::str_pad(max(0, minutes - (passed %/% 60 + 1)), width = 2, pad = "0")
secs <- round(passed %% 60)
if (secs != 0) secs <- 60 - secs
if (passed >= minutes * 60) secs <- 0
secs <- stringr::str_pad(secs, width = 2, pad = "0")
rui::proceed("{mins}:{secs}")
utils::setWindowTitle(title = paste0(mins, ":", secs, " ..."))
}
rui::speaker("C:/Windows/Media/Windows Notify Calendar.wav")
rui::succeed()
invisible()
}