Browse Source

org-clock.el: New option `org-clock-x11idle-program-name'

* org-clock.el (org-clock-x11idle-program-name): New option.
(org-x11idle-exists-p, org-x11-idle-seconds): Use it.

* org.texi (Resolving idle time): Document
`org-clock-x11idle-program-name'.

Debian and other OSes already have a program called 'xprintidle',
which does the same thing as x11idle. It also handles the DPMS bug[1]
some version of X servers have.

In order to use an alternative, introduce a customizable variable
'org-clock-x11idle-program-name' to hold the actual command name.

[1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=502226
Yasushi SHOJI 12 years ago
parent
commit
0499f0a939
2 changed files with 25 additions and 9 deletions
  1. 9 6
      doc/org.texi
  2. 16 3
      lisp/org-clock.el

+ 9 - 6
doc/org.texi

@@ -6322,6 +6322,7 @@ would be
 
 
 @subsubheading Resolving idle time
 @subsubheading Resolving idle time
 @cindex resolve idle time
 @cindex resolve idle time
+@vindex org-clock-x11idle-program-name
 
 
 @cindex idle, resolve, dangling
 @cindex idle, resolve, dangling
 If you clock in on a work item, and then walk away from your
 If you clock in on a work item, and then walk away from your
@@ -6335,12 +6336,14 @@ as 10 or 15, Emacs can alert you when you get back to your computer after
 being idle for that many minutes@footnote{On computers using Mac OS X,
 being idle for that many minutes@footnote{On computers using Mac OS X,
 idleness is based on actual user idleness, not just Emacs' idle time.  For
 idleness is based on actual user idleness, not just Emacs' idle time.  For
 X11, you can install a utility program @file{x11idle.c}, available in the
 X11, you can install a utility program @file{x11idle.c}, available in the
-@code{contrib/scripts} directory of the Org git distribution, to get the same
-general treatment of idleness.  On other systems, idle time refers to Emacs
-idle time only.}, and ask what you want to do with the idle time.  There will
-be a question waiting for you when you get back, indicating how much idle
-time has passed (constantly updated with the current amount), as well as a
-set of choices to correct the discrepancy:
+@code{contrib/scripts} directory of the Org git distribution, or install the
+@file{xprintidle} package and set it to the variable
+@code{org-clock-x11idle-program-name} if you are running Debian, to get the
+same general treatment of idleness.  On other systems, idle time refers to
+Emacs idle time only.}, and ask what you want to do with the idle time.
+There will be a question waiting for you when you get back, indicating how
+much idle time has passed (constantly updated with the current amount), as
+well as a set of choices to correct the discrepancy:
 
 
 @table @kbd
 @table @kbd
 @item k
 @item k

+ 16 - 3
lisp/org-clock.el

@@ -396,6 +396,19 @@ specifications than `frame-title-format', which see."
   :group 'org-clock
   :group 'org-clock
   :type 'sexp)
   :type 'sexp)
 
 
+(defcustom org-clock-x11idle-program-name "x11idle"
+  "Name of the program which prints X11 idle time in milliseconds.
+
+You can find x11idle.c in the contrib/scripts directory of the
+Org git distribution. Or, you can do:
+
+    sudo apt-get install xprintidle
+
+if you are using Debian."
+  :group 'org-clock
+  :version "24.3"
+  :type 'string)
+
 (defvar org-clock-in-prepare-hook nil
 (defvar org-clock-in-prepare-hook nil
   "Hook run when preparing the clock.
   "Hook run when preparing the clock.
 This hook is run before anything happens to the task that
 This hook is run before anything happens to the task that
@@ -1034,13 +1047,13 @@ If `only-dangling-p' is non-nil, only ask to resolve dangling
 (defvar org-x11idle-exists-p
 (defvar org-x11idle-exists-p
   ;; Check that x11idle exists
   ;; Check that x11idle exists
   (and (eq window-system 'x)
   (and (eq window-system 'x)
-       (eq (call-process-shell-command "command" nil nil nil "-v" "x11idle") 0)
+       (eq (call-process-shell-command "command" nil nil nil "-v" org-clock-x11idle-program-name) 0)
        ;; Check that x11idle can retrieve the idle time
        ;; Check that x11idle can retrieve the idle time
-       (eq (call-process-shell-command "x11idle" nil nil nil) 0)))
+       (eq (call-process-shell-command org-clock-x11idle-program-name nil nil nil) 0)))
 
 
 (defun org-x11-idle-seconds ()
 (defun org-x11-idle-seconds ()
   "Return the current X11 idle time in seconds."
   "Return the current X11 idle time in seconds."
-  (/ (string-to-number (shell-command-to-string "x11idle")) 1000))
+  (/ (string-to-number (shell-command-to-string org-clock-x11idle-program-name)) 1000))
 
 
 (defun org-user-idle-seconds ()
 (defun org-user-idle-seconds ()
   "Return the number of seconds the user has been idle for.
   "Return the number of seconds the user has been idle for.