A simple task and time manager. Project moved here:
⚠️ Project archived. Have a look at unfog, its successor.
A simple task and time manager.
Then you can create, read, update, delete tasks using Vim mapping. The table will automatically readjust when you save the buffer (
To create a task, you can:
A tag should start by a
+. You can add as many tags as you need.
A due should start by a
:. There is 3 kinds of due:
:DDMMYY:HHMM, which correspond to a specific date.
:DDM:M. Kronos will try to find the closest date matching this due.
:4h. Available units:
y, mo, w, d, h, m.
Here some use cases:
| Actual date | Given pattern | Due | | --- | --- | --- | | 03/03/2019 21:42 |
:4| 04/03/2019 00:00 | | 03/03/2019 21:42 |
:2| 02/04/2019 00:00 | | 03/03/2019 21:42 |
:034| 03/04/2019 00:00 | | 03/03/2019 21:42 |
304| 30/04/2019 00:00 | | 03/03/2019 21:42 |
:0202| 02/02/2020 00:00 | | 03/03/2019 21:42 |
:020221| 02/02/2021 00:00 | | 03/03/2019 21:42 |
::22| 03/03/2019 22:00 | | 03/03/2019 21:42 |
::19| 04/03/2019 19:00 | | 03/03/2019 21:42 |
:4:2150| 04/03/2019 21:50 | | 03/03/2019 21:42 |
:2d| 05/03/2019 21:42 | | 03/03/2019 21:42 |
:1w10m| 10/03/2019 21:52 | | 03/03/2019 21:42 |
:1y13mo1h| 03/04/2021 22:42 |
Note: the date format is DD/MM/YYYY HH:MM
To show focused task details, press:
To update a task, just edit the cell and save:
duefield, you need to use the Kronos due format (
To start/stop a task, press:
To mark a task as done, delete the line:
To show/hide done tasks, press(for
The context filters tasks by a list of tags. Once set up:
To set up a context, press
go to context), and type all tags you want in your context (separated by spaces). Typing an empty context removes it:
You can sort tasks by pressing
gs(for ascending) or
gS(for descending). The sort depends on the position of the cursor. For eg, if it's in the
IDcolumn, it will sort the ids.
Note: once the tasks sorted, the buffer will be considered as modified, no matter the result.
The worktime allows you to check how much time you spent on one or many tags, grouped by day. Press
go to worktime), and type the tags you want to calculate the total worktime:
You can also add a beginning date with
>DDMMYY:HHMMand a ending date with
. (they can be absolute dues or approximative dues, but not relative dues). Here some valid options:
tag1 tag2 >18 <20: worktime for tag1, tag2 between the 18th and the 20th of the current month
tag1 >:10: worktime for tag1 starting at 10AM of the current day
tag2 <18:22: worktime for tag2 ending at 10PM of the 18th of the current month
To delete a task, delete the line when done tasks are shown:
By default, Kronos stores tasks in a file (
/path/to/vim/pluggins/kronos.vim/.database). You can define an additionnal backend (for now, only Taskwarrior is available):
let g:kronos_backend = 'file' | 'taskwarrior'
This way, tasks will be synchronized with Taskwarrior. It means you can manage basic actions with Kronos, and manage advanced ones with Taskwarrior CLI.
Note: the synchronization is only from Kronos to Taskwarrior. To synchronize from Taskwarrior to Kronos, check the import section below.
If you want to import your Taskwarrior tasks into Kronos, you can use the
import.pyscript at the root folder of the plugin. Usage:
./import.py taskwarrior ./path/to/your/backlog.data
Note: this will erase the current database
Here the default mappings:
| Function | Mapping | | --- | --- | | Toggle task || | Show task infos |
K| | Set context |
gc| | Sort (asc) |
gs| | Sort (desc) |
gS| | Hide/show done tasks |
gh| | Show worktime |
gw| | Jump to the next cell | | | Jump to the prev cell | | | Delete in cell |
dic| | Change in cell |
cic| | Visual in cell |
You can customize them:
nmap (kronos-toggle) nmap K (kronos-info) nmap gc (kronos-context) nmap gs (kronos-sort-asc) nmap gS (kronos-sort-desc) nmap gh (kronos-hide-done) nmap gw (kronos-worktime) nmap (kronos-next-cell) nmap (kronos-prev-cell) nmap dic (kronos-delete-in-cell) nmap cic (kronos-change-in-cell) nmap vic (kronos-visual-in-cell)
Git commit messages follow the Angular Convention, but contain only a subject.
Use imperative, present tense: “change” not “changed” nor “changes”
Don't capitalize first letter
No dot (.) at the end
Code should be as clean as possible, variables and functions use the snake case convention. A line should never contain more than
Tests should be added for each new functionality. Be sure to run tests before proposing a pull request.