Schedule your day visually, using timeblocking technique inside Emacs.
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
:
The builtin orgmode package for viewing tasks or events for a particular day, org-agenda, does not help you to quickly understand, where, for example, you have free time in your day or where you have overlapping tasks. Just a list of tasks is not sufficient. This package is created to fix this problem and provide some of the functionality that modern calendars provide.
There are two major modes provided by the package:
org-timeblock-mode
. Displays visual schedule (timeblocks) of org tasks that are scheduled or have an active timestamp in their body (orgmode events) for selected day (Currently, only day view is available). Available commands:- org-timeblock-day-earlier/later
[C-<down>/<up>]
- org-timeblock-set-duration
[d]
- org-timeblock-reschedule
[s]
- org-timeblock-new-task
[+]
- org-timeblock-toggle-timeblock-list
[t]
- org-timeblock-todo
[1]
- org-timeblock-done
[5]
- org-timeblock-switch-view
[v]
- org-timeblock-jump-to-day
[j]
- org-timeblock-day-earlier/later
org-timeblock-list-mode
. Displays a list of org tasks that are scheduled or orgmode events for selected day. It’s sort of like a light org-agenda. The tasks can be sorted viaSCHEDULED
org property or manually placed by user via commandsorg-timeblock-list-drag-line-forward/backward [M-<up>/<down>]
. The order can be saved in a cache file viaorg-timeblock-list-save [C-s]
command. The sorting algorithm can be changed viaorg-timeblock-list-toggle-sort-function [S]
command.- org-timeblock-list-schedule
[s]
- org-timeblock-list-set-duration
[d]
- org-timeblock-todo
[1]
- org-timeblock-done
[5]
- org-timeblock-list-drag-line-forward/backward
[M-<down>/<up>]
- org-timeblock-list-toggle-sort-function
[S]
- org-timeblock-list-toggle-timeblock
[t]
- org-timeblock-list-schedule
Requirements:
- Emacs 28.1 (or higher)
- SVG support in your Emacs build
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 this channel.
- To add the channel, add this to the list of channels in
channels.scm
:
(channel
(name 'sklv)
(url "https://git.sr.ht/~sokolov/channel"))
- Then, run
guix pull
. - Now you can install the package.
- 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"))
To enter org-timeblock-list-mode
, run M-x org-timeblock-list
. To
enter org-timeblock-mode
, run M-x org-timeblock
For both modes, the default date is today. All the tasks and events
are searched in (org-agenda-files)
. You can change the displayed
date via the following commands:
- org-timeblock-day-later
[C-<down>]
- org-timeblock-day-earlier
[C-<up>]
- org-timeblock-jump-to-day
[j]
To navigate between tasks/blocks, use these commands:
- org-timeblock-list-mode
- org-timeblock-list-previous-line
[<up>]
- org-timeblock-list-next-line
[<down>]
- org-timeblock-list-previous-line
- org-timeblock-mode
- org-timeblock-forward-block
[<down>]
- org-timeblock-bacward-block
[<up>]
- org-timeblock-forward-block
In both modes, you can navigate via mouse clicks to select an entry or a block.
To reschedule or change the duration of a task at point, use these commands:
- org-timeblock-list-mode
- org-timeblock-list-schedule
[s]
- org-timeblock-list-set-duration
[d]
- org-timeblock-list-schedule
- org-timeblock-mode
- org-timeblock-schedule
[s]
- org-timeblock-set-duration
[d]
- org-timeblock-schedule
M-x customize-group org-timeblock
to see available customizable variables.