我可以在 99-monitor-hotplug.rules 中获得这个 udev 规则来触发:
ACTION=="change", SUBSYSTEM=="drm", ENV{HOTPLUG}=="1",
RUN+="/usr/local/bin/monitor-hotplug.sh"
但我似乎无法让它在 monitor-hotplug.sh 脚本中触发 OpenCV GUI 应用程序。
我从根本上理解 udev 规则以 root 身份运行,但无论我尝试什么语法,我都无法让它在用户级别正确运行以运行应用程序(运行应用程序的实际脚本工作正常)。
我试过 RUN 这种格式:
su - your_X_user_here -c 'export DISPLAY=:0; bash -c "/path/to/script.sh"'
带脚本:
#!/bin/bash
#sleep 5
date >> /var/log/opencvlog.log
cd ~/Downloads
./displayimage /home/<username>/Pictures/picture.png
>/var/log/application.log
2>&1
另一种尝试:
将 99-monitor-hotplug.rules 添加到当前语法中:
ACTION=="change", SUBSYSTEM=="drm", ENV{DISPLAY}=":0",
ENV{XAUTHORITY}="/home/<username>/.Xauthority" ENV{HOTPLUG}=="1",
RUN+="/usr/local/bin/monitor-hotplug.sh"
然后在实际脚本中:
export DISPLAY=:0
export XAUTHORITY=/home/<username>/.Xauthority
cd ~/Downloads
date
./displayimage /home/<username>/Pictures/picture.png
这些都不起作用,关于如何使它起作用的任何想法?
谢谢