Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ichernyshovvv/org-timeblock
Schedule your day visually, using timeblocking technique inside Emacs
https://github.com/ichernyshovvv/org-timeblock
calendar emacs orgmode timeblocking
Last synced: 4 days ago
JSON representation
Schedule your day visually, using timeblocking technique inside Emacs
- Host: GitHub
- URL: https://github.com/ichernyshovvv/org-timeblock
- Owner: ichernyshovvv
- License: gpl-3.0
- Created: 2023-07-28T10:33:45.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-10-27T08:05:37.000Z (3 months ago)
- Last Synced: 2025-01-15T04:33:21.228Z (18 days ago)
- Topics: calendar, emacs, orgmode, timeblocking
- Language: Emacs Lisp
- Homepage:
- Size: 530 KB
- Stars: 321
- Watchers: 6
- Forks: 22
- Open Issues: 27
-
Metadata Files:
- Readme: README.org
- License: LICENSE
Awesome Lists containing this project
README
#+html:
#+html:org-timeblock
#+html:Emacs package that provides interactive multiple-day timeblock
#+html: view for orgmode tasks.* Contents
- [[#screenshots][Screenshots]]
- [[#screencast][Screencast]]
- [[#why][Why I wrote this package]]
- [[#installation][Installation]]
- [[#usage][Usage]]
- [[#customization][Customization]]
- [[#todos][TODOs]]
- [[#donations][Donations]]
- [[#changelog][Changelog]]* Screenshots
:PROPERTIES:
:CUSTOM_ID: screenshots
:END:org-timeblock-mode buffer:
[[file:screenshots/org-timeblock-mode.png]]
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~:[[file:screenshots/org-timeblock-with-list-mode.png]]
You can switch to a multi-day view using ~org-timeblock-change-span [V]~:
[[file:screenshots/multi-day-view.png]]
* Screencast
:PROPERTIES:
:CUSTOM_ID: screencast
:END:[[https://youtu.be/lVV9gVp5nxU]]
* Why
:PROPERTIES:
:CUSTOM_ID: why
:END: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.* Installation
:PROPERTIES:
:CUSTOM_ID: installation
:END:Requirements:
- Emacs 28.1 (or higher)
- SVG support in your Emacs build** MELPA
You can install the package from MELPA using ~M-x package-install org-timeblock~
** package-vc-install (Emacs 29)
If you use Emacs 29, you can install the package via
~M-x package-vc-install RET https://github.com/ichernyshovvv/org-timeblock/ RET~
** Guix
If you use Guix, you can install the package from the official Guix channel.
** Quelpa
1. Install ~quelpa-use-package~ (which can be installed directly from MELPA).
2. Add this form to your init file:#+begin_src elisp
(use-package org-timeblock
:quelpa (org-timeblock :fetcher github :repo "ichernyshovvv/org-timeblock"))
#+end_src** Straight
Add this form to your init file:
#+begin_src elisp
(use-package org-timeblock
:straight (org-timeblock :type git
:host github
:repo "ichernyshovvv/org-timeblock"))
#+end_src* Usage
:PROPERTIES:
:CUSTOM_ID: usage
:END:There are two major modes provided by the package:
- ~org-timeblock-mode~. Displays timeblock view of ~SCHEDULED/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- / C-f]~
- org-timeblock-day-earlier ~[C- / 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~.* Customization
:PROPERTIES:
:CUSTOM_ID: customization
:END:~M-x customize-group org-timeblock~ to see available customizable variables.
* TODOs
:PROPERTIES:
:CUSTOM_ID: todos
:END:
- [ ] 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* Donations
:PROPERTIES:
:CUSTOM_ID: donations
:END:
#+html:
#+html:
~444GDw7rkd3Mj5hi6ZzEXZ4QN565TFw4J5ithFcywsMnJn7dFsxWTEQ4vtSMQC1sckFBu7neS8yZZRLnY8EYpS4UNMEAvpL~
#+html:
#+html:
#+html: liberapay.com/ichernyshovvv
#+html:* Changelog
:PROPERTIES:
:CUSTOM_ID: changelog
:END:** 0.1
First tagged release.
** 0.2
- 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)