Skip to content

Instantly share code, notes, and snippets.

@rougier
Created November 28, 2021 17:38
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rougier/d85d1a9f4eff672acc2cad64a5597fbf to your computer and use it in GitHub Desktop.
Save rougier/d85d1a9f4eff672acc2cad64a5597fbf to your computer and use it in GitHub Desktop.
Org agenda with dynamics icons
(require 'svg-lib)
(defun org-agenda-custom-date ()
(interactive)
(let* ((timestamp (org-entry-get nil "TIMESTAMP"))
(timestamp (or timestamp (org-entry-get nil "DEADLINE"))))
(if timestamp
(let* ((timestamp (ts-parse-org timestamp))
(delta (/ (ts-diff timestamp (ts-now)) (* 24 60 60)))
(delta (/ (+ 1 delta) 30))
(face (cond ;; ((< delta 0.25) 'nano-popout)
;; ((< delta 0.50) 'nano-salient)
((< delta 1.00) 'nano-default)
(t 'nano-faded))))
(concat
(propertize " " 'face nil
'display (svg-lib-progress-pie
delta nil
:background (face-background face nil 'default)
:foreground (face-foreground face)
:margin 0 :stroke 2 :padding 1))
" "
(propertize
(ts-format "%d/%m" timestamp) 'face 'nano-popout)))
" ")))
(add-to-list 'org-agenda-custom-commands
'("x" "Agenda & tasks"
(
(todo "TODO" ;; "PROJECT"
( (org-agenda-todo-keyword-format ":%s:")
(org-agenda-prefix-format
'((todo . " ")))
(org-agenda-skip-function
'(org-agenda-skip-entry-if 'timestamp))
(org-agenda-overriding-header
(propertize " Todo \n" 'face 'nano-strong))))
(tags "+TALK+TIMESTAMP>=\"<now>\""
((org-agenda-span 90)
(org-agenda-max-tags 5)
(org-agenda-prefix-format
'((tags . " %(org-agenda-custom-date) ")))
(org-agenda-overriding-header "\n Upcoming talks\n")))
(tags "TEACHING+TIMESTAMP>=\"<now>\""
((org-agenda-span 90)
(org-agenda-max-tags 5)
(org-agenda-prefix-format
'((tags . " %(org-agenda-custom-date) ")))
(org-agenda-overriding-header "\n Upcoming lessons\n")))
(tags "TRAVEL+TIMESTAMP>=\"<now>\""
((org-agenda-span 90)
(org-agenda-max-tags 5)
(org-agenda-prefix-format
'((tags . " %(org-agenda-custom-date) ")))
(org-agenda-overriding-header "\n Upcoming travels\n")))
(tags "DEADLINE>=\"<today>\""
((org-agenda-span 90)
(org-agenda-max-tags 5)
(org-agenda-prefix-format
'((tags . " %(org-agenda-custom-date) ")))
(org-agenda-overriding-header "\n Upcoming deadlines\n"))))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment