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-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

The power of documents

Kami sajikan dengan bahasa yang mudah dengan disertai command line yang bisa di copy-paste sehingga memudahkan untuk melakukan modifikasi command line