aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaúl Benencia <id@rbenencia.name>2026-01-07 09:37:09 -0300
committerRaúl Benencia <id@rbenencia.name>2026-01-07 09:37:09 -0300
commit65816d0e3e762c96deee3dc0164c530b3e7087de (patch)
tree592d2a5713b1b1ac38c17bcb41670fedf22beeb5
parentb046645918330e788a6845310e81a325d23855dd (diff)
Session now starts on activity by default
-rw-r--r--org-tempus.el28
1 files changed, 21 insertions, 7 deletions
diff --git a/org-tempus.el b/org-tempus.el
index b54186a..f07aa63 100644
--- a/org-tempus.el
+++ b/org-tempus.el
@@ -113,6 +113,12 @@ The value is a string like:
:type 'integer
:group 'org-tempus)
+(defcustom org-tempus-session-starts-on-activity t
+ "When non-nil, start session tracking as soon as activity is detected.
+When nil, start session tracking on clock-in."
+ :type 'boolean
+ :group 'org-tempus)
+
(defcustom org-tempus-session-threshold-minutes 30
"Minutes of continuous session after which a notification is sent."
:type 'integer
@@ -472,13 +478,18 @@ Known providers are `emacs' (activity inside Emacs),
(gap (and last-out
(float-time (time-subtract org-clock-start-time last-out)))))
(setq org-tempus--session-start-time
- (if (and gap
- (>= gap 0)
- (<= gap org-tempus-session-gap-seconds))
- (or org-tempus--session-start-time org-clock-start-time)
- (progn
- (org-tempus--reset-notification-state)
- org-clock-start-time))))))
+ (cond
+ ((and org-tempus-session-starts-on-activity
+ org-tempus--session-start-time
+ (not last-out))
+ org-tempus--session-start-time)
+ ((and gap
+ (>= gap 0)
+ (<= gap org-tempus-session-gap-seconds))
+ (or org-tempus--session-start-time org-clock-start-time))
+ (t
+ (org-tempus--reset-notification-state)
+ org-clock-start-time))))))
(defun org-tempus--current-session-duration ()
"Return current session duration in seconds.
@@ -634,6 +645,9 @@ A session does not reset when switching tasks within
(let ((start-time (time-subtract (current-time)
(seconds-to-time
org-tempus--idle-active-streak))))
+ (when (and org-tempus-session-starts-on-activity
+ (not org-tempus--session-start-time))
+ (setq org-tempus--session-start-time start-time))
(unless (or (org-tempus--maybe-auto-clock-in start-time)
(org-tempus--maybe-auto-clock-in-default start-time))
(when (org-tempus--notification-allowed-p)
nihil fit ex nihilo