唤醒后系统运行脚本:"Can't open display"



我有一个脚本做的事情与屏幕亮度,工作得很好,这很酷,现在我想让它从暂停唤醒后运行。

所以我尝试使用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并尝试suspend/wakeup后,myscript未运行,journalctl -u myscript.service输出以下消息:

Jan 25 13:42:53 mymachine myscript[24489]: Can't open display
Jan 25 13:42:53 mymachine systemd[1]: myscript。服务:成功了。
Jan 25 13:42:53 mymachine systemd[1]: Finished Run myscript after wakeup.

如果我取消myscript中的#Environment=DISPLAY=:0行注释。服务错误是"无法打开显示:0">

任何帮助都将是伟大的:^)

这在我的Arch系统上有效。我在那个位置测试了一个脚本,在从hibernate或suspend (systemctl hibernate/suspend)恢复后,xbacklight上升和下降了75%。

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

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

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

<DISP>替换为$DISPLAY变量的值,通常是:0

相关内容

最新更新