আর্কলিনাক্স ফোরামের এই থ্রেডটিতে একটি সংক্ষিপ্ত সি প্রোগ্রাম রয়েছে যা ব্যবহারকারীর কতক্ষণ নিষ্ক্রিয় থাকবে এমন তথ্যের জন্য xscreensaver কে জিজ্ঞাসাবাদ করে, এটি আপনার প্রয়োজনীয়তার থেকে বেশ কাছাকাছি বলে মনে হচ্ছে:
#include <X11/extensions/scrnsaver.h>
#include <stdio.h>
int main(void) {
Display *dpy = XOpenDisplay(NULL);
if (!dpy) {
return(1);
}
XScreenSaverInfo *info = XScreenSaverAllocInfo();
XScreenSaverQueryInfo(dpy, DefaultRootWindow(dpy), info);
printf("%u\n", info->idle);
return(0);
}
এটি সংরক্ষণ করুন getIdle.c
এবং সংকলন করুন
gcc -o getIdle getIdle.c -lXss -lX11
একটি এক্সিকিউটেবল ফাইল পেতে getIdle
। এই প্রোগ্রামটি "নিষ্কলুষ সময়" মুদ্রণ করে (ব্যবহারকারী মাউসের সাহায্যে সরানো / ক্লিক করে না, কী-বোর্ড ব্যবহার করে না) মিলিসেকেন্ডে, সুতরাং এটির উপর নির্মিত একটি বাশ স্ক্রিপ্টটি এইভাবে দেখতে পারে:
#!/bin/bash
idle=false
idleAfter=3000 # consider idle after 3000 ms
while true; do
idleTimeMillis=$(./getIdle)
echo $idleTimeMillis # just for debug purposes.
if [[ $idle = false && $idleTimeMillis -gt $idleAfter ]] ; then
echo "start idle" # or whatever command(s) you want to run...
idle=true
fi
if [[ $idle = true && $idleTimeMillis -lt $idleAfter ]] ; then
echo "end idle" # same here.
idle=false
fi
sleep 1 # polling interval
done
এটি এখনও নিয়মিত ভোটদানের প্রয়োজন, তবে এটি আপনার প্রয়োজনীয় সমস্ত কিছু করে ...