我有这个单元文件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
单元文件中以便这可以工作?我尝试查看文档,但我无法弄清楚。
答案1
所以事实证明这是不可能的,因为它不受支持:https://lists.freedesktop.org/archives/systemd-devel/2022-January/047336.html