Como iniciar um cliente dbus a partir de um script?

1

Acabei de desenvolver um cliente dbus, escrito em Python, para mostrar uma notificação de área de trabalho quando recebe uma mensagem de um serviço dbus, que é iniciado por outro usuário.

O código do cliente dbus está aqui:

#!/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()

Agora, quero iniciar o cliente dbus a partir de um script. Mas eu preciso que esse cliente dbus não morra quando o script terminar.

Além disso, eu preciso que o cliente dbus seja lançado como um usuário específico (não raiz). O script será executado como root.

Eu tentei com isso:

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

Mas agora o script continua bloqueado depois de terminar seus comandos, mostra como processo "extinto". Então, preciso que meu script termine depois de lançar o cliente dbus

Como posso resolver isso?

    
por AlmuHS 24.03.2018 / 00:25

0 respostas

Tags