D-Bus: Difference between revisions
Prabuanand (talk | contribs) m (fixed typo)  | 
				Prabuanand (talk | contribs)  m (added wikilink)  | 
				||
| Line 5: | Line 5: | ||
Install the dbus package: {{cmd|# apk add {{pkg|dbus}}}}  | Install the dbus package: {{cmd|# apk add {{pkg|dbus}}}}  | ||
If   | If [[Xorg]] is used, install the {{pkg|dbus-x11}} package which provides the {{ic|dbus-launch}} command needed for [[#D-Bus session bus|D-Bus session bus]] as follows:{{cmd|# apk add {{pkg|dbus-x11}}}}  | ||
== Configuration ==  | == Configuration ==  | ||
Latest revision as of 07:01, 28 July 2025
D-Bus is a message bus system that provides a mechanism for inter-process communication.
Installation
Install the dbus package:
# apk add dbus
If Xorg is used, install the dbus-x11 package which provides the dbus-launch command needed for D-Bus session bus as follows:
# apk add dbus-x11
Configuration
System D-Bus
To start system D-Bus service dbus at startup, enable it as follows: 
# rc-update add dbus
To start the system D-Bus service immediately, use OpenRC service start|stop|restart commands as follows:
# rc-service dbus start
$ rc-service dbus status will output * status: started.D-Bus session bus
To start a window manager along with D-bus session bus, use the command: $ dbus-run-session -- <your_wm> by replacing <your_wm> with your shell or a window manager.
If X11 based window manager is started using .xinitrc, to ensure that D-Bus session bus passes the environment variable $DBUS_SESSION_BUS_ADDRESS, add an entry as follows 
Contents of .xinitrc
Running dbus-launch in a terminal requires export $(dbus-launch). If not, other running process won't find the socket of D-Bus session Bus.
$ echo $DBUS_SESSION_BUS_ADDRESS must provide an output.If $DBUS_SESSION_BUS_ADDRESS is undefined, many applications will attempt to use the standard path:$XDG_RUNTIME_DIR/bus
Running D-Bus like so should work for many applications:
dbus-daemon --nofork --address unix:path=$XDG_RUNTIME_DIR/bus --session
For applications that dont work without $DBUS_SESSION_BUS_ADDRESS you can prepend your program with the follow workaround script which avoid launching multiple user dbus sessions:
#!/bin/sh
if [ ! -e "/tmp/dbus-$USER-env" ]; then
       echo "Creating new dbus session on /tmp/dbus-$USER-env"
       export $(dbus-launch)
       echo "${DBUS_SESSION_BUS_ADDRESS}" > /tmp/dbus-$USER-env
       echo "Dbus session address is: ${DBUS_SESSION_BUS_ADDRESS}"
else
       echo "Using dbus session address from /tmp/dbus-$USER-env"
       export DBUS_SESSION_BUS_ADDRESS="$(cat /tmp/dbus-$USER-env)"
       echo "Dbus session address is: ${DBUS_SESSION_BUS_ADDRESS}"
fi
if [ -n "$1" ]; then
       $@
fi