я делаю exec, потому что этот код запускается из логин шела и при закрытии композитора(виндоу менеджера) я хочу, чтобы меня автоматом "разлогинивало". Поэтому я exec'ом заменяю процесс шелла на процесс композитора.
Кстати говоря, в rde я пока сделал немного по-другому, там я выставляю переменную окружения DBUS_SESSION_BUS_ADDRESS руками и стартую dbus-daemon Shepherd'ом так, чтобы тот использовал этот адрес. Поэтому dbus должен работать не только в одном оконном менеджере, но и если я залогинюсь на других tty.