<div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div>Hello all,<br><br></div>So..
 we have a DBus Service that is supposed to be executed upon receiving a
 udev event of USB insert. This service is supposed to emit a signal 
which is to be caught by its client. The client daemon is already 
running in the background, invoked by the terminal of UID=1000.<br></div><br></div><div>Scenario # 1 :<br></div>When running the service standalone from the terminal (without the udev event), the flow works fine.<br><br></div>Scenario #2 :<br></div>When
 running the service via the udev event, the service returns an error on
 getConnection to SESSION BUS itself, and hence, no signal is emitted by
 the service. (as seen by running dbus-monitor)<br><br></div>Scenario #3:<br></div>If we explicitly enforce uid in the service (using [1]), the flow via the udev event also works fine.<br><br></div>My question is : <br>1) Is there a better way of achieving the flow, without resorting to enforced uid?<br></div>2)
 I thought exporting the terminal's DBUS_SESSION_BUS_ADDRESS in the udev
 rule would be enough to get the service to emit on UID=1000's session 
bus. But that didnt work.<br></div>3) doing a : `dbus-launch 
--sh-syntax` before starting the service in the udev rule lets the 
service get connection to Session Bus. However, I think a new session 
bus is getting created in this case.. as no signal is seen in 
dbus-monitor of UID=1000.<br></div><div><br><br>[1] <a href="http://linux.die.net/man/2/setuid" target="_blank">http://linux.die.net/man/2/setuid</a><br><br>-- <br>Regards,<br>Pratyush<br></div></div>