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
 | 
			
		||||
  (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