diff --git a/examples.org b/examples.org index 139d4cb..5873c8b 100644 --- a/examples.org +++ b/examples.org @@ -15,3 +15,5 @@ This uses the example in the readme file, but maps across the elements returned ;;=> (("Electric bill" "Thu 23 Aug 2018 12:00:00 AM CDT") ;; ("Rent" "Sat 01 Sep 2018 08:00:00 PM CDT")) #+END_SRC + +This could also be put in a script, which could use desktop notifications to remind of bills coming due: [[examples/org-bills-due.el][org-bills-due.el]]. diff --git a/examples/org-bills-due.el b/examples/org-bills-due.el new file mode 100644 index 0000000..5c7261c --- /dev/null +++ b/examples/org-bills-due.el @@ -0,0 +1,54 @@ +;;; org-bills-due.el + +;;;; Initialize package system + +(require 'package) +(setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/") + ("melpa" . "https://melpa.org/packages/"))) +(package-initialize) + +;; Set load-path, loading org-ql from ~/src/emacs/org-ql (adjust as necessary) +(setq load-path (append (list "~/src/emacs/org-ql" + "~/.emacs.d/load-path") + load-path)) + +;;;; Load packages + +;; Built-in +(require 'cl-lib) +(require 'subr-x) + +(require 'org) +(require 'org-habit) +(require 'org-agenda) + +;; From MELPA +(require 'dash) +(require 'dash-functional) +(require 's) + +;; org-ql +(require 'org-ql) +(require 'org-ql-agenda) + +;;;; Main + +(-if-let* ((header "Bills due within 3 days") + (items (org-ql "~/org/main.org" + (and (deadline <= (+ 3 today)) + (tags "bills")) + :action (org-get-heading 'no-tags 'no-todo))) + (string (concat ""))) + (progn + ;; Send notification + (call-process "notify-send" nil 0 nil + (format "%s" header) + string) + ;; Also output to STDOUT + (princ (format "%s:\n%s" header (s-join "\n" titles)))) + ;; No bills due + (kill-emacs 1))