add notes on tracking screensaver command bug
authordaniel watson <ozzloy@gmail.com>
Sun, 31 Jul 2016 18:10:20 +0000 (11:10 -0700)
committerdaniel watson <ozzloy@gmail.com>
Sun, 31 Jul 2016 18:10:20 +0000 (11:10 -0700)
TODO

diff --git a/TODO b/TODO
index 420ae61fadf69c4407318a8af339d323630bb20d..30890d889c2eda3cf161d05fd0c40650782ef7a7 100644 (file)
--- a/TODO
+++ b/TODO
@@ -9,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
+