6

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?

2 Answers 2

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 . 
3
  • 1
    What exactly we are making link for in /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! Commented Jun 20, 2013 at 16:04
  • Here's a conversation about rc2.d (System V init process) versus Ubuntu's upstart system: superuser.com/questions/151330/ubuntu-control-the-init-startup Commented Jun 20, 2013 at 16:44
  • any idea how to make it work with Unity? this is failing: ssudo dbus-monitor --profile "interface='com.canonical.Unity',member='Locked'" where Locked is about "com.canonical.Unity.Session.Locked", even if I use sudo... Commented Aug 2, 2014 at 4:24
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 
2
  • 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 Commented Jan 8, 2020 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: upstart.ubuntu.com/cookbook/#session-job Commented Feb 11, 2020 at 16:55

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.