我想在 python 脚本中为某些事件生成弹出窗口。我为此目的使用“通知发送”。
subprocess.Popen(['notify-send', "Authentication", "True/False"])
上面的命令在终端上执行得很好,但是当我从 systemd-service 运行它时,它不会生成任何弹出窗口。
当我看到日志时,没有错误。
您需要首先设置环境变量,以便 root 可以与当前登录的用户通信并在 GUI 中发送通知。
就我而言,我是这样做的:
[Unit]
Description=< write your description>
After=systemd-user-sessions.service,systemd-journald.service
[Service]
Type=simple
ExecStart=/bin/bash /<path to your script file>.sh
Restart=always
RestartSec=1
KillMode=process
IgnoreSIGPIPE=no
RemainAfterExit=yes
Environment="DISPLAY=:0" "XAUTHORITY=/home/<User name>/.Xauthority"
[Install]
WantedBy=multi-user.target
Here,
退出后剩余=是
在服务文件中提及非常重要。
确保更改所有参数,例如描述、用户名和脚本文件路径.
另外,通过执行命令确保脚本文件具有可执行权限
sudo chmod +x <path to your script file>.sh
这里我的脚本文件是用 bash 编写的,它使用相同的“notify-send”命令显示通知。
现在环境参数在这里发挥了所有作用。
您可以阅读有关此行为和讨论的问题的更多信息overhere.
我当然不知道这些文件的完整工作原理或它是如何工作的,但对我来说,它工作得很好。
所以你可以尝试一下。
请告诉我这对于您的情况是否有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)