O serviço dbus é feito preciosamente para que ... ok, pode ser usado precicamente que :-). O deamon dbus por usuário é iniciado quando um usuário efetua login em um ambiente de área de trabalho e é encerrado quando o usuário efetua logout (consulte a página de manual de dbus-launch
e a opção --exit-with-session
). Um serviço dbus pode ser iniciado junto com a instância do dbus ou quando a interface do serviço é chamada pela primeira vez através do dbus. Cada usuário pode ter suas próprias especificações de serviços dbus, definidas em um diretório oculto na página inicial dos usuários ou globalmente em /etc
. Veja a página inicial do dbus no freedesktop para muita documentação e implementação de referência.
Eu só uso distros baseadas no Debian atualmente. Todos os que possuem scripts em /etc/X11/Xsession.d
, que muitas vezes modificam uma string que, no final, será avaliada como o comando que inicia o ambiente de área de trabalho selecionado. Existe um tal script para o dbus, que preenche o comando com o wrapper dbus-launch
do dbus. Este wrapper lança um dbus-server e pelo menos no vanilla Debian (e estou disposto a dizer "em todas as distribuições baseadas no Debian") dbus-launch
recebe a opção --exit-with-session
.
Você deve ser capaz de envolver os processos que deseja executar enquanto um usuário estiver logado em um serviço dbus e o IIRC dbus se encarrega automagicamente de terminar seus serviços antes de sair.