From Capum321, 1 Year ago, written in Plain Text.
This paste is a reply to run cmd when idle from Capum321 - view diff
  1. ## C program getIdletime.c
  2.  
  3. #include <X11/extensions/scrnsaver.h>
  4. #include <stdio.h>
  5.  
  6. int main(void) {
  7.   Display *dpy = XOpenDisplay(NULL);
  8.  
  9.   if (!dpy) {
  10.     return(1);
  11.   }
  12.  
  13.   XScreenSaverInfo *info = XScreenSaverAllocInfo();
  14.   XScreenSaverQueryInfo(dpy, DefaultRootWindow(dpy), info);
  15.   printf("%u", info->idle);
  16.  
  17.   return(0);
  18. }
  19.  
  20. -  -  -  -  -
  21.  
  22. ## bash script that builds upon above C program
  23.  
  24. #!/bin/bash
  25.  
  26. idle=false
  27. idleAfter=3600000     # consider idle after 3600000 ms = 60 min
  28.  
  29. while true; do
  30.   idleTimeMillis=$(./getIdletime)
  31.   echo $idleTimeMillis  # just for debug purposes.
  32.   if [[ $idleTimeMillis -gt $idleAfter && $idle = false  ]] ; then
  33.     rtcwake -s 18000 -m standby   # enter cmd
  34.     idle=true
  35.   fi
  36.  
  37.   if [[ $idleTimeMillis -lt $idleAfter && $idle = true ]] ; then
  38.     rtcwake -s 18000 -m standby     # same here.
  39.     idle=false
  40.   fi
  41.   sleep 1      # polling interval
  42.  
  43. done
captcha