https://github.com/basilioss/mdt
Command line markdown todo list manager
https://github.com/basilioss/mdt
cli command-line console gum markdown posix productivity shell task-manager todo todo-list todoapp todolist
Last synced: 27 days ago
JSON representation
Command line markdown todo list manager
- Host: GitHub
- URL: https://github.com/basilioss/mdt
- Owner: basilioss
- License: gpl-3.0
- Created: 2023-02-23T10:01:43.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-31T22:56:02.000Z (over 1 year ago)
- Last Synced: 2025-08-17T09:36:08.044Z (3 months ago)
- Topics: cli, command-line, console, gum, markdown, posix, productivity, shell, task-manager, todo, todo-list, todoapp, todolist
- Language: Shell
- Homepage:
- Size: 307 KB
- Stars: 137
- Watchers: 1
- Forks: 3
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-cli-apps-in-a-csv - mdt - A simple command-line Markdown todo list manager inspired by t. (<a name="todo-manager"></a>Todo managers)
README
mdt
A simple command-line markdown todo list manager inspired by t
Demo GIF using starship prompt, purify theme, JetBrains Mono font, along with NvChad and st
## :sparkles: Features
- Minimal set of functionality designed to finish tasks instead of organizing them.
- Flexible, future-proof markdown file format that you can use to add additional context and notes to your tasks.
- Nice, interactive command-line interface to quickly capture and check tasks.
## :package: Dependencies
- POSIX-compliant shell (dash, bash, zsh etc.)
- [gum](https://github.com/charmbracelet/gum#installation)
## :rocket: Installation
### Arch Linux
```sh
paru -S mdt # or with your AUR helper of choice
```
### macOS (Homebrew)
```sh
brew install mdt
```
### Manually with `make`
```sh
# Clone the repo
git clone https://github.com/basilioss/mdt
# Change your current directory to mdt
cd mdt
# Install
sudo make install
# Update
git pull
sudo make install
# Remove
sudo make uninstall
```
### Manually with `curl`
```sh
# Download
curl -L https://raw.githubusercontent.com/basilioss/mdt/main/mdt > mdt
# Make it executable
chmod +x mdt
# Move it somewhere in your $PATH
mv mdt ~/.local/bin
```
## :gear: Configuration
| Option | Environment Variable | Description |
| ------------------ | --------------------- | -------------------------------------------------------------------------------------------------------------------- |
| -d, --dir | MDT_DIR | Path to the tasks directory. By default the current working directory. |
| -i, --inbox | MDT_INBOX | Path to the inbox file. By default "TODO.md". |
| -m, --add-multiple | MDT_ADD_MULTIPLE_TASKS | Add multiple tasks at once. |
| -u, --unite-tasks | MDT_UNITE_TASKS | List all tasks in the file. By default false, if tasks are separated by headings, mdt will prompt you to select one. |
| --color | MDT_MAIN_COLOR | Main color. |
| --prompt | MDT_PROMPT | Input prompt character. Default is '◆'. |
| --cursor | MDT_CURSOR | Selection character. Default is '➔'. |
| --item-width | MDT_ITEM_WIDTH | Todo items width. 0 for no wrap, default is 75. |
| --input-width | MDT_INPUT_WIDTH | Input prompt width. 0 for no wrap, default is 65. |
| --editor | MDT_EDITOR, EDITOR | Markdown file editor. |
| | MDT_CHECKBOX_PREFIX | Prefix of markdown checkboxes `[ ]`/`[x]`. Default is '-'. |
Examples of using options:
```sh
# Static path to the inbox
alias mdt='mdt --dir ~/tasks --inbox ~/tasks/inbox.md'
# Dynamic path to the inbox
alias mdt='mdt --dir ~/tasks --inbox ~/tasks/"$(date -I).md"'
```
Examples of using environment variables:
```sh
export MDT_MAIN_COLOR='#5FAFFF'
export MDT_EDITOR='nvim -c "set nonumber"'
```
## :keyboard: Keybindings
| Keybinding | Description |
| ---------------------------- | ------------------- |
| ↓/↑, j/k, Ctrl+j/k, Ctrl+n/p | Move up/down |
| ←/→, g/G | Move top/bottom |
| Tab/Space/x | Select |
| a/A | Select/unselect all |
| Enter | Accept |