나는이 단위 파일을 가지고 있습니다 hdmi_sound_toggle.service
:
[Unit]
Description=Runs /usr/local/bin/hdmi_sound_toggle.py to switch to the correct sound output
[Service]
Type=oneshot
ExecStart=/usr/local/bin/hdmi_sound_toggle.py
그런 다음 다음과 같은 udev 규칙이 있습니다.
SUBSYSTEM=="drm", ACTION=="change", RUN+="/usr/local/bin/run_hdmi_sound_toggle"
가지다 /usr/local/bin/run_hdmi_sound_toggle
:
#!/bin/bash
systemctl [email protected] --user --now start hdmi_sound_toggle.service
내가 달리기를 마친 후에
sudo systemctl daemon-reload
sudo udevadm control --reload-rules
sudo udevadm trigger --verbose --action=change --subsystem-match=drm
파일이 /usr/local/bin/hdmi_sound_toggle.py
성공적으로 실행됩니다. 스크립트를 호출 [email protected] --user
하므로 매개변수가 필요합니다 . pactl
udev는 루트로 실행되므로 사용자 프로세스로 실행되는 Pipewire/PulseAudio(제가 올바르게 수행한 경우)는 연결을 거부하고 스크립트가 실패합니다.
그러나 udev를 통해 직접 systemd 유닛을 실행하고 싶습니다 /usr/local/bin/run_hdmi_sound_toggle
. 이것이 작동하도록 하려면 어떻게 해야 할까요 [email protected] --user
? 문서를 보려고 노력했지만 알 수 없습니다.
답변1
따라서 이는 지원되지 않기 때문에 불가능하다는 것이 밝혀졌습니다.https://lists.freedesktop.org/archives/systemd-devel/2022-January/047336.html