10 Commits

Author SHA1 Message Date
c22231dfa1 Move URL in the header higher so Package-Requires becomes the last keyword
Apparently, `package-read-from-string` doesn’t like it the old way.
2025-05-18 13:24:12 +02:00
1c922fd4b4 Some more tweaks 2025-02-27 12:03:42 +00:00
d5a776c761 fix typo 2025-02-27 11:53:10 +00:00
c327eb18c6 Make the xdg dependency optional
We now default to using `~/.cache/waybar-current-task.json` if the `xdg` package is not present.
2023-01-31 08:47:36 +01:00
754fd9d2fa Merge pull request '[Bugfix] Make sure we remove all text properties before outputting JSON data' (#8) from remove-text-properties into main
Reviewed-on: gergely/org-clock-waybar#8
2021-10-16 10:24:06 +00:00
a144ee13c0 [Bugfix] Make sure we remove all text properties before outputting JSON data 2021-10-16 06:25:34 +02:00
612c0d1e31 Do not use org-clock-goto to get tags 2021-03-29 10:20:01 +01:00
lh@hrdl.eu
3e71766f85 Add-hook org-clock-cancel-hook 2021-03-13 16:01:43 +01:00
e4987c99ad Add installation instructions for quelpa/quelpa-use-package 2021-03-12 16:55:51 +00:00
c92eeff06e Fix the file header
It missed the .el extension, which is required if you want to install it via Quelpa (and probably
with `package.el` later.
2021-03-12 16:55:51 +00:00
2 changed files with 40 additions and 11 deletions

View File

@@ -10,6 +10,27 @@ You can set the file to be written by customizing `org-clock-waybar-filename`; i
`$XDG_CACHE_HOME/waybar-current-task.json` (`$XDG_CACHE_HOME` defaults to `$HOME/.cache` on XDG `$XDG_CACHE_HOME/waybar-current-task.json` (`$XDG_CACHE_HOME` defaults to `$HOME/.cache` on XDG
compatible systems, like Linux.) compatible systems, like Linux.)
### Quelpa
If you only have [`quelpa`](https://github.com/quelpa/quelpa) installed:
```elisp
(quelpa
'(org-clock-waybar
:fetcher git
:url "https://gitea.polonkai.eu/gergely/org-clock-waybar.git"))
```
or, if you have [`quelpa-use-package`](https://github.com/quelpa/quelpa-use-package) installed,
too:
```elisp
(quelpa-use-package org-clock-waybar
:quelpa (org-clock-waybar
:fetcher git
:url "https://gitea.polonkai.eu/gergely/org-clock-waybar.git"))
```
## Waybar configuration ## Waybar configuration
To add the current task to Waybar, add this snippet to your config: To add the current task to Waybar, add this snippet to your config:

View File

@@ -1,12 +1,13 @@
;;; org-clock-waybar --- Summary ;;; ... -*- lexical-binding: t -*-
;;; org-clock-waybar.el --- Summary
;; Copyright (C) 2021 Gergely Polonkai ;; Copyright (C) 2021 Gergely Polonkai
;; Author: Gergely Polonkai <gergely@polonkai.eu> ;; Author: Gergely Polonkai <gergely@polonkai.eu>
;; Keywords: org, clocking, waybar ;; Keywords: org, clocking, waybar
;; Version: 1.0
;; Package-Requires: ((emacs "26.1"))
;; URL: https://gitea.polonkai.eu/gergely/org-clock-waybar ;; URL: https://gitea.polonkai.eu/gergely/org-clock-waybar
;; Package-Version: 1.0
;; Package-Requires: ((emacs "26.1") (org-mode "9"))
;; This program is free software; you can redistribute it and/or modify ;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by ;; it under the terms of the GNU General Public License as published by
@@ -38,7 +39,7 @@
;;; Code: ;;; Code:
(require 'xdg) (require 'xdg nil t)
(require 'json) (require 'json)
(require 'org-clock) (require 'org-clock)
@@ -47,7 +48,9 @@
:group 'emacs) :group 'emacs)
(defcustom org-clock-waybar-filename (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." "Name of the file to save task data to."
:type 'string :type 'string
:group 'org-clock-waybar) :group 'org-clock-waybar)
@@ -84,12 +87,12 @@
(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 (or (org-with-point-at org-clock-marker (org-get-tags))
(org-clock-goto) "")
(org-get-tags)))) ))
(defun org-clock-waybar--get-clocked-task-json () (defun org-clock-waybar--get-clocked-task-json ()
"Get the currently clocked-in tasks 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. 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
@@ -116,19 +119,24 @@ value of `org-clock-waybar-not-clocked-in-text'."
(insert (org-clock-waybar--get-clocked-task-json)) (insert (org-clock-waybar--get-clocked-task-json))
(write-file org-clock-waybar-filename))) (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. "Output the current task in JSON format Waybar can understand.
This function is ought to be used via Emacsclient: This function is ought to be used via Emacsclient:
emacsclient --eval '(org-clock-waybar-output-task)'" 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 () (defun org-clock-waybar-setup ()
"Setup org-clock-waybar. "Setup org-clock-waybar.
It adds `org-clock-waybar-save-task' to both `org-clock-in-hook' and It adds `org-clock-waybar-save-task' to both `org-clock-in-hook' and
`org-clock-out-hook'." `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-in-hook #'org-clock-waybar-save-task)
(add-hook 'org-clock-out-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)) (add-hook 'kill-emacs-hook #'org-clock-waybar-save-task))