emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Carsten Dominik <carsten.dominik@gmail.com>
To: James TD Smith <ahktenzero@mohorovi.cc>
Cc: emacs-orgmode@gnu.org
Subject: Re: [PATCH 1/2] Add an X11 equivalent to org-mac-idle-seconds.
Date: Thu, 22 Oct 2009 15:16:52 +0200	[thread overview]
Message-ID: <3C44EFF7-9FAA-47AA-8DD4-51A798C33A78@gmail.com> (raw)
In-Reply-To: <1256118769-787-2-git-send-email-ahktenzero@mohorovi.cc>

Applied, thanks.

- Carsten

On Oct 21, 2009, at 11:52 AM, James TD Smith wrote:

> 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
>
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

- Carsten

  parent reply	other threads:[~2009-10-22 13:17 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 ` [PATCH 1/2] Add an X11 equivalent to org-mac-idle-seconds James TD Smith
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   ` Carsten Dominik [this message]
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

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3C44EFF7-9FAA-47AA-8DD4-51A798C33A78@gmail.com \
    --to=carsten.dominik@gmail.com \
    --cc=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 public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).