pmdclock
Version:
CLI clock agent/client for pomodoro
181 lines (135 loc) • 6.06 kB
Markdown
# pmdclock, a simple CLI pomodoro clock
Clock for pomodore control based on an agent
## Features:
* 100% CLI
* Configurable times
* Continuous mode
* Persist taks history on disk
* Notification by libnotify (Desktop integrated)
* Execute custom command when finish time
* Auto large rests after x completed tasks
# Install
You need node.js (~7.4.0 recommended) and npm installed.
$ sudo npm install -g pmdclock
# Usage
Start the agent:
$ pmdclock agent
Starting agent
$
Start new task
$ pmdclock start -n "Cooking potatoes"
Task started!
Let's work...
Get information
$ pmdclock info
Cooking potatoes finish in 17 minutes
Finish the task
$ pmdclock finish
Task finished! in 8 minutes
Take a rest
$ pmdclock rest
Rest started!
Or, a large rest:
$ pmdclock rest --large
Large rest started!, be happy
$ pmdclock finish
Rest finished at 1 minutes
Check the history:
$ pmdclock list
┌───┬──────────────────┬──────────────────┬──────────────────┬──────────┐
│ │ Name │ Started │ Finished │ On time │
│ * │ Cooking potatoes │ Today at 5:05 PM │ Today at 5:13 PM │ -25 mins │
│ - │ Rest │ Today at 5:14 PM │ Today at 5:15 PM │ -5 mins │
└───┴──────────────────┴──────────────────┴──────────────────┴──────────┘
Clear history:
$ pmdclock clear
History clear, 2 tasks deleted.
$ pmdclock list
Not tasks finished
## Continuous mode
Continuous mode allows to finish tasks starting rest and vice versa:
$ pmdclock start -n "Cooking potatoes"
Task started!
$ pmdclock rest
Task finished!
Rest started!
$ pmdclock start -n "Prepare dishes"
Rest finished!
Task started!
$ pmdclock finish
Task finished! in 0 minutes
$ pmdclock list
┌───┬──────────────────┬──────────────────┬──────────────────┬──────────┐
│ │ Name │ Started │ Finished │ On time │
│ * │ Cooking potatoes │ Today at 5:19 PM │ Today at 5:19 PM │ -25 mins │
│ - │ Rest │ Today at 5:19 PM │ Today at 5:19 PM │ -5 mins │
│ * │ Prepare dishes │ Today at 5:19 PM │ Today at 5:20 PM │ -25 mins │
└───┴──────────────────┴──────────────────┴──────────────────┴──────────┘
# Configure
The default configuration uses times by: 25 minutes task, 5 minutes rest and 20
minutes for large rests, but it's configurable via a json file located in
$HOME/.pmdclock/config.yml:
For example:
```yaml
taskTime: 40
restTime: 10
largeRestTime: 30
```
The complete params are:
|Param|Type|Description|Default value|
|:----|:--:|:----------|:------------|
|socket|String|Path of the socket file for agent|/run/user/{UUID}/pmdclock.socket`|
|db|String|Path of the db file|$HOME/.pmdclock/db.dat|
|daemon|Boolean|Run agent as daemon|true|
|taskTime|Number|Task time in minutes|25|
|restTime|Number|Rest time in minutes|5|
|largeRestTime|Number|Large rest time in minutes|20|
|autoLargeRest|Boolean/Number|Auto set the next rest as large after x complete tasks, if false don't auto-set|4|
|showNotifications|Boolean|Show notifications via libnotify|true|
|runCmd|String|Command to run when time is over|null|
|autoStopCmd|String/Boolean|Stop command on finish task, if is false don't kill the child, if is true, kill with SIGTERM, if is string, use it as signal, enable signals: SIGHUP, SIGINT, SIGQUIT, SIGKILL, SIGTERM, SIGUSR1, SIGUSR2, SIGCHLD, SIGSTOP, SIGTSTP|false|
|notifyEach|Number|Notify each x time, in secods|30|
|infoFormat|String|Output format of comand info[0]|"%n finish in %R"|
|continueMode|Boolean|If start a rest when a task is running, close the task and vise versa|true|
|taskIcon|String|Task icon on list[1]|[x]|
|taskRunningIcon|String|Icon for running task[1]|[>]|
|restIcon|String|Rest icon in list[1]|o/|
|largeRestIcon|String|Large rest icon[1]|...|
|largeRestRunningIcon|String|Icon for running large rest[1]|:D|
|reverseSort|Boolean|List in reverse by default|false|
|defaultListHead|Number|List appling --head parman by default, see ```pmdclock list --help```|0|
|defaultListTail|Number|List appling --tail parman by default, see ```pmdclock list --help```|0|
## 0: Info variables
The variables start with % and there are:
* **n**: Name of task
* **i**: Icon
* **r**: Time left on mm:ss
* **R**: Time left on human readable format, ej: *13 minutes*
* **e**: Time elapsed on mm:ss
* **E**: Time elapsed on human readable format
* **t**: Number of tomatoes recolected
* **T**: Repeat the taskIcon the total tomatoes recolected times
## 1: Tasks icons
If you use fonts patches with
[Pomicons](https://github.com/gabrielelana/pomicons) you can use it for stylish
output of *list* command.

For use it, define icons as ```\uE001``` and ```\uE005```.
```yaml
taskIcon: "\uE001"
taskRunningIcon: "\uE004"
restIcon: "\uE005"
restRunningIcon: "\uE005"
largeRestIcon: "\uE006"
largeRestRunningIcon: "\uE006"
```
# Usage with i3wm + i3blocks
The reasons why I developed this software, apart from not finding anything
similar that I like, it was to implement it on my desktop with i3 + i3blocks,
so I leave the configuration in case someone else serves:
```
[pomodoro]
command=pmdclock info --format "%T%i %r" | sed "s/^Not tasks.*$//g"
color=#FFFF00
interval=5
```