【问题标题】:Systemd run script after wakeup: "Can't open display"唤醒后 Systemd 运行脚本:“无法打开显示”
【发布时间】:2021-01-25 12:54:35
【问题描述】:

我有一个脚本可以处理屏幕亮度,运行良好,很酷,现在我想让它在从挂起唤醒后运行。

所以我尝试使用systemd,我在/etc/systemd/system/myscript.service下有一个文件如下:

[Unit]
Description=Run myscript after wakeup
After=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target


[Service]
Type=oneshot
ExecStart=/usr/local/bin/myscript
User=me
#Environment=DISPLAY=:0

[Install]
WantedBy=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target

注意:设置User是因为myscript需要HOME变量。

在我运行sudo systemctl enable myscript 并尝试挂起/唤醒后,myscript 没有运行,journalctl -u myscript.service 输出以下消息:

1 月 25 日 13:42:53 mymachine myscript[24489]:无法打开显示
1 月 25 日 13:42:53 mymachine systemd[1]: myscript.service: Succeeded.
Jan 25 13:42:53 mymachine systemd[1]: Finished Run myscript after wakeup.

如果我取消注释 myscript.service 中的 #Environment=DISPLAY=:0 行,错误是“无法打开显示:0”

任何帮助都会很棒:^)

【问题讨论】:

    标签: systemd


    【解决方案1】:

    这适用于我的 Arch 系统。在从休眠或挂起(systemctl hibernate/suspend)恢复后,我在该位置测试了一个脚本,xbacklight 上下波动了 75%。

    我只能认为您的环境中没有 DISPLAY=:0 对于您运行脚本的用户(使用 env 验证)。

    【讨论】:

      【解决方案2】:

      我遇到了类似的问题。通过将以下内容添加到我的 systemd 服务来修复它:

      Environment="DISPLAY=<DISP>"
      Environment="XAUTHORITY=/path/to/xauthority"
      

      &lt;DISP&gt; 替换为$DISPLAY 变量的值,这通常是:0

      【讨论】:

        猜你喜欢
        • 2015-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-01
        • 2017-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多