0

我想在 linux 下触发一些 acpi 事件时使用 PyQt 应用程序显示图像。

我已经为事件设置了配置,并且在触发事件时执行了 python 脚本,但是当程序到达创建 QApplication

app = QApplication(sys.argv)

它停止而没有错误。我尝试设置与当前用户相同的 DISPLAY 和 PATH 环境变量,但它不起作用。

这是我的事件文件:

event=sony/hotkey SNC 00000001 00000011
action=/etc/acpi/vaio-tools/brightness/sonybright.sh up 2>&1>/tmp/vaio-tools_brightness.log

我试图在 /tmp/vaio-tools_brightness.log 中找到一些错误,但它在代码中创建 QApp 后没有记录任何内容。

任何提示?

4

1 回答 1

0

您的应用程序由无权访问您用户的 X 显示器的 root 运行。

将 $XAUTHORITY 设置为您的用户使用的 X 权限文件的路径,或者使用类似这样的东西(未经测试):

su your_user -l -c "xauth extract - $DISPLAY" | xauth merge -

有关这方面的更多信息,请参见xauthXsecurity的手册页。

更好的解决方案是让 ACPI 事件通过 DBus 发送消息并在用户会话中运行您的应用程序以侦听该消息。

于 2010-06-12T00:53:45.500 回答