我可以在99-monitor-hotplug.rules中触发这个udev规则:
ACTION=="change", SUBSYSTEM=="drm", ENV{HOTPLUG}=="1",
RUN+="/usr/local/bin/monitor-hotplug.sh"但是我似乎不能让它在OpenCV -hotplug.sh脚本中触发监视器图形用户界面应用程序。
我基本上理解udev规则是以root用户身份运行的,但是无论我尝试什么语法,我都无法让它在用户级别正确运行以运行应用程序(运行应用程序的实际脚本运行得很好)。
我已经尝试过运行以下格式:
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所有这些都不起作用,你有什么想法让它起作用吗?
谢谢
发布于 2018-11-26 19:13:56
当使用像gdm这样的显示管理器时,当前的X授权文件可能不在用户主目录中,而是在运行时目录中,如/run或/var/run。
您可以尝试如下所示:
USER=<username>
export XAUTHORITY=$(find /var/run/gdm3/ -type f -path "*${USER}*" 2> /dev/null)较新的gdm版本似乎将文件放在更通用的位置:
export XAUTHORITY=$(find /run/user/$(id -u "$USER")/ -name Xauthority 2> /dev/null)我使用此技术调用xrandr,根据udev规则调整屏幕分辨率:
https://git.ao2.it/libam7xxx.git/blob/HEAD:/contrib/am7xxx-autodisplay.sh
https://stackoverflow.com/questions/53438382
复制相似问题