Embora eu ainda não saiba como ENV{SYSTEMD_USER_WANTS}
funciona, consegui resolver meu problema específico depois de ler este blog .
Acontece que posso instalar alvos como uma dependência em dispositivos. Eu mudei meu arquivo de unidade ~/.config/systemd/user/docked.target
para:
[Unit]
Description=Docked to ThinkPad Mini Dock
BindsTo=dev-tp_mini_dock.device
After=dev-tp_mini_dock.device
[Install]
WantedBy=dev-tp_mini_dock.device
e minha regra do udev para:
SUBSYSTEM=="usb", ACTION=="add", ENV{ID_VENDOR}=="17ef", ENV{ID_MODEL}=="100a", SYMLINK+="tp_mini_dock", TAG+="systemd"
e, em seguida, ative-o com systemctl --user enable docked.target
.
Agora, quando eu o conecto, a regra do udev cria o dispositivo systemd, que, por sua vez, inicia o destino. Em seguida, a opção BindsTo
garante que, quando o dispositivo desaparecer (desconectado), o destino seja interrompido.
Eu tive que fazer algumas mágicas sem sentido para fazer isso funcionar quando eu faço o login com o dock já conectado. Alguém poderia imaginar que simplesmente adicionando default.target
a WantedBy
e After
seria o suficiente ... eu Vou adicionar um link para um blog depois de escrevê-lo.