Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mlowicki/termtodo
Minimalistic yet powerful command-line todo app for your console.
https://github.com/mlowicki/termtodo
cli cron go raspberry-pi tmux todo
Last synced: 12 days ago
JSON representation
Minimalistic yet powerful command-line todo app for your console.
- Host: GitHub
- URL: https://github.com/mlowicki/termtodo
- Owner: mlowicki
- License: mit
- Created: 2020-04-30T16:27:36.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2020-05-19T16:00:20.000Z (over 4 years ago)
- Last Synced: 2024-12-15T18:44:46.225Z (about 2 months ago)
- Topics: cli, cron, go, raspberry-pi, tmux, todo
- Language: Go
- Homepage:
- Size: 4.68 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# termtodo [![Build Status](https://travis-ci.com/mlowicki/termtodo.svg?token=Wu2ZDxNBSqPxs4JUg6tc&branch=master)](https://travis-ci.com/mlowicki/termtodo)
Minimalistic todo app for your terminal.
![terminal session](/session.gif)
## Features
* One-time or recurring triggers (using cron syntax) defining when todo should be created
* Integration with [Blinkt!](https://learn.pimoroni.com/tutorial/sandyj/getting-started-with-blinkt) for notifications on Raspberry Pi![Blinkt! alert](/alert.gif)
* Easy to integrate with terminal multiplexers like tmux
* Efficient command-line interface
* All data stored locally## Installation
### From source
1. Install [Go](https://golang.org/doc/install)
2.
```
$ git clone [email protected]:mlowicki/termtodo.git
$ cd termtodo
$ go build -tags raspbian // pass this tag only on Raspbian
$ ./termtodo
```## Commands
### a(dd)
Create a trigger that adds todo either once or regularly.Call Mom in 10 minutes:
```
:a +10m "call mom"
```Drink coffee at 9:00:
```
:a @9:00 "coffee with Joe"
```Do your workout at 10:00 every weekday:
```
:add "0 10 * * 0-5" workout
```See [Time formats](#time-formats) for a list of all supported formats.
### r(m)
Delete todo or trigger, depending on the active view. Accepts optional selector to specify the item to remove:
* If the selector is missing, then the first item from the top will be erased.
* If the selector is `*`, then all items will be removed.
* Otherwise selector is interpreted as a number.Delete the first todo from the list (number 1):
```
:r
```Delete todo #4:
```
:r 4
:rm 4
```Delete all todos:
```
:r *
```
### s(nooze)
Postpone todo. Accepts optional selector to specify the todo to re-schedule:
* If the selector is missing, then the first item from the top will be erased.
* If the selector is `*`, then all todos will be removed.
* Otherwise selector is interpreted as a number.Snooze the first todo for 1h (trigger in 60 minutes):
```
:s +1h
```Trigger todo again at 11:00:
```
:s @11:00
```Re-schedule todo #4 in 4 minutes:
```
:s +1m 4
```Snooze todo #2 for 20 minutes:
```
:snooze +20m 2
```Snooze all todos for 20 minutes:
```
:s +20m *
```See [Time formats](#time-formats) for a list of all supported formats. Snooze command supports one-time triggers only, so it doesn't support cron format.
### to(dos)
Show things to do (default view).```
:to
:todos
```
### tr(iggers)
Show schedules for todos.```
:tr
:triggers
```
### q(uit) or \
Quit program.```
:q
:quit
:
```## Time formats
### Relative time
```
\+(\d+)[smhd]
```Where `smhd` stands for seconds, minutes, hours and days, respectively.
In 10 seconds:
```
+10s
```In 4 days:
```
+4d
```### Absolute time
At a specific time of the current day:
```
@\d{2}:\d{2}
```Examples:
```
@10:00
@23:15
@9:10
```### Cron
Define recurring event. It's implemented by:
```
cron.NewParser(cron.SecondOptional | cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.Dow | cron.Descriptor)
```
(see https://godoc.org/github.com/robfig/cron#hdr-Alternative_Formats for more details)At 10:00 every weekday:
```
0 10 * * 0-5
```Every 10 seconds:
```
*/10 * * * * *
```
(adding seconds is an extension, so it requires an additional 6th field)Every hour:
```
@hourly
@every 1h
```