Skip to content

dmitrym0/org-hyperscheduler

Repository files navigation

https://img.shields.io/circleci/build/gh/dmitrym0/org-hyperscheduler.svg https://www.shields.io/github/v/release/dmitrym0/org-hyperscheduler.svg?display_name=tag

org-hyperscheduler

What is Hyperscheduling

Hyperscheduling is the idea of fully planning your day using a calendar. Every minute of the day is assigned to some task using a calendar.

Table of Contents

What does org-hyperscheduler do?

org-hyperscheduler presents a web UI that allows agenda entries to be visualized and moved around easily.

Here’s a typical agenda (C-c a a):

images/org-agenda.png

and here is how it’s visualized in org-hyperscheduler:

images/org-hs-ui.png

  • blue entries are coming from an external calendar (such as org-gcal).
  • purple entries are part of standard org-agenda.

The user is free to modify entries or move them around provided org-hyperschedule-readonly-mode is disabled.

Planning A Day

When planning a day, it’s easy to start with a list of tasks:

images/org-agenda-2.png

and then visualize them to ensure that capacity is available:

images/org-hs-ui-2.png

Screen Cast

Real quick demo of what the package does:

https://img.youtube.com/vi/8vhhIYIS0zY/0.jpg

Installation

org-hyperschedule is not currently available in MELPA. Once the package matures, it will be added.

For now you can either download the source and install it manually or with use-package and straight.el:

(use-package org-hyperscheduler
  :straight
  ( :repo "dmitrym0/org-hyperscheduler"
    :host github
    :type git
    :files ("*")))

You can also use quelpa and install with the snippet below:

(package-install 'quelpa-use-package)
(require 'quelpa-use-package)

(use-package org-hyperscheduler
  :quelpa (org-hyperscheduler :fetcher github :repo "dmitrym0/org-hyperscheduler"))

You can then invoke M-x org-hyperscheduler-open to invoke the web view.

Configuration

Use M-x customize-group org-hyperscheduler to configure this module.

Read only mode

org-hyperscheduler is able to update entries in Emacs when using the web UI. To suppor this functionality, org-hyperscheduler must create IDs for each scheduled entry. If you are not ok with org-hyperscheduler modifying your data, keep org-hyperscheduler-readonly-mode turned on. In this mode you can visualize your agenda, but cannot make any changes in web UI.

Hiding calendar entries from org-roam

org-roam treats all entries with an :ID: property as roam nodes. This is not what I wanted. org-roam excludes all entries with the G

See org-hyperscheduler-exclude-from-org-roam through M-x customize-group org-hyperscheduler or

(setq org-hyperscheduler-exclude-from-org-roam t)

**Note**: Read only mode must be disabled for this to take effect.

Development

Running tests

  1. Install cask (brew install cask).
  2. Run cask to install dependencies.
  3. Run cask exec buttercup -L .

See also

org-roam-ui

org-hyperscheduler was heavily inspired by org-roam-ui. If you’re using org-roam it’s worth adding org-roam-ui.

calfw

calfw is a (textmode) calendaring framwork for emacs. I found it somewhat late into the development of org-hyperscheduler. If I found it earlier, I may have skipepd developing this.