Compare commits

..

3 Commits

Author SHA1 Message Date
700027bdd5
Make different parts of the output configurable by setting user functions 2021-03-12 17:58:55 +01:00
1dafd1306e
Factor out clocked-out title generation to get-task-title 2021-03-12 17:58:12 +01:00
2d820dbf87
Rename most functions to remove the double dashes
This naming convention denotes “private” functions; however, if we want to introduce more
customization, we should make these available and documented well.
2021-03-12 17:58:10 +01:00

View File

@ -1,4 +1,3 @@
;;; ... -*- lexical-binding: t -*-
;;; org-clock-waybar.el --- Summary
;; Copyright (C) 2021 Gergely Polonkai
@ -39,7 +38,7 @@
;;; Code:
(require 'xdg nil t)
(require 'xdg)
(require 'json)
(require 'org-clock)
@ -48,9 +47,7 @@
:group 'emacs)
(defcustom org-clock-waybar-filename
(if (fboundp 'xdg-cache-home)
(expand-file-name "waybar-current-task.json" (xdg-cache-home))
(expand-file-name "~/.cache/waybar-current-task.json"))
"Name of the file to save task data to."
:type 'string
:group 'org-clock-waybar)
@ -138,12 +135,12 @@ When nil, the percentage text will be an empty string."
(defun org-clock-waybar-get-tags ()
"Get the tags of the currently clocked-in task."
(when (org-clocking-p)
(or (org-with-point-at org-clock-marker (org-get-tags))
"")
))
(save-window-excursion
(org-clock-goto)
(org-get-tags))))
(defun org-clock-waybar--get-clocked-task-json ()
"Get the currently clocked-in task's data as a stringified JSON object.
"Get the currently clocked-in tasks data as a stringified JSON object.
The output is in JSON format constructed in a way so Waybar can process it.
If there is no clocked in task, alt becomes empty and text will be set to the
@ -194,24 +191,19 @@ value of `org-clock-waybar-not-clocked-in-text'."
(insert (org-clock-waybar--get-clocked-task-json))
(write-file org-clock-waybar-filename)))
(defun org-clock-waybar-output-task ()
(defun org-clock-waybar-ouptut-task ()
"Output the current task in JSON format Waybar can understand.
This function is ought to be used via Emacsclient:
emacsclient --eval '(org-clock-waybar-output-task)'"
(let* ((output (org-clock-waybar--get-clocked-task-json))
(start 0)
(end (length output)))
(set-text-properties start end nil output)
output))
(org-clock-waybar--get-clocked-task-json))
(defun org-clock-waybar-setup ()
"Setup org-clock-waybar.
It adds `org-clock-waybar-save-task' to both `org-clock-in-hook' and
`org-clock-out-hook'."
(add-hook 'org-clock-cancel-hook #'org-clock-waybar-save-task)
(add-hook 'org-clock-in-hook #'org-clock-waybar-save-task)
(add-hook 'org-clock-out-hook #'org-clock-waybar-save-task)
(add-hook 'kill-emacs-hook #'org-clock-waybar-save-task))