Run command when system is idle and/or active again
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-devMenyiapkan lokasi
sudo mkdir /opt/procidle sudo nano /opt/procidle/getIdle.cIsi getIdle.c dengan
#includeSimpan dengan Ctrl+o dan keluar dengan Ctrl+x Kemudian compile#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); }
sudo gcc -o /opt/procidle/getIdle /opt/procidle/getIdle.c -lXss -lX11 sudo chmod +x /opt/procidle/getIdleProgram 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.shAnda bisa uji dengan menjalankan script tersebut
/opt/procidle/getIdle.shuntuk menghentikan gunakan Ctrl+z Anda bisa jalankan script tersebut di crontab pada @reboot Silahkan gunakan script getIdle.sh dan modifikasi sesuai kebutuhan