Chapter 8: Agenda Views - Mission Control for Your Life
You’ve scattered TODO items across multiple files, added timestamps, tagged everything, and assigned properties. How do you make sense of it all? Enter the Agenda: Org-Mode’s killer feature that aggregates, filters, and presents your entire task universe in actionable views.
This is where Org-Mode graduates from “nice tool” to “how did I ever live without this?”
1. The Agenda Dispatcher
Press C-c a to open the agenda dispatcher. You’ll see options:
a Agenda for current week or day t List of all TODO entries m Match tags/properties/TODO M Match in all TODO files s Search for keywords ...
This is mission control. Each letter launches a different view of your data.
2. Setting Up Agenda Files
The agenda pulls from designated files. Tell Org which files to scan:
(setq org-agenda-files '("~/org/inbox.org" "~/org/projects.org" "~/org/work.org" "~/org/personal.org"))
Or use a directory (scans all .org files):
(setq org-agenda-files '("~/org/"))
The agenda searches these files for TODOs, timestamps, tags—everything we’ve built so far.
3. The Default Agenda View
C-c a a - Open the agenda for today/this week
You’ll see something like:
Week-agenda (W03): Monday 15 January 2025 W03 work: Scheduled: TODO Team meeting :meeting: projects: 10:00-11:00 Client call :client: Tuesday 16 January 2025 inbox: Scheduled: TODO Review pull requests :code: Wednesday 17 January 2025 work: Deadline: TODO Submit report :urgent: Thursday 18 January 2025 Friday 19 January 2025 Saturday 20 January 2025 Sunday 21 January 2025
Your entire week at a glance. Scheduled items, deadlines, appointments—all aggregated from multiple files.
3.1. Navigating the Agenda
n/p- Next/previous linef/b- Forward/backward one day/week.- Go to todayj- Jump to specific datev d/v w/v m/v y- View day/week/month/yearr- Refresh agendaRET- Jump to item in source fileTAB- Show item in another window (without leaving agenda)
3.2. Acting on Agenda Items
Here’s the magic: you can manipulate items directly from the agenda:
t- Change TODO stateC-c C-s- Schedule itemC-c C-d- Set deadline:- Set tagsC-c C-x p- Set propertiesI- Start clock on itemO- Stop clockC-c C-w- Refile item
Change something in the agenda, and it updates in the source file. The agenda isn’t just a view—it’s an interface.
4. The TODO List
C-c a t - Global TODO list
Shows all TODO items from agenda files:
Global list of TODO entries of type: ALL Available with `N r': (0)ALL (1)TODO (2)IN-PROGRESS (3)WAITING inbox: TODO Organize desk :home: projects: TODO Write documentation :work: work: TODO Review code :urgent:code: personal: TODO Buy groceries :errands:
Press t on any item to cycle its state. Press r to filter by TODO keyword.
This is your master task list, aggregated across your entire system.
5. Tag/Property Matching
C-c a m - Match tags, properties, TODO states
Examples of searches:
By tag:
work- All items tagged “work”urgent+work- Tagged both “urgent” and “work”urgent|bug- Tagged “urgent” or “bug”work-meeting- Tagged “work” but not “meeting”
By TODO state:
TODO“IN-PROGRESS”= - Items in IN-PROGRESS stateTODO<>"DONE"- Not doneTODO“TODO”|TODO=“WAITING”= - TODO or WAITING
By property:
CLIENT“ACME”= - CLIENT property equals “ACME”EFFORT>2:00- Effort greater than 2 hoursPRIORITY“A”= - Priority A items
Combined:
work+urgent+TODO“TODO”+EFFORT<4:00= - Work, urgent, TODO state, under 4 hours@office+PRIORITY“A”-meeting= - Office context, priority A, not meetings
Results display in agenda format. Act on them with the same keybindings.
6. Text Search
C-c a s - Search agenda files for keywords
Enter search terms. Org finds all headings and entries containing those words.
Use regular expressions:
C-c a s meeting|discussion- Contains “meeting” or “discussion”C-c a s bug.*critical- “bug” followed eventually by “critical”
Full-text search across your entire Org universe.
7. Custom Agenda Views
The real power: define custom views for your workflow.
7.1. Simple Custom Agendas
(setq org-agenda-custom-commands '(("w" "Work tasks" tags-todo "work" ((org-agenda-overriding-header "Work Tasks"))) ("h" "Home tasks" tags-todo "home" ((org-agenda-overriding-header "Home Tasks"))) ("u" "Urgent items" tags-todo "urgent" ((org-agenda-sorting-strategy '(priority-down)) (org-agenda-overriding-header "Urgent Items")))))
Now C-c a w shows work tasks, C-c a h shows home tasks, C-c a u shows urgent items sorted by priority.
7.2. Block Agendas
Combine multiple views:
(setq org-agenda-custom-commands '(("d" "Daily agenda and tasks" ((agenda "" ((org-agenda-span 1))) (tags-todo "urgent" ((org-agenda-overriding-header "Urgent Tasks"))) (tags-todo "work+TODO=\"IN-PROGRESS\"" ((org-agenda-overriding-header "In Progress"))) (todo "WAITING" ((org-agenda-overriding-header "Waiting On")))))))
C-c a d displays:
- Today’s agenda
- Urgent tasks
- In-progress work items
- Items waiting on others
One keystroke, complete daily dashboard.
7.3. Context-Based Views
For GTD-style contexts:
(setq org-agenda-custom-commands '(("c" . "Context views") ("co" "Office" tags-todo "@office") ("ch" "Home" tags-todo "@home") ("ce" "Errands" tags-todo "@errands") ("cp" "Phone calls" tags-todo "@phone")))
C-c a c shows context menu, then o for office tasks, h for home, etc.
7.4. Priority and Effort Views
(setq org-agenda-custom-commands '(("p" "Priority view" ((tags-todo "+PRIORITY=\"A\"" ((org-agenda-overriding-header "High Priority"))) (tags-todo "+PRIORITY=\"B\"" ((org-agenda-overriding-header "Medium Priority"))) (tags-todo "+PRIORITY=\"C\"" ((org-agenda-overriding-header "Low Priority")))))))
Tasks grouped by priority.
For effort-based planning:
(setq org-agenda-custom-commands '(("e" "Effort view" tags-todo "EFFORT<1:00" ((org-agenda-overriding-header "Quick tasks (<1 hour)")))))
Filter tasks you can knock out quickly.
8. Agenda Filtering
Within any agenda view:
/- Filter by tag (prompts for tag name)=- Filter by regexp_- Filter by category<- Filter by effort
Example workflow:
C-c a a- Open weekly agenda/thenwork- Show only work-tagged items/again to remove filter
Build filters on the fly as your focus changes.
9. Bulk Operations
Process multiple items at once:
- Mark items with
m - Press
Bfor bulk action menu - Choose action:
t- Change TODO states- Add/remove tagsd- Set deadline$- Archiver- Refile
Mark five tasks, press B t DONE, mark them all complete at once. Efficiency at scale.
10. Time Grid
Show a visual time grid in agenda:
(setq org-agenda-time-grid '((daily today require-timed) (0900 1200 1500 1800 2100) "......" "----------------"))
Your agenda now shows:
Monday 15 January 2025 9:00...... ________________ projects: 10:00-11:00 Client call 12:00...... ________________ work: 14:00-15:00 Team meeting 15:00...... ________________ 18:00...... ________________ 21:00...... ________________
Visual representation of your day’s structure.
11. Deadline Warnings
Org warns about approaching deadlines:
(setq org-deadline-warning-days 7) ; Warn 7 days in advance
In agenda:
Monday 15 January 2025 inbox: In 5 d.: TODO Submit tax documents :admin: projects: In 2 d.: TODO Client deliverable :work:urgent:
Never miss a deadline again.
12. Scheduled vs. Deadline Display
Both show in agenda, but differently:
#+begin_example
13. TODO Write report
DEADLINE: #+end_example
In agenda:
- Jan 15: “Scheduled: TODO Write report”
- Jan 16-19: Nothing (unless you configure otherwise)
- Jan 20: “Deadline: TODO Write report”
If not done by deadline, it shows as “Past deadline” on subsequent days, with increasing urgency.
Control this with:
(setq org-scheduled-past-days 7) ; Show scheduled items for 7 days if not done (setq org-deadline-warning-days 14) ; Warn 14 days before deadline
14. Habits Tracking
Org-Mode has built-in habit tracking:
#+begin_example
15. TODO Exercise
#+end_example
The .+1d makes it repeat daily from completion date. The STYLE: habit property makes Org track it as a habit.
In agenda, habits show with a consistency graph:
personal: Scheduled: TODO Exercise :health:
****!****** (consistency graph)
Green for completed, red for missed. Visual habit accountability.
Enable habit tracking:
(require 'org-habit) (add-to-list 'org-modules 'org-habit)
16. Agenda Export
Share your agenda with non-Org users:
C-c a a (open agenda) C-x C-w (write to file)
Choose format: HTML, PDF, text, iCalendar.
Your plain text task list becomes a shareable document.
For regular exports:
(setq org-agenda-custom-commands '(("X" agenda "" ((org-agenda-span 7) (org-agenda-file-regexp "\\.org$")) ("~/org-exports/weekly-agenda.html"))))
C-c a X auto-exports weekly agenda to HTML.
17. Column View in Agenda
Remember column view from Chapter 7? Works in agenda too:
C-c C-x C-c - Enable column view in agenda
See properties as columns across agenda items. Edit them directly.
18. Agenda and Clocking
From agenda:
I- Clock in to taskO- Clock outX- Cancel current clockJ- Jump to currently clocked task
Manage time tracking without leaving agenda view (more in Chapter 9).
19. Practical Agenda Setups
19.1. The Morning Dashboard
(setq org-agenda-custom-commands '(("m" "Morning view" ((agenda "" ((org-agenda-span 1))) (todo "IN-PROGRESS" ((org-agenda-overriding-header "In Progress"))) (tags-todo "+PRIORITY=\"A\"" ((org-agenda-overriding-header "High Priority"))) (tags-todo "+urgent" ((org-agenda-overriding-header "Urgent"))) (tags-todo "EFFORT<1:00" ((org-agenda-overriding-header "Quick Wins")))))))
One keystroke, see your day.
19.2. The Weekly Review
(setq org-agenda-custom-commands '(("r" "Weekly review" ((agenda "" ((org-agenda-span 7) (org-agenda-start-day "-7d"))) (todo "DONE" ((org-agenda-overriding-header "Completed This Week"))) (todo "TODO|IN-PROGRESS" ((org-agenda-overriding-header "Open Items"))) (stuck "" ((org-agenda-overriding-header "Stuck Projects")))))))
Review last week, plan next week.
19.3. The Project View
(setq org-agenda-custom-commands '(("p" . "Project views") ("pa" "Project Alpha" tags "project_alpha" ((org-agenda-overriding-header "Project Alpha Tasks")))))
Per-project task views.
20. Your Exercise
- Set up
org-agenda-filespointing to your org files - Create at least 10 tasks with various schedules, deadlines, and tags
- Open the default agenda (
C-c a a) and explore - Try the global TODO list (
C-c a t) - Perform tag searches (
C-c a m) - Create at least one custom agenda view
- Practice acting on items from the agenda (change states, refile, set tags)
- Try bulk operations (mark multiple, apply changes)
21. The Philosophy of Agenda Views
Most task managers present one view of your tasks—theirs. Org-Mode’s agenda system says “here are primitives, build what works for you.”
Need a GTD-style next actions list? Build it. Want a dashboard of today’s priorities? Configure it. Prefer a Kanban-style view? Custom agenda.
The agenda transforms your distributed, plain-text task data into exactly the views you need, when you need them. It’s the payoff for maintaining structured, tagged, timestamped tasks.
22. Next: Clocking and Time Tracking
You know what you need to do and when. But how long do tasks actually take? How do you spend your time? Chapter 9 reveals Org-Mode’s time tracking capabilities—frighteningly detailed time logs that live in plain text. Prepare to discover where your hours actually go.