O serviço dbus é feito para o precicely that ... ok, pode ser usado para o precicely that :-). O dbus deamon por usuário é iniciado quando um usuário efetua login em um ambiente de desktop e é encerrado quando o usuário efetua logout (consulte a página de manual dbus-launch
e a opção --exit-with-session
). Um serviço dbus pode ser iniciado junto com a instância 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 obter muita documentação e implementação de referência.
Eu só uso distros baseados no Debian atualmente. Todos possuem scripts nos /etc/X11/Xsession.d
quais muitas vezes modificam uma sequência que, no final, será avaliada como o comando que inicia o ambiente de área de trabalho selecionado. Existe um desses scripts para o dbus, que precede o comando com o wrapper dbus dbus-launch
. Este wrapper lança um servidor dbus e pelo menos no Debian baunilha (e estou disposto a dizer "em todas as distribuições baseadas no Debian") dbus-launch
tem a opção --exit-with-session
.
Você deve ser capaz de agrupar os processos que deseja executar enquanto um usuário estiver conectado a um serviço dbus e o IIRC dbus automagicamente se encarrega de encerrar seus serviços antes de sair.