From: James TD Smith <ahktenzero@mohorovi.cc>
To: emacs-orgmode@gnu.org
Subject: [PATCH 1/2] Add an X11 equivalent to org-mac-idle-seconds.
Date: Wed, 21 Oct 2009 10:52:48 +0100 [thread overview]
Message-ID: <1256118769-787-2-git-send-email-ahktenzero@mohorovi.cc> (raw)
In-Reply-To: <1256118769-787-1-git-send-email-ahktenzero@mohorovi.cc>
This needs a small C program (in UTILITIES/x11idle.c) to work.
---
.gitignore | 1 +
ChangeLog | 6 +++++-
UTILITIES/x11idle.c | 21 +++++++++++++++++++++
lisp/ChangeLog | 8 +++++++-
lisp/org-clock.el | 10 ++++++++--
5 files changed, 42 insertions(+), 4 deletions(-)
create mode 100644 UTILITIES/x11idle.c
diff --git a/.gitignore b/.gitignore
index ab68b2a..c21fc91 100644
--- a/.gitignore
+++ b/.gitignore
@@ -58,3 +58,4 @@ TODO
# fill-column: 72
# mode: conf
# End:
+/UTILITIES/x11idle
diff --git a/ChangeLog b/ChangeLog
index 95387ea..77cca37 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-10-21 James TD Smith <ahktenzero@mohorovi.cc>
+
+ * UTILITIES/x11idle.c: Add a small C program which outputs the X11
+ idle time
+
2009-09-16 Carsten Dominik <carsten.dominik@gmail.com>
* Makefile: Add dependencies for org-crypt.el.
@@ -65,4 +70,3 @@
2008-04-25 Carsten Dominik <dominik@science.uva.nl>
* Makefile (BATCH): Fix the path to the local lisp files.
-
diff --git a/UTILITIES/x11idle.c b/UTILITIES/x11idle.c
new file mode 100644
index 0000000..33d0035
--- /dev/null
+++ b/UTILITIES/x11idle.c
@@ -0,0 +1,21 @@
+#include <X11/extensions/scrnsaver.h>
+#include <stdio.h>
+
+/* Based on code from
+ * http://coderrr.wordpress.com/2008/04/20/getting-idle-time-in-unix/
+ *
+ * compile with 'gcc -l Xss x11idle.c -o x11idle' and copy x11idle into your
+ * path
+ */
+main() {
+ XScreenSaverInfo *info = XScreenSaverAllocInfo();
+ Display *display = XOpenDisplay(0);
+
+ //check that X11 is running or else you get a segafult/coredump
+ if (display != NULL) {
+ XScreenSaverQueryInfo(display, DefaultRootWindow(display), info);
+ }
+ XScreenSaverQueryInfo(display, DefaultRootWindow(display), info);
+ printf("%u\n", info->idle);
+ return 0;
+}
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index bcd6a8a..75bdc38 100755
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -37,6 +37,12 @@
modeline when habits are being displayed (if that module is being
loaded).
+2009-10-21 James TD Smith <ahktenzero@mohorovi.cc>
+
+ * org-clock.el (org-x11-idle-seconds): Add a method to get the X11
+ idle time using the xscreensaver extension.
+ (org-user-idle-seconds): Use X11 idle time if available.
+
2009-10-20 Carsten Dominik <carsten.dominik@gmail.com>
* org-agenda.el (org-agenda-next-line): New command.
@@ -161,7 +167,7 @@
currently active clock if the user has exceeded the time returned
by `org-user-idle-seconds', based on the value of
`org-clock-idle-time'.
- (org-clock-in): If, after resolving clocks,
+ (org-clock-in): If, after resolving clocks,
(org-clock-out): Cancel the `org-clock-idle-timer' on clock out.
* org-clock.el (org-clock-resolve-clock): New function that
diff --git a/lisp/org-clock.el b/lisp/org-clock.el
index c7ebbf8..fddf3f8 100644
--- a/lisp/org-clock.el
+++ b/lisp/org-clock.el
@@ -762,16 +762,22 @@ non-dangling (i.e., currently open and valid) clocks."
"Return the current Mac idle time in seconds"
(string-to-number (shell-command-to-string "ioreg -c IOHIDSystem | perl -ane 'if (/Idle/) {$idle=(pop @F)/1000000000; print $idle; last}'")))
+(defun org-x11-idle-seconds ()
+ "Return the current X11 idle time in seconds"
+ (/ (string-to-number (shell-command-to-string "x11idle")) 1000))
+
(defun org-user-idle-seconds ()
"Return the number of seconds the user has been idle for.
This routine returns a floating point number."
- (if (eq system-type 'darwin)
+ (if (or (eq system-type 'darwin) (eq window-system 'x))
(let ((emacs-idle (org-emacs-idle-seconds)))
;; If Emacs has been idle for longer than the user's
;; `org-clock-idle-time' value, check whether the whole system has
;; really been idle for that long.
(if (> emacs-idle (* 60 org-clock-idle-time))
- (min emacs-idle (org-mac-idle-seconds))
+ (min emacs-idle (if (eq system-type 'darwin)
+ (org-mac-idle-seconds)
+ (org-x11-idle-seconds)))
emacs-idle))
(org-emacs-idle-seconds)))
--
1.6.3.3
next prev parent reply other threads:[~2009-10-21 9:53 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-21 9:52 [PATCH 0/2] Soem more minor patches James TD Smith
2009-10-21 9:52 ` James TD Smith [this message]
2009-10-21 9:52 ` [PATCH 2/2] org-repeat-re was no longer matching simple +2d type repeaters. Fix James TD Smith
2009-10-22 13:16 ` [PATCH 1/2] Add an X11 equivalent to org-mac-idle-seconds Carsten Dominik
2009-10-22 5:38 ` [PATCH 0/2] Soem more minor patches Carsten Dominik
2009-10-22 10:22 ` James TD Smith
2009-10-22 13:17 ` Carsten Dominik
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1256118769-787-2-git-send-email-ahktenzero@mohorovi.cc \
--to=ahktenzero@mohorovi.cc \
--cc=emacs-orgmode@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.