Aqui está uma maneira de usar uma unidade de usuário systemd em execução no diretório inicial do usuário do gdm.
-
Salve o arquivo a seguir como
/var/lib/gdm3/.config/systemd/user/drumroll.service
:[Unit] Description=Drumroll Requires=pulseaudio.socket After=systemd-user-sessions.service [Service] Type=simple Restart=no ExecStart=/usr/bin/paplay /usr/share/sounds/ubuntu/stereo/system-ready.ogg [Install] WantedBy=default.target
A unidade systemd acima deve certificar-se de que pulseaudio foi iniciado no contexto do usuário gdm e executar o paplay
comando (eu não tentei canberra-gtk-play
, mas eu acho que funciona também).
After=systemd-user-sessions.service
fará o serviço iniciar somente depois que o sistema estiver pronto para os logins do usuário. (consulte link )
-
Em seguida, execute:
$ sudo mkdir -p /var/lib/gdm3/.config/systemd/user/default.target.wants $ sudo ln -s /var/lib/gdm3/.config/systemd/user/drumroll.service /var/lib/gdm3/.config/systemd/user/default.target.wants/drumroll.service $ sudo chown gdm:gdm /var/lib/gdm3/.config/systemd/user/{drumroll.service,default.target.wants}
Esses últimos comandos fazem a unidade iniciar automaticamente quando a sessão systemd do usuário do gdm é iniciada.
- Reinicialize para testar.
Para verificar se há erros é um pouco complicado, porque o systemctl tem a restrição de conectar-se à sessão do sistema ou à sessão chamada do usuário . Para fazer o gdm, o usuário chamador é fácil com o sudo, mas algum ambiente precisa ser configurado para possibilitar a conexão com a sessão do usuário systemd:
$ sudo -u gdm XDG_RUNTIME_DIR="/run/user/$(id -u gdm)" DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" systemctl --user status drumroll
● drumroll.service - Drumroll
Loaded: loaded (/var/lib/gdm3/.config/systemd/user/drumroll.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Tue 2018-06-26 23:35:05 CEST; 36min ago
Process: 1238 ExecStart=/usr/bin/paplay /usr/share/sounds/ubuntu/stereo/system-ready.ogg (code=exited, status=0/SUCCES
Main PID: 1238 (code=exited, status=0/SUCCESS)
Eu não tentei isso com 17.10, mas com 18.04, mas não vejo razão para não funcionar tão bem com 17.10.