1

I've just developed a dbus client, writed in Python, to shows a desktop notification when it receives a message from a dbus service, which is launched by another user.

The dbus client code is here:

#!/usr/bin/python3

from gi.repository import Gtk
from gi.repository import Notify
import dbus
from dbus.mainloop.glib import DBusGMainLoop

DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()

def msg_handler(*args,**keywords):
    try:
        #show notification to desktop
        Notify.init('Pendrive Reminder')
        notify = Notify.Notification.new('Pendrive Reminder', 'Shutdown lock enabled. Disconnect pendrive to enable shutdown')
        notify.show()
    except:
        pass

bus.add_signal_receiver(handler_function=msg_handler,    dbus_interface='org.preminder', path_keyword='path')
Gtk.main()

Now, I want to launch the dbus client from a script. But I need that this dbus client don't dead when script finish.

Also, I need that the dbus client to be launched as a specific (non root) user. The script will be executed as root.

I tried with this:

 nohup su user -c '/usr/bin/pendrive-reminder/client.py' &

But now the script keeps locked after finish its commands, shows as "defunct" process. So, I need to get that my script can finish after launch the dbus client

How can I solve this?

AlmuHS
  • 169

0 Answers0