diff options
| author | Raúl Benencia <id@rbenencia.name> | 2026-01-05 10:03:25 -0300 |
|---|---|---|
| committer | Raúl Benencia <id@rbenencia.name> | 2026-01-05 10:03:25 -0300 |
| commit | 7d86f8d708ec4e25e8a320b6b97a1c697fecfe16 (patch) | |
| tree | 610789c217d7cdeb2f5c6318e50101533b00a01f | |
| parent | a01023df0d187384e7f2f515cc36fde10f0175bd (diff) | |
Auto clock out after suspend
| -rw-r--r-- | org-tempus.el | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/org-tempus.el b/org-tempus.el index 701acfe..ee3ac50 100644 --- a/org-tempus.el +++ b/org-tempus.el @@ -175,6 +175,9 @@ The value is a string like: (defvar org-tempus--auto-clock-out-time nil "Time when Org Tempus last auto clocked out.") +(defvar org-tempus--last-idle-check-time nil + "Time when Org Tempus last checked for idle activity.") + (defcustom org-tempus-idle-check-interval 60 "Seconds between idle checks for out-of-clock activity." :type 'integer @@ -559,7 +562,28 @@ A session does not reset when switching tasks within (defun org-tempus--handle-idle () "Handle idle checks, including auto clock-out and notifications." - (let ((idle-seconds (org-tempus--session-idle-seconds))) + (let* ((idle-seconds (org-tempus--session-idle-seconds)) + (now (current-time)) + (last-check org-tempus--last-idle-check-time) + (since-last (and last-check + (float-time (time-subtract now last-check))))) + (setq org-tempus--last-idle-check-time now) + (when (and since-last + org-tempus-auto-clock-enabled + (org-clock-is-active) + (> org-tempus-auto-clock-out-seconds 0) + (>= since-last org-tempus-auto-clock-out-seconds)) + (setq org-tempus--auto-clock-out-time now) + (if org-tempus-auto-clock-out-backdate + (org-clock-out nil t last-check) + (org-clock-out nil t)) + (setq org-tempus--session-start-time nil) + (org-tempus--reset-notification-state) + (org-tempus--update-mode-line) + (org-tempus--notify + (format "Auto clocked out after %s away." + (org-duration-from-minutes + (/ since-last 60.0))))) (when idle-seconds (when (and org-tempus-auto-clock-enabled (org-clock-is-active) |
