Como configurar um serviço systemd que usa o D-Bus?

0

Eu escrevi um script que envia notificações. O script chama notify-send para fazer isso, e notify-send requer uma variável de ambiente D-Bus para funcionar: DBUS_SESSION_BUS_ADDRESS .

Quando executo meu script a partir do terminal, ele produz notificações muito bem. Mas eu uso o systemd para executar o meu script sempre que eu faço login, e quando o systemd executa o script, ele não produz mais notificações. Isso ocorre porque o systemd inicia meu script com um ambiente limpo --- e do que significa que a variável de ambiente D-Bus está ausente.

No Arch Linux, eu consegui adicionar isso ao arquivo de unidade do script:

[Install]
WantedBy=default.target
Requires=dbus-setenv.service

Com essa configuração, o systemd iniciou meu script quando o D-Bus estava pronto e passou a variável DBUS_SESSION_BUS_ADDRESS para o meu script.

Agora estou no Ubuntu, mas essa configuração não parece estar funcionando. Eu estou querendo saber: qual é a maneira recomendada de fazer isso no Ubuntu?

    
por Chris Mounce 04.11.2015 / 01:48

1 resposta

0

Muito longo para um comentário ... Estou usando isso em outro script para alterar o papel de parede com cron :

#!/bin/bash -e
user=$(whoami)

fl=$(find /proc -maxdepth 2 -user "$user" -name environ -print -quit)
for i in {1..5}
do
  fl=$(find /proc -maxdepth 2 -user "$user" -name environ -newer "$fl" -print -quit)
done

export DBUS_SESSION_BUS_ADDRESS
DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS "$fl" | cut -d= -f2-)
    
por A.B. 04.11.2015 / 07:13