Compare commits
	
		
			10 Commits
		
	
	
		
			700027bdd5
			...
			3779adda25
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 3779adda25 | |||
| 3301967d3d | |||
| 82faddc8c3 | |||
| 1c922fd4b4 | |||
| d5a776c761 | |||
| c327eb18c6 | |||
| 754fd9d2fa | |||
| a144ee13c0 | |||
| 612c0d1e31 | |||
|  | 3e71766f85 | 
| @@ -1,3 +1,4 @@ | ||||
| ;;; ...  -*- lexical-binding: t -*- | ||||
| ;;; org-clock-waybar.el --- Summary | ||||
|  | ||||
| ;; Copyright (C) 2021 Gergely Polonkai | ||||
| @@ -38,7 +39,7 @@ | ||||
|  | ||||
| ;;; Code: | ||||
|  | ||||
| (require 'xdg) | ||||
| (require 'xdg nil t) | ||||
| (require 'json) | ||||
| (require 'org-clock) | ||||
|  | ||||
| @@ -47,7 +48,9 @@ | ||||
|   :group 'emacs) | ||||
|  | ||||
| (defcustom org-clock-waybar-filename | ||||
|   (expand-file-name "waybar-current-task.json" (xdg-cache-home)) | ||||
|   (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) | ||||
| @@ -135,12 +138,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) | ||||
|     (save-window-excursion | ||||
|       (org-clock-goto) | ||||
|       (org-get-tags)))) | ||||
|     (or (org-with-point-at org-clock-marker (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 task's 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 | ||||
| @@ -191,19 +194,24 @@ 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-ouptut-task () | ||||
| (defun org-clock-waybar-output-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)'" | ||||
|   (org-clock-waybar--get-clocked-task-json)) | ||||
|   (let* ((output (org-clock-waybar--get-clocked-task-json)) | ||||
|          (start 0) | ||||
|          (end (length output))) | ||||
|     (set-text-properties start end nil output) | ||||
|     output)) | ||||
|  | ||||
| (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)) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user