首页 > 解决方案 > 唤醒后 Systemd 运行脚本:“无法打开显示”

问题描述

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

所以我尝试使用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:成功。
1 月 25 日 13:42:53 mymachine systemd[1]: Finished Run myscript after wakeup.

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

任何帮助都会很棒:^)

标签: systemd

解决方案


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

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


推荐阅读