use full word "display" for variable in all places
[ozzloy@gmail.com/oble] / TODO
diff --git a/TODO b/TODO
index c1b46c140c5fbe1a45864c75c6f7339fa00a8914..30890d889c2eda3cf161d05fd0c40650782ef7a7 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,4 +1,7 @@
-* check if file passed in with -c switch exists, complain if not
+(track this down:
+dginn% ./oble -c ~/Downloads/haarcascade_frontalface_alt.xml
+Corrupt JPEG data: 160038 extraneous bytes before marker 0x69
+ERROR: frame is null...)
 FOR SCREENSAVER:
 * gnome-screensaver-command --poke
        * find irc channel to ask if my understanding is correct
@@ -6,3 +9,43 @@ FOR SCREENSAVER:
        * track down bug
                * compile gnome-screensaver
 
+http://coderrr.wordpress.com/2008/04/20/getting-idle-time-in-unix/#comment-1927
+in c:
+#include <X11/extensions/scrnsaver.h>
+
+main() {
+  XScreenSaverInfo *info = XScreenSaverAllocInfo();
+  Display *display = XOpenDisplay(0);
+
+  XScreenSaverQueryInfo(display, DefaultRootWindow(display), info);
+  printf("%u ms\n", info->idle);
+}
+in ruby inline:
+require 'inline'
+
+class XScreenSaver
+  class << self
+    inline do |builder|
+      builder.add_link_flags '-lXss'
+      builder.include '<X11/extensions/scrnsaver.h>'
+      builder.c %{
+        double idle_time() {
+          static Display *display;
+          XScreenSaverInfo *info = XScreenSaverAllocInfo();
+
+          if (!display)  display = XOpenDisplay(0);
+          if (!display)  return -1;
+
+          XScreenSaverQueryInfo(display, DefaultRootWindow(display), info);
+
+          return info->idle / 1000.0;
+        }
+      }
+    end
+  end
+end
+
+if __FILE__ == $0
+  loop { puts XScreenSaver.idle_time; sleep 0.2 }
+end
+