首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >udev规则不触发GUI应用程序

udev规则不触发GUI应用程序
EN

Stack Overflow用户
提问于 2018-11-23 05:55:20
回答 1查看 545关注 0票数 1

我可以在99-monitor-hotplug.rules中触发这个udev规则:

代码语言:javascript
复制
ACTION=="change", SUBSYSTEM=="drm", ENV{HOTPLUG}=="1", 
RUN+="/usr/local/bin/monitor-hotplug.sh"

但是我似乎不能让它在OpenCV -hotplug.sh脚本中触发监视器图形用户界面应用程序。

我基本上理解udev规则是以root用户身份运行的,但是无论我尝试什么语法,我都无法让它在用户级别正确运行以运行应用程序(运行应用程序的实际脚本运行得很好)。

我已经尝试过运行以下格式:

代码语言:javascript
复制
su - your_X_user_here -c 'export DISPLAY=:0; bash -c "/path/to/script.sh"'

使用脚本:

代码语言:javascript
复制
#!/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:

代码语言:javascript
复制
ACTION=="change", SUBSYSTEM=="drm", ENV{DISPLAY}=":0", 
ENV{XAUTHORITY}="/home/<username>/.Xauthority" ENV{HOTPLUG}=="1", 
RUN+="/usr/local/bin/monitor-hotplug.sh"

然后在实际的脚本中:

代码语言:javascript
复制
export DISPLAY=:0
export XAUTHORITY=/home/<username>/.Xauthority
cd ~/Downloads
date 
./displayimage /home/<username>/Pictures/picture.png

所有这些都不起作用,你有什么想法让它起作用吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-11-26 19:13:56

当使用像gdm这样的显示管理器时,当前的X授权文件可能不在用户主目录中,而是在运行时目录中,如/run/var/run

您可以尝试如下所示:

代码语言:javascript
复制
USER=<username>
export XAUTHORITY=$(find /var/run/gdm3/ -type f -path "*${USER}*" 2> /dev/null)

较新的gdm版本似乎将文件放在更通用的位置:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53438382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档