README
¶
Org
A simple terminal-based Org-mode task manager inspired by the simplicity of nano. Manage your TODO items, track time, and stay organized without leaving the command line.
Installation
go install github.com/rwejlgaard/org/cmd/org@latest
Or build from source:
git clone https://github.com/rwejlgaard/org
cd org
go build -o bin/org ./cmd/org
Usage
org # Open ./todo.org (default)
org tasks.org # Open specific org file
org /path/to/work.org # Open specific org file with path
org -m # Multi-file: Load all .org files in current directory
org -m /path/to/dir # Multi-file: Load all .org files in specified directory
Single-File Mode (Default)
By default, org opens ./todo.org or the file you specify:
org # Opens ./todo.org
org tasks.org # Opens tasks.org
org ~/work/project.org # Opens specific file
Multi-File Mode
Use the -m or --multi flag to load all .org files in a directory as top-level items. Each file appears as a top-level item in the interface, with its contents nested underneath. Changes made to items are automatically saved back to their respective files.
org -m # Load all .org files in current directory
org -m /path/to/dir # Load all .org files in specified directory
Example: If you have these files in your directory:
work.orgcontaining work taskspersonal.orgcontaining personal tasksideas.orgcontaining project ideas
Running org -m will display:
* work.org
** TODO Complete project proposal
** PROG Review code changes
* personal.org
** TODO Buy groceries
* ideas.org
** New app concept
Contributing
Feel free to fork and create a pull request if there's any features missing for your own use case!
Features
Task Management
- Customizable TODO States: Define your own workflow states with custom colors (default: TODO, PROG, BLOCK, DONE)
- Hierarchical Tasks: Create sub-tasks and organize items with multiple levels
- Priority Levels: Set priorities (A, B, C) with color-coded indicators
- Tags: Organize tasks with tags like
:work:urgent:with customizable colors - Folding: Collapse and expand tasks and notes with Tab key
- Quick Capture: Press 'c' to quickly capture new TODO items
- Reorder Mode: Reorganize tasks with shift+up/down arrows
Scheduling & Deadlines
- Deadlines: Set and track task deadlines with visual indicators
- Scheduled Dates: Schedule tasks for specific dates
- Agenda View: View upcoming tasks for the next 7 days
- Overdue Highlighting: Automatically highlights overdue items in red
Time Tracking
- Clock In/Out: Track time spent on tasks with 'i' (clock in) and 'o' (clock out)
- Duration Display: See current and total time tracked per task
- Effort Estimates: Set estimated effort (e.g., 8h, 2d, 1w)
- Automatic Logging: All clock entries are logged in LOGBOOK drawer
Notes & Documentation
- Rich Notes: Add detailed notes to any task with Enter key
- Syntax Highlighting: Code blocks are automatically highlighted (supports both ```lang and #+BEGIN_SRC formats)
- Markdown Support: Use markdown-style code blocks in your notes
- Drawer Management: LOGBOOK and PROPERTIES drawers are automatically filtered in list view
Keybindings
| Key | Action |
|---|---|
↑/k, ↓/j |
Navigate up/down |
←/h, →/l |
Cycle state backward/forward |
t or space |
Cycle TODO state |
tab |
Fold/unfold item |
enter |
Edit notes |
c |
Capture new TODO |
s |
Add sub-task |
D |
Delete item (with confirmation) |
# |
Add/edit tags |
a |
Toggle agenda view |
i |
Clock in |
o |
Clock out |
d |
Set deadline |
p |
Set priority |
e |
Set effort |
r |
Toggle reorder mode |
shift+↑/↓ |
Move item up/down |
, |
Open settings |
ctrl+s |
Save |
? |
Toggle help |
q or ctrl+c |
Quit |
Note: All keybindings can be customized in the configuration file.
Auto-save
Changes are automatically saved when you quit the application.
Screenshots
List view

Editing notes

Prompts

Settings

Configuration
The application can be configured using a TOML configuration file located at:
- Linux/macOS:
~/.config/org/config.toml - Windows:
%APPDATA%\org\config.toml
The configuration file is automatically created with default values on first run.
Configuration Structure
Tags
Define custom tags with colors:
[tags]
enabled = true
default_tag = "work"
[[tags.tags]]
name = "work"
color = "99" # Blue
[[tags.tags]]
name = "personal"
color = "141" # Purple
[[tags.tags]]
name = "urgent"
color = "196" # Red
States
Customize TODO states with colors:
[states]
[[states.states]]
name = "TODO"
color = "202" # Orange
[[states.states]]
name = "PROG"
color = "220" # Yellow
[[states.states]]
name = "BLOCK"
color = "196" # Red
[[states.states]]
name = "DONE"
color = "34" # Green
Colors
Customize UI colors (using ANSI color codes):
[colors]
todo = "202" # Orange
progress = "220" # Yellow
blocked = "196" # Red
done = "34" # Green
cursor = "240" # Gray
title = "99" # Blue
scheduled = "141" # Purple
overdue = "196" # Red
status = "241" # Dark gray
note = "246" # Light gray
folded = "243" # Medium gray
Keybindings
Customize all keybindings (can specify multiple keys per action):
[keybindings]
up = ["up", "k"]
down = ["down", "j"]
left = ["left", "h"]
right = ["right", "l"]
cycle_state = ["t", " "]
toggle_fold = ["tab"]
edit_notes = ["enter"]
capture = ["c"]
add_subtask = ["s"]
delete = ["D"]
tag_item = ["#"]
settings = [","]
toggle_view = ["a"]
save = ["ctrl+s"]
help = ["?"]
quit = ["q", "ctrl+c"]
# ... and more
Settings UI
Press , (comma) to open the settings interface where you can:
Tags Tab
- Add new tags with custom colors
- Edit tag names and colors (format:
name,color) - Delete tags with
D - Reorder tags with
shift+up/down
States Tab
- Add new TODO states with custom colors
- Edit state names and colors (format:
name,color) - Delete states with
D - Reorder states with
shift+up/down(affects cycling order)
Keybindings Tab
- View all keybindings
- Edit keybindings (format: comma-separated keys, e.g.,
up,k) - Multiple keys can be bound to the same action
Navigation: Use left/right arrows to switch between tabs Auto-save: All changes are automatically saved to the config file
File Format
The application uses standard Org-mode file format (.org), making it compatible with Emacs Org-mode and other Org-mode tools. Tags are stored in the standard org-mode format:
* TODO Task title :work:urgent:
* DONE Completed task :personal:
License
MIT