This package provides functions to define time budgets per week and display clocked time in a fancy table.
(setq org-time-budgets '((:title "Business" :match "+business" :budget "30:00" :blocks (workday week))
(:title "Sideprojects" :match "+personal+project" :budget "14:00" :blocks (day week))
(:title "Practice Music" :match "+music+practice" :budget "2:55" :blocks (nil week))
(:title "Exercise" :match "+exercise" :budget "5:15" :blocks (day))
(:title "Language" :match "+lang" :budget "5:15" :blocks (day week))))Running the function org-time-budgets-table will return something like:
Business [|||||.........] 02:47 / 06:00 [||............] 05:46 / 30:00
Sideprojects [||||..........] 00:36 / 02:00 [|.............] 01:10 / 14:00
Practice Music [|||||.........] 01:04 / 02:55
Exercise [..............] 00:00 / 00:45
Language [|||||||||||...] 00:36 / 00:45 [|||...........] 01:10 / 05:15
With the :blocks parameter you can define the time blocks to show in
the agenda. It takes a list with any number of entries. Valid entries
are:
weekto show the total clocked time this week.dayto show todays budget based on a 7 day week.workdayto show todays budget based on a 5 day week.nilto display nothing for this block in the budgets table. Use this to align your different budgets.
The default value is (day week).
You can add your org-time-budgets to the top of your org-agenda by
doing something like:
(setq org-agenda-custom-commands
'(("a" "Agenda"
((agenda "" ((org-agenda-sorting-strategy '(habit-down time-up priority-down category-keep user-defined-up))))
(org-time-budgets-in-agenda-maybe)))))The budgets table can be toggled using V in the agenda.
With the variable org-time-budgets-hide-on-weekend you can control
whether or not workday blocks are also displayed on weekends.
If you set the budget to zero only the clocked time is shown in the budgets table. You can use this as a simplified clock table. For example to track time spent on distractions.
I don't want this thing to die. And I would like to learn cool stuff! :-)
- Improve performance I would love to learn how to make this package faster! Currently I am using default org-mode functions for gathering clocked times. Maybe there is a better and more performant way.
- Add block types
Currently time budgets can be per
'day,'workdayand'week, maybe something else is cool too.
GNUv3!