我有这个单位文件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 以 root 身份运行,因此作为用户进程运行的 Pipewire/PulseAudio(如果我做对了)将拒绝连接并且脚本将失败。
但是,我想直接通过 udev 运行 systemd 单元,无需/usr/local/bin/run_hdmi_sound_toggle
. 我将如何将其[email protected] --user
放入单元文件中,这样才能正常工作?我尝试查看文档,但无法弄清楚。
所以事实证明这是不可能的,因为它不受支持:https ://lists.freedesktop.org/archives/systemd-devel/2022-January/047336.html