Systemd 运行 唤醒后的脚本:"Can't open display"
Systemd run script after wakeup: "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.service: Succeeded.
Jan 25 13:42:53 mymachine systemd[1]: Finished Run myscript after wakeup.
如果我取消注释 myscript.service 中的 #Environment=DISPLAY=:0
行,错误是“无法打开显示:0”
任何帮助都会很棒:^)
这适用于我的 Arch 系统。我在那个位置测试了一个脚本,在从休眠或挂起(systemctl hibernate / suspend)恢复后,xbacklight 上升和下降了 75% 几次。
我只能认为您的环境中没有 DISPLAY=:0(使用 env 验证),因为您是 运行 作为脚本的用户。
我遇到了类似的问题。通过将以下内容添加到我的 systemd 服务来修复它:
Environment="DISPLAY=<DISP>"
Environment="XAUTHORITY=/path/to/xauthority"
用您的 $DISPLAY
变量的值替换 <DISP>
,这通常是 :0
。
我有一个脚本可以处理屏幕亮度,工作正常,很酷,现在我想在从挂起唤醒后 运行。
所以我尝试使用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.service: Succeeded.
Jan 25 13:42:53 mymachine systemd[1]: Finished Run myscript after wakeup.
如果我取消注释 myscript.service 中的 #Environment=DISPLAY=:0
行,错误是“无法打开显示:0”
任何帮助都会很棒:^)
这适用于我的 Arch 系统。我在那个位置测试了一个脚本,在从休眠或挂起(systemctl hibernate / suspend)恢复后,xbacklight 上升和下降了 75% 几次。
我只能认为您的环境中没有 DISPLAY=:0(使用 env 验证),因为您是 运行 作为脚本的用户。
我遇到了类似的问题。通过将以下内容添加到我的 systemd 服务来修复它:
Environment="DISPLAY=<DISP>"
Environment="XAUTHORITY=/path/to/xauthority"
用您的 $DISPLAY
变量的值替换 <DISP>
,这通常是 :0
。