Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Schedule your day visually, using timeblocking technique inside Emacs

License

Notifications You must be signed in to change notification settings

ichernyshovvv/org-timeblock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

240 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

org-timeblock

Emacs package that provides interactive multiple-day timeblock view for orgmode tasks.

Contents

Screenshots

org-timeblock-mode buffer:

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:

screenshots/org-timeblock-with-list-mode.png

You can switch to a multi-day view using org-timeblock-change-span [V]:

screenshots/multi-day-view.png

Screencast

https://youtu.be/lVV9gVp5nxU

Why

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

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:
(use-package org-timeblock
  :quelpa (org-timeblock :fetcher github :repo "ichernyshovvv/org-timeblock"))

Straight

Add this form to your init file:

(use-package org-timeblock
  :straight (org-timeblock :type git
              :host github
              :repo "ichernyshovvv/org-timeblock"))

Usage

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-<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.

Customization

M-x customize-group org-timeblock to see available customizable variables.

TODOs

  • [ ] 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

444GDw7rkd3Mj5hi6ZzEXZ4QN565TFw4J5ithFcywsMnJn7dFsxWTEQ4vtSMQC1sckFBu7neS8yZZRLnY8EYpS4UNMEAvpL




liberapay.com/ichernyshovvv

Changelog

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)

About

Schedule your day visually, using timeblocking technique inside Emacs

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors