[[https://app.circleci.com/pipelines/github/dmitrym0/org-hyperscheduler?branch=main&filter=all][https://img.shields.io/circleci/build/gh/dmitrym0/org-hyperscheduler.svg]] [[https://github.com/dmitrym0/org-hyperscheduler/releases][file:https://www.shields.io/github/v/release/dmitrym0/org-hyperscheduler.svg?display_name=tag]]
** 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 :TOC:
** 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~):
[[file:images/org-agenda.png]]
and here is how it's visualized in org-hyperscheduler:
[[file:images/org-hs-ui.png]]
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:
[[file:images/org-agenda-2.png]]
and then visualize them to ensure that capacity is available:
[[file:images/org-hs-ui-2.png]]
** Screen Cast
Real quick demo of what the package does:
[[https://www.youtube.com/watch?v=8vhhIYIS0zY][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 [[https://github.com/raxod502/straight.el][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
* See also ** org-roam-ui
org-hyperscheduler was heavily inspired by [[https://github.com/org-roam/org-roam-ui][org-roam-ui]]. If you're using [[https://github.com/org-roam/org-roam-ui][org-roam]] it's worth adding org-roam-ui.
**** calfw
[[https://github.com/kiwanami/emacs-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.