I want to create a daemon, which would fire up a shell script in the background every time I unlock the screen on my ubuntu. I managed to create such script according to answer to related question: run-script-on-screen-lock-unlock. And it works well in terminal window. But now I want to create a daemon from that and I didn't get any luck yet.
Any suggestions?
Asked
Active
Viewed 7,257 times
6
2 Answers
7
Based on https://askubuntu.com/questions/150790/how-do-i-run-a-script-on-a-dbus-signal
#!/bin/bash
interface=org.gnome.ScreenSaver
member=ActiveChanged
dbus-monitor --profile "interface='$interface',member='$member'" |
while read -r line; do
echo $line | grep ActiveChanged && your_script_goes_here
done
Just stick that in /etc/init.d/monitor-for-unlock, make it executable, and then make a soft link in rc2.d
chmod +x /etc/init.d/monitor-for-unlock
cd /etc/rc2.d
ln -s /etc/init.d/monitor-for-unlock .

Nate from Kalamazoo
- 1,081
0
There's already such a daemon in the system - upstart
, you only need to make a session job for it.
description "some job description"
start on desktop-unlock
script
/path/to/your/executable
end script

Oleg V. Volkov
- 328
-
Can you please elaborate? How do you create a session job for it? what is upstart? systemctl does not know any information regarding upstart.service – brett Jan 08 '20 at 13:37
-
@brett Since it is now in maintenace mode, you might need to install it separately. It used to be Ubuntu's "event-based cron on steroids" so to say. Session jobs are single user-specific tasks. Like stuff you'd get with
crontab -e
. You create a.conf
file with content like in this answer and put it in one of places listed here: http://upstart.ubuntu.com/cookbook/#session-job – Oleg V. Volkov Feb 11 '20 at 16:55
/etc/rc2.d
? Is it autoload directory? Didn't quite worked for my ubuntu. But when added/etc/init.d/monitor-for-unlock start
to Startup Applications worked as charm. Great response time, thanks! – lompy Jun 20 '13 at 16:04ssudo dbus-monitor --profile "interface='com.canonical.Unity',member='Locked'"
where Locked is about "com.canonical.Unity.Session.Locked", even if I use sudo... – Aquarius Power Aug 02 '14 at 04:24