- Screenshots
- Screencast
- Why I wrote this package
- Installation
- Usage
- Customization
- TODOs
- Donations
- Changelog
org-timeblock-mode buffer:
You can press [T]
to toggle the display of org-timeblock-list-mode
buffer. Foreground colors for timeblocks are generated randomly, but
you can assign specific background and foreground colors in
customizable variable org-timeblock-tag-colors
:
You can switch to a multi-day view using org-timeblock-change-span [V]
:
The builtin orgmode package for collecting and displaying open tasks/events/deadlines relevant for a particular set of dates, org-agenda, does not have a timeblock representation which is available in almost all modern calendars.
Sometimes, a list representation (like in org-agenda) is not sufficient, because it can be difficult to quickly get an overview of a day or week schedule.
Requirements:
- Emacs 28.1 (or higher)
- SVG support in your Emacs build
You can install the package from MELPA using M-x package-install org-timeblock
If you use Emacs 29, you can install the package via
M-x package-vc-install RET https://github.com/ichernyshovvv/org-timeblock/ RET
If you use Guix, you can install the package from the official Guix channel.
- Install
quelpa-use-package
(which can be installed directly from MELPA). - Add this form to your init file:
(use-package org-timeblock
:quelpa (org-timeblock :fetcher github :repo "ichernyshovvv/org-timeblock"))
Add this form to your init file:
(use-package org-timeblock
:straight (org-timeblock :type git
:host github
:repo "ichernyshovvv/org-timeblock"))
There are two major modes provided by the package:
org-timeblock-mode
. Displays timeblock view ofSCHEDULED/DEADLINE
org tasks or events (entries that have active timestamps in the body or heading) for specific days.org-timeblock-list-mode
. Displays a list of tasks (including those that are not time-specific).
Run M-x org-timeblock
to open 3-day view that starts from today’s date. The
default days span can be customized via org-timeblock-span
variable. In the
view you will see only entries that have time specified in their timestamps. To
see other found tasks/events (entries that have timestamps without time), press
T
(M-x org-timeblock-toggle-timeblock-list).
Tasks and events are searched in org-timeblock-files
which defaults to
(org-agenda-files)
.
To navigate between the blocks, use [fbpn]
, arrow keys or mouse (yes, the
blocks are clickable).
To open other dates, you can run the following the following commands:
- org-timeblock-day-later
[C-<right> / C-f]
- org-timeblock-day-earlier
[C-<left> / C-b]
- org-timeblock-jump-to-day
j
- org-timeblock-change-span
V
To reschedule or change the duration of the task bound to the selected block, use these commands:
- org-timeblock-schedule
s
- org-timeblock-set-duration
d
Also, you can mark the blocks and operate on them via M-x org-timeblock-schedule [s]
:
- org-timeblock-mark-block
m
- org-timeblock-mark-by-regexp
%
- org-timeblock-unmark-block
u
- org-timeblock-unmark-all-blocks
U
If you want to add a new task, press +
(M-x org-timeblock-new-task).
Almost all commands with the same bindings are available in
org-timeblock-list
.
M-x customize-group org-timeblock
to see available customizable variables.
- [ ] Implement caching mechanism for SVG data
- [ ] Improve timeblocks layout algorithm
- [ ] Split each column into a separate SVG image to improve the speed of
*org-timeblock*
buffer redisplay - [ ] Create timeblock.el library that could be used for iCalendar and other time data
444GDw7rkd3Mj5hi6ZzEXZ4QN565TFw4J5ithFcywsMnJn7dFsxWTEQ4vtSMQC1sckFBu7neS8yZZRLnY8EYpS4UNMEAvpL
liberapay.com/ichernyshovvv
First tagged release.
- Added mark commands (
mark-block
,unmark-block
,mark-by-regexp
) for timeblocks that can be used to reschedule multiple tasks at once - Replaced ts.el with built-in time API
- Replaced org-ql with own searching and caching functions
- dom.el is now used instead of regexps to fetch and change SVG data (much cleaner code)
- Deadline timestamps are now treated as it should be, not as events
- Now, each active timestamp in a heading body is displayed (as event), not only the first one
- Added custom variable org-timeblock-files
- Other minor bug fixes and improvements 8)