【问题标题】:Execute a PyQt app from an acpi event in linux从 linux 中的 acpi 事件执行 PyQt 应用程序
【发布时间】:2010-06-11 22:35:52
【问题描述】:

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

我已经为事件设置了配置,并且在触发事件时执行了 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 后没有记录任何内容。

有什么提示吗??

【问题讨论】:

    标签: python linux qt pyqt acpi


    【解决方案1】:

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

    要么将 $XAUTHORITY 设置为您的用户使用的 X 授权文件的路径,要么使用类似的东西(未经测试):

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

    请参阅 xauthXsecurity 的手册页了解更多信息。

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

    【讨论】:

    • 谢谢,我找到了这个页面 (thinkwiki.org/wiki/How_to_configure_acpid) 用于 acpid 配置,并且有解决方案:使用 xhost 添加 localhost:root 并导出 DISPLAY 变量。但我会寻找您对使用 DBus 的建议
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 2015-08-27
    相关资源
    最近更新 更多