Digital Note

Grab a coffe, take a seat, maybe listen to some music and relax by reading our digital daily diary. We want to share our minds and know how with you and the whole world!

Blog phones

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

Trackback from your site.

Leave a comment