Browse Source

~/.bin/working-time.go: Notify about break duration

This also adds a permanent notification if you're taking a break, so you
don't forget to end it.
Lu Stadler 7 years ago
parent
commit
2f9c9caa6c
1 changed files with 14 additions and 0 deletions
  1. 14 0
      .bin/working-time.go

+ 14 - 0
.bin/working-time.go

8
	"encoding/json"
8
	"encoding/json"
9
	"fmt"
9
	"fmt"
10
	"os"
10
	"os"
11
	"os/exec"
11
	"path"
12
	"path"
12
	"time"
13
	"time"
13
)
14
)
40
			dur := now.Sub(*day.BreakStart)
41
			dur := now.Sub(*day.BreakStart)
41
			day.Break += dur
42
			day.Break += dur
42
			day.BreakStart = nil
43
			day.BreakStart = nil
44
			notifyCompletion(fmt.Sprintf("took a %s break", dur), 0)
43
			fmt.Fprintf(os.Stderr, "took a %s break\n", dur)
45
			fmt.Fprintf(os.Stderr, "took a %s break\n", dur)
44
		} else {
46
		} else {
45
			day.BreakStart = &now
47
			day.BreakStart = &now
48
			notifyCompletion("taking a break", 10*time.Hour)
46
		}
49
		}
47
		writeDay(dayFile, day)
50
		writeDay(dayFile, day)
48
	}
51
	}
53
			fmt.Fprintln(os.Stderr, err)
56
			fmt.Fprintln(os.Stderr, err)
54
			os.Exit(1)
57
			os.Exit(1)
55
		}
58
		}
59
		notifyCompletion(fmt.Sprintf("took a %s break", dur), 0)
56
		fmt.Fprintf(os.Stderr, "took a %s break\n", dur)
60
		fmt.Fprintf(os.Stderr, "took a %s break\n", dur)
57
		day.Break += dur
61
		day.Break += dur
58
		writeDay(dayFile, day)
62
		writeDay(dayFile, day)
98
		os.Exit(1)
102
		os.Exit(1)
99
	}
103
	}
100
}
104
}
105
106
func notifyCompletion(msg string, dur time.Duration) {
107
	args := make([]string, 0, 1)
108
	if dur != 0 {
109
		args = append(args, "--expire-time", fmt.Sprintf("%d", int(dur.Seconds()*1000)))
110
	}
111
	args = append(args, msg)
112
	notifyCmd := exec.Command("notify-send", args...)
113
	notifyCmd.Run()
114
}