89 lines
2.5 KiB
Markdown
89 lines
2.5 KiB
Markdown
# TiddlyPom
|
|
## _A simple console Pomodoro for C++ neckbeards_
|
|
|
|
### Why?
|
|
I wanted a simple, UNIX-friendly [Pomodoro](http://pomodorotechnique.com/) timer.
|
|
|
|
So I came across [Thyme](http://thymerb.com) and, while simple, it requires (a) a whole Ruby stack, (b) a bunch of dependencies and (c) does the annoying thing of writing to a file for integration elsewhere. A cute trick, but a dirty one nonetheless.
|
|
|
|
There's a right way to do this. UNIX domain sockets! C++!
|
|
|
|
So here it is.
|
|
|
|
### Building
|
|
Clone the repository. In the directory, run
|
|
|
|
```
|
|
make
|
|
```
|
|
|
|
And assuming you have g++ and a unixy system, it will just work. Nothing special.
|
|
|
|
### Usage
|
|
If you try
|
|
|
|
```
|
|
./tpom
|
|
```
|
|
|
|
You'll see a blank line. This is because the timer isn't running. Try
|
|
|
|
```
|
|
./tpom start
|
|
```
|
|
|
|
To start the daemon for a default of 25 minutes. If you want a different amount of time try one of:
|
|
|
|
```
|
|
./tpom start -s 90
|
|
./tpom start -m 15
|
|
```
|
|
|
|
For 90 seconds or 15 minutes, respectively. Now that it's running, run
|
|
|
|
```
|
|
./tpom
|
|
```
|
|
|
|
And lo, the remaining time will be echoed back to you.
|
|
|
|
### Integration
|
|
Because just running tpom is sufficient to connect to the daemon and get the remaining time (without smashing your filesystem cache) -- running the command means you can integrate it wherever you need.
|
|
|
|
#### tmux
|
|
Add
|
|
|
|
```
|
|
set -g status-right '#(~/path/to/tpom/tpom)'
|
|
set -g status-interval 1
|
|
```
|
|
|
|
Potentially with other options for your status-right, potentially other colors -- mine, for instance is:
|
|
|
|
```
|
|
set -g status-right '#[fg=green]#(~/src/tpom/tpom) #[fg=cyan,bold]%Y-%m-%d %H:%M:%S#[default]'
|
|
```
|
|
|
|
But you can fit it to taste.
|
|
|
|
#### awesome
|
|
I love [AwesomeWM](http://awesome.naquadah.org/). So you can add the timer as a countdown widget in your ~/.config/awesome/rc.lua:
|
|
|
|
```
|
|
pom = widget({type = "textbox"})
|
|
pom.text = " " .. execute_command("~/path/to/tpom") .. " "
|
|
pomtimer = timer({ timeout = 1})
|
|
pomtimer:add_signal("timeout", function()
|
|
pom.text = " " .. execute_command("~/path/to/tpom") .. " "
|
|
end)
|
|
pomtimer:start()
|
|
```
|
|
|
|
And add the ```pom``` variable to your widgets list.
|
|
|
|
### Post-Hook
|
|
|
|
Not to be outdone, you can execute an arbitrary script when the timer goes off. This is totally useful to cause notifications to fly, ring an alarm -- whatever you like. Create an executable file at ```~/.tpm-post.sh``` with a standard ```#!``` line at the top. An example is included -- just copy it to the right place.
|
|
|
|
### Questions?
|
|
It's a tiny thing, but feel free to help me improve it. Drop me a line, or [follow me on Twitter](http://twitter.com/barakmich).
|