Make every part of the output configurable with user defined functions #5

Open
gergely wants to merge 3 commits from configurable-output into main
Showing only changes of commit 2d820dbf87 - Show all commits

View File

@ -64,24 +64,24 @@
'emacs-mule) 'emacs-mule)
"Coding system of the file `org-clock-waybar-filename'.") "Coding system of the file `org-clock-waybar-filename'.")
(defsubst org-clock-waybar--get-task-title () (defsubst org-clock-waybar-get-task-title ()
"Get the title of TASK." "Get the title of TASK."
(when (org-clocking-p) (substring-no-properties org-clock-current-task))) (when (org-clocking-p) (substring-no-properties org-clock-current-task)))
(defsubst org-clock-waybar--get-task-category () (defsubst org-clock-waybar-get-task-category ()
"Get the category of TASK." "Get the category of TASK."
(when (org-clocking-p) (get-text-property 0 'org-category org-clock-current-task))) (when (org-clocking-p) (get-text-property 0 'org-category org-clock-current-task)))
(defun org-clock-waybar--get-tooltip () (defun org-clock-waybar-get-tooltip ()
"The default tooltip to send to waybar." "The default tooltip to send to waybar."
(when (org-clocking-p) (when (org-clocking-p)
(let ((clocked-time (org-clock-get-clocked-time))) (let ((clocked-time (org-clock-get-clocked-time)))
(format "%s: %s (%s)" (format "%s: %s (%s)"
(org-clock-waybar--get-task-category) (org-clock-waybar-get-task-category)
(org-clock-waybar--get-task-title) (org-clock-waybar-get-task-title)
(org-duration-from-minutes clocked-time))))) (org-duration-from-minutes clocked-time)))))
(defun org-clock-waybar--get-tags () (defun org-clock-waybar-get-tags ()
"Get the tags of the currently clocked-in task." "Get the tags of the currently clocked-in task."
(when (org-clocking-p) (when (org-clocking-p)
(save-window-excursion (save-window-excursion
@ -94,9 +94,10 @@
The output is in JSON format constructed in a way so Waybar can process it. 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 If there is no clocked in task, alt becomes empty and text will be set to the
value of `org-clock-waybar-not-clocked-in-text'." value of `org-clock-waybar-not-clocked-in-text'."
(let* ((category (org-clock-waybar--get-task-category)) (let* ((title (org-clock-waybar-get-task-title))
(title (org-clock-waybar--get-task-title)) (category (org-clock-waybar-get-task-category))
(tooltip (org-clock-waybar--get-tooltip)) (tooltip (org-clock-waybar-get-tooltip))
(class (org-clock-waybar-get-tags))
(output (json-new-object))) (output (json-new-object)))
(setq output (json-add-to-object (setq output (json-add-to-object
output output
@ -104,7 +105,7 @@ value of `org-clock-waybar-not-clocked-in-text'."
(or title org-clock-waybar-not-clocked-in-text))) (or title org-clock-waybar-not-clocked-in-text)))
(setq output (json-add-to-object output "alt" (or category ""))) (setq output (json-add-to-object output "alt" (or category "")))
(setq output (json-add-to-object output "tooltip" (or tooltip ""))) (setq output (json-add-to-object output "tooltip" (or tooltip "")))
(setq output (json-add-to-object output "class" (or (org-clock-waybar--get-tags) ""))) (setq output (json-add-to-object output "class" (or class "")))
(setq output (json-add-to-object output "percentage" "")) (setq output (json-add-to-object output "percentage" ""))
(json-encode output))) (json-encode output)))