Home

Awesome

Vault-tasks

vault-tasks is a TUI Markdown task manager.

It will parse any Markdown file or vault and display the tasks it contains.

Demo

Why

I made this tool because I wanted to integrate my task system directly inside my Second Brain.

Markdown tasks are very easy to integrate with knowledge and projects.

I also spend most of my writing time in the terminal (Helix) and do not rely on heavy external software.

Features

Planned Features

Installation

Cargo

cargo install vault-tasks

Nix

It will be added to nixpkgs when I have time to make a nix module. For now, add the repo to your inputs:

vault-tasks = {
  url = "github:louis-thevenet/vault-tasks";
  inputs.nixpkgs.follows = "nixpkgs";
};

And use the package in your configuration: inputs.vault-tasks.packages.${pkgs.system}.default

Build From Source

git clone https://github.com/louis-thevenet/vault-tasks.git
cd vault-tasks
cargo build --release

Usage

See vault-tasks --help for basic usage.

Writing tasks

<!-- An example task in your markdown file -->

- [ ] An example task #tag tomorrow p1
      A description
      of this task
  - [x] A subtask today @today
  - [/] Another subtask 10/23 @today
    Partly done
  - [-] This one is canceled
TokenMeaning
- [ ] (- [x], ...)declares a task and sets its state
p1 (p10, ...)sets the priority
#tagis a tag, a task can have zero or more tags
@today (@tod, @t)is a special tag that will mark the task as part of today's tasks
23/10 (2024/23/10)sets the due date with a literal date
today (tdy)sets the due date to today
tomorrow (tmr)sets the due date to tomorrow
a day of the week (monday or mon, etc)sets the due date to the next occurence of that day
3d (3m, 3w, 3y, ...)means "in 3 days" and will set the due date accordingly

This is what you will see in the preview of this README.md in vault-tasks:

<!-- Or when filtering for `@today` tasks: --> <!-- ![](./examples/demo_filter.png) -->

Default Key Map

Check the key map within the app with ?

General

KeyAlternate KeyAction
shift-hshift-←Previous tab
shift-lshift-→Next tab
ctrl-kctrl-↓Scroll up
ctrl-jctrl-↑Scroll down
page_downScroll one page down
page_upScroll one page up
qctrl-cQuit the application
?Open keybindings menu for the current tab

Explorer Tab

Navigation
KeyAlternate KeyAction
k, shift-tabPrevious entry
j, tabNext entry
h, back_spaceLeave current entry
l,enterEnter current entry
Commands
KeyAction
sFocus search bar (enter or esc to unfocus)
oOpen selection in default editor
eQuickly edit selection
rReload vault
tMark task To-Do
dMark task Done
iMark task Incomplete
cMark task Canceled

Filter Tab

Commands
KeyAction
enterFocus/Unfocus search bar
Shift-sChange sorting mode

Time Management Tab

Navigation
KeyAlternate KeyAction
kPrevious setting
jNext setting
Commands
KeyAction
spaceNext segment (skip current)
pPause timer
eEdit selected setting
shift-tabPrevious time management technique
tabNext time management technique

Modes

You can start already focused on a tab by using one of the CLI subcommands:

vault-tasks explorer # is the default
# Or
vault-tasks filter
vault-tasks time

You can also output the content of a vault in standard output using

vault-tasks stdout

Example output:

vault-tasks -v ./README.md stdout
./README.md
‾‾‾‾‾‾‾‾‾‾‾
        README.md
        ‾‾‾‾‾‾‾‾‾
                Vault-tasks
                ‾‾‾‾‾‾‾‾‾‾‾
                        Usage
                        ‾‾‾‾‾
                                Writing tasks
                                ‾‾‾‾‾‾‾‾‾‾‾‾‾
                                        ❌ An example task
                                        📅 2024-12-22 (tomorrow)❗1
                                        #tag
                                        A description
                                        of this task

                                                ✅ A subtask
                                                ☀️ 📅 2024-12-21 (today)


                                                ⏳ Another subtask
                                                ☀️ 📅 2024-10-23 (2 months ago)
                                                Partly done


                                                🚫 This one is canceled


Configuration

The config.toml contains the default configuration which can be generated using vault-tasks generate-config.

In $HOME/.config/vault-tasks/config.toml, you can override the default settings, keybindings and colorscheme.

In particular, you can set a default vault path.

Contributing

Feel free to submit issues or pull requests. Contributions are welcome!