Cara yang akan saya paparkan ini juga bisa digunakan untuk membuat auto hibernate/shurdown Linux, karena adakalanya sebagai sysadmin ketiduran di depan PC/Laptop sehingga PC/Laptop hidup sampai pagi. Cara ini saya uji pada linux distro Debian dan turunannya dengan memanfaatkan xscreensaver, dimana xscrensaver bisa memberikan informasi apakah linux sedang ada aktifitas atau tidak.
Silahkan ikuti langkah berikut:
sudo apt install libxss-dev
Menyiapkan lokasi
sudo mkdir /opt/procidle
sudo nano /opt/procidle/getIdle.c
Isi
getIdle.c dengan
#include
#include
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);
}
Simpan dengan Ctrl+o dan keluar dengan Ctrl+x Kemudian compile
sudo gcc -o /opt/procidle/getIdle /opt/procidle/getIdle.c -lXss -lX11
sudo chmod +x /opt/procidle/getIdle
Program ini akan menginformasikan "idle time" (pengguna tidak menggerakkan/klik dengan mouse maupun tidak menggunakan keyboard) dalam milidetik, jadi script bash yang dibangun bisa terlihat seperti ini:
sudo nano /opt/procidle/getIdle.sh
#!/bin/bash
idle=false
idleAfter=3000 # consider idle after 3000 ms
while true; do
idleTimeMillis=$(/opt/procidle/getIdle)
# echo $idleTimeMillis # just for debug purposes.
if [[ $idleTimeMillis -gt $idleAfter && $idle = false ]] ; then
# ------------------------------------------------------
notify-send -i "face-crying" "I'm sad you has gone!"
# ------------------------------------------------------
idle=true
fi
if [[ $idleTimeMillis -lt $idleAfter && $idle = true ]] ; then
# ------------------------------------------------------
notify-send -i "face-angel" "Horay you come back."
# ------------------------------------------------------
idle=false
fi
sleep 1 # polling interval
done
sudo chmod +x /opt/procidle/getIdle.sh
Anda bisa uji dengan menjalankan script tersebut
/opt/procidle/getIdle.sh
untuk menghentikan gunakan Ctrl+z Anda bisa jalankan script tersebut di crontab pada @reboot Silahkan gunakan script getIdle.sh dan modifikasi sesuai kebutuhan