Por usuário udev e systemd integração com X?

3

Eu estou no Ubuntu 16.04, e eu apenas desenvolvi este software que automatiza os eventos hotplug do PulseAudio .

Atualmente, estou usando a seguinte regra do udev:

/etc/udev/rules.d/90-autopulse.rules:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0d8c", ATTRS{idProduct}=="1066", ENV{SYSTEMD_WANTS}="[email protected]"

Estou usando isso como minha unidade de sistema:

/etc/systemd/system/[email protected]:

[Unit]
Description=PulseAudio Hotplug Service

[Service]
Type=oneshot

Environment=DISPLAY=:0
User=%i
ExecStart=/usr/local/bin/autopulse switch
StandardOutput=journal

Eu infelizmente preciso definir manualmente DISPLAY=:0 , embora não haja garantia de que serei aquela sessão X.

Existe uma maneira de configurar o udev ou o systemd para extrair a variável DISPLAY de um determinado usuário e usá-la no ambiente? Ou eu estou preso codificando isso?

Suponho que eu poderia fazer um ExecStartPre ou algo para descobri-lo, ou talvez ajustar meu script. Quais são as minhas opções apenas no udev e systemd?

    
por Naftuli Kay 17.01.2017 / 02:30

1 resposta

0

O systemd também fornece serviços usuário que são iniciados quando um login de usuário (comparado com os do sistema que estão habilitados na inicialização), você provavelmente deve olhar para isso.

Mas não tenho certeza se você pode iniciá-los usando as regras do udev, seu software talvez deva iniciar como um daemon de usuário e ouvir os eventos do udev e agir de acordo com isso?

    
por 18.01.2017 / 11:55

Tags